From ee67158514291224e843e13b8d998639f1a38aad Mon Sep 17 00:00:00 2001 From: eunwoo Date: Sun, 16 Jul 2023 17:27:23 +0900 Subject: [PATCH 01/57] gg From 87a097c0ca94c92dab67bbb5c73831d15074f10b Mon Sep 17 00:00:00 2001 From: eunwoo Date: Fri, 21 Jul 2023 17:41:12 +0900 Subject: [PATCH 02/57] =?UTF-8?q?+=EB=8F=99=EC=9A=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Libft/ft_atoi.o | Bin 0 -> 892 bytes Libft/ft_bzero.o | Bin 0 -> 684 bytes Libft/ft_calloc.o | Bin 0 -> 776 bytes Libft/ft_isalnum.o | Bin 0 -> 760 bytes Libft/ft_isalpha.o | Bin 0 -> 680 bytes Libft/ft_isascii.o | Bin 0 -> 664 bytes Libft/ft_isdigit.o | Bin 0 -> 664 bytes Libft/ft_isprint.o | Bin 0 -> 664 bytes Libft/ft_itoa.o | Bin 0 -> 1160 bytes Libft/ft_memchr.o | Bin 0 -> 732 bytes Libft/ft_memcmp.o | Bin 0 -> 756 bytes Libft/ft_memcpy.o | Bin 0 -> 764 bytes Libft/ft_memmove.o | Bin 0 -> 856 bytes Libft/ft_memset.o | Bin 0 -> 700 bytes Libft/ft_putchar_fd.o | Bin 0 -> 696 bytes Libft/ft_putendl_fd.o | Bin 0 -> 876 bytes Libft/ft_putnbr_fd.o | Bin 0 -> 984 bytes Libft/ft_putstr_fd.o | Bin 0 -> 756 bytes Libft/ft_split.o | Bin 0 -> 2048 bytes Libft/ft_strchr.o | Bin 0 -> 732 bytes Libft/ft_strdup.o | Bin 0 -> 828 bytes Libft/ft_striteri.o | Bin 0 -> 696 bytes Libft/ft_strjoin.o | Bin 0 -> 936 bytes Libft/ft_strlcat.o | Bin 0 -> 888 bytes Libft/ft_strlcpy.o | Bin 0 -> 840 bytes Libft/ft_strlen.o | Bin 0 -> 700 bytes Libft/ft_strmapi.o | Bin 0 -> 848 bytes Libft/ft_strncat.o | Bin 0 -> 916 bytes Libft/ft_strncmp.o | Bin 0 -> 824 bytes Libft/ft_strnstr.o | Bin 0 -> 988 bytes Libft/ft_strrchr.o | Bin 0 -> 728 bytes Libft/ft_strtrim.o | Bin 0 -> 1408 bytes Libft/ft_substr.o | Bin 0 -> 1056 bytes Libft/ft_tolower.o | Bin 0 -> 664 bytes Libft/ft_toupper.o | Bin 0 -> 664 bytes Libft/get_next_line.o | Bin 0 -> 2808 bytes Libft/get_next_line_utils.o | Bin 0 -> 884 bytes Libft/libft.a | Bin 0 -> 37376 bytes incs/exec.h | 4 +--- incs/minishell.h | 16 +++++++++++----- incs/pipe.h | 32 ++++++++++++++++++++++++++++++++ incs/struct.h | 31 ++++++++++++++++++++++++++++++- libft.a | Bin 0 -> 37376 bytes minishell | Bin 0 -> 70624 bytes srcs/builtin/ft_cd.o | Bin 0 -> 2400 bytes srcs/builtin/ft_echo.o | Bin 0 -> 2036 bytes srcs/builtin/ft_exit.o | Bin 0 -> 2304 bytes srcs/builtin/ft_export.o | Bin 0 -> 4716 bytes srcs/builtin/ft_pwd.o | Bin 0 -> 1216 bytes srcs/builtin/ft_unset.o | Bin 0 -> 1440 bytes srcs/exec/sig.o | Bin 0 -> 1052 bytes srcs/init/init.c | 34 +++++++++++++++++++++++++++++++++- srcs/init/init.o | Bin 0 -> 1996 bytes srcs/lexer/expand.o | Bin 0 -> 3508 bytes srcs/lexer/lexer.o | Bin 0 -> 1804 bytes srcs/lexer/quote.o | Bin 0 -> 2820 bytes srcs/lexer/tokenizer.o | Bin 0 -> 2348 bytes srcs/minishell.c | 4 +--- srcs/minishell.o | Bin 0 -> 2004 bytes srcs/parser/parser.o | Bin 0 -> 1692 bytes srcs/parser/syntax.o | Bin 0 -> 2720 bytes srcs/utils/env.o | Bin 0 -> 1992 bytes srcs/utils/list.o | Bin 0 -> 1376 bytes srcs/utils/list_clear.o | Bin 0 -> 1060 bytes srcs/utils/temp.o | Bin 0 -> 2948 bytes srcs/utils/tree.o | Bin 0 -> 1576 bytes srcs/utils/utils.o | Bin 0 -> 1564 bytes 67 files changed, 108 insertions(+), 13 deletions(-) create mode 100644 Libft/ft_atoi.o create mode 100644 Libft/ft_bzero.o create mode 100644 Libft/ft_calloc.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_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 create mode 100644 Libft/ft_strmapi.o create mode 100644 Libft/ft_strncat.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 Libft/get_next_line.o create mode 100644 Libft/get_next_line_utils.o create mode 100644 Libft/libft.a create mode 100644 incs/pipe.h create mode 100644 libft.a create mode 100755 minishell create mode 100644 srcs/builtin/ft_cd.o create mode 100644 srcs/builtin/ft_echo.o create mode 100644 srcs/builtin/ft_exit.o create mode 100644 srcs/builtin/ft_export.o create mode 100644 srcs/builtin/ft_pwd.o create mode 100644 srcs/builtin/ft_unset.o create mode 100644 srcs/exec/sig.o create mode 100644 srcs/init/init.o create mode 100644 srcs/lexer/expand.o create mode 100644 srcs/lexer/lexer.o create mode 100644 srcs/lexer/quote.o create mode 100644 srcs/lexer/tokenizer.o create mode 100644 srcs/minishell.o create mode 100644 srcs/parser/parser.o create mode 100644 srcs/parser/syntax.o create mode 100644 srcs/utils/env.o create mode 100644 srcs/utils/list.o create mode 100644 srcs/utils/list_clear.o create mode 100644 srcs/utils/temp.o create mode 100644 srcs/utils/tree.o create mode 100644 srcs/utils/utils.o diff --git a/Libft/ft_atoi.o b/Libft/ft_atoi.o new file mode 100644 index 0000000000000000000000000000000000000000..061a592c6db7f9e146e403ff0530b299e700c793 GIT binary patch literal 892 zcma)4&nrYx6uyr!7(ea^MOn-O8!4>Vjkxs|lr&Q|x+X>>KhhH^MPuX{$--JT%1&8X zNn@dGZ2bckvoPLb7Q@2$&b<4^ouqtq?mg!__k8zzulxM@_EpW8QOU3%e2800LI|K8 zF-Y|v*j2q3wR<%*83pMQq_pB&mYchEL`+3~YA@^1^vFvIKDJxRkw`hay1W*fwdBUi z=Hkknlw+fMKcsX*ip*EIUZ!A3wZQy9%J_nuUym)vT~5k!e_=HgRwHfD@xG0yI>r`M ztGEqdZ9^2tc!2p41iF;?8RcUQdp&B*vk8O_npM~8^uO|`X}_BGPX1Bk==`H_NXblz zJin_+eAM#eR=sYxF%F~e{3NK8A%2zydnDek44$k)E7Pp{W>rzn7WvFop-?F4_VE2O ziC&)U(j`&Tt5_0F!4?jUX-a6Y{(Cbu4v$TV&%Q&E<;P`mL;M_$vPU9Ya@1Xv%LQo6 zw4cnqwCgMik^V%s&v0y!%Ur@_O62&paHb#V9uMlh{rb%<>VUC5$&9U_5v;GSImM|? n@EwSYFDL@udu79o!GnsC2EQka9moA7%yo4+Z^@Xox(NOoU0R&9 literal 0 HcmV?d00001 diff --git a/Libft/ft_bzero.o b/Libft/ft_bzero.o new file mode 100644 index 0000000000000000000000000000000000000000..cfe1fcb38b2a14fd921d7ec79f72985c3db1d65d GIT binary patch literal 684 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%*Z>v30aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7DmfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1- z%29yQ8cYzkbO33nQ-Lf5h>uUrh)*j@%uR)e#mA$%uK=pl0ZMy7&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNPGg+9SeXo50DSk&j52XkO>ALy->G8MTn=2n__UJvq^i`Sdt_Z)8v$I9qsSg51`;uYTqgYo z?q&T^o>3Y-fk?gt&V8rpi(KfESuPE=%3PU{AI)-^0>Fnvn}P!8cHKL$Y@au3$NRNC z&NtT89>t0jhKws{LbF_Bl%vMBavSG!D%?G^JV#VG|2f~e@{w^@`lu?A%g^fc$Uq>#7>XDJis* zEzp{IEuYPdUErw&tj{9LUjpjC!|G)IEVY(P%Rc%hc)T!&5x+x$%Ba)it0!)wG$A4T YO9OX(?m6C(;{*4sYPD|1C0nHM4T&sd0{{R3 literal 0 HcmV?d00001 diff --git a/Libft/ft_isalnum.o b/Libft/ft_isalnum.o new file mode 100644 index 0000000000000000000000000000000000000000..beb024fb43c977a5ff07b8d7ec035a1071eac39f GIT binary patch literal 760 zcmb7CJxjw-6uqg^inb<$gMvZ_hb~>592G4@a1g2BB9G7y6RnmF<;GA^&_iMi!w@$&gaR-6=75QiKQtbJJ!rgz$_4+ zrB6~C;NU|!e=YS--~v4AhciQl!LNju#Rk_Y;0rB26=5w9{?UT83t1GZUBCwTS#Y;C)9C-!H9B z8|SIDTw3b#V0>p$2cxXWX>d9R))S}k|Cq3$PI^*xUpdEBXW#KfTL*5lG1Q)Iaqk~* Cq*RFj literal 0 HcmV?d00001 diff --git a/Libft/ft_isalpha.o b/Libft/ft_isalpha.o new file mode 100644 index 0000000000000000000000000000000000000000..da20b0195bfc3228a1611cc01e4a7ae55c359431 GIT binary patch literal 680 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SOFEk0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7kxfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw$ z%29yPOc1v;0BNXGfh+`wk5A2rPb*5yO@)ZX$D_J01FF;kMnlbmav8W87+^}kLPkJR z0*JwO@pCb-0Wk=GECq>oK;1C|NDBb@K>Z8>K#UAPdZBJb7AA@v>e2bMv-U@G?GH!( z9+1^QRuq4q2!xf$-y;TLRq^-p09nUf|A1_I35qfx8%Q#AyZ(ti3}S!*G+r>A12PZ< z7^{L97%K!A1$fvwCID5b0L5g0xZ*zqz~Ys`kx!tF$(ff8qzMXu%Gp2$^CO!cpH>o| NS)7+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z82Ed{fLeg8dj5VMAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag;K7AI$Bf|LRP DvIs#H literal 0 HcmV?d00001 diff --git a/Libft/ft_isdigit.o b/Libft/ft_isdigit.o new file mode 100644 index 0000000000000000000000000000000000000000..a0e0f40d01b86d5d7227538c36481efb8e07fb54 GIT binary patch literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z4ETG*fLeeoOa6WyAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag<#WTt0=Qwad2 CK0yZn literal 0 HcmV?d00001 diff --git a/Libft/ft_isprint.o b/Libft/ft_isprint.o new file mode 100644 index 0000000000000000000000000000000000000000..8cf5033396fa25d36dbe5e96031092dc2714b779 GIT binary patch literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z6!?3@fLeg8I{tnhAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag;46lLatQwadc C8bMe9 literal 0 HcmV?d00001 diff --git a/Libft/ft_itoa.o b/Libft/ft_itoa.o new file mode 100644 index 0000000000000000000000000000000000000000..6b8424d68378e36d6a5611c4e94625e64d9abff7 GIT binary patch literal 1160 zcmb7D&ubGw7@e)54caCFD^w5+=)p@QcF=6!G8%5v|ISwItR z5o0ejhk7Z^dUc~{+Oko5X4TfDT+WZLztw&exB(;N<(Ae{vbsjfQbm@Z7OSNQk@BoR zeZGn+c(3$y{UyfqQV88ayMPRBBrmdQBn6#?@J09_KNa+8^r&a|krY&;llY+qEu14B z3iqdQ`dPPmBusuJT<#06=^v7W%ljVhJ9~yOzlqO3m~cBG4pLV*%`Qv6oC8g?`GDxX zcW9{K&~SMGf)Bzh5j@^KVA?K3!8}7T8enS*!@KJB7Xl7 zTVJvv*ywuAAm91~;Xs&${y{7ry1~K#*g!a6 zv#a~%+sW%KXfjsb3Gc&g25sIa05$@3iZ&n81@|7Ez}r_ajBW^5C9Faaoud%wBcQgG zK11?wGpA>P?cR43LB!=lj}KS(!5)uT^r#b0n^MSDM4nimS0cvq2h7+^8L8Qs_zqY% zfnP($kICz3r1TlfB~q`Zmgc5a9r5zWK=IT*6Fhnge0v%CRuP#r8f+8FP>*B@G}+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%cmNf@0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8z3?fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1z8@Z zSOF>+!31&34j>J6Dv*T$@$sn{@o7bgxv3Db_;^(JEr2R@fYKFE^PpS?ZU%-77#lmYz0vLaro;C-koUl&^PorL!T&(u(dqlZqxlB|e~U5DXrSB;{%sum z+d{8fUgU4(g$e;R|9B}4;6uKmbb*432yPZA{L*YzU)4VZ#P8m>=2n__UJv+|=CU Hj3NdADT-*# literal 0 HcmV?d00001 diff --git a/Libft/ft_memcmp.o b/Libft/ft_memcmp.o new file mode 100644 index 0000000000000000000000000000000000000000..4ae0e2bb654a43e15e6c99b8ab3cf36fdc659359 GIT binary patch literal 756 zcma)4Jxjw-6n&|+Em}X2Hb#UcobMF?HGi2jn& zwKzDMZW+4>?I1W7DeAe+?H3|=;N+fr-+Skski34re}#q6W&|E!5Nwc$fxrs5N&O$_ z@!aD*!ycZ3NWKK6idMPkYrjvL$H{R&RF5pkkFtyq6gMLcp;YGFE~GO>RmxwU2;wHwm5b(3Os2mk)45h4`%3h>x%bzJVov*=Lx4G8Xk6SS>L~f|5Zh*_+;4Xbm zgg^paN^_5MbWo${ab6sPlc2Mlb#nYKos!O*bgn<7Q|d@3)s|Hg+VoJ-n=WcwI!$@o z{05|xXv@2v&?^UU$C{_tBPgz3H?~@Og%VFs*IQ1a-;MKJ&QebHcSoJueSrCk*~g-& zn*Eb!5(Dse{`GoGysljx39W2sMl>9$Vb>bwt6-es0>l4A>?|7hf!&1=pQD29Au`q{ O-Bq@zY|GBr1@QxK3v*xq literal 0 HcmV?d00001 diff --git a/Libft/ft_memcpy.o b/Libft/ft_memcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..d0b66830935e4bef0eeb8229d790025509088e30 GIT binary patch literal 764 zcma)4Jxc>Y6nv*45ly@+EEFtK*xFcGDtfSmf=B{3vV?dc78iqDFbV<14?Jxw#max7 zrNP3|lvkz^l0ry%Sg7;dz2t%j4oqg=+qbhXB(ERupD7|^l<)y2z(+P&5SRfMx&90K zEQn^bB9oY$%aGD@>Ynnd&e>bJK^?g}Z8(p2=_5hMeGemLanG$5ik_@h4t6U$Qm(DW z&+m1S)mk4>y97|ZBHRE{I%QefFSw5CNjbdVlOA2tdaLtvNfSin$g?hh)8Nlr<~Sum z20zOEw%(%$O{2zr+5qF=yL#7n`(HjU{5Rn@dcv=Dgr9GV(?*ZXbAB4O1Dj#{Vuu{p zEpTydW84m)xMH`UZQ(b?N%IR3{yIWJGSBAKY)hT-f;ekkS(p!odcmdDec-DqIE04V z&zO%v|K7j8=9Hc>jyB1tTZWZRjon~s4*gj$%R2$l|Am$(t&5SBOfr^@@gxVE@pM`8 Lr0clF>LGmt?|yTx literal 0 HcmV?d00001 diff --git a/Libft/ft_memmove.o b/Libft/ft_memmove.o new file mode 100644 index 0000000000000000000000000000000000000000..215dd01afd4aabcfc28b0b90b7a1c2f4460f6e6b GIT binary patch literal 856 zcma)4K}!Nb6dp}fD%(AHFzVo;YY?4;E=euSAt6e^OAKO)9o8bWBoK;9T)Xsdif+=O zI_1%$m%u#)LYJk3_PyO%-H50M-@fm?dGDJyv-A4-J`6GDn_~C?0pOlU9DvOO35tKQ ztX%6#@5az%1kxoFqEe_;9PY$vEt{UiF8h##^k|l`1=#tRg9wp7)Q@ucil~-P56b&O zY;AhiEg8h6@A#crRxpqp6`6?%Q7DPxaZWEdIU&B!7n4ovvSlFkT!k6NN-ihA3d8`r zO_^pvfQ&Y!d_vB_;Z?-wXWM|+s8??5P5+B$xben~`hXkNJ~uKwepw$d<(jqz?Sn>$ zK56zvnGY1)XeigZ@MzIG@Lj&9b(BUDt0q7tJ#Mu5MSBF}MhdzXQ?3@AHMFF9t!UWp z1Z_sc<_ikV-M<8uT>)F14h`{6OSP4}xo%T6??@6Q?!*?Vti4Cdj7`3yAJ-R^6~40_ z=Buebbv6{fMb#4Wi@@`cPBt33?~o+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%H~)KfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1; z%29yQ7EBPg%mC6*rvh0B5FekK5ua9+n41a_i;qWjUjtOB1C)+{ng``Fa5FGuz}O(# z2#6(s7;G0m7Xup*g8;}IX`og2z^@m5N>w|9JFCD)3fxH(Uod-P{5B>)Nk51ng9?d@(_*-OvMt8XarF|cG zbe{5PJOr{GsQp0)6aUHDCpp!TLcjV9*qk2&>_OWOAO1pq6bZ67bOq`A(Rk0cI?lH zu66I)KM)kuT{>iM-1%@j1P#3Jy*E2E->~2F*XMVN$eJM>z$|btA`2kaft>h1;#Tu7 zT4OwBl0fE4Fb94+h;-x&N5#U_8?~oG=E*LNM6?%7*VG6zdl$8a>jfOvTh)4r`S>vY zJ*OtCY-5h>(l+ympr*m>SGe4CYkrht{=HvOOY_P*I!`Sv5LJv8-UZfx$#2QbQxcGn zOC{fh5PgS3Jo@Pbh==qV#Pk2rXU^c&>3!JwerG%gN4?I7GQ&A^zOUf8?u?vaIDU}n zZ!*s5J=y1vqBQg!ChMD=@TwZ?@|3K$ZP|;d^bM*uk>3FN<0#BK(*Cl2l{i>RYTp(Z j<=bMx$uu|18#(YS8ej!|B`_%H;6XZ6-|Wtk3N`S}%r`spy?IZcKHtBhM4=Ia14e;Z7%m0C=7A=E_`@Eh zzQi-IfJ2iQtjDIcWz;M`_jxXx&;9ZsGbCX>p8b#ravAh+)cWwus+P?oDQZ2a7wE`Z z)Cv;mAEK;xa(sGlXldI#FPjCeH#el!3nd{biERk*nX$3wBcxT1ODFU$ZpOIHqHtJo9x5hB=nuc@hUFF(6-NImD$_DW$n3vxW5?GZ6I8r$qDIZ<70QC?4XcD^7kIcntVwX)zH7$mmeYA3;z2 z7@lJ2#XF$aNUPABzYkwB-2aAirn^PYwcAdyEwtJYgv}pVj7-Wi=0HkXnI25F*fwe} z55ej*$0;D1Wh_q7gYGF?!& zaS;0QUWE4bkUkuVenZs+^3Q;i4$g+DcPCzt>R$)mjQDRC`wal)@hbZ@_8;K!-5$~H m(f$m_a1@85@EV9RqCFx0SbK$>WeSX-M;-kGLInkf4#h$JF1=_K9Q??a@4kEQ?p^Zk-d^70M3Di)3mgP5IWRzA8eC%k z2QDQ4AbUcOp2Xz746SXmY4_ru&t!*H8a8hT+8H||6)sdkE-=-D9`PBPN(H|D0wo3E>H7# z`EEz~PFMNauIIig?^bzEyUl0#u)fn)-c?{#>&Do*<^_S=kNm0;r;ehTv6$3lp!m-8A{1q5PD5i8&}83f9QIjC{PLtrw%)hv WyJn4aqh7JiAY(Z;lDbsHcKQT3j9ec8 literal 0 HcmV?d00001 diff --git a/Libft/ft_split.o b/Libft/ft_split.o new file mode 100644 index 0000000000000000000000000000000000000000..34c727b49092ba2f6d31d2490e2121323eb1eec3 GIT binary patch literal 2048 zcmb7FPiP!v6#u5C=~mm!T3d}EGzAYuTusD-#fT9*@PRG{=|T?;({(zrk?l67I~at4 zg-ImSp^$^3C-vBio;}Fg8gb*v2CD4QLnJejvU6D4q13Fu_syGaT(busyzhPQz2Eo# zeY4;GdjHPO0U@+U1QzfRIJXbW7#Q?4c!eATXr2y$PSP1rrX!{xX16fSn!Q*fL`tT4 z#yEQ>(;mvdI1a_5vtJAg@ff*>M4d!NrfFTNEzDKlXG4FyEKXMXk^R}pRC1c05%Dfx znlD>5)2V(mSG{1GZ=dctv5EP>*K8a`JepaI`Z)BzLYk(1(VSfm$|`-MB|Wz#^yR~_$)=GIIGV%a zxtlOk;quyRSJ6azA}F?`uSKuJ-Za?cwq)QSSE((p6+>n8lCHjdj1C8GD{xXH(j^fk ziooz7IV_Ng^nMzjS(|-9KfXjRp&y?T+|L;LNqnc%G-C1)y8epLm*~qRMQ`L@Eq3(f zCs>#JX^1M-^UCBVfzi<$v8u~AwgV%^9DE}VjBObd6KUO&+J^LtN%U2>+l3p|jLod= zo~QJkaHX^b5Lz`_O$1iiLsiP>te_MOVe8aJubQw|O&C=a$_;TRTdJ0cyS{N7^9iL@ zy3M03#xf|iq;*94LmNm16)CNQ(wkhzbsR#Brttt}cB7Nn2Na-)0Ng@I@Ia&fwCEgA z00RcxgZ>e(a({WAFNWmb^loc_&8pETyMDdPVKB1ZGGvfhr!`Gn)B|9DgCpb>9f6Rw6AOW zGW`mo5mh>0SM)7%V zLi_k#p)KaM{GkK6RpfjY_GiG;>KeOUu3v~ZM)IHRd-E`!D@BAm4Ne$WS5_>0;ON_$ z{u}cFaX)+FJ_Rnflj69qJ#pUyH_kZj??1Q?(LZjfaGvE4=q(5R8%R8zg%d2lL@YoG zJ|s+qG9;eB!nxFb>_tfQT%i9kP@#?mxZ(3Gr&x}$gi!tykRt$Q_e}38>Dj$L$9i^; zldNa=2B^?!VKN|hsp73ZeWFjNAINUJFlTG#mHEnCO_=tgoo&hJyoY~6VOmw})uv*X cp_8k&aKV{RT@||u+k$N?k5#TzE?da)55k_hwg3PC literal 0 HcmV?d00001 diff --git a/Libft/ft_strchr.o b/Libft/ft_strchr.o new file mode 100644 index 0000000000000000000000000000000000000000..0f0c202426d5830381eab492ee1bd9626e5043fb GIT binary patch literal 732 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%cmNf@0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8zY1fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1z8@Z zSOF>+!31&34j>J6Dv*T$@$sn{@o7bgxv3Db_;^(JEr2R@fYKFE^PpS?ZU%-77#lYqto@rOKTX16=XM1=)=nc z|NsBTr-cKg@VM&_AO$k|N9{=4FHG15rTbY#@XAkxh?JD~T^IDN4>LVgLYE|79!y literal 0 HcmV?d00001 diff --git a/Libft/ft_strdup.o b/Libft/ft_strdup.o new file mode 100644 index 0000000000000000000000000000000000000000..d96ab0ed5ffbdd7eee8fec0146c58f826f641262 GIT binary patch literal 828 zcmah{J4?e*6h6_~idq}NLBS!Yn|5(>RJ3ph3q>lp$R(sH719SarBw(BMImHy^k+D_ z`hdFW*fEPxL7`)DP|r#3wNVfceEGif%*nlZe1H2$04Sq?4@3-cO+rJU%_G*y|HHZ> z-W4^{$C*H&xn!K%X3GwB=;t&0`JpdWQwW+zyIhTk88JAOHN>17)pAWYY~H9e4=V-E zcebPXmT)w|IWgw}S*(g`Xq=lRUaae7GmLTmbH7Vbx*@nG_Y(djKuO4e*6=xp2;P;N zfH;DTUP|#N6!d*69?&W>_CpR4HR>hEGmPf`(|gQ)X6;vvxlW&XPQOPD%+2(ehZv)= z?8e7PM`nE1c6>;kB`MX(45;B{ksQzQnb*KE-<|Gl*yUw?=4J<&8L;-fc5p{cfr)zz zK3~R&XN9Aj?1Iu#6?G~xet}iX7+*lJ&(P$50Gre5`N&o>F8Xw2EKjc>O!L?rDaxtmvzgk8USA=scVb? literal 0 HcmV?d00001 diff --git a/Libft/ft_striteri.o b/Libft/ft_striteri.o new file mode 100644 index 0000000000000000000000000000000000000000..b14ffbd07af69e702ca1c6ba0618d99d4bb81546 GIT binary patch literal 696 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%*Z~#40aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj0F<{nFn$U9I!Anz}Y}Xe0*|#Zb4#lNqlKud1hWpe7uhfvU~)T zqX4B1m>_PM0HmQ#1+owzK0Y-gKCLJ*Hx(ilACKz33aC;CC>;Pb56WfWW?;yGu|c#E z5K90t*e-r91~woD0g$C2@flEetN_viKt51ELjVvX1CU;*Takr{VuyNkKJ{pRqu|k5 z`@^HN^uux2Hz0i;-L5}8l6~Ja*l;lLx2QryK6KZ<@#yviN`$`gV7%zjdG7xOpiuL1 z#?IO|FHipe|KFqeh(hdPWQ(EkgyB39s3OLyAO^+?0Y(8Hc8&=^RVqMn86eI8ng#-} ncxG_q6KG>{=4C@N9H^WPWH3Ln>G5eL@x>)YnI)-3nLs%J-wawt literal 0 HcmV?d00001 diff --git a/Libft/ft_strjoin.o b/Libft/ft_strjoin.o new file mode 100644 index 0000000000000000000000000000000000000000..0e88db478a65639c179019944de738852d5e1711 GIT binary patch literal 936 zcmaJ<&r2IY6rR-(Lv5NIB3SScO0O2_DF+WqyD$d>K@_}{Y1l?g$q&&D1|blMO2%Az z>fhqg&>y)qIqp?RVFNAXW{_g~z3kg&bEpr#c|YcT-@MtK?)~qF1tE-ifdvQw*AyfH z*mEF7`G4#^?>X%K9GZeax@1b(xvK5OUcO`Q?M!n&`ojU~(JUzlOf*8G?)Q*a$|@HR zvzDzYrIUQ=gHl^>gZq=qppfLEGw11KAjYGjGBu@g2WtN)Tg-VirDo?#GHHV;Bi8d3 z7KJ$QWAd+oWne;!JrQAmj1Hyx9^b18pF|G6$N)hjE@5WSV8bKvuGBwe^vQ_|_-RU8dYtJ2qZjgFyfeQEt@CL)7xk%rwfr!=z59z3UKp)F=76D6r0cD zmve8TVdkyF=t&Z)ZkL7$xa9qeCEM^OZ HvL*fkEIy)# literal 0 HcmV?d00001 diff --git a/Libft/ft_strlcat.o b/Libft/ft_strlcat.o new file mode 100644 index 0000000000000000000000000000000000000000..1a44b8f2d409487dbcfa82492673fcda67ba14d7 GIT binary patch literal 888 zcma)5ze^)Q6rS}*6i?k1EEFs(J5G3iWsMT#^B8&F6YER5gF&S)$IKlt{&_q}=FyujrC>G8RPF{_o~1Ga$| zlnjHwAUH|&2bj^le>$2Po{UJo1S#G0o*U+2J;&$g-fELQ>V*7gmr)qBkk-b2QZSG* zwXwdLOu2F=v%8vEl5+Zo=~1leVpzulOlX%$eDtafTiwQf=@q%Wm0VAUij?p7bM#P5 z4+PrJ%zt5Q#pDzxzyYu^W_Pg&NT5qekLlmFh)6Z&*$mhWnl)_JKa(ef`Y*hPm{12* zp>_hH5@q2ZR0A3oiWgA?rYHy>!W1vtzx$}|^MYvQWgM$j{)R#k0*pW(jWHaL(rSvA z#;=4Q5A4f6?}=r3-ahPy?(>q$dAYiZm%JLY|6FGi`4gT$x9p>Kv@6lj6>H_huN*lE z6%S4vxZ{>4t(tWzXZ3oW8h4G=Xp;i12B{{z+t|Vl#troQA;)*1r3lvkEVK3;%jxdu zJjJOIXhUG}8J7U&{jqPo&T-54o(K&AUqKv?(*J=XX^0V!+4RxqL2N4V@Rwb=?QX55 KlJ0As&af9Gnwnhz literal 0 HcmV?d00001 diff --git a/Libft/ft_strlcpy.o b/Libft/ft_strlcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..98c68f0743316b5bc1f76fa4c587c67bf9078b5f GIT binary patch literal 840 zcma)4Jxjw-6uqh17QYg~LBXMegNsm|1Q$gEZ?GUz!9^aWRur^~ruYFxr7EUfT*TGU zpWr0*195ZIv5Sy`f@5*8o}0YbI0#-ix%ZrR-?=v-PoM8!5hAUL@Bo^DD=uOHq8Aup z{znX`vlo?p4o_mRFNc&?X4~>=k0;H!WP|(Ftt!}$cVPq9x|#OXk(;DUudS}9(w59+ zx0bUDQcg_<&mR?useBRgc8U6aL{J(bWoAh(ZlqQ-o+jn*{T$UgrgB;NDN1cbOMcCH z80Z1q-St)q0~|b*bpv~F9Yi?-{h5afDZ*gJgKZKogggsjkrM%<5 zhp^2TQOH+FKk9&)D1q8$t-1$NW%r@7C?y>Ix~uR>C+4$$$m{V9O+PO~D4Nfgnts&6 z{iA$TGBM#s9Nh4}!cI6v0~#g=w2u?kDx#&1z`RQJj0?0qG3iNbw+{tiZgxb>DQ{*rY(D|W) XzfXYTM_#n#rnRw>Uf=ntGg(}!*iUF| z3>q9;gXZ8l1dh^>eaCm78WHrtchC2od+xd4%jd^eoXD6W9AFfD6p;pjB`_oY4?OAq ztDXrxc9Kx`3Ya~&<^?+NSv!{<`%pPr$Uez3LX;XK4Z&PEDWB#G9-mh(jw*-D+gp?O zjy7psGm#+69jcBBH3qX=;$k&lc7q=C&wLF%x~^+Z@6(oMiAtfCx(Y6W!@tZKih%<8 zRQmTi#{+5-9`9)voP@m9Str~7()+6Qu3Gh;>e#+KP|bRe%SvQf*R4nwU7>`K=Q;rZ^^!UuH9=jF#27dWeJ^%m! literal 0 HcmV?d00001 diff --git a/Libft/ft_strmapi.o b/Libft/ft_strmapi.o new file mode 100644 index 0000000000000000000000000000000000000000..42f0f023a9174375d2eec7f7338b8d8a2a5b0db6 GIT binary patch literal 848 zcmaJ-#ROosO5p6_{|_t*DwcfaoM9)?7$LBRo}fD1ZV z0QLs>K>ZJMOfEE>Xv`FXb7@+8rCl%fW4-KtUVhezcV-;U<1VcM5j+(8q{Or?ZdSGm zMNikNI~&zit(O*)9QoXctl?t};VvDpS@mhGNn^j#x?bBZR7!C~>;C<2OyQj2Q!~#< zc_p%*_~duM1n_j1{Zi5Zjh8acWw=icM;45J`3UqHdx^e9dkg;KuPFbIYW&S9zus1U zt)+r`yTy9-f+N+{Z&7|Tj`(h<8ud`@!x5&MZij`pUvMNqtT)S||<<=3Ly@7-<}{Yd1a>r{rbLgl+1a7Q(M=Dz;m z4T+iW&mH@0%qVN`lUTcskf})~Od)z|~UJ6NxkmKUP_`TUTO+2&@zIngq`{wP=?(M_<NhJojSuHixDlkS>|lUU|n$<1}BCUlzN$js9>zdNj*81p25pAoj>v)7srw z-z>SF_N&`pt1DW6p0z#lZBEA6UqOUsnZm-O8d+{*zVe!0-72k@(~8#5=gTvx$b<&# zS^kg^Yc?kT4j2IpE%!oX05Uq1>P5^!^K4>y0}sBK2YQXTglB{HZun2Uq{81SXiciH zmZ;Eghf6IL)shBLlsnf_&Q&NIk!%E~j&hS9bWYj~<=v&Mn|(no5xMV0#7&b&G6A=~ z_c4nyO|7_cSjZy0qvk;&8~OF%!U_F)^SaaN80w{rjY3dsgF0;$BN=~?t=!SuRI3ev zn6)6%@5jphX#`^<7&mXMpgAr$pIkm8-LCQXV_ti=Dnx-3XLmt3J9#Jnaxi<0UGx;M zfnSeMhS~2=e0r7N@0%IUFz-D)wolOA;XWp)j66dJY5Z#L!#jm@{s&93 z5KGZQut?6zlxYN02$m`#@l9?niHP99%e;9zGy67N?(41GDumG_@B=ghH$*}Jq7N9O z`j7C>^4#Os*eM9KmqKehnzTLc)r)dzv0nS^nF;M9FSTeE2Q?0&bz~#Hxe~GUPGWaG zv8wgVbmMuRixB6_fak@6A+`#o9$H6ZdTnbZ9`!V>fBO62)(Oro@8eQ*2odu+du^2e#ly;ZQO^Fma&}&o6E3KX1ebYa)Y2Wf zRhij>avs&;T?J9?Ir}V%v~5} zx&;lzx%#NrY>hveDS9z4WOeAtnJpCuSywIePWI>4Dz_MhwFguq~0 J5s7b7&o}l;ioyT@ literal 0 HcmV?d00001 diff --git a/Libft/ft_strnstr.o b/Libft/ft_strnstr.o new file mode 100644 index 0000000000000000000000000000000000000000..10bba56b90c572c309b9a3fe5211716834ae6601 GIT binary patch literal 988 zcmaJ=&r2IY6rS}*47R#Cc&OmPg9qCpR8JN!5j!vk3!*M~DN{)!7EBboK`EpJ7d3GY z_2U2FpWsPEh0RUdQ!a&E3Q1`p$Fv92@6FD%&JPFm-))_Uu?1`mLAQr4gsan!%C)y zqLi7<+}3KwmxcV!+x#0T=U>?MXIf`eFDA842~n52?0zY;>vC;-HJ6Q7rMy4if+nRk zY23`E@dJ#iQx&H0d<0iCx1S~8WV9)*mo@(kaSRxIwg9({xa9W+wHyAEd!q7H1mDx5 zQf!Gzp&=?>T|~S_6cO@9X_~qF12I4YZ#TaY2#R&H9`QCcH$SVUVyi(2owp(^HVmjj zt1f1E)!iFZeJB$Ol(dofh*Fd2lNTaca5!B6I%T$a7) zh)1W6yWdMpq3SqCh;xKqRc#)$&7dKV5AZmasfk{CX_yonp=402`JvP4;2o%Aq0|<^ zb^6s6dM(r6pSm_{nGI>+ykBI_ZpukL>`T(OPIor~KfZ%F%zVFWb})6&H8+sZyf28j u$BEa7piM04h(I_&8@lw+M*p1!8NE*%Gr8u=cm8%B{wL4mwoJZ}&9mP%!lxww literal 0 HcmV?d00001 diff --git a/Libft/ft_strrchr.o b/Libft/ft_strrchr.o new file mode 100644 index 0000000000000000000000000000000000000000..5df8815da6375cb5853e5789029454873c59165c GIT binary patch literal 728 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%xB(Tv0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8zI{fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zElV z%29yQ0Zb6LYyi?wrvh0B5FekK5ua9+n41a_i;qWj-wdcy2PjkE*cZr3jzuFpNXU4JxKFz~nN0fj&u{(T($+d`jPUgU4(fC_nZy1oEOd9Z@4 z2l9TrJo^9tfBdRn#2yAJh5=|iVmMy}s(`U7h=H*}fKh;lonrz}l?qT?28ca?_J9B^ o9WXfZ3A8ae^RmGV2GT&~Y#@XAkxh?JD~T^IDJn|NC;}-30DQw^DF6Tf literal 0 HcmV?d00001 diff --git a/Libft/ft_strtrim.o b/Libft/ft_strtrim.o new file mode 100644 index 0000000000000000000000000000000000000000..4a891a2cb4a204f63ecbe7a9aa3da2d1bf9add5c GIT binary patch literal 1408 zcmb_cL2DCH5PnWe}=m{WITHzdy!8SG#Xnq>ogawa)>k|0F6Dk`m#RaW@; zd}*1zF8RJnJ_*@5#;VFEdkcCQ8jqo$Whp2L(NKI-?v)>7>>)7fV+#}KP#)FNtVsQ5 zDRTEacYfr#+a7RtxyQZsphqmO(IuaIh`lLx;}~}h1fZ_rdxfsk*MNL(e&L!=F{j;S z`q~9lqtriE>KR>UQ{(0?-}=V5yQla9?z97@znY+;&qheC`_~eN01N|F=qD9kA>eKy zMBk7*JNbp}$_;&LjjEVFHOH9TCyRYT?1NE@*vSYxGnnj7!b>}Z`lo!t=!9sG*Hvvn zJVq~yg{V!>OJh$r-Tx3pk!+h?*j7#dPd`vcr}lGp&3bx6rwhlS)W;lPiWn}tO@m6aAI#`Jwn z;zGUCZHd*p+yvHfuY~^3j=wwsMzAU-Kv?*RrsxjMMvFMakJV|ZmnEb WuH9O)WcJgN`HTsxRI4>iaQ_D40uwU; literal 0 HcmV?d00001 diff --git a/Libft/ft_substr.o b/Libft/ft_substr.o new file mode 100644 index 0000000000000000000000000000000000000000..db439e35cfcacbe79efe23715dd4f782507200ea GIT binary patch literal 1056 zcmaJot5L8fz;I&Xah++>Beeeoh2-=_*dBm6!AxTTR!Jq_`wI#26 z(2IXSJoFzVCrMPA=)vwua?C|AutK~=4~;X~_vl8@fqCD2GxN=xUEaa(ABXb*#xcMH zeHOh*K>{7^Ec#XA|1eM0dI~kinLti+$%L?TRXd0SzQ*pY9dR9PhUU>OdpLj)k7oqh zgvf3bH#1pVR7#H@l^zPQdP~;`^_+xCa-2iEbn#GE%&5`?gvjN^dO1_f1z91c_j{#8 zNhQjwd5XdbfV_?gFQcD9pUBMP5J4xSODXSZJ$_sQIqD&W9yZdFPc0g5_)nbX@*8*j z6qmK3toU4}`!4fko4d6kmsaaLX}N2)__emVvp}T7x|AH;nN(OGt3x;K%dgz{$>jl; ztf^JaiRygNICL#ve&&Y9WhZEmtUHM6DMT>F%UGAs(f9CnA40u7?$ml E0X|8}Jpcdz literal 0 HcmV?d00001 diff --git a/Libft/ft_tolower.o b/Libft/ft_tolower.o new file mode 100644 index 0000000000000000000000000000000000000000..940856f607c9a3610ea6a8646714448622eb4e2a GIT binary patch literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAa64fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z9Qk`d76MsO{QZ1DR=4Yq<^u|yu76&#L3luBx9gwS!^j3h;{n5Z5vU@@svri&3IRp| z9(IliKvgP0aTy@)_zwZFcw}(o6KG>{<^@>=13=|$AcOglO^;72i7&~|$uCbW0;vN4 Db)`kr literal 0 HcmV?d00001 diff --git a/Libft/ft_toupper.o b/Libft/ft_toupper.o new file mode 100644 index 0000000000000000000000000000000000000000..137ae034299c5876940f6875451f8bafc47236ea GIT binary patch literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAa64fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z68U>T76MsS{QZ1DR=4Yq<`)W`u76&#L3luBx9gwS!^j3h;{n5Z5vU@@svri&3IRp| z9(IliKvgP0aTy@)_zwZFcw}(o6KG>{<^@>=13=|$AcOglO^;72i7&}7EhtDW0;vN4 DyER5X literal 0 HcmV?d00001 diff --git a/Libft/get_next_line.o b/Libft/get_next_line.o new file mode 100644 index 0000000000000000000000000000000000000000..3fe2879730db3b1523d6228938a97ac898c702c9 GIT binary patch literal 2808 zcmb7GTWDKl9RIS_?pU{;4C-a*SV14Ea&(RggCQi?14l3*(#jafX-!UTHBB^4Seb-H zPAfS*6ec*lqJ8Y}#U~#`)`_L*TlGO&e99n$1dh^&3bB^P-~YQTm!^UreBb|m`!4@; zHuwHGIKf!xIKzV3gQ*?EGKh(B2D3Ck@CSp(`3=kCL#56$q$d+i%UzDgw~9N1~(ACPU=`^ZSEpRHL&b+m5Ga-kXSL z?Of{WbSh!nuZ}2P4j&NIvSbdSIPy3CAY)P_cR(oEwlifMy zNwS9+n^HKz3z&~#^1Ssv){9Alf)c-oJWc^#274J0_UtuG8Wf5q+0yaQx%}TTW_kB4 zHyHHtyKa7$=}Q#MDw%b1R9nO1=XR~7mx!#=VtHoOa`RQDFSMzC4w;|dwftO_>$&xY zK7X1Fd>HrDZrgKz$< z>b1Q5j+YA{*s**nN(Fo#Zv1?pYE|sETE7&r%a$M8vAj?XB$Wx>xiHh`4N3airC1=h zNhVSoSE_y_Oi^oVjYflPh4TDG$nS^uW5_-lZn|#Y@_`OtT(7O#$s4L(FJHI3+|KH= zu<5MrBzPrrABi+-KXN>vE9K?`6!R4@AI5&J{KGTAxv^&kkm7*pvU0rzx`?$j7M?{s z7OeMZgkyW>G_n>^`Hn@wfWV#8aKaCBo4k;#G+q>rxbbZYBCOpyGUAc=a)s}mH1*BE zGxvRSUmUc4t^hM8>pxHDT{0`gdf^T~H~$sQijP(F+ry{bgTA79!j7=?i$hO|@3nR%pZWN^&!+ z!jl!>uztFW%eX13^~`O&g6+ZN%z%yyHS-LDOJ+r1I@g|lusA^byp2kN;(%7$ zgu!9Es=h?Ws&eyV!SPtdivJo}9HxsWOBxFz#o@5JtmLxNJYQaORnprn@9li^y`jIX z(xps`$g)>db;X;0=*U9E*g!3 zs;Em`>Lu(z#Fh0O^7lRJ$9K#48W7($<9!J~#YdRv>wtLw#ya+q^lkxafWD;P1;isW zE&!sB8Gj)kvil4Wu8cDh{*F|zC&q7-6Juw;!$S18oMdM|21F?1y5wJz{4qedHmIk= zl`$mw1wr?YOBj)GP(lFG@BI+49}d)i3w6kT2-JB+C9Uoe{ST153>zA6U=pqF$&;XU z&}zhiw2=JYpp_=Pm8M?bO4BoIrEhl7A9T>np3K^_*-U&YqtJKK(!PRhAzr_u>#C!C~{bp%enCKCcDs}AqaO>y4LL^7GC HtziEGhP9L- literal 0 HcmV?d00001 diff --git a/Libft/get_next_line_utils.o b/Libft/get_next_line_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..d4ef3003edb8ea27560f9b335abdf86315d80376 GIT binary patch literal 884 zcma)4&r1S96rQzE>DO-1!Jxw)x_0R#bWv(y4h0bgb%;@P#UM3gB?*GS43@q0=XmN; zAav>KCD==#P~cHIXy4nN!6k_L;LZ2FH#6UR`{VWNbCO_8n`2lI^N21969KFv(v<&# zjNI!>RyjNw1^E($aO{>7>M+k)C%IX!lrIJO(JUz#5M#L|QV^n8uU;04j%e1d&TAzh z_V?5tu`d%-ayJ&vl7^og6_pu;uq&e6C{*pRCd7~V)bq(Jed(th78$E3O}vdrA%biA z0*fOE)RgKO%t1O2UIXJkJ48f5cU45||Ix?Xedp~Dle;$~?luS9vqs!w+_ij2pYK=$ zy+iLm$l5J~=^Z0XN4ytw80u=<%NX1{fRBdLuxcd-bRtOHUZ{K4m}Kc74ROmZ2F-iR1%b z<|b+z2!De9fDauYyJFnOc9-KaeF5Y6)}!PL$$7~j+KLtd$0l)%@iU0rr literal 0 HcmV?d00001 diff --git a/Libft/libft.a b/Libft/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..e5dd236191b3a21773ffca775211e5ca580e2601 GIT binary patch literal 37376 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 literal 0 HcmV?d00001 diff --git a/incs/exec.h b/incs/exec.h index 7ab737c..6e55ca1 100644 --- a/incs/exec.h +++ b/incs/exec.h @@ -1,10 +1,9 @@ #ifndef EXEC_H # define EXEC_H -# include "../incs/struct.h" +# include "struct.h" void sig(char *command); -void sig_init(void); void ft_cd(t_data *data); void ft_echo(t_data *data); void ft_exit(t_data *data); @@ -14,7 +13,6 @@ void ft_export(t_data *data); char **join_cmd(t_leaf * com_leaf); int count_args(char **args); void update_env(t_data *data, char *key, char *value); -t_list *env_search(t_data *data, char *key); void print_export_order(t_data *data); #endif \ No newline at end of file diff --git a/incs/minishell.h b/incs/minishell.h index 0f5f032..98cbefb 100644 --- a/incs/minishell.h +++ b/incs/minishell.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:05:33 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 15:48:18 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 17:31:49 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,19 +14,25 @@ # define MINISHELL_H # include -# include +# include # include -# include -# include +# include # include +# include +# include # include "exec.h" +# include "pipe.h" # include "parse.h" -# include "struct.h" # include "utils.h" +# include "struct.h" # include "message.h" # include "../Libft/libft.h" void init(t_data **data, char **envp); void env_init(t_data *data, char **envp); +//signal +void child_handler(int signo); +void herdoc_signal(void); + #endif \ No newline at end of file diff --git a/incs/pipe.h b/incs/pipe.h new file mode 100644 index 0000000..194fcfa --- /dev/null +++ b/incs/pipe.h @@ -0,0 +1,32 @@ +#ifndef PIPE_H +# define PIPE_H + +# include "struct.h" + +int g_exit_status; +//info init +void info_init(t_info **info); +void pipe_init(t_pipe **pipe); +void count_pipe(t_data*data); +void execute_cmd(t_data *data,int flag); +int fork_heredoc(t_data *data); +int check_bulitin(t_data * data); +void heredoc_flag(t_leaf *leaf,t_data *data); +void check_file(int fd,t_data *data); +void check_redirect(t_leaf *leaf,t_data *data); +void recover_std(t_data *data); +int confirm_bulitin(char *str); +void mk_heredoc(t_data *data); +void link_pipe(int i, t_pipe *base,t_data *data); +void check_redirect(t_leaf *leaf,t_data *data); +void do_cmd(t_data *data); +void exec_fork(t_data *data); +void abs_path(t_data *data); +char *set_path(t_data *data, t_leaf *leaf); +char **join_cmd(t_leaf * com_leaf); +void close_pipe(int i, t_pipe *base,t_data *data); +void wait_child_processes(t_data *data); +char *search_path(t_pipe *base); +void execute(t_data *data); + +#endif \ No newline at end of file diff --git a/incs/struct.h b/incs/struct.h index d6b01ca..46a3b72 100644 --- a/incs/struct.h +++ b/incs/struct.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:24:15 by eunwolee #+# #+# */ -/* Updated: 2023/07/16 17:37:07 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 17:32:53 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -58,6 +58,33 @@ typedef struct s_leaf t_bool exist; }t_leaf; +typedef struct s_pid +{ + pid_t pid; + int fd[2]; +} t_pid; + +typedef struct s_pipe +{ + t_pid *com; + + char **cmd_path;//명령어 +옵션 + char *command; + char **cmd_abs; // 절대경로 +} t_pipe; + +typedef struct s_info +{ + // 항상 기준은 파이프 한커맨드라는건 파이프 기준으로 < 히어독은 포크로 진행되기때문에 + char **heredoc_file; // 한 커맨드에 여러개 리다이렉션이 들어올수 있다 + int oristdin; // 이놈은 redirection이 나오면 fd 가변경 되는데 안돌려주면 계속 그 fd 를 사용 + int oristdout; // 같은이유 + int pipe_num; // fork 를 해주기위해서 갯수가 필요함 + int parent; +} t_info; + typedef struct s_data { char *input; @@ -66,6 +93,8 @@ typedef struct s_data char **env_array; t_leaf *root; int error_code; + t_pipe *pipe; + t_info *info; } t_data; #endif \ No newline at end of file diff --git a/libft.a b/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..e5dd236191b3a21773ffca775211e5ca580e2601 GIT binary patch literal 37376 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 literal 0 HcmV?d00001 diff --git a/minishell b/minishell new file mode 100755 index 0000000000000000000000000000000000000000..4fab64b13e406ead4d7ee9717ddc36d9994fa57d GIT binary patch literal 70624 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 literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_export.o b/srcs/builtin/ft_export.o new file mode 100644 index 0000000000000000000000000000000000000000..363fa28b919062236e26ba675a36989f2aaf1e2a GIT binary patch literal 4716 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 Y%x0A&90%(O5?Am;nKi<@4dvPX1vC0}ga7~l literal 0 HcmV?d00001 diff --git a/srcs/init/init.c b/srcs/init/init.c index 06a0839..c81cea6 100644 --- a/srcs/init/init.c +++ b/srcs/init/init.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:52 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 08:50:37 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 17:40:23 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,9 +18,16 @@ void env_init(t_data *data, char **envp); //필요하신 초기화 내용 여기 넣어주시면 됩니당 void init(t_data **data, char **envp) { + t_pipe *pipe; + t_info *info; + *data = (t_data *)ft_calloc(1, sizeof(t_data)); if (!*data) program_error_exit("bash"); + pipe_init(&pipe); + info_init(&info); + (*data)->pipe= pipe; + (*data)->info= info; env_init(*data, envp); } @@ -41,3 +48,28 @@ void env_init(t_data *data, char **envp) ft_lstadd_back(&data->envs, new); } } + +void pipe_init(t_pipe **pipe) +{ + *pipe = (t_pipe *)malloc(sizeof(t_pipe)); + if (!*pipe) + program_error_exit("bash"); + (*pipe)->cmd_path = NULL; + (*pipe)->command = NULL; + (*pipe)->cmd_abs = NULL; + +} + +void info_init(t_info **info) +{ + *info = (t_info *)malloc(sizeof(t_info)); + if (!*info) + program_error_exit("bash"); + (*info)->index = 0; + (*info)->heredoc_flag = 0; + (*info)->heredoc_file = NULL; + (*info)->oristdin = dup(STDIN_FILENO); + (*info)->oristdout = dup(STDOUT_FILENO); + (*info)->pipe_num = 0; + (*info)->parent =0; +} diff --git a/srcs/init/init.o b/srcs/init/init.o new file mode 100644 index 0000000000000000000000000000000000000000..0f804970d6ab82cb09a8f0091e26515cdf5f33c8 GIT binary patch literal 1996 zcmb7F&ubGw6rR-nNVS?EEmSNt2Ne;vXhkeiA;AXbU{$1|2r{P0rirFWNH%Q{i-pwE zuoQYw@a#p8J$h=D7UE6)4+0`oh|pscZ2jKsOn%vbJ~H#od-J_F-_Gn#KK=T!*Tb0W z5JQL7iRSJ==R<>?KwF`SHuj1VVP`1^rhU|8)Tkbr5SE#@oU!9i1@BGOeLcFX>QFt( zec#2{08MtXMFMR?gtJyAo}5tuA)4#yI!KrHObb!IT1I)KFPxf9hr*V~CFkSGh!EE& zYLgf|R0)eJxPp50=&|nFGd7hJ!i@wN*OtV(rQY=DEdJ( zc@&<*tQ(Dt%20d-I{JVdo4y1@KD&k1XtV{?+>OD19N*!^Z@f_P@!~?27jwItBxJ*n zZigyxdlF$6w}Vw)7-OF2Qp@VqA?R}ms|!1NP*y3y9hqkL@?zjTQpFF3#dc34((}#end9aL^P^%ZMa+~pz-%VAVRmk-=yR@Z@7q-1v(=$Br zzw4dW>s{DaOO&XfUa#b*W6+)!Q-1=xw;1rs9d3^Gs|_jz9DTIuc5f*#B&$iaE&EeD zuTrqG4}+Rrd$Lma;3`g5c=!u1jDKdHr4$M{OBHbng@tnc1n<|Tkjlfzvd2GaS!JBu zAZj8fKUmK>(~wi;U9`72NRUf1@%tPpkq0^*%EmBTw`FH2U-NpDu{Gs9YBTSA7>vDb zGrz7XzG*Yxuj;#=+-9!4*X8Z&ajzlg6ykDwf7ABu?<;+b1&(=_JFXqYXD5w#cuiPL z@s!R3c?s~=6;J6skoN+-u{~#9rTZ@)#|H)t#wZZqykP+G8}OiW!{5U*Q2Zy5;$MNd zB8)r`FQE}pco9gv5g_r7198I`ThKu94Isr|11bI#2s3V=1Jwuuaeo=(K;mBp68|I+ zSDWz=2wt~ep-&+|#>w}9pwH=?^7Xl1(LRvu5*qRKdqJ-$+?vg|_@c!pZX^F@i|=>* z4(yRM`a&A{biXzFOhhe_$XZEro{4lOHG`{Pn3+r}Bg}l{Q(A%T)O}O literal 0 HcmV?d00001 diff --git a/srcs/lexer/expand.o b/srcs/lexer/expand.o new file mode 100644 index 0000000000000000000000000000000000000000..8bae0c4b028a8649048cdf2c1b9aa35bbf91fa3d GIT binary patch literal 3508 zcma)9U1(fI6rQayz1yGMZK)W4z*vL?VWo=IJT$P;u8inHs11l%ZnihKNz7&w_eYmv zFmRKSn@hA{s}H{PMX9JzkU}XM)21}Rmu#Pm5Fu!kEGk4_tg$A3=gv%W@BYvXnK^Uj z`{vAj!qG->F996SVj6f?Gmv3tc>z@%YVy~e3ba=;Q` zxqla>y(Iy&qOvFT-Hi3ht|y*C+lcBNg}#f`qf((oX}kq~G(c*58T$ef^H~Qf6^bKO znoGWxg#sgYFP+@^h1`N{eXyEH|-Oo%q#ui4!1}XssuwxtqZ9VOpJ=`}L`(_u1>sPipofpt#G5?4t0o@y@K{Zpd3Y0W#0%a*B;Z|GpE{z+oiqLX_3_U6iTM0QM2k+T zl<@e&#o!zsn&ZyRtJpB}rgA4<!>uvGfdddw3CUGz%o)@d3?VI~Y7qI$JOLIAC;{8^6Qt8?h5Jr=HLs8Kn_+R^FdO z{`(^~RuCb;J{GW#1*VVElL5BC-B`pf)a}&AUJ)a>Qw5Dr9!}#n`y${ba2?wP{cls1vRCyKTIhVc>-169c8Z_ZOOq$)S zkJX4a{g4Hp<>q=^KbIu1|Ljhi$Zw{kIhTucvlYckTZ*w=7e>Z@=|`zxh_>C z-KrL+u(n4jeS+R>d>O5J+>P8!EQ`Rk>7(@P<;Iuo>5vm&F8#1U`ARwA<$^{xv5a3D zZr@d+hv*a&j6@UfFb#!t?^=iL!0eM~-k(csDFVXy52K zF>^AR?PZS<;4g>8uRY=wEHN?8XtyX8_^QNP1X6)FA!Sh+tbw0Ja;Ne}4g7$BS?KgJ z7AizSkv%)Lv*6MO9!71wjliNv{~2p>vjN%Q9*!_a4>{v{;-q81wBb;Q_Ogd6yw+-bZL?-lWt|Kx)u$;cPJ_dI^&FpF)@+WK*y)D(K6jA(~0ZnzgVWzzY>1@(K0GMT}QVHNr?1|0u!q|GGyJ>D4fWGFLhYA+a|P4O1i~REEJN6 z%Mz#_#EW?J>cNwTq9|4mB6{}VMMy!Rha6&2>-#&iZIYTpKl$_L{XhTxKeMx&PwPMb z?q)2oi(!BUp;`-u2o!P%dY=MKBuR;oUdn;^7@Ulh_(+7Xt(-0A5|6}gj%;Cn_CoOx zALTB!GS)%CAX_BkixB3lolT`DltYMmKA#8ao_zHiQCO8xi25@#(=&!?i@EfjRC-K^ zt3#VXOkSyk0p%=%kG5V#0TrsF6v9f1@vJdz$%MxKykvxuimw+u>L@+W-mQ>_Ph&g? z^&W-3hqXaTs3`fhHpW7*k74PUkxV_Lytg->&Zmh~(=Ef`e*8wM9;pXSX{xH)E2WY*!Q01k$GA|`6UefAE znF7+BhD9g6MX2EpX!^32{{ab$t>r|a>>mH##J_XSSu=wqt#(?ia^rFPk5G**OPf=Tg zy{_yfSn@wX4YH$NRTk}qCB9>@#7Ey!y#LV%tW1%17`PJ-{~WFW>%hKDVNwIx@dn%{ zaZ6Ao>}!ZqZf*Xp20YM!nXogHR$3TiV`3^bYcnyE%}n5XDy(calNDAj1>d+W@Gp=y s4a_GzAFyH1&8qa&yp?5Q%F2;3la@J&(ZF1in_0`SEr!GyBR$6c0jRoQI{*Lx literal 0 HcmV?d00001 diff --git a/srcs/lexer/quote.o b/srcs/lexer/quote.o new file mode 100644 index 0000000000000000000000000000000000000000..072c3049740e7a15308c23ea12c1db7565b9cabb GIT binary patch literal 2820 zcmcImUuauZ7(c07m(JRg$%b<%#!^>B0-b*zhA1ia;uRJdvcQm*(=1J!vMs6kgHZ_t zZlk%q3?@u`w2wZC;M2wk)5$Eph|kSK+GLo3LVfFMZT)@soO^S#v~vo6^xW@!f6kZR z_nq(Sy+3dLzH^8%-y;kUtOHp7K0Jb0peL~^WY~v-I85|BodG#AscBI>A|Y~#LQd|b zd`>%mt|L3UYX{|y;?Y@sfUy9n4zLn2hlGe{bD8OtpJ}gb%hinkrcC;*yV&ga6i6qztqpR~mIJ5#>F(}sZ){$svMAVXf^GZ|oVv}Q2{TWA$SvP8qs>aB!K+%s*c|5NF9-$} zv$NUI79zU&KIAMkztC!L6tE`FW7EHK&Cm4wywK(+nF-~AGo!#gBf_kZp>|;MF<1*hz?=oK@;0p{M@?VAT2=q^3E#E_TfE0el#)kr* z^u76*dQIAX6Yx8~CH+($d-`31-#33sKb6m(e%IiqZ%aRw*Pebi;kWRY^i%ou_?7UY z@-r6t7#yWMHU$psp<%_3EB$k*6YQaTs3%mR_hel|hr#LmL2x?%D;{({3{Lvjz)AnK z(tid_C|`(%3=}Hi0l9x#@v!1S#ldX*8So)E)=2>x!yoI BvZnw5 literal 0 HcmV?d00001 diff --git a/srcs/lexer/tokenizer.o b/srcs/lexer/tokenizer.o new file mode 100644 index 0000000000000000000000000000000000000000..0d663794e5d711af315751387b39550d29838394 GIT binary patch literal 2348 zcmb7GL1-IC6dgITvq{sA5|WaTLPcpwpa@Ja$sq|gv0)%JDJ2Fc;7;Y$+7?kHXSE_G z)L>XEWV;m7Qs^H+dIHEs(jr86t1-TVzlJ9OtaXqMNr!m!FW@Iqiqo~5so#5ePDzyr>$YX{T;7U!vJmqY^ar5e`-y_oG%}>{H;%T zJsU%3wa=gkDfU>qNxrQx#-o+A>nUFUD29@*+U;_TZFf7zmrnM8F7WzM1))Thy~;#~ zgPyhGX?x{SK0O1YN;(D!ukf({EG6t!?V9CFqkG{8_|j*4;fyc!18>EJ^;3&QNNsBT zPDe%+A^hjr$(3pT@d#t8pWA!6*-)n=k!7N*=Xm|nUMT=Kt8X@j(m0G%Z8Nm|r>Ved z(P@NCkVebhKl*Z^M@Aia&349C^otVm{AIu1w{tv(P4KRlnVOP5^%!&6?Kj zz#o{`?E4=0pn0rnJ#e~6M5)_fv($Vhl{vKEx`$Ohg^sT6YvCwk{|uaO&6IrDbsD8Dr1 zZ^2RIGYT&bgHt{Dex!bt|rP=8Mp28`mim zUB`wzqx7=s<-J +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 17:26:33 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 17:38:18 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -70,8 +70,6 @@ int main(int argc, char **argv, char **envp) // print_token(data); // printf("\n\n"); // tree_print(data->root); - - // builtin_cd(data, &command); } return (0); diff --git a/srcs/minishell.o b/srcs/minishell.o new file mode 100644 index 0000000000000000000000000000000000000000..d71400575fd095ead59d045626f75bb74887f615 GIT binary patch literal 2004 zcmbVNPe>F|7=LU2*-YInDvAmhGALp|Dw)L%ZX)GmERVQAy#j zNB9;BVnK$k@P)Z;B&F}kt@B24z=FPre`u4kq zvA_m~3$zj%tiUA#h3tfm(ZXM(M6rYCs*;?m1H3Pzq*N!tKi@ME9d(x3tf(g_+r-#_YZD%V?tt2l zB2>$&p(Ip>{9(+o1=x&De*#24y8!hH<&tjpI@f7;%hqRkbUr#A`$-vAeo?lvKV+-B zBu~eR0D>)=zbc~7iD$MBER;(zG=8G(JcNZm0v@c+sNoTR;ofZ3F&B&uu z(VjPQAzzdWh_>=GvNdgIw=BR5_F6PJHz!*GxK$$+c&XNFE%F^q6m*7HHuVQ!P7`@KV2RibNV9@m7^xj)C3RK(`4fs zP2AKa#QkUL6s6L;S-v$oiDIAsG46dz#Ch{1u6Nw4Yovbp`fGVPrRkb6peB<|5vJxe zvzEmZETNc6M8`Ra9EA{TWB$YJv|C)dc@;=uyl;;(j04$%gQ~ic|GCKDM;soxl^54gj%hQX>$*ZFIqANZ(P5 z{GWj2e+$HxNiT)}x$utz@eHI9;ZF%pG_agL?Oz&hYKFbKQ}#Jxy8K&p2cNO@6U2)s@3Bfv2DK_I>r5`g+uUjxz%t~`R_ zp{&=(X}`Ve^ul=gLm$8H<20W){G>$@fCEcNcKRz`Dc9mypP}Zam&YV_&C+} z)@R%p)=eeHc%R9|d+C^($v9qcT(RQ3x4a)An#m1QF|&rfU}Ssozr}b`&8dL2k}(L8 u0=FJdrJcfb2zW}-bayGK!Zfsgq~KrA>|;EmDv6|~t9AsP6)J)Q#n>Of-%&sS literal 0 HcmV?d00001 diff --git a/srcs/parser/parser.o b/srcs/parser/parser.o new file mode 100644 index 0000000000000000000000000000000000000000..3b8393c08cf7aa1f0c549d99ba6866aac181ee3c GIT binary patch literal 1692 zcmb7EO-NKx6uvW>f0geA5k*mtXc5Fv7SSwPjOf4<5<(PgA-Bi)#u*&PVSIyAFd&Q* zj)UZ;b*;i}yJ#UJ3b}LJwji8=g0~6@)4p?m9A~se2hW^)&iU?lzx(st`Tg^tld(V> z!wK{+Nq(lUOA zu^uY5vjqy;IFHTFWSp4CbLshHdXn=egStm?Rq;Gm#RSMm%NqEUCWVjy&fNr$XPp^W z=gs?~smJ*Idcei<%~#pq!ja5AEydKEh8eC~BHmO{jQ_7qM=7;>6R zTCvoB+n8PcZWn)8ebw?t-!Hpd*t08R@R2UNJm%Zwof=WvmEk?R+;7>HD0+EootABM zDnk~!U9uYiDuUV3nq4gT%vgL4Y@Jy8s-m(K-8B|3AP3$D)+~mZ@n&Obcy~FvyB07? z*fOhM7l1;|uH<~Rl0Xx)U;l7;cqr*5`c4a7shbKbh1$ufaWQqvn%FdMM3~yYDRy4Y zL66qdZj`P{4cIajGv+5cVZm5mZ(1;T3ijxT>MKpyHls9uRKOX~{!d$rZd9%{&~Srq*Yyzt?;f95|29PZ;3_;oE;C?nuumIQm}S9Y~zg zbAm4hz2FW#RPh_M;Qfc*BI31$xXK@>{3|#y482E$g&yOF=HFB?f{1>Hr6PjJpCR_5 zq4f^wT%Ffl)Py*JEulKAt~n=`-$SU6(tPlRTT8N_fZelp9An#oc_; z<8z+l<>naAIN3Qjt5C75>v%3txlWw%R5CryGs%q3V+l7l&Ar)aH_g2l8T=pq3#0B= A;Q#;t literal 0 HcmV?d00001 diff --git a/srcs/parser/syntax.o b/srcs/parser/syntax.o new file mode 100644 index 0000000000000000000000000000000000000000..9d57e733a1b49ce97b83836e5693a417becddafc GIT binary patch literal 2720 zcmb7FOK1~e5dM>H0p`FU1z?`OGBKc3t5RrHt1UoNCGt}NLjIXf%m(ZdZV zZc^<^d&I^9hNGQ5>JoxoT1qLcVL9leFIy^Let$I%`po%an3MAP)GfrYe@}8Jcn#Pa z$5{IB2_ML#40ue8cgNbO5#1uKWX&g$O{Pi$Gi~q;Sl->;A8{Zr!l>abv6`Hz(+<71=GPuH`o`en`qj~ClmVk! zKT5Y5JHC#Ua@o}AvQz%krw zeg1RhUo~37YRi#!?Z8(A8hWe4J2ZHA0RB*icWUsi0DMS?M>Tjf08aq!J$>FY99U6% zAfVNXE~JaYd(Gli+fA2E%W?9KXEZJ7MU}an@Yr6T1mTeB)*en(g-nSI+fu(@= zEiLtua@*F(rJQZiJHkX~3Q||Lk%+NnMA-uVdu*9pz(2qr_h$?EWBilZsPY8z)7wrI zx^_Z@%CS&vd1sVrZh~z+c={KA?h=V<`Tj4`1{NF3#4ue1cRydxcCGHY%i9ZU* z^R&d>r+kd#xmx000yjLP^6`8DTyMnt2gbW0v8vuL*a!ZJ@lTMXKWF_Z>$h0H!TM>| zkFov}K@?wur1*ENzhwOZ>l3UGVwZ$J2MJT}YxIm%@jH;vTqddC3E zewHRn2+zLy>y1*VD#fcCq47xBKf^1U7I;DrPHbqjs+JdEY ztZdG~doARUw8}YG7TvU4DmMIuT)}E6cHV~KeHG+|bmk(W(^+~$8ikr51vFsM6J-Cd|V`l9C8t|pb&3Cs`2}0W^EcRI57Lq|N7?p|C!zW@Z;OB zjf_RsF+4CkF{2%L^kQP{!ki<=8sjx3VjQ9zj8F$Aqe*x)gmCPlqt;5lU|znkqKB)S z8i(*Gx3-?KP2}uk(EHi`}9IA-D|Ujeu^pRQv?UndRUCky|tyu#=+!qKTn}*xqR}XuiEId{I`Rw!+gb zRk6ip#4ei4loFi6LvnMEf%T41qy4BU-atIqw%S-;3kvXT|<_AjC8euM>>AX@R>xNn+XvO*o7*{Sl8hgiQ~ zolWq$rPJX#&=zzKwO~py!jaN7ljqPkw6H(l%}&r3YUsNyUx&~}GQ9JTmGLjXdVv_b zy@vm;&iKBDf4j1?$kcfjDaIr5%^RbXvk&$?nB`?^XtNpeU;|s@vmGb5gx?{G8zhXM zDo*oc|B6c^Y);2%zW zhlvqK;FpxKQdo})yEsmI$|>YmToaSwI&EiEa^6nmtT84e$cS{O^G<$z%2xiIJ(0bJ XHPB(dVyCki(sH)4S*dh7Yccj4gp`;> literal 0 HcmV?d00001 diff --git a/srcs/utils/list.o b/srcs/utils/list.o new file mode 100644 index 0000000000000000000000000000000000000000..34d4f239cdc64565d9bc95294badb241baad5146 GIT binary patch literal 1376 zcmaJ=L2DC16rPPS4ceL&Jya2zgW#zmUW~Vvc3}krq7}T9aZNThn5MyOY$yZ*slu|C z9Q*^`di27giPVPn1K6$06)ZkDS>Deo?i*K5qv=1mtuNJ|%d_#azI6dMXwDIC*AHFn_%73>A~U-eu&G zGwgh@LT9LM5#0e@KJI@59V)AP)IDbO05JYqG@zA!W3m@I9IJoP`{Ka~^&32K`-J*M zp0~E{3#(~c_ViS`i=-c5w)_tt+4SFDR{sLkW@v+9K1&&#c2-KINPbh=LyyrAy^L{9)I)buWSgGH< z-x4tO7~}uZ1kTnbOM$G^gQ~wNIIVc~K**=kZUNN>_h>7mC+4J_zEqy<6B5Yp`rnx>L$=pqD!twLCY z{s}#L^ys~X9xe3ZKOm%_uoofp(DZvVZ?dta&V}j^Zf6{BvI}TVS$gq ze{fKO!ydsGnBQOrQu`(7IC>I0_hr*M45HA+mM>M_EoIzA|0LjkJWGTIY^Y7m)7xNhfu^d#pP<9SjC$@MB0ZUwl+r zIW(bNzFLr1nHBaWl;3=<{!r?* m#`L-lqRmjZ!fM!VkzNaRy%pB#LAB|~YEa*41Ypg;jDHD6d8gU{ literal 0 HcmV?d00001 diff --git a/srcs/utils/temp.o b/srcs/utils/temp.o new file mode 100644 index 0000000000000000000000000000000000000000..a6a8d465e7054628bed02116eb5ee3bcfcc4c65f GIT binary patch literal 2948 zcma)8QD_`h6n&ed$+FeXTCG$OGD-sxceS+IBS zgg{^uZ5$%~i1g12eh7Xg_#^hG7^U^2^urGeA_h^&!U_>YqSeN8=iRqEvq`~A-rRTY zJ@3Bz?tMFx+kgLduSJMRqrd~B2_xEohlv4s4C4|x?jzTmm7|^3Kr}{7L4)FvNa@-| zSIre3O}#!^!+Q26FQ9ld-Hr-znw(8yk(3rGGX>Yl<|f%7WjLOW)5^KO&w1+goUVq* zFEclrPiI_tA$KvG8<+BIf7OY}r9%oWvT+@Uqna(os%H#^l+vD(6Ha>8RtxI$i*i0+ zaJ-W^C&klpScoY-C;dFeaSZ=BMoctgkkF=N{}>PjZav((XG zEVpVu43?LVV&#e2%JM$}cd4WCKz>7jeUu-aWgU8~s)?ONWTS(+r@8bmyQ7RrsZ69ak<=b&6 zD-eaNJ`gZbOuzJAF}mGzZ*Px5eET$k(%12^&537?)+Hheqg8N!O~1d?Pp>Cxt)zCa z)gQQHx_+gF9dz?k^vHT zLz8OVcql;PZfH`i8-F5AK3shxZmAloH60OS`6L-uy91kBd;-gRi*E0e*l{IQ(ed63 z1;B;p0FAZ8>H=&bo0ZhI4$vD4fM38fDudg#r0W7)^#lB(1AtzCzi<)gM1FJ233VCF zvCVM*7k1T;7Z>10szOoxWtpLhRqDEl8_*s!d1r3o@B_7^yi}!hJ%UPYIGjqDb}?IU5pdiO4|9D&bJKRtoB^pm8<#wt zWuXlsz*;JqXHo zC>%sR0}i@DzTl2QH1YvGw(yc5Nh`I_Ka3YD$x)^D`5#es5qW1sM2hi9{DGF}Ww1`b z{shLIztC|A=O;w(k@&j}eGlr-FY(ZRarv&|`5!RggLri4secuZ^F5Ha2HraJIPZPD z^Eeki*~!|8b#tn?`q9^4444U@)gz*)|)HCwG z!uTb|3C3-VTNu+#BL2^)HO2b@n($YQuQC3J@fF57#*>WCFitXl1DdwzVQsR8^6m6L zi~)kamj+{fkLepp{w)j=6N9i8ng*aqC`|u1_;OxhMtINFVIl3@+tQtrX~#*=E96gQ w9{+v1LegtW&nG3`A+9XAY4<`wC@a?DVB-n*H7!YlsmoQnrMf(NfT28obBg&c#_*6;1in$$K$@xhz-zW4K+$+lm9d_SCEEOL(F zfQ~`8$uXgjE6_Q@BP2nMkfy2$F=jGSm1aV?PT8eODMBn*iwhwdSS>1jnnzq_&PxkW z9aJ&Q%WbSZv2(5{tv_8|UlQWM{BS;;6E?L#gt*Lw^B7Z`WS0=mipUr3H7CT!`Mp-v z+cM3vAQ#?^LKhfYQK`V(!8rpBo<*Nz<4_VBL-9rMp!fL%n}tO`dk7sCx2W{Z z;@%`hcq6G%mGX_>zL)BA-|F+)o|&oZu_`6h{y6RDUa8}y+gR9R`WD?3ZU?)k;5MuS zs_)Xb&?OI}dc0QFPj1>!nR@<~9^0Y?Ophi0pPzA@pYgB!jKAWCu@yXQrH|Lbm%_R?a0HL-HRKD>!~12e z^Er5$02rMe0<}FOQ>XiqJd-B)9HlGIsseANJ&`w6WK@1v<@t#I%W8h)`6Cu78xdn_ zLVJUr>xf^2F8%~nh~mds@}lu7dVhLc^-580PC~V}g;TKWbJHG$` literal 0 HcmV?d00001 diff --git a/srcs/utils/utils.o b/srcs/utils/utils.o new file mode 100644 index 0000000000000000000000000000000000000000..018e9aa8b59b317ed5911ecf5a12bb7968635aae GIT binary patch literal 1564 zcma)6O=}ZT6uqhah_#woSWpoXp+Xi$svx*fh}ys`L{!?+O?e&DNgJ9b!{mhqu~3MJ zV-Q@paP2SXvbb%by3(alcIzP(~*kv;AK?QoXWzQ*U)u^tNtMf|TpEzhDNQ&N?6vv^* zk{dWc&Nw8gl)I=(zO(Fx8{+dt?{q`-)7_dm;A$h<`NqUh1!;J`2Pz zoSO#r10MlT0(nk+f!qZk{`t{4ARc=#FPISonEDDZ1w!;bS&#F`mL&J2z%B0QCBFjf zqEjlCKa1rzV)})P}Q}g8+A}j z4|i)wB306=QrE?b>-eO!@48B24_Bowk%&EUic89Oo%u?+>XIr~y@tkRXHBe literal 0 HcmV?d00001 From 0d7013ef1964ec9c039946446897f26abac40e84 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Fri, 21 Jul 2023 17:43:52 +0900 Subject: [PATCH 03/57] Abc --- srcs/builtin/builtin.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 srcs/builtin/builtin.c diff --git a/srcs/builtin/builtin.c b/srcs/builtin/builtin.c new file mode 100644 index 0000000..f494a38 --- /dev/null +++ b/srcs/builtin/builtin.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* builtin.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/21 17:42:18 by eunwolee #+# #+# */ +/* Updated: 2023/07/21 17:43:02 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +t_bool builtin(t_data *data) +{ + +} \ No newline at end of file From 43e75d7aa0790583d31851a4187f7a5323f34525 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Fri, 21 Jul 2023 18:21:56 +0900 Subject: [PATCH 04/57] . --- Libft/ft_atoi.o | Bin 0 -> 892 bytes Libft/ft_bzero.o | Bin 0 -> 684 bytes Libft/ft_calloc.o | Bin 0 -> 776 bytes Libft/ft_isalnum.o | Bin 0 -> 760 bytes Libft/ft_isalpha.o | Bin 0 -> 680 bytes Libft/ft_isascii.o | Bin 0 -> 664 bytes Libft/ft_isdigit.o | Bin 0 -> 664 bytes Libft/ft_isprint.o | Bin 0 -> 664 bytes Libft/ft_itoa.o | Bin 0 -> 1160 bytes Libft/ft_memchr.o | Bin 0 -> 732 bytes Libft/ft_memcmp.o | Bin 0 -> 756 bytes Libft/ft_memcpy.o | Bin 0 -> 764 bytes Libft/ft_memmove.o | Bin 0 -> 856 bytes Libft/ft_memset.o | Bin 0 -> 700 bytes Libft/ft_putchar_fd.o | Bin 0 -> 696 bytes Libft/ft_putendl_fd.o | Bin 0 -> 876 bytes Libft/ft_putnbr_fd.o | Bin 0 -> 984 bytes Libft/ft_putstr_fd.o | Bin 0 -> 756 bytes Libft/ft_split.o | Bin 0 -> 2048 bytes Libft/ft_strchr.o | Bin 0 -> 732 bytes Libft/ft_strdup.o | Bin 0 -> 828 bytes Libft/ft_striteri.o | Bin 0 -> 696 bytes Libft/ft_strjoin.o | Bin 0 -> 936 bytes Libft/ft_strlcat.o | Bin 0 -> 888 bytes Libft/ft_strlcpy.o | Bin 0 -> 840 bytes Libft/ft_strlen.o | Bin 0 -> 700 bytes Libft/ft_strmapi.o | Bin 0 -> 848 bytes Libft/ft_strncat.o | Bin 0 -> 916 bytes Libft/ft_strncmp.o | Bin 0 -> 824 bytes Libft/ft_strnstr.o | Bin 0 -> 988 bytes Libft/ft_strrchr.o | Bin 0 -> 728 bytes Libft/ft_strtrim.o | Bin 0 -> 1408 bytes Libft/ft_substr.o | Bin 0 -> 1056 bytes Libft/ft_tolower.o | Bin 0 -> 664 bytes Libft/ft_toupper.o | Bin 0 -> 664 bytes Libft/get_next_line.o | Bin 0 -> 2808 bytes Libft/get_next_line_utils.o | Bin 0 -> 884 bytes Libft/libft.a | Bin 0 -> 37376 bytes Makefile | 1 + incs/exec.h | 14 ++--------- incs/minishell.h | 18 +++---------- incs/parse.h | 8 ++---- incs/struct.h | 9 +------ incs/utils.h | 8 ++---- libft.a | Bin 0 -> 37376 bytes minishell | Bin 70624 -> 70664 bytes srcs/builtin/builtin.c | 36 ++++++++++++++++++++++++-- srcs/builtin/builtin.o | Bin 0 -> 1580 bytes srcs/builtin/ft_cd.o | Bin 0 -> 2400 bytes srcs/builtin/ft_echo.c | 13 +--------- srcs/builtin/ft_echo.o | Bin 0 -> 2036 bytes srcs/builtin/ft_exit.o | Bin 0 -> 2304 bytes srcs/builtin/ft_export.o | Bin 0 -> 4716 bytes srcs/builtin/ft_pwd.o | Bin 0 -> 1216 bytes srcs/builtin/ft_unset.o | Bin 0 -> 1440 bytes srcs/exec/sig.o | Bin 0 -> 1052 bytes srcs/init/init.c | 9 +------ srcs/init/init.o | Bin 0 -> 1996 bytes srcs/lexer/expand.c | 12 ++------- srcs/lexer/expand.o | Bin 0 -> 3508 bytes srcs/lexer/lexer.o | Bin 0 -> 1804 bytes srcs/lexer/quote.o | Bin 0 -> 2820 bytes srcs/lexer/tokenizer.o | Bin 0 -> 2348 bytes srcs/minishell.c | 49 ++++++------------------------------ srcs/minishell.o | Bin 0 -> 1320 bytes srcs/parser/parser.o | Bin 0 -> 1692 bytes srcs/parser/syntax.o | Bin 0 -> 2720 bytes srcs/utils/env.o | Bin 0 -> 1992 bytes srcs/utils/list.o | Bin 0 -> 1376 bytes srcs/utils/list_clear.o | Bin 0 -> 1060 bytes srcs/utils/temp.o | Bin 0 -> 2948 bytes srcs/utils/tree.c | 5 ++-- srcs/utils/tree.o | Bin 0 -> 1760 bytes srcs/utils/utils.c | 6 ++--- srcs/utils/utils.o | Bin 0 -> 1540 bytes 75 files changed, 62 insertions(+), 126 deletions(-) create mode 100644 Libft/ft_atoi.o create mode 100644 Libft/ft_bzero.o create mode 100644 Libft/ft_calloc.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_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 create mode 100644 Libft/ft_strmapi.o create mode 100644 Libft/ft_strncat.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 Libft/get_next_line.o create mode 100644 Libft/get_next_line_utils.o create mode 100644 Libft/libft.a create mode 100644 libft.a create mode 100644 srcs/builtin/builtin.o create mode 100644 srcs/builtin/ft_cd.o create mode 100644 srcs/builtin/ft_echo.o create mode 100644 srcs/builtin/ft_exit.o create mode 100644 srcs/builtin/ft_export.o create mode 100644 srcs/builtin/ft_pwd.o create mode 100644 srcs/builtin/ft_unset.o create mode 100644 srcs/exec/sig.o create mode 100644 srcs/init/init.o create mode 100644 srcs/lexer/expand.o create mode 100644 srcs/lexer/lexer.o create mode 100644 srcs/lexer/quote.o create mode 100644 srcs/lexer/tokenizer.o create mode 100644 srcs/minishell.o create mode 100644 srcs/parser/parser.o create mode 100644 srcs/parser/syntax.o create mode 100644 srcs/utils/env.o create mode 100644 srcs/utils/list.o create mode 100644 srcs/utils/list_clear.o create mode 100644 srcs/utils/temp.o create mode 100644 srcs/utils/tree.o create mode 100644 srcs/utils/utils.o diff --git a/Libft/ft_atoi.o b/Libft/ft_atoi.o new file mode 100644 index 0000000000000000000000000000000000000000..061a592c6db7f9e146e403ff0530b299e700c793 GIT binary patch literal 892 zcma)4&nrYx6uyr!7(ea^MOn-O8!4>Vjkxs|lr&Q|x+X>>KhhH^MPuX{$--JT%1&8X zNn@dGZ2bckvoPLb7Q@2$&b<4^ouqtq?mg!__k8zzulxM@_EpW8QOU3%e2800LI|K8 zF-Y|v*j2q3wR<%*83pMQq_pB&mYchEL`+3~YA@^1^vFvIKDJxRkw`hay1W*fwdBUi z=Hkknlw+fMKcsX*ip*EIUZ!A3wZQy9%J_nuUym)vT~5k!e_=HgRwHfD@xG0yI>r`M ztGEqdZ9^2tc!2p41iF;?8RcUQdp&B*vk8O_npM~8^uO|`X}_BGPX1Bk==`H_NXblz zJin_+eAM#eR=sYxF%F~e{3NK8A%2zydnDek44$k)E7Pp{W>rzn7WvFop-?F4_VE2O ziC&)U(j`&Tt5_0F!4?jUX-a6Y{(Cbu4v$TV&%Q&E<;P`mL;M_$vPU9Ya@1Xv%LQo6 zw4cnqwCgMik^V%s&v0y!%Ur@_O62&paHb#V9uMlh{rb%<>VUC5$&9U_5v;GSImM|? n@EwSYFDL@udu79o!GnsC2EQka9moA7%yo4+Z^@Xox(NOoU0R&9 literal 0 HcmV?d00001 diff --git a/Libft/ft_bzero.o b/Libft/ft_bzero.o new file mode 100644 index 0000000000000000000000000000000000000000..cfe1fcb38b2a14fd921d7ec79f72985c3db1d65d GIT binary patch literal 684 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%*Z>v30aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7DmfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1- z%29yQ8cYzkbO33nQ-Lf5h>uUrh)*j@%uR)e#mA$%uK=pl0ZMy7&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNPGg+9SeXo50DSk&j52XkO>ALy->G8MTn=2n__UJvq^i`Sdt_Z)8v$I9qsSg51`;uYTqgYo z?q&T^o>3Y-fk?gt&V8rpi(KfESuPE=%3PU{AI)-^0>Fnvn}P!8cHKL$Y@au3$NRNC z&NtT89>t0jhKws{LbF_Bl%vMBavSG!D%?G^JV#VG|2f~e@{w^@`lu?A%g^fc$Uq>#7>XDJis* zEzp{IEuYPdUErw&tj{9LUjpjC!|G)IEVY(P%Rc%hc)T!&5x+x$%Ba)it0!)wG$A4T YO9OX(?m6C(;{*4sYPD|1C0nHM4T&sd0{{R3 literal 0 HcmV?d00001 diff --git a/Libft/ft_isalnum.o b/Libft/ft_isalnum.o new file mode 100644 index 0000000000000000000000000000000000000000..beb024fb43c977a5ff07b8d7ec035a1071eac39f GIT binary patch literal 760 zcmb7CJxjw-6uqg^inb<$gMvZ_hb~>592G4@a1g2BB9G7y6RnmF<;GA^&_iMi!w@$&gaR-6=75QiKQtbJJ!rgz$_4+ zrB6~C;NU|!e=YS--~v4AhciQl!LNju#Rk_Y;0rB26=5w9{?UT83t1GZUBCwTS#Y;C)9C-!H9B z8|SIDTw3b#V0>p$2cxXWX>d9R))S}k|Cq3$PI^*xUpdEBXW#KfTL*5lG1Q)Iaqk~* Cq*RFj literal 0 HcmV?d00001 diff --git a/Libft/ft_isalpha.o b/Libft/ft_isalpha.o new file mode 100644 index 0000000000000000000000000000000000000000..da20b0195bfc3228a1611cc01e4a7ae55c359431 GIT binary patch literal 680 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SOFEk0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7kxfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw$ z%29yPOc1v;0BNXGfh+`wk5A2rPb*5yO@)ZX$D_J01FF;kMnlbmav8W87+^}kLPkJR z0*JwO@pCb-0Wk=GECq>oK;1C|NDBb@K>Z8>K#UAPdZBJb7AA@v>e2bMv-U@G?GH!( z9+1^QRuq4q2!xf$-y;TLRq^-p09nUf|A1_I35qfx8%Q#AyZ(ti3}S!*G+r>A12PZ< z7^{L97%K!A1$fvwCID5b0L5g0xZ*zqz~Ys`kx!tF$(ff8qzMXu%Gp2$^CO!cpH>o| NS)7+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z82Ed{fLeg8dj5VMAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag;K7AI$Bf|LRP DvIs#H literal 0 HcmV?d00001 diff --git a/Libft/ft_isdigit.o b/Libft/ft_isdigit.o new file mode 100644 index 0000000000000000000000000000000000000000..a0e0f40d01b86d5d7227538c36481efb8e07fb54 GIT binary patch literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z4ETG*fLeeoOa6WyAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag<#WTt0=Qwad2 CK0yZn literal 0 HcmV?d00001 diff --git a/Libft/ft_isprint.o b/Libft/ft_isprint.o new file mode 100644 index 0000000000000000000000000000000000000000..8cf5033396fa25d36dbe5e96031092dc2714b779 GIT binary patch literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z6!?3@fLeg8I{tnhAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag;46lLatQwadc C8bMe9 literal 0 HcmV?d00001 diff --git a/Libft/ft_itoa.o b/Libft/ft_itoa.o new file mode 100644 index 0000000000000000000000000000000000000000..6b8424d68378e36d6a5611c4e94625e64d9abff7 GIT binary patch literal 1160 zcmb7D&ubGw7@e)54caCFD^w5+=)p@QcF=6!G8%5v|ISwItR z5o0ejhk7Z^dUc~{+Oko5X4TfDT+WZLztw&exB(;N<(Ae{vbsjfQbm@Z7OSNQk@BoR zeZGn+c(3$y{UyfqQV88ayMPRBBrmdQBn6#?@J09_KNa+8^r&a|krY&;llY+qEu14B z3iqdQ`dPPmBusuJT<#06=^v7W%ljVhJ9~yOzlqO3m~cBG4pLV*%`Qv6oC8g?`GDxX zcW9{K&~SMGf)Bzh5j@^KVA?K3!8}7T8enS*!@KJB7Xl7 zTVJvv*ywuAAm91~;Xs&${y{7ry1~K#*g!a6 zv#a~%+sW%KXfjsb3Gc&g25sIa05$@3iZ&n81@|7Ez}r_ajBW^5C9Faaoud%wBcQgG zK11?wGpA>P?cR43LB!=lj}KS(!5)uT^r#b0n^MSDM4nimS0cvq2h7+^8L8Qs_zqY% zfnP($kICz3r1TlfB~q`Zmgc5a9r5zWK=IT*6Fhnge0v%CRuP#r8f+8FP>*B@G}+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%cmNf@0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8z3?fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1z8@Z zSOF>+!31&34j>J6Dv*T$@$sn{@o7bgxv3Db_;^(JEr2R@fYKFE^PpS?ZU%-77#lmYz0vLaro;C-koUl&^PorL!T&(u(dqlZqxlB|e~U5DXrSB;{%sum z+d{8fUgU4(g$e;R|9B}4;6uKmbb*432yPZA{L*YzU)4VZ#P8m>=2n__UJv+|=CU Hj3NdADT-*# literal 0 HcmV?d00001 diff --git a/Libft/ft_memcmp.o b/Libft/ft_memcmp.o new file mode 100644 index 0000000000000000000000000000000000000000..4ae0e2bb654a43e15e6c99b8ab3cf36fdc659359 GIT binary patch literal 756 zcma)4Jxjw-6n&|+Em}X2Hb#UcobMF?HGi2jn& zwKzDMZW+4>?I1W7DeAe+?H3|=;N+fr-+Skski34re}#q6W&|E!5Nwc$fxrs5N&O$_ z@!aD*!ycZ3NWKK6idMPkYrjvL$H{R&RF5pkkFtyq6gMLcp;YGFE~GO>RmxwU2;wHwm5b(3Os2mk)45h4`%3h>x%bzJVov*=Lx4G8Xk6SS>L~f|5Zh*_+;4Xbm zgg^paN^_5MbWo${ab6sPlc2Mlb#nYKos!O*bgn<7Q|d@3)s|Hg+VoJ-n=WcwI!$@o z{05|xXv@2v&?^UU$C{_tBPgz3H?~@Og%VFs*IQ1a-;MKJ&QebHcSoJueSrCk*~g-& zn*Eb!5(Dse{`GoGysljx39W2sMl>9$Vb>bwt6-es0>l4A>?|7hf!&1=pQD29Au`q{ O-Bq@zY|GBr1@QxK3v*xq literal 0 HcmV?d00001 diff --git a/Libft/ft_memcpy.o b/Libft/ft_memcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..d0b66830935e4bef0eeb8229d790025509088e30 GIT binary patch literal 764 zcma)4Jxc>Y6nv*45ly@+EEFtK*xFcGDtfSmf=B{3vV?dc78iqDFbV<14?Jxw#max7 zrNP3|lvkz^l0ry%Sg7;dz2t%j4oqg=+qbhXB(ERupD7|^l<)y2z(+P&5SRfMx&90K zEQn^bB9oY$%aGD@>Ynnd&e>bJK^?g}Z8(p2=_5hMeGemLanG$5ik_@h4t6U$Qm(DW z&+m1S)mk4>y97|ZBHRE{I%QefFSw5CNjbdVlOA2tdaLtvNfSin$g?hh)8Nlr<~Sum z20zOEw%(%$O{2zr+5qF=yL#7n`(HjU{5Rn@dcv=Dgr9GV(?*ZXbAB4O1Dj#{Vuu{p zEpTydW84m)xMH`UZQ(b?N%IR3{yIWJGSBAKY)hT-f;ekkS(p!odcmdDec-DqIE04V z&zO%v|K7j8=9Hc>jyB1tTZWZRjon~s4*gj$%R2$l|Am$(t&5SBOfr^@@gxVE@pM`8 Lr0clF>LGmt?|yTx literal 0 HcmV?d00001 diff --git a/Libft/ft_memmove.o b/Libft/ft_memmove.o new file mode 100644 index 0000000000000000000000000000000000000000..215dd01afd4aabcfc28b0b90b7a1c2f4460f6e6b GIT binary patch literal 856 zcma)4K}!Nb6dp}fD%(AHFzVo;YY?4;E=euSAt6e^OAKO)9o8bWBoK;9T)Xsdif+=O zI_1%$m%u#)LYJk3_PyO%-H50M-@fm?dGDJyv-A4-J`6GDn_~C?0pOlU9DvOO35tKQ ztX%6#@5az%1kxoFqEe_;9PY$vEt{UiF8h##^k|l`1=#tRg9wp7)Q@ucil~-P56b&O zY;AhiEg8h6@A#crRxpqp6`6?%Q7DPxaZWEdIU&B!7n4ovvSlFkT!k6NN-ihA3d8`r zO_^pvfQ&Y!d_vB_;Z?-wXWM|+s8??5P5+B$xben~`hXkNJ~uKwepw$d<(jqz?Sn>$ zK56zvnGY1)XeigZ@MzIG@Lj&9b(BUDt0q7tJ#Mu5MSBF}MhdzXQ?3@AHMFF9t!UWp z1Z_sc<_ikV-M<8uT>)F14h`{6OSP4}xo%T6??@6Q?!*?Vti4Cdj7`3yAJ-R^6~40_ z=Buebbv6{fMb#4Wi@@`cPBt33?~o+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%H~)KfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1; z%29yQ7EBPg%mC6*rvh0B5FekK5ua9+n41a_i;qWjUjtOB1C)+{ng``Fa5FGuz}O(# z2#6(s7;G0m7Xup*g8;}IX`og2z^@m5N>w|9JFCD)3fxH(Uod-P{5B>)Nk51ng9?d@(_*-OvMt8XarF|cG zbe{5PJOr{GsQp0)6aUHDCpp!TLcjV9*qk2&>_OWOAO1pq6bZ67bOq`A(Rk0cI?lH zu66I)KM)kuT{>iM-1%@j1P#3Jy*E2E->~2F*XMVN$eJM>z$|btA`2kaft>h1;#Tu7 zT4OwBl0fE4Fb94+h;-x&N5#U_8?~oG=E*LNM6?%7*VG6zdl$8a>jfOvTh)4r`S>vY zJ*OtCY-5h>(l+ympr*m>SGe4CYkrht{=HvOOY_P*I!`Sv5LJv8-UZfx$#2QbQxcGn zOC{fh5PgS3Jo@Pbh==qV#Pk2rXU^c&>3!JwerG%gN4?I7GQ&A^zOUf8?u?vaIDU}n zZ!*s5J=y1vqBQg!ChMD=@TwZ?@|3K$ZP|;d^bM*uk>3FN<0#BK(*Cl2l{i>RYTp(Z j<=bMx$uu|18#(YS8ej!|B`_%H;6XZ6-|Wtk3N`S}%r`spy?IZcKHtBhM4=Ia14e;Z7%m0C=7A=E_`@Eh zzQi-IfJ2iQtjDIcWz;M`_jxXx&;9ZsGbCX>p8b#ravAh+)cWwus+P?oDQZ2a7wE`Z z)Cv;mAEK;xa(sGlXldI#FPjCeH#el!3nd{biERk*nX$3wBcxT1ODFU$ZpOIHqHtJo9x5hB=nuc@hUFF(6-NImD$_DW$n3vxW5?GZ6I8r$qDIZ<70QC?4XcD^7kIcntVwX)zH7$mmeYA3;z2 z7@lJ2#XF$aNUPABzYkwB-2aAirn^PYwcAdyEwtJYgv}pVj7-Wi=0HkXnI25F*fwe} z55ej*$0;D1Wh_q7gYGF?!& zaS;0QUWE4bkUkuVenZs+^3Q;i4$g+DcPCzt>R$)mjQDRC`wal)@hbZ@_8;K!-5$~H m(f$m_a1@85@EV9RqCFx0SbK$>WeSX-M;-kGLInkf4#h$JF1=_K9Q??a@4kEQ?p^Zk-d^70M3Di)3mgP5IWRzA8eC%k z2QDQ4AbUcOp2Xz746SXmY4_ru&t!*H8a8hT+8H||6)sdkE-=-D9`PBPN(H|D0wo3E>H7# z`EEz~PFMNauIIig?^bzEyUl0#u)fn)-c?{#>&Do*<^_S=kNm0;r;ehTv6$3lp!m-8A{1q5PD5i8&}83f9QIjC{PLtrw%)hv WyJn4aqh7JiAY(Z;lDbsHcKQT3j9ec8 literal 0 HcmV?d00001 diff --git a/Libft/ft_split.o b/Libft/ft_split.o new file mode 100644 index 0000000000000000000000000000000000000000..34c727b49092ba2f6d31d2490e2121323eb1eec3 GIT binary patch literal 2048 zcmb7FPiP!v6#u5C=~mm!T3d}EGzAYuTusD-#fT9*@PRG{=|T?;({(zrk?l67I~at4 zg-ImSp^$^3C-vBio;}Fg8gb*v2CD4QLnJejvU6D4q13Fu_syGaT(busyzhPQz2Eo# zeY4;GdjHPO0U@+U1QzfRIJXbW7#Q?4c!eATXr2y$PSP1rrX!{xX16fSn!Q*fL`tT4 z#yEQ>(;mvdI1a_5vtJAg@ff*>M4d!NrfFTNEzDKlXG4FyEKXMXk^R}pRC1c05%Dfx znlD>5)2V(mSG{1GZ=dctv5EP>*K8a`JepaI`Z)BzLYk(1(VSfm$|`-MB|Wz#^yR~_$)=GIIGV%a zxtlOk;quyRSJ6azA}F?`uSKuJ-Za?cwq)QSSE((p6+>n8lCHjdj1C8GD{xXH(j^fk ziooz7IV_Ng^nMzjS(|-9KfXjRp&y?T+|L;LNqnc%G-C1)y8epLm*~qRMQ`L@Eq3(f zCs>#JX^1M-^UCBVfzi<$v8u~AwgV%^9DE}VjBObd6KUO&+J^LtN%U2>+l3p|jLod= zo~QJkaHX^b5Lz`_O$1iiLsiP>te_MOVe8aJubQw|O&C=a$_;TRTdJ0cyS{N7^9iL@ zy3M03#xf|iq;*94LmNm16)CNQ(wkhzbsR#Brttt}cB7Nn2Na-)0Ng@I@Ia&fwCEgA z00RcxgZ>e(a({WAFNWmb^loc_&8pETyMDdPVKB1ZGGvfhr!`Gn)B|9DgCpb>9f6Rw6AOW zGW`mo5mh>0SM)7%V zLi_k#p)KaM{GkK6RpfjY_GiG;>KeOUu3v~ZM)IHRd-E`!D@BAm4Ne$WS5_>0;ON_$ z{u}cFaX)+FJ_Rnflj69qJ#pUyH_kZj??1Q?(LZjfaGvE4=q(5R8%R8zg%d2lL@YoG zJ|s+qG9;eB!nxFb>_tfQT%i9kP@#?mxZ(3Gr&x}$gi!tykRt$Q_e}38>Dj$L$9i^; zldNa=2B^?!VKN|hsp73ZeWFjNAINUJFlTG#mHEnCO_=tgoo&hJyoY~6VOmw})uv*X cp_8k&aKV{RT@||u+k$N?k5#TzE?da)55k_hwg3PC literal 0 HcmV?d00001 diff --git a/Libft/ft_strchr.o b/Libft/ft_strchr.o new file mode 100644 index 0000000000000000000000000000000000000000..0f0c202426d5830381eab492ee1bd9626e5043fb GIT binary patch literal 732 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%cmNf@0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8zY1fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1z8@Z zSOF>+!31&34j>J6Dv*T$@$sn{@o7bgxv3Db_;^(JEr2R@fYKFE^PpS?ZU%-77#lYqto@rOKTX16=XM1=)=nc z|NsBTr-cKg@VM&_AO$k|N9{=4FHG15rTbY#@XAkxh?JD~T^IDN4>LVgLYE|79!y literal 0 HcmV?d00001 diff --git a/Libft/ft_strdup.o b/Libft/ft_strdup.o new file mode 100644 index 0000000000000000000000000000000000000000..d96ab0ed5ffbdd7eee8fec0146c58f826f641262 GIT binary patch literal 828 zcmah{J4?e*6h6_~idq}NLBS!Yn|5(>RJ3ph3q>lp$R(sH719SarBw(BMImHy^k+D_ z`hdFW*fEPxL7`)DP|r#3wNVfceEGif%*nlZe1H2$04Sq?4@3-cO+rJU%_G*y|HHZ> z-W4^{$C*H&xn!K%X3GwB=;t&0`JpdWQwW+zyIhTk88JAOHN>17)pAWYY~H9e4=V-E zcebPXmT)w|IWgw}S*(g`Xq=lRUaae7GmLTmbH7Vbx*@nG_Y(djKuO4e*6=xp2;P;N zfH;DTUP|#N6!d*69?&W>_CpR4HR>hEGmPf`(|gQ)X6;vvxlW&XPQOPD%+2(ehZv)= z?8e7PM`nE1c6>;kB`MX(45;B{ksQzQnb*KE-<|Gl*yUw?=4J<&8L;-fc5p{cfr)zz zK3~R&XN9Aj?1Iu#6?G~xet}iX7+*lJ&(P$50Gre5`N&o>F8Xw2EKjc>O!L?rDaxtmvzgk8USA=scVb? literal 0 HcmV?d00001 diff --git a/Libft/ft_striteri.o b/Libft/ft_striteri.o new file mode 100644 index 0000000000000000000000000000000000000000..b14ffbd07af69e702ca1c6ba0618d99d4bb81546 GIT binary patch literal 696 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%*Z~#40aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj0F<{nFn$U9I!Anz}Y}Xe0*|#Zb4#lNqlKud1hWpe7uhfvU~)T zqX4B1m>_PM0HmQ#1+owzK0Y-gKCLJ*Hx(ilACKz33aC;CC>;Pb56WfWW?;yGu|c#E z5K90t*e-r91~woD0g$C2@flEetN_viKt51ELjVvX1CU;*Takr{VuyNkKJ{pRqu|k5 z`@^HN^uux2Hz0i;-L5}8l6~Ja*l;lLx2QryK6KZ<@#yviN`$`gV7%zjdG7xOpiuL1 z#?IO|FHipe|KFqeh(hdPWQ(EkgyB39s3OLyAO^+?0Y(8Hc8&=^RVqMn86eI8ng#-} ncxG_q6KG>{=4C@N9H^WPWH3Ln>G5eL@x>)YnI)-3nLs%J-wawt literal 0 HcmV?d00001 diff --git a/Libft/ft_strjoin.o b/Libft/ft_strjoin.o new file mode 100644 index 0000000000000000000000000000000000000000..0e88db478a65639c179019944de738852d5e1711 GIT binary patch literal 936 zcmaJ<&r2IY6rR-(Lv5NIB3SScO0O2_DF+WqyD$d>K@_}{Y1l?g$q&&D1|blMO2%Az z>fhqg&>y)qIqp?RVFNAXW{_g~z3kg&bEpr#c|YcT-@MtK?)~qF1tE-ifdvQw*AyfH z*mEF7`G4#^?>X%K9GZeax@1b(xvK5OUcO`Q?M!n&`ojU~(JUzlOf*8G?)Q*a$|@HR zvzDzYrIUQ=gHl^>gZq=qppfLEGw11KAjYGjGBu@g2WtN)Tg-VirDo?#GHHV;Bi8d3 z7KJ$QWAd+oWne;!JrQAmj1Hyx9^b18pF|G6$N)hjE@5WSV8bKvuGBwe^vQ_|_-RU8dYtJ2qZjgFyfeQEt@CL)7xk%rwfr!=z59z3UKp)F=76D6r0cD zmve8TVdkyF=t&Z)ZkL7$xa9qeCEM^OZ HvL*fkEIy)# literal 0 HcmV?d00001 diff --git a/Libft/ft_strlcat.o b/Libft/ft_strlcat.o new file mode 100644 index 0000000000000000000000000000000000000000..1a44b8f2d409487dbcfa82492673fcda67ba14d7 GIT binary patch literal 888 zcma)5ze^)Q6rS}*6i?k1EEFs(J5G3iWsMT#^B8&F6YER5gF&S)$IKlt{&_q}=FyujrC>G8RPF{_o~1Ga$| zlnjHwAUH|&2bj^le>$2Po{UJo1S#G0o*U+2J;&$g-fELQ>V*7gmr)qBkk-b2QZSG* zwXwdLOu2F=v%8vEl5+Zo=~1leVpzulOlX%$eDtafTiwQf=@q%Wm0VAUij?p7bM#P5 z4+PrJ%zt5Q#pDzxzyYu^W_Pg&NT5qekLlmFh)6Z&*$mhWnl)_JKa(ef`Y*hPm{12* zp>_hH5@q2ZR0A3oiWgA?rYHy>!W1vtzx$}|^MYvQWgM$j{)R#k0*pW(jWHaL(rSvA z#;=4Q5A4f6?}=r3-ahPy?(>q$dAYiZm%JLY|6FGi`4gT$x9p>Kv@6lj6>H_huN*lE z6%S4vxZ{>4t(tWzXZ3oW8h4G=Xp;i12B{{z+t|Vl#troQA;)*1r3lvkEVK3;%jxdu zJjJOIXhUG}8J7U&{jqPo&T-54o(K&AUqKv?(*J=XX^0V!+4RxqL2N4V@Rwb=?QX55 KlJ0As&af9Gnwnhz literal 0 HcmV?d00001 diff --git a/Libft/ft_strlcpy.o b/Libft/ft_strlcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..98c68f0743316b5bc1f76fa4c587c67bf9078b5f GIT binary patch literal 840 zcma)4Jxjw-6uqh17QYg~LBXMegNsm|1Q$gEZ?GUz!9^aWRur^~ruYFxr7EUfT*TGU zpWr0*195ZIv5Sy`f@5*8o}0YbI0#-ix%ZrR-?=v-PoM8!5hAUL@Bo^DD=uOHq8Aup z{znX`vlo?p4o_mRFNc&?X4~>=k0;H!WP|(Ftt!}$cVPq9x|#OXk(;DUudS}9(w59+ zx0bUDQcg_<&mR?useBRgc8U6aL{J(bWoAh(ZlqQ-o+jn*{T$UgrgB;NDN1cbOMcCH z80Z1q-St)q0~|b*bpv~F9Yi?-{h5afDZ*gJgKZKogggsjkrM%<5 zhp^2TQOH+FKk9&)D1q8$t-1$NW%r@7C?y>Ix~uR>C+4$$$m{V9O+PO~D4Nfgnts&6 z{iA$TGBM#s9Nh4}!cI6v0~#g=w2u?kDx#&1z`RQJj0?0qG3iNbw+{tiZgxb>DQ{*rY(D|W) XzfXYTM_#n#rnRw>Uf=ntGg(}!*iUF| z3>q9;gXZ8l1dh^>eaCm78WHrtchC2od+xd4%jd^eoXD6W9AFfD6p;pjB`_oY4?OAq ztDXrxc9Kx`3Ya~&<^?+NSv!{<`%pPr$Uez3LX;XK4Z&PEDWB#G9-mh(jw*-D+gp?O zjy7psGm#+69jcBBH3qX=;$k&lc7q=C&wLF%x~^+Z@6(oMiAtfCx(Y6W!@tZKih%<8 zRQmTi#{+5-9`9)voP@m9Str~7()+6Qu3Gh;>e#+KP|bRe%SvQf*R4nwU7>`K=Q;rZ^^!UuH9=jF#27dWeJ^%m! literal 0 HcmV?d00001 diff --git a/Libft/ft_strmapi.o b/Libft/ft_strmapi.o new file mode 100644 index 0000000000000000000000000000000000000000..42f0f023a9174375d2eec7f7338b8d8a2a5b0db6 GIT binary patch literal 848 zcmaJ-#ROosO5p6_{|_t*DwcfaoM9)?7$LBRo}fD1ZV z0QLs>K>ZJMOfEE>Xv`FXb7@+8rCl%fW4-KtUVhezcV-;U<1VcM5j+(8q{Or?ZdSGm zMNikNI~&zit(O*)9QoXctl?t};VvDpS@mhGNn^j#x?bBZR7!C~>;C<2OyQj2Q!~#< zc_p%*_~duM1n_j1{Zi5Zjh8acWw=icM;45J`3UqHdx^e9dkg;KuPFbIYW&S9zus1U zt)+r`yTy9-f+N+{Z&7|Tj`(h<8ud`@!x5&MZij`pUvMNqtT)S||<<=3Ly@7-<}{Yd1a>r{rbLgl+1a7Q(M=Dz;m z4T+iW&mH@0%qVN`lUTcskf})~Od)z|~UJ6NxkmKUP_`TUTO+2&@zIngq`{wP=?(M_<NhJojSuHixDlkS>|lUU|n$<1}BCUlzN$js9>zdNj*81p25pAoj>v)7srw z-z>SF_N&`pt1DW6p0z#lZBEA6UqOUsnZm-O8d+{*zVe!0-72k@(~8#5=gTvx$b<&# zS^kg^Yc?kT4j2IpE%!oX05Uq1>P5^!^K4>y0}sBK2YQXTglB{HZun2Uq{81SXiciH zmZ;Eghf6IL)shBLlsnf_&Q&NIk!%E~j&hS9bWYj~<=v&Mn|(no5xMV0#7&b&G6A=~ z_c4nyO|7_cSjZy0qvk;&8~OF%!U_F)^SaaN80w{rjY3dsgF0;$BN=~?t=!SuRI3ev zn6)6%@5jphX#`^<7&mXMpgAr$pIkm8-LCQXV_ti=Dnx-3XLmt3J9#Jnaxi<0UGx;M zfnSeMhS~2=e0r7N@0%IUFz-D)wolOA;XWp)j66dJY5Z#L!#jm@{s&93 z5KGZQut?6zlxYN02$m`#@l9?niHP99%e;9zGy67N?(41GDumG_@B=ghH$*}Jq7N9O z`j7C>^4#Os*eM9KmqKehnzTLc)r)dzv0nS^nF;M9FSTeE2Q?0&bz~#Hxe~GUPGWaG zv8wgVbmMuRixB6_fak@6A+`#o9$H6ZdTnbZ9`!V>fBO62)(Oro@8eQ*2odu+du^2e#ly;ZQO^Fma&}&o6E3KX1ebYa)Y2Wf zRhij>avs&;T?J9?Ir}V%v~5} zx&;lzx%#NrY>hveDS9z4WOeAtnJpCuSywIePWI>4Dz_MhwFguq~0 J5s7b7&o}l;ioyT@ literal 0 HcmV?d00001 diff --git a/Libft/ft_strnstr.o b/Libft/ft_strnstr.o new file mode 100644 index 0000000000000000000000000000000000000000..10bba56b90c572c309b9a3fe5211716834ae6601 GIT binary patch literal 988 zcmaJ=&r2IY6rS}*47R#Cc&OmPg9qCpR8JN!5j!vk3!*M~DN{)!7EBboK`EpJ7d3GY z_2U2FpWsPEh0RUdQ!a&E3Q1`p$Fv92@6FD%&JPFm-))_Uu?1`mLAQr4gsan!%C)y zqLi7<+}3KwmxcV!+x#0T=U>?MXIf`eFDA842~n52?0zY;>vC;-HJ6Q7rMy4if+nRk zY23`E@dJ#iQx&H0d<0iCx1S~8WV9)*mo@(kaSRxIwg9({xa9W+wHyAEd!q7H1mDx5 zQf!Gzp&=?>T|~S_6cO@9X_~qF12I4YZ#TaY2#R&H9`QCcH$SVUVyi(2owp(^HVmjj zt1f1E)!iFZeJB$Ol(dofh*Fd2lNTaca5!B6I%T$a7) zh)1W6yWdMpq3SqCh;xKqRc#)$&7dKV5AZmasfk{CX_yonp=402`JvP4;2o%Aq0|<^ zb^6s6dM(r6pSm_{nGI>+ykBI_ZpukL>`T(OPIor~KfZ%F%zVFWb})6&H8+sZyf28j u$BEa7piM04h(I_&8@lw+M*p1!8NE*%Gr8u=cm8%B{wL4mwoJZ}&9mP%!lxww literal 0 HcmV?d00001 diff --git a/Libft/ft_strrchr.o b/Libft/ft_strrchr.o new file mode 100644 index 0000000000000000000000000000000000000000..5df8815da6375cb5853e5789029454873c59165c GIT binary patch literal 728 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%xB(Tv0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8zI{fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zElV z%29yQ0Zb6LYyi?wrvh0B5FekK5ua9+n41a_i;qWj-wdcy2PjkE*cZr3jzuFpNXU4JxKFz~nN0fj&u{(T($+d`jPUgU4(fC_nZy1oEOd9Z@4 z2l9TrJo^9tfBdRn#2yAJh5=|iVmMy}s(`U7h=H*}fKh;lonrz}l?qT?28ca?_J9B^ o9WXfZ3A8ae^RmGV2GT&~Y#@XAkxh?JD~T^IDJn|NC;}-30DQw^DF6Tf literal 0 HcmV?d00001 diff --git a/Libft/ft_strtrim.o b/Libft/ft_strtrim.o new file mode 100644 index 0000000000000000000000000000000000000000..4a891a2cb4a204f63ecbe7a9aa3da2d1bf9add5c GIT binary patch literal 1408 zcmb_cL2DCH5PnWe}=m{WITHzdy!8SG#Xnq>ogawa)>k|0F6Dk`m#RaW@; zd}*1zF8RJnJ_*@5#;VFEdkcCQ8jqo$Whp2L(NKI-?v)>7>>)7fV+#}KP#)FNtVsQ5 zDRTEacYfr#+a7RtxyQZsphqmO(IuaIh`lLx;}~}h1fZ_rdxfsk*MNL(e&L!=F{j;S z`q~9lqtriE>KR>UQ{(0?-}=V5yQla9?z97@znY+;&qheC`_~eN01N|F=qD9kA>eKy zMBk7*JNbp}$_;&LjjEVFHOH9TCyRYT?1NE@*vSYxGnnj7!b>}Z`lo!t=!9sG*Hvvn zJVq~yg{V!>OJh$r-Tx3pk!+h?*j7#dPd`vcr}lGp&3bx6rwhlS)W;lPiWn}tO@m6aAI#`Jwn z;zGUCZHd*p+yvHfuY~^3j=wwsMzAU-Kv?*RrsxjMMvFMakJV|ZmnEb WuH9O)WcJgN`HTsxRI4>iaQ_D40uwU; literal 0 HcmV?d00001 diff --git a/Libft/ft_substr.o b/Libft/ft_substr.o new file mode 100644 index 0000000000000000000000000000000000000000..db439e35cfcacbe79efe23715dd4f782507200ea GIT binary patch literal 1056 zcmaJot5L8fz;I&Xah++>Beeeoh2-=_*dBm6!AxTTR!Jq_`wI#26 z(2IXSJoFzVCrMPA=)vwua?C|AutK~=4~;X~_vl8@fqCD2GxN=xUEaa(ABXb*#xcMH zeHOh*K>{7^Ec#XA|1eM0dI~kinLti+$%L?TRXd0SzQ*pY9dR9PhUU>OdpLj)k7oqh zgvf3bH#1pVR7#H@l^zPQdP~;`^_+xCa-2iEbn#GE%&5`?gvjN^dO1_f1z91c_j{#8 zNhQjwd5XdbfV_?gFQcD9pUBMP5J4xSODXSZJ$_sQIqD&W9yZdFPc0g5_)nbX@*8*j z6qmK3toU4}`!4fko4d6kmsaaLX}N2)__emVvp}T7x|AH;nN(OGt3x;K%dgz{$>jl; ztf^JaiRygNICL#ve&&Y9WhZEmtUHM6DMT>F%UGAs(f9CnA40u7?$ml E0X|8}Jpcdz literal 0 HcmV?d00001 diff --git a/Libft/ft_tolower.o b/Libft/ft_tolower.o new file mode 100644 index 0000000000000000000000000000000000000000..940856f607c9a3610ea6a8646714448622eb4e2a GIT binary patch literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAa64fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z9Qk`d76MsO{QZ1DR=4Yq<^u|yu76&#L3luBx9gwS!^j3h;{n5Z5vU@@svri&3IRp| z9(IliKvgP0aTy@)_zwZFcw}(o6KG>{<^@>=13=|$AcOglO^;72i7&~|$uCbW0;vN4 Db)`kr literal 0 HcmV?d00001 diff --git a/Libft/ft_toupper.o b/Libft/ft_toupper.o new file mode 100644 index 0000000000000000000000000000000000000000..137ae034299c5876940f6875451f8bafc47236ea GIT binary patch literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAa64fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z68U>T76MsS{QZ1DR=4Yq<`)W`u76&#L3luBx9gwS!^j3h;{n5Z5vU@@svri&3IRp| z9(IliKvgP0aTy@)_zwZFcw}(o6KG>{<^@>=13=|$AcOglO^;72i7&}7EhtDW0;vN4 DyER5X literal 0 HcmV?d00001 diff --git a/Libft/get_next_line.o b/Libft/get_next_line.o new file mode 100644 index 0000000000000000000000000000000000000000..3fe2879730db3b1523d6228938a97ac898c702c9 GIT binary patch literal 2808 zcmb7GTWDKl9RIS_?pU{;4C-a*SV14Ea&(RggCQi?14l3*(#jafX-!UTHBB^4Seb-H zPAfS*6ec*lqJ8Y}#U~#`)`_L*TlGO&e99n$1dh^&3bB^P-~YQTm!^UreBb|m`!4@; zHuwHGIKf!xIKzV3gQ*?EGKh(B2D3Ck@CSp(`3=kCL#56$q$d+i%UzDgw~9N1~(ACPU=`^ZSEpRHL&b+m5Ga-kXSL z?Of{WbSh!nuZ}2P4j&NIvSbdSIPy3CAY)P_cR(oEwlifMy zNwS9+n^HKz3z&~#^1Ssv){9Alf)c-oJWc^#274J0_UtuG8Wf5q+0yaQx%}TTW_kB4 zHyHHtyKa7$=}Q#MDw%b1R9nO1=XR~7mx!#=VtHoOa`RQDFSMzC4w;|dwftO_>$&xY zK7X1Fd>HrDZrgKz$< z>b1Q5j+YA{*s**nN(Fo#Zv1?pYE|sETE7&r%a$M8vAj?XB$Wx>xiHh`4N3airC1=h zNhVSoSE_y_Oi^oVjYflPh4TDG$nS^uW5_-lZn|#Y@_`OtT(7O#$s4L(FJHI3+|KH= zu<5MrBzPrrABi+-KXN>vE9K?`6!R4@AI5&J{KGTAxv^&kkm7*pvU0rzx`?$j7M?{s z7OeMZgkyW>G_n>^`Hn@wfWV#8aKaCBo4k;#G+q>rxbbZYBCOpyGUAc=a)s}mH1*BE zGxvRSUmUc4t^hM8>pxHDT{0`gdf^T~H~$sQijP(F+ry{bgTA79!j7=?i$hO|@3nR%pZWN^&!+ z!jl!>uztFW%eX13^~`O&g6+ZN%z%yyHS-LDOJ+r1I@g|lusA^byp2kN;(%7$ zgu!9Es=h?Ws&eyV!SPtdivJo}9HxsWOBxFz#o@5JtmLxNJYQaORnprn@9li^y`jIX z(xps`$g)>db;X;0=*U9E*g!3 zs;Em`>Lu(z#Fh0O^7lRJ$9K#48W7($<9!J~#YdRv>wtLw#ya+q^lkxafWD;P1;isW zE&!sB8Gj)kvil4Wu8cDh{*F|zC&q7-6Juw;!$S18oMdM|21F?1y5wJz{4qedHmIk= zl`$mw1wr?YOBj)GP(lFG@BI+49}d)i3w6kT2-JB+C9Uoe{ST153>zA6U=pqF$&;XU z&}zhiw2=JYpp_=Pm8M?bO4BoIrEhl7A9T>np3K^_*-U&YqtJKK(!PRhAzr_u>#C!C~{bp%enCKCcDs}AqaO>y4LL^7GC HtziEGhP9L- literal 0 HcmV?d00001 diff --git a/Libft/get_next_line_utils.o b/Libft/get_next_line_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..d4ef3003edb8ea27560f9b335abdf86315d80376 GIT binary patch literal 884 zcma)4&r1S96rQzE>DO-1!Jxw)x_0R#bWv(y4h0bgb%;@P#UM3gB?*GS43@q0=XmN; zAav>KCD==#P~cHIXy4nN!6k_L;LZ2FH#6UR`{VWNbCO_8n`2lI^N21969KFv(v<&# zjNI!>RyjNw1^E($aO{>7>M+k)C%IX!lrIJO(JUz#5M#L|QV^n8uU;04j%e1d&TAzh z_V?5tu`d%-ayJ&vl7^og6_pu;uq&e6C{*pRCd7~V)bq(Jed(th78$E3O}vdrA%biA z0*fOE)RgKO%t1O2UIXJkJ48f5cU45||Ix?Xedp~Dle;$~?luS9vqs!w+_ij2pYK=$ zy+iLm$l5J~=^Z0XN4ytw80u=<%NX1{fRBdLuxcd-bRtOHUZ{K4m}Kc74ROmZ2F-iR1%b z<|b+z2!De9fDauYyJFnOc9-KaeF5Y6)}!PL$$7~j+KLtd$0l)%@iU0rr literal 0 HcmV?d00001 diff --git a/Libft/libft.a b/Libft/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..5e57af59b74f8f404295ae9113c2a7992827436a GIT binary patch literal 37376 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 Y>>>>>> 568d9f62bcec9cbc64147565fd0f66fcf8aaab4e +t_bool builtin(t_data *data); void ft_cd(t_data *data); void ft_echo(t_data *data); void ft_exit(t_data *data); -void ft_pwd(); +void ft_pwd(void); void ft_unset(t_data *data); void ft_export(t_data *data); char **join_cmd(t_leaf * com_leaf); int count_args(char **args); void update_env(t_data *data, char *key, char *value); -<<<<<<< HEAD -======= -t_list *env_search(t_data *data, char *key); ->>>>>>> 568d9f62bcec9cbc64147565fd0f66fcf8aaab4e void print_export_order(t_data *data); #endif \ No newline at end of file diff --git a/incs/minishell.h b/incs/minishell.h index edd5d4c..aa0b13a 100644 --- a/incs/minishell.h +++ b/incs/minishell.h @@ -6,11 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:05:33 by eunwolee #+# #+# */ -<<<<<<< HEAD -/* Updated: 2023/07/21 17:31:49 by eunwolee ### ########.fr */ -======= -/* Updated: 2023/07/21 15:48:18 by eunwolee ### ########.fr */ ->>>>>>> 568d9f62bcec9cbc64147565fd0f66fcf8aaab4e +/* Updated: 2023/07/21 17:53:39 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,19 +16,14 @@ # include # include # include -<<<<<<< HEAD # include # include # include # include # include "exec.h" # include "pipe.h" -======= # include # include -# include -# include "exec.h" ->>>>>>> 568d9f62bcec9cbc64147565fd0f66fcf8aaab4e # include "parse.h" # include "utils.h" # include "struct.h" @@ -41,12 +32,9 @@ void init(t_data **data, char **envp); void env_init(t_data *data, char **envp); -<<<<<<< HEAD //signal -void child_handler(int signo); -void herdoc_signal(void); -======= ->>>>>>> 568d9f62bcec9cbc64147565fd0f66fcf8aaab4e +// void child_handler(int signo); +// void herdoc_signal(void); #endif \ No newline at end of file diff --git a/incs/parse.h b/incs/parse.h index a01f5a4..29751b2 100644 --- a/incs/parse.h +++ b/incs/parse.h @@ -3,14 +3,10 @@ /* ::: :::::::: */ /* parse.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/04 07:53:54 by eunwolee #+# #+# */ -<<<<<<< HEAD -/* Updated: 2023/07/17 07:09:31 by eunwolee ### ########.fr */ -======= -/* Updated: 2023/07/21 17:34:55 by kichlee ### ########.fr */ ->>>>>>> 568d9f62bcec9cbc64147565fd0f66fcf8aaab4e +/* Updated: 2023/07/21 17:54:18 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/incs/struct.h b/incs/struct.h index 6c16b19..d955f70 100644 --- a/incs/struct.h +++ b/incs/struct.h @@ -6,11 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:24:15 by eunwolee #+# #+# */ -<<<<<<< HEAD -/* Updated: 2023/07/21 17:32:53 by eunwolee ### ########.fr */ -======= -/* Updated: 2023/07/16 17:37:07 by eunwolee ### ########.fr */ ->>>>>>> 568d9f62bcec9cbc64147565fd0f66fcf8aaab4e +/* Updated: 2023/07/21 17:54:07 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -97,11 +93,8 @@ typedef struct s_data char **env_array; t_leaf *root; int error_code; -<<<<<<< HEAD t_pipe *pipe; t_info *info; -======= ->>>>>>> 568d9f62bcec9cbc64147565fd0f66fcf8aaab4e } t_data; #endif \ No newline at end of file diff --git a/incs/utils.h b/incs/utils.h index 44fb06e..6a89be2 100644 --- a/incs/utils.h +++ b/incs/utils.h @@ -3,14 +3,10 @@ /* ::: :::::::: */ /* utils.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:32:09 by eunwolee #+# #+# */ -<<<<<<< HEAD -/* Updated: 2023/07/21 08:38:22 by eunwolee ### ########.fr */ -======= -/* Updated: 2023/07/21 17:34:53 by kichlee ### ########.fr */ ->>>>>>> 568d9f62bcec9cbc64147565fd0f66fcf8aaab4e +/* Updated: 2023/07/21 17:54:29 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/libft.a b/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..5e57af59b74f8f404295ae9113c2a7992827436a GIT binary patch literal 37376 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 Y-GDuti|Wd<42G)bF4nxtt$Td<~3K=K0D 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 Vg0o>mypW~hzdZK7883`h{6B-3QBME> delta 6808 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 diff --git a/srcs/builtin/builtin.c b/srcs/builtin/builtin.c index f494a38..c0911aa 100644 --- a/srcs/builtin/builtin.c +++ b/srcs/builtin/builtin.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/21 17:42:18 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 17:43:02 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 18:07:23 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,5 +14,37 @@ t_bool builtin(t_data *data) { - + if (ft_strncmp(data->root->left_child->right_child->token->str, "cd", 3) == 0) + { + printf("cd check!"); + ft_cd(data); + printf("data name : %s\n", data->root->left_child->right_child->right_child->token->str); + // printf("%s", env_search(data, "HOME")->env); + } + if (ft_strncmp(data->root->left_child->right_child->token->str, "echo", 5) == 0) + { + // printf("echo check!"); + ft_echo(data); + } + if (ft_strncmp(data->root->left_child->right_child->token->str, "exit", 5) == 0) + { + // printf("exit check!"); + ft_exit(data); + } + if (ft_strncmp(data->root->left_child->right_child->token->str, "pwd", 4) == 0) + { + // printf("pwd check!"); + ft_pwd(); + } + if (ft_strncmp(data->root->left_child->right_child->token->str, "unset", 6) == 0) + { + // printf("unset check!"); + ft_unset(data); + } + if (ft_strncmp(data->root->left_child->right_child->token->str, "export", 7) == 0) + { + // printf("export check!"); + ft_export(data); + } + return (FALSE); } \ No newline at end of file diff --git a/srcs/builtin/builtin.o b/srcs/builtin/builtin.o new file mode 100644 index 0000000000000000000000000000000000000000..87628f31eb1d0de4257bd054bdfc38d6252b4634 GIT binary patch literal 1580 zcmbVM&ubG=5T3-E##+sSRumLhP^`#`6$B|1TWVn|6+}|-pgiJc(}db>OkPM3Dq^S@ zL(zZ0gC|ddR|P@PgEvn?&w|i{p6nqA{`e+uHr)gw#evzG`DW&O@6Ep5Pd~r^9wdtG zAUvQ0&}1AB8wxoDeZ+}A;&LryRBRZ7lUSLLMJesqwDC=xp1GdhibLurt4dHU1X-o#E_IS{He_G6 zfEM<}l=e8_oB0RA^T zmks8vwnV7Ix_YRqi5OWfuaaLs~i7F@I7YAfP9;G4J@?drSgDP9!^ zkF3gP z!r0ww6suV=Yj`mE6jjH8ABL{~`qP&1`=hD7*2DPp9zHP3bJSvH&J$Q*&MGYK@JJ38 zCv(z*Ul#l{ET-xl5qzKEo8ZDdbH2bb&pIsgyf)T(A^0=F@4;eLPE}(5^?=H81)map z43_y$N({qwiD}proKSASiG(!X6A$;qTpO*I^?@2W0~5`U^u$L^9OwJSG6#*;lgeo& zuhF=8!R(k9tQL?gXjRr3T`9K{_olv(bh14o C+w^w; literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_cd.o b/srcs/builtin/ft_cd.o new file mode 100644 index 0000000000000000000000000000000000000000..30e3358493bde6d48838723c2f6084a4c3bfe5ab GIT binary patch literal 2400 zcma)8U1%It6h0f%cAK=_)i#iV(0MSZ5A&cHu$9P`CUS+=E~Qmp^maNsn_ZJ^*4f!~ z^&vE*Q!?eAfi9x!?kTfanhUZpm)0#-@B|0TeyVjf&C#37!(RvlFXJDP0 zQp_+>;!^gr7)R07QRIebKRP#_l=)56aRj)QCHfSId@7>%Hjd?fsF(bo-BC(~00-%mn_A$lQLbPxm$wlY6<&)Fh8tO^Pbity5oIQd=R-vXWUbD%@@Etb~#nBMqGrR9cmCvcPX`4#p&zk5EP zQLOE&a|jED2n$*CyjX7Kv3R~{I81#?FJc?i6x$hmC4BgBG7BiNdRE2riC-@$t^Wwd z%z>(@d#464kKUi{70!?M_1|{%F1zEq(%sQ`S&@RE%{Nd48zLItKydGIg~d@UNBN`i z%W$f)Mf8C>uFeL0n0U7Ffeq;VEW&d*nXhyHL8h11dDAZb*KWG5Q}c{c)pcxd-hD^&SFA>b^G_MC%o~lST`|hlS;v@n zyOBf0a=q;fzO(xI=;ha9o`OC6$8>P!-3ydyl=Of`<@0ctL{6XV7kn86AiFrmo2jZHTpJ@9!kmFq-$IWT}RUpT`r0wT{ zTn|5-tix|V*KYvhsbj=9<#^ETBOu$!xnF?YLi>RKm`IYX?Cuvu#+O#7(zY>zoddcz}>C_fTI<2Zla$2Emc$U{}a0;SH zmOU_Tsaa1xYxW$zCCAw_h? +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:30:59 by kichan #+# #+# */ -/* Updated: 2023/07/21 17:20:03 by eunwolee ### ########.fr */ -======= -/* By: kichlee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/19 02:30:59 by kichan #+# #+# */ -/* Updated: 2023/07/20 22:20:42 by kichlee ### ########.fr */ ->>>>>>> 568d9f62bcec9cbc64147565fd0f66fcf8aaab4e +/* Updated: 2023/07/21 17:56:58 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -103,10 +96,6 @@ void ft_echo(t_data *data) printf(" "); ++k; } -<<<<<<< HEAD if(flag == 0) -======= - if(flag == 1) ->>>>>>> 568d9f62bcec9cbc64147565fd0f66fcf8aaab4e printf("\n"); } \ No newline at end of file diff --git a/srcs/builtin/ft_echo.o b/srcs/builtin/ft_echo.o new file mode 100644 index 0000000000000000000000000000000000000000..13f64f799fa3d590e1187d376c5f712f8da706e5 GIT binary patch literal 2036 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 literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_export.o b/srcs/builtin/ft_export.o new file mode 100644 index 0000000000000000000000000000000000000000..363fa28b919062236e26ba675a36989f2aaf1e2a GIT binary patch literal 4716 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 Y%x0A&90%(O5?Am;nKi<@4dvPX1vC0}ga7~l literal 0 HcmV?d00001 diff --git a/srcs/init/init.c b/srcs/init/init.c index 4cfc27b..246b5ab 100644 --- a/srcs/init/init.c +++ b/srcs/init/init.c @@ -6,11 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:52 by eunwolee #+# #+# */ -<<<<<<< HEAD -/* Updated: 2023/07/21 17:40:23 by eunwolee ### ########.fr */ -======= -/* Updated: 2023/07/21 08:50:37 by eunwolee ### ########.fr */ ->>>>>>> 568d9f62bcec9cbc64147565fd0f66fcf8aaab4e +/* Updated: 2023/07/21 17:55:31 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,13 +24,10 @@ void init(t_data **data, char **envp) *data = (t_data *)ft_calloc(1, sizeof(t_data)); if (!*data) program_error_exit("bash"); -<<<<<<< HEAD pipe_init(&pipe); info_init(&info); (*data)->pipe= pipe; (*data)->info= info; -======= ->>>>>>> 568d9f62bcec9cbc64147565fd0f66fcf8aaab4e env_init(*data, envp); } diff --git a/srcs/init/init.o b/srcs/init/init.o new file mode 100644 index 0000000000000000000000000000000000000000..0f804970d6ab82cb09a8f0091e26515cdf5f33c8 GIT binary patch literal 1996 zcmb7F&ubGw6rR-nNVS?EEmSNt2Ne;vXhkeiA;AXbU{$1|2r{P0rirFWNH%Q{i-pwE zuoQYw@a#p8J$h=D7UE6)4+0`oh|pscZ2jKsOn%vbJ~H#od-J_F-_Gn#KK=T!*Tb0W z5JQL7iRSJ==R<>?KwF`SHuj1VVP`1^rhU|8)Tkbr5SE#@oU!9i1@BGOeLcFX>QFt( zec#2{08MtXMFMR?gtJyAo}5tuA)4#yI!KrHObb!IT1I)KFPxf9hr*V~CFkSGh!EE& zYLgf|R0)eJxPp50=&|nFGd7hJ!i@wN*OtV(rQY=DEdJ( zc@&<*tQ(Dt%20d-I{JVdo4y1@KD&k1XtV{?+>OD19N*!^Z@f_P@!~?27jwItBxJ*n zZigyxdlF$6w}Vw)7-OF2Qp@VqA?R}ms|!1NP*y3y9hqkL@?zjTQpFF3#dc34((}#end9aL^P^%ZMa+~pz-%VAVRmk-=yR@Z@7q-1v(=$Br zzw4dW>s{DaOO&XfUa#b*W6+)!Q-1=xw;1rs9d3^Gs|_jz9DTIuc5f*#B&$iaE&EeD zuTrqG4}+Rrd$Lma;3`g5c=!u1jDKdHr4$M{OBHbng@tnc1n<|Tkjlfzvd2GaS!JBu zAZj8fKUmK>(~wi;U9`72NRUf1@%tPpkq0^*%EmBTw`FH2U-NpDu{Gs9YBTSA7>vDb zGrz7XzG*Yxuj;#=+-9!4*X8Z&ajzlg6ykDwf7ABu?<;+b1&(=_JFXqYXD5w#cuiPL z@s!R3c?s~=6;J6skoN+-u{~#9rTZ@)#|H)t#wZZqykP+G8}OiW!{5U*Q2Zy5;$MNd zB8)r`FQE}pco9gv5g_r7198I`ThKu94Isr|11bI#2s3V=1Jwuuaeo=(K;mBp68|I+ zSDWz=2wt~ep-&+|#>w}9pwH=?^7Xl1(LRvu5*qRKdqJ-$+?vg|_@c!pZX^F@i|=>* z4(yRM`a&A{biXzFOhhe_$XZEro{4lOHG`{Pn3+r}Bg}l{Q(A%T)O}O literal 0 HcmV?d00001 diff --git a/srcs/lexer/expand.c b/srcs/lexer/expand.c index bc91888..7e85896 100644 --- a/srcs/lexer/expand.c +++ b/srcs/lexer/expand.c @@ -3,18 +3,10 @@ /* ::: :::::::: */ /* expand.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:20:49 by eunwolee #+# #+# */ -<<<<<<< HEAD -/* Updated: 2023/07/21 15:56:43 by eunwolee ### ########.fr */ -======= -<<<<<<< HEAD -/* Updated: 2023/07/21 15:56:43 by eunwolee ### ########.fr */ -======= -/* Updated: 2023/07/21 17:31:43 by kichlee ### ########.fr */ ->>>>>>> 78a3320df2eb8d80f749bde9f55419632351d2e3 ->>>>>>> 568d9f62bcec9cbc64147565fd0f66fcf8aaab4e +/* Updated: 2023/07/21 17:56:05 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/lexer/expand.o b/srcs/lexer/expand.o new file mode 100644 index 0000000000000000000000000000000000000000..8bae0c4b028a8649048cdf2c1b9aa35bbf91fa3d GIT binary patch literal 3508 zcma)9U1(fI6rQayz1yGMZK)W4z*vL?VWo=IJT$P;u8inHs11l%ZnihKNz7&w_eYmv zFmRKSn@hA{s}H{PMX9JzkU}XM)21}Rmu#Pm5Fu!kEGk4_tg$A3=gv%W@BYvXnK^Uj z`{vAj!qG->F996SVj6f?Gmv3tc>z@%YVy~e3ba=;Q` zxqla>y(Iy&qOvFT-Hi3ht|y*C+lcBNg}#f`qf((oX}kq~G(c*58T$ef^H~Qf6^bKO znoGWxg#sgYFP+@^h1`N{eXyEH|-Oo%q#ui4!1}XssuwxtqZ9VOpJ=`}L`(_u1>sPipofpt#G5?4t0o@y@K{Zpd3Y0W#0%a*B;Z|GpE{z+oiqLX_3_U6iTM0QM2k+T zl<@e&#o!zsn&ZyRtJpB}rgA4<!>uvGfdddw3CUGz%o)@d3?VI~Y7qI$JOLIAC;{8^6Qt8?h5Jr=HLs8Kn_+R^FdO z{`(^~RuCb;J{GW#1*VVElL5BC-B`pf)a}&AUJ)a>Qw5Dr9!}#n`y${ba2?wP{cls1vRCyKTIhVc>-169c8Z_ZOOq$)S zkJX4a{g4Hp<>q=^KbIu1|Ljhi$Zw{kIhTucvlYckTZ*w=7e>Z@=|`zxh_>C z-KrL+u(n4jeS+R>d>O5J+>P8!EQ`Rk>7(@P<;Iuo>5vm&F8#1U`ARwA<$^{xv5a3D zZr@d+hv*a&j6@UfFb#!t?^=iL!0eM~-k(csDFVXy52K zF>^AR?PZS<;4g>8uRY=wEHN?8XtyX8_^QNP1X6)FA!Sh+tbw0Ja;Ne}4g7$BS?KgJ z7AizSkv%)Lv*6MO9!71wjliNv{~2p>vjN%Q9*!_a4>{v{;-q81wBb;Q_Ogd6yw+-bZL?-lWt|Kx)u$;cPJ_dI^&FpF)@+WK*y)D(K6jA(~0ZnzgVWzzY>1@(K0GMT}QVHNr?1|0u!q|GGyJ>D4fWGFLhYA+a|P4O1i~REEJN6 z%Mz#_#EW?J>cNwTq9|4mB6{}VMMy!Rha6&2>-#&iZIYTpKl$_L{XhTxKeMx&PwPMb z?q)2oi(!BUp;`-u2o!P%dY=MKBuR;oUdn;^7@Ulh_(+7Xt(-0A5|6}gj%;Cn_CoOx zALTB!GS)%CAX_BkixB3lolT`DltYMmKA#8ao_zHiQCO8xi25@#(=&!?i@EfjRC-K^ zt3#VXOkSyk0p%=%kG5V#0TrsF6v9f1@vJdz$%MxKykvxuimw+u>L@+W-mQ>_Ph&g? z^&W-3hqXaTs3`fhHpW7*k74PUkxV_Lytg->&Zmh~(=Ef`e*8wM9;pXSX{xH)E2WY*!Q01k$GA|`6UefAE znF7+BhD9g6MX2EpX!^32{{ab$t>r|a>>mH##J_XSSu=wqt#(?ia^rFPk5G**OPf=Tg zy{_yfSn@wX4YH$NRTk}qCB9>@#7Ey!y#LV%tW1%17`PJ-{~WFW>%hKDVNwIx@dn%{ zaZ6Ao>}!ZqZf*Xp20YM!nXogHR$3TiV`3^bYcnyE%}n5XDy(calNDAj1>d+W@Gp=y s4a_GzAFyH1&8qa&yp?5Q%F2;3la@J&(ZF1in_0`SEr!GyBR$6c0jRoQI{*Lx literal 0 HcmV?d00001 diff --git a/srcs/lexer/quote.o b/srcs/lexer/quote.o new file mode 100644 index 0000000000000000000000000000000000000000..072c3049740e7a15308c23ea12c1db7565b9cabb GIT binary patch literal 2820 zcmcImUuauZ7(c07m(JRg$%b<%#!^>B0-b*zhA1ia;uRJdvcQm*(=1J!vMs6kgHZ_t zZlk%q3?@u`w2wZC;M2wk)5$Eph|kSK+GLo3LVfFMZT)@soO^S#v~vo6^xW@!f6kZR z_nq(Sy+3dLzH^8%-y;kUtOHp7K0Jb0peL~^WY~v-I85|BodG#AscBI>A|Y~#LQd|b zd`>%mt|L3UYX{|y;?Y@sfUy9n4zLn2hlGe{bD8OtpJ}gb%hinkrcC;*yV&ga6i6qztqpR~mIJ5#>F(}sZ){$svMAVXf^GZ|oVv}Q2{TWA$SvP8qs>aB!K+%s*c|5NF9-$} zv$NUI79zU&KIAMkztC!L6tE`FW7EHK&Cm4wywK(+nF-~AGo!#gBf_kZp>|;MF<1*hz?=oK@;0p{M@?VAT2=q^3E#E_TfE0el#)kr* z^u76*dQIAX6Yx8~CH+($d-`31-#33sKb6m(e%IiqZ%aRw*Pebi;kWRY^i%ou_?7UY z@-r6t7#yWMHU$psp<%_3EB$k*6YQaTs3%mR_hel|hr#LmL2x?%D;{({3{Lvjz)AnK z(tid_C|`(%3=}Hi0l9x#@v!1S#ldX*8So)E)=2>x!yoI BvZnw5 literal 0 HcmV?d00001 diff --git a/srcs/lexer/tokenizer.o b/srcs/lexer/tokenizer.o new file mode 100644 index 0000000000000000000000000000000000000000..0d663794e5d711af315751387b39550d29838394 GIT binary patch literal 2348 zcmb7GL1-IC6dgITvq{sA5|WaTLPcpwpa@Ja$sq|gv0)%JDJ2Fc;7;Y$+7?kHXSE_G z)L>XEWV;m7Qs^H+dIHEs(jr86t1-TVzlJ9OtaXqMNr!m!FW@Iqiqo~5so#5ePDzyr>$YX{T;7U!vJmqY^ar5e`-y_oG%}>{H;%T zJsU%3wa=gkDfU>qNxrQx#-o+A>nUFUD29@*+U;_TZFf7zmrnM8F7WzM1))Thy~;#~ zgPyhGX?x{SK0O1YN;(D!ukf({EG6t!?V9CFqkG{8_|j*4;fyc!18>EJ^;3&QNNsBT zPDe%+A^hjr$(3pT@d#t8pWA!6*-)n=k!7N*=Xm|nUMT=Kt8X@j(m0G%Z8Nm|r>Ved z(P@NCkVebhKl*Z^M@Aia&349C^otVm{AIu1w{tv(P4KRlnVOP5^%!&6?Kj zz#o{`?E4=0pn0rnJ#e~6M5)_fv($Vhl{vKEx`$Ohg^sT6YvCwk{|uaO&6IrDbsD8Dr1 zZ^2RIGYT&bgHt{Dex!bt|rP=8Mp28`mim zUB`wzqx7=s<-J +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -<<<<<<< HEAD -/* Updated: 2023/07/21 17:38:18 by eunwolee ### ########.fr */ -======= -/* Updated: 2023/07/21 15:58:00 by eunwolee ### ########.fr */ ->>>>>>> 568d9f62bcec9cbc64147565fd0f66fcf8aaab4e +/* Updated: 2023/07/21 18:21:14 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,7 +20,7 @@ int main(int argc, char **argv, char **envp) (void)argv; init(&data, envp); - while (1) + while (TRUE) { sig(command); command = readline("minishell$ "); @@ -38,46 +34,15 @@ int main(int argc, char **argv, char **envp) syntax(data); parser(data); - if (ft_strncmp(data->root->left_child->right_child->token->str, "cd", 2) == 0) - { - // printf("cd check!"); - ft_cd(data); - printf("data name : %s\n", data->root->left_child->right_child->right_child->token->str); - // printf("%s", env_search(data, "HOME")->env); - } - if (ft_strncmp(data->root->left_child->right_child->token->str, "echo", 4) == 0) - { - // printf("echo check!"); - ft_echo(data); - } - if (ft_strncmp(data->root->left_child->right_child->token->str, "exit", 4) == 0) - { - // printf("exit check!"); - ft_exit(data); - } - if (ft_strncmp(data->root->left_child->right_child->token->str, "pwd", 3) == 0) - { - // printf("pwd check!"); - ft_pwd(); - } - if (ft_strncmp(data->root->left_child->right_child->token->str, "unset", 5) == 0) - { - // printf("unset check!"); - ft_unset(data); - } - if (ft_strncmp(data->root->left_child->right_child->token->str, "export", 5) == 0) - { - // printf("export check!"); - ft_export(data); - } + count_pipe(data); + execute(data); + builtin(data); + + input_free(data); // print_token(data); // printf("\n\n"); // tree_print(data->root); -<<<<<<< HEAD -======= - // builtin_cd(data, &command); ->>>>>>> 568d9f62bcec9cbc64147565fd0f66fcf8aaab4e } return (0); diff --git a/srcs/minishell.o b/srcs/minishell.o new file mode 100644 index 0000000000000000000000000000000000000000..c9bcdc3461e306e3ad0ab8b6437a3751fac28bf3 GIT binary patch literal 1320 zcma)6L2DC16rRMIMr}cztza}gpacv2B*{NC=YO%?+9|$W0`#n z3w#2e&tfUTVJG0vXyYHo)!rG>z!Hv{jGXF`2_a2i#&OJ-^xI2&Jc)KxK=nx5Kx5OC zn_!O!5)-20%BJO1RYHjIdP$ulYX67oFVUwc`m5ZnH;jrDo^#J~)`YlrB{@qtP^6@= zh`wlMAr>`)v64cVHL>0_>SioR_m@|qvZ^<$>M6<&F;+`r!t?Os@JLoT$Z~KpdMM@l z(9@hYF*F|tJ-Y!PHPVt#jVAvyUgp6k-u_bV>Ay)4w0`oy`^JOi0q^M{rFh31@NTOg zO^SC~VH|YlH?SGUfgbX9D`bTyCrQwqe+<}+H|IVC`p00Kx3|hG??}!&I32XMdC-g0 zbKj8#d#fIBz0ZRTQhy(~7Xe)TQhBYro>F&lJPLnO=9Z( ziN>Ae2#+d~d9cVbelb&=n#^zD)C}^c;NdQ+!;<%pEgUXB&0e0)DcyS@V(m2$GVK*G z4}1y4y=X6h_-?f4KwPQz5Qsb0R)7b9H)DRR3`En~CB-iQap&4O;C>*0>gN`K1q6v* zL@+|x)f7LS;)R%J@mfWO9>(-mil0sK*%ZH(;v&TtQ=EDo?UxDnz9S8v3EZG$qAKY6 zgewi{xlF7h^j7g_V8S+i6VNc4F5#+Y+0t^Ds2jA>LD{rTgsxS^G5ky9IulLPShFq1 Or1}j{;uAKbFZd6Y?!eFh literal 0 HcmV?d00001 diff --git a/srcs/parser/parser.o b/srcs/parser/parser.o new file mode 100644 index 0000000000000000000000000000000000000000..3b8393c08cf7aa1f0c549d99ba6866aac181ee3c GIT binary patch literal 1692 zcmb7EO-NKx6uvW>f0geA5k*mtXc5Fv7SSwPjOf4<5<(PgA-Bi)#u*&PVSIyAFd&Q* zj)UZ;b*;i}yJ#UJ3b}LJwji8=g0~6@)4p?m9A~se2hW^)&iU?lzx(st`Tg^tld(V> z!wK{+Nq(lUOA zu^uY5vjqy;IFHTFWSp4CbLshHdXn=egStm?Rq;Gm#RSMm%NqEUCWVjy&fNr$XPp^W z=gs?~smJ*Idcei<%~#pq!ja5AEydKEh8eC~BHmO{jQ_7qM=7;>6R zTCvoB+n8PcZWn)8ebw?t-!Hpd*t08R@R2UNJm%Zwof=WvmEk?R+;7>HD0+EootABM zDnk~!U9uYiDuUV3nq4gT%vgL4Y@Jy8s-m(K-8B|3AP3$D)+~mZ@n&Obcy~FvyB07? z*fOhM7l1;|uH<~Rl0Xx)U;l7;cqr*5`c4a7shbKbh1$ufaWQqvn%FdMM3~yYDRy4Y zL66qdZj`P{4cIajGv+5cVZm5mZ(1;T3ijxT>MKpyHls9uRKOX~{!d$rZd9%{&~Srq*Yyzt?;f95|29PZ;3_;oE;C?nuumIQm}S9Y~zg zbAm4hz2FW#RPh_M;Qfc*BI31$xXK@>{3|#y482E$g&yOF=HFB?f{1>Hr6PjJpCR_5 zq4f^wT%Ffl)Py*JEulKAt~n=`-$SU6(tPlRTT8N_fZelp9An#oc_; z<8z+l<>naAIN3Qjt5C75>v%3txlWw%R5CryGs%q3V+l7l&Ar)aH_g2l8T=pq3#0B= A;Q#;t literal 0 HcmV?d00001 diff --git a/srcs/parser/syntax.o b/srcs/parser/syntax.o new file mode 100644 index 0000000000000000000000000000000000000000..9d57e733a1b49ce97b83836e5693a417becddafc GIT binary patch literal 2720 zcmb7FOK1~e5dM>H0p`FU1z?`OGBKc3t5RrHt1UoNCGt}NLjIXf%m(ZdZV zZc^<^d&I^9hNGQ5>JoxoT1qLcVL9leFIy^Let$I%`po%an3MAP)GfrYe@}8Jcn#Pa z$5{IB2_ML#40ue8cgNbO5#1uKWX&g$O{Pi$Gi~q;Sl->;A8{Zr!l>abv6`Hz(+<71=GPuH`o`en`qj~ClmVk! zKT5Y5JHC#Ua@o}AvQz%krw zeg1RhUo~37YRi#!?Z8(A8hWe4J2ZHA0RB*icWUsi0DMS?M>Tjf08aq!J$>FY99U6% zAfVNXE~JaYd(Gli+fA2E%W?9KXEZJ7MU}an@Yr6T1mTeB)*en(g-nSI+fu(@= zEiLtua@*F(rJQZiJHkX~3Q||Lk%+NnMA-uVdu*9pz(2qr_h$?EWBilZsPY8z)7wrI zx^_Z@%CS&vd1sVrZh~z+c={KA?h=V<`Tj4`1{NF3#4ue1cRydxcCGHY%i9ZU* z^R&d>r+kd#xmx000yjLP^6`8DTyMnt2gbW0v8vuL*a!ZJ@lTMXKWF_Z>$h0H!TM>| zkFov}K@?wur1*ENzhwOZ>l3UGVwZ$J2MJT}YxIm%@jH;vTqddC3E zewHRn2+zLy>y1*VD#fcCq47xBKf^1U7I;DrPHbqjs+JdEY ztZdG~doARUw8}YG7TvU4DmMIuT)}E6cHV~KeHG+|bmk(W(^+~$8ikr51vFsM6J-Cd|V`l9C8t|pb&3Cs`2}0W^EcRI57Lq|N7?p|C!zW@Z;OB zjf_RsF+4CkF{2%L^kQP{!ki<=8sjx3VjQ9zj8F$Aqe*x)gmCPlqt;5lU|znkqKB)S z8i(*Gx3-?KP2}uk(EHi`}9IA-D|Ujeu^pRQv?UndRUCky|tyu#=+!qKTn}*xqR}XuiEId{I`Rw!+gb zRk6ip#4ei4loFi6LvnMEf%T41qy4BU-atIqw%S-;3kvXT|<_AjC8euM>>AX@R>xNn+XvO*o7*{Sl8hgiQ~ zolWq$rPJX#&=zzKwO~py!jaN7ljqPkw6H(l%}&r3YUsNyUx&~}GQ9JTmGLjXdVv_b zy@vm;&iKBDf4j1?$kcfjDaIr5%^RbXvk&$?nB`?^XtNpeU;|s@vmGb5gx?{G8zhXM zDo*oc|B6c^Y);2%zW zhlvqK;FpxKQdo})yEsmI$|>YmToaSwI&EiEa^6nmtT84e$cS{O^G<$z%2xiIJ(0bJ XHPB(dVyCki(sH)4S*dh7Yccj4gp`;> literal 0 HcmV?d00001 diff --git a/srcs/utils/list.o b/srcs/utils/list.o new file mode 100644 index 0000000000000000000000000000000000000000..34d4f239cdc64565d9bc95294badb241baad5146 GIT binary patch literal 1376 zcmaJ=L2DC16rPPS4ceL&Jya2zgW#zmUW~Vvc3}krq7}T9aZNThn5MyOY$yZ*slu|C z9Q*^`di27giPVPn1K6$06)ZkDS>Deo?i*K5qv=1mtuNJ|%d_#azI6dMXwDIC*AHFn_%73>A~U-eu&G zGwgh@LT9LM5#0e@KJI@59V)AP)IDbO05JYqG@zA!W3m@I9IJoP`{Ka~^&32K`-J*M zp0~E{3#(~c_ViS`i=-c5w)_tt+4SFDR{sLkW@v+9K1&&#c2-KINPbh=LyyrAy^L{9)I)buWSgGH< z-x4tO7~}uZ1kTnbOM$G^gQ~wNIIVc~K**=kZUNN>_h>7mC+4J_zEqy<6B5Yp`rnx>L$=pqD!twLCY z{s}#L^ys~X9xe3ZKOm%_uoofp(DZvVZ?dta&V}j^Zf6{BvI}TVS$gq ze{fKO!ydsGnBQOrQu`(7IC>I0_hr*M45HA+mM>M_EoIzA|0LjkJWGTIY^Y7m)7xNhfu^d#pP<9SjC$@MB0ZUwl+r zIW(bNzFLr1nHBaWl;3=<{!r?* m#`L-lqRmjZ!fM!VkzNaRy%pB#LAB|~YEa*41Ypg;jDHD6d8gU{ literal 0 HcmV?d00001 diff --git a/srcs/utils/temp.o b/srcs/utils/temp.o new file mode 100644 index 0000000000000000000000000000000000000000..a6a8d465e7054628bed02116eb5ee3bcfcc4c65f GIT binary patch literal 2948 zcma)8QD_`h6n&ed$+FeXTCG$OGD-sxceS+IBS zgg{^uZ5$%~i1g12eh7Xg_#^hG7^U^2^urGeA_h^&!U_>YqSeN8=iRqEvq`~A-rRTY zJ@3Bz?tMFx+kgLduSJMRqrd~B2_xEohlv4s4C4|x?jzTmm7|^3Kr}{7L4)FvNa@-| zSIre3O}#!^!+Q26FQ9ld-Hr-znw(8yk(3rGGX>Yl<|f%7WjLOW)5^KO&w1+goUVq* zFEclrPiI_tA$KvG8<+BIf7OY}r9%oWvT+@Uqna(os%H#^l+vD(6Ha>8RtxI$i*i0+ zaJ-W^C&klpScoY-C;dFeaSZ=BMoctgkkF=N{}>PjZav((XG zEVpVu43?LVV&#e2%JM$}cd4WCKz>7jeUu-aWgU8~s)?ONWTS(+r@8bmyQ7RrsZ69ak<=b&6 zD-eaNJ`gZbOuzJAF}mGzZ*Px5eET$k(%12^&537?)+Hheqg8N!O~1d?Pp>Cxt)zCa z)gQQHx_+gF9dz?k^vHT zLz8OVcql;PZfH`i8-F5AK3shxZmAloH60OS`6L-uy91kBd;-gRi*E0e*l{IQ(ed63 z1;B;p0FAZ8>H=&bo0ZhI4$vD4fM38fDudg#r0W7)^#lB(1AtzCzi<)gM1FJ233VCF zvCVM*7k1T;7Z>10szOoxWtpLhRqDEl8_*s!d1r3o@B_7^yi}!hJ%UPYIGjqDb}?IU5pdiO4|9D&bJKRtoB^pm8<#wt zWuXlsz*;JqXHo zC>%sR0}i@DzTl2QH1YvGw(yc5Nh`I_Ka3YD$x)^D`5#es5qW1sM2hi9{DGF}Ww1`b z{shLIztC|A=O;w(k@&j}eGlr-FY(ZRarv&|`5!RggLri4secuZ^F5Ha2HraJIPZPD z^Eeki*~!|8b#tn?`q9^4444U@)gz*)|)HCwG z!uTb|3C3-VTNu+#BL2^)HO2b@n($YQuQC3J@fF57#*>WCFitXl1DdwzVQsR8^6m6L zi~)kamj+{fkLepp{w)j=6N9i8ng*aqC`|u1_;OxhMtINFVIl3@+tQtrX~#*=E96gQ w9{+v1LegtW&nG3`A+9XAY4<`wC@a?D +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:48:39 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 08:36:07 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 18:15:48 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,6 +22,7 @@ t_leaf *tree_create_leaf(t_leaf *parent, int leaf_type) t_leaf *new; new = (t_leaf *)ft_calloc(1, sizeof(t_leaf)); + printf("new: %p\n", new); if (!new) return (NULL); new->leaf_type = leaf_type; @@ -59,9 +60,9 @@ t_bool tree_add_right(t_leaf *parent, t_token *new_token, int leaf_type) return (TRUE); } -//토큰은 환경변수 리스트에서 삭제하기 때문에 트리의 큰 틀만 삭제 void tree_clear(t_leaf *leaf) { + printf("%p\n", leaf); if (!leaf) return ; free(leaf); diff --git a/srcs/utils/tree.o b/srcs/utils/tree.o new file mode 100644 index 0000000000000000000000000000000000000000..ef2d272dc7649508bd9124f523a836f390cc9a89 GIT binary patch literal 1760 zcmbtU&ubGw6rR+YhT6I-C{z)egGv>mK@da{8rr}dT9DF!C}kSbO&dtlkZx!Y0)vBH2r55J%$&{^%xur~QMyavU!y=r! zJh05kY2eYTZ-E~}AA?lNnp5dQa^CU>e&x5$-Rq23V>}MU86oDhPxdx+0O}ou(JO*b z5`v+8i}$G%^an979zxrNcxr9WpTti{=ZmcDgr!q%I>nt2#N&MwOP!{r6R%0PSd%Xw z?4k0Ovz2m97|-YkWHsKR#>O2iZhS|&<25HX0MnFiq9&bQ%E)TWJ8Sk$n(%yQyd~Xu zOI9|+Qya$Ms1VF2N_?bKtUHNqSt&P#u|jVSw~iBPeD5reZ63jvrm!Hw^NR&;73ebX3Rp$7?j^%g~`c5Qi{7A!29E=UpTH_>4TEK3q4k%6-h^k9}G6h4y{CzxBOB-!k_x z@89r(_^`W$h#$V61dC&fOv9ozILtQ87RJld z)i=;1mPvEJVij$u4WV5J!?PvEr2VL$G|J9u*6k2!)-cEPe#a%M&qGP84b zTb#Ah2xpa5%GherPTIvquBNh9vLI9*|9v~Ha|J7DTM89q(!j)Ot5h +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/12 19:40:44 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 08:45:57 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 18:11:15 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -35,8 +35,8 @@ void program_error_exit(char *str) //input 한번 끝났을 때 사용 void input_free(t_data *data) { - ft_lstclear(&data->tokens); - data->tokens = NULL; + // ft_lstclear(&data->tokens); + // data->tokens = NULL; free(data->input); data->input = NULL; tree_clear(data->root); diff --git a/srcs/utils/utils.o b/srcs/utils/utils.o new file mode 100644 index 0000000000000000000000000000000000000000..a9997ecc9c22519ec67e4fc3ab59e8513cfbbc4f GIT binary patch literal 1540 zcma)6O=}ZT6uqf!TD6)iEL0IPLWM4jR6%f|5Ve6>h^VxsoA4ad$p=l7FnOUtECgDl zLl9iJbkU#CrOQHv>Pm3wUg@Gjm%&B#+&6dHblN~K+&TB-yz}n7Oy2jue-4I;V&@1C z_#k{_01pcey9!_DMjxAEE^JaT%%Mr_tjDI5c3V1#gM21CKXa6a(Y^$%$7|>DIM1~~ zYBPkURKB6TasuIN z6xbdjS_5J|J%{%i&&fX0TRdYtYx}?K)jiAhSGu;}-1leq>`rsve*f?X6gFv>b?$uY zm~z*joAk50{#SeTiq%tJylV*KqrEB=+(YbG+a66IW!HE*7X^QZ(U0Y~&2l0;K znXuEc%<`a~vABa>lez6)!RY?b7)mnJ-#JzIe*q_*&6 z&Qp06@YaPV^PbB42;QdfWbPBZ-{4?|^iLq}f%GRJzRC2O)N??5s_8l4An*kc|MN7@ zhm%iV1LE5rdj-Vn#xsJJAi&g@fe8?{xBz24&O=+2Jp3KF#r=#BZUKAfl!)YSBl*2Z zJ{IHycn4z>K`t55vq;Y8+PfdAx>qaWo=~pm)jZ|4%9>QsplWDGHyfas9`4Y9M5>@w xrJ?f`*YQYc&vli=bzF(MKqB_q$uBC;brve+s!OU|tv59;B^U96qn#im`VRr; Date: Fri, 21 Jul 2023 18:44:27 +0900 Subject: [PATCH 05/57] . --- Makefile | 10 +++- minishell | Bin 70664 -> 72592 bytes srcs/builtin/ft_echo.c | 33 +----------- srcs/builtin/ft_echo.o | Bin 2036 -> 1648 bytes srcs/execute/.DS_Store | Bin 0 -> 6148 bytes srcs/execute/checkbulitin.c | 68 ++++++++++++++++++++++++ srcs/execute/checkbulitin.o | Bin 0 -> 2524 bytes srcs/execute/execve.c | 94 ++++++++++++++++++++++++++++++++ srcs/execute/execve.o | Bin 0 -> 2780 bytes srcs/execute/freepipe.c | 40 ++++++++++++++ srcs/execute/freepipe.o | Bin 0 -> 1144 bytes srcs/execute/heredoc.c | 29 ++++++++++ srcs/execute/heredoc.o | Bin 0 -> 1284 bytes srcs/execute/heredocutils.c | 103 ++++++++++++++++++++++++++++++++++++ srcs/execute/heredocutils.o | Bin 0 -> 2564 bytes srcs/execute/pipe.c | 45 ++++++++++++++++ srcs/execute/pipe.o | Bin 0 -> 1644 bytes srcs/execute/pipeutils.c | 75 ++++++++++++++++++++++++++ srcs/execute/pipeutils.o | Bin 0 -> 1976 bytes srcs/execute/redirection.c | 62 ++++++++++++++++++++++ srcs/execute/redirection.o | Bin 0 -> 1648 bytes srcs/execute/setpath.c | 89 +++++++++++++++++++++++++++++++ srcs/execute/setpath.o | Bin 0 -> 2528 bytes srcs/minishell.c | 6 +-- srcs/minishell.o | Bin 1320 -> 1404 bytes srcs/parser/parser.c | 2 +- srcs/utils/tree.c | 13 +++-- srcs/utils/tree.o | Bin 1760 -> 1592 bytes srcs/utils/utils.c | 6 +-- srcs/utils/utils.o | Bin 1540 -> 1564 bytes 30 files changed, 628 insertions(+), 47 deletions(-) create mode 100644 srcs/execute/.DS_Store create mode 100644 srcs/execute/checkbulitin.c create mode 100644 srcs/execute/checkbulitin.o create mode 100644 srcs/execute/execve.c create mode 100644 srcs/execute/execve.o create mode 100644 srcs/execute/freepipe.c create mode 100644 srcs/execute/freepipe.o create mode 100644 srcs/execute/heredoc.c create mode 100644 srcs/execute/heredoc.o create mode 100644 srcs/execute/heredocutils.c create mode 100644 srcs/execute/heredocutils.o create mode 100644 srcs/execute/pipe.c create mode 100644 srcs/execute/pipe.o create mode 100644 srcs/execute/pipeutils.c create mode 100644 srcs/execute/pipeutils.o create mode 100644 srcs/execute/redirection.c create mode 100644 srcs/execute/redirection.o create mode 100644 srcs/execute/setpath.c create mode 100644 srcs/execute/setpath.o diff --git a/Makefile b/Makefile index 1141c9d..81bf91a 100644 --- a/Makefile +++ b/Makefile @@ -34,7 +34,15 @@ SRCS = $(SRCS_DIR)/minishell.c \ $(SRCS_DIR)/builtin/ft_pwd.c \ $(SRCS_DIR)/builtin/ft_unset.c \ $(SRCS_DIR)/builtin/ft_export.c \ - + $(SRCS_DIR)/execute/checkbulitin.c \ + $(SRCS_DIR)/execute/execve.c \ + $(SRCS_DIR)/execute/freepipe.c \ + $(SRCS_DIR)/execute/heredoc.c \ + $(SRCS_DIR)/execute/heredocutils.c \ + $(SRCS_DIR)/execute/pipe.c \ + $(SRCS_DIR)/execute/pipeutils.c \ + $(SRCS_DIR)/execute/redirection.c \ + $(SRCS_DIR)/execute/setpath.c \ OBJS = $(SRCS:%.c=%.o) diff --git a/minishell b/minishell index c49e7e2b29e1b7e955ad94b92798d02d74a3cd20..a6b6da5eb51856e03202e007dd8b9498164cceaf 100755 GIT binary patch literal 72592 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 Bz3c!0 delta 8149 zcma)Bdt6l2_TT3WGs6H1C?N9C0r7=NV48@6g8~jdF*Tn!48zEvFf$H=qGp4lCU^9P zZHqp?YlgSqEwfCza^Qa$JHrb*&kLKk{QTp?I!p(0)gr)I^VNQ;;8f;rDZ zw<$&oc6v==5QC%Wn4qj&V2}sk<$5I{BGhBy8K4%(Vt8-wDv%P8heEvw9{lUhpDFMz zg(sW}s(584FcUUS?M~Z+21Kmen>>9@TIRVeVc~O4whasD0ObgE7I5K@HY;Okozl|1 zP9>1-AQ%Ww1U%5EN2q&ofJYl$EQrsI_qbvb6k^3V>WYc;?CW_|6zzF*YhoO2Nw_Uq z#(K6U_7cSCv7RHnM6r9Oj*zy`IyyS^?)(S(hEr019X+pILr*284BZCC_3o9e(t7Ah zzcKr9;7aR8L%kutRbRidm4vU2N6yA(3oYJ_0Pm8NJ`X~;h*eb|!=pTfR?){yU&ZuJ4@O29d~D>*?-x=YU_$Ej+- z0m)9kO*RLO$$_w(O^#K42NkJ}I{Qox`Xrmno<-R*db3Y@j0I%i!2`Wp(~ui+6cbCD zo=sCzT(KTdN$(_~KEGXWnsi(59(7vEzDJLxB&b}dTuyJK6sZPcHN`WcZ=NWI-=VJl z$?AW=#7KL4(R0Qa&yoIDMAh-(AUI5$Qwvl}u)3JuPVGPA(l;>t1_*Bb$_EgzFcz>U zkdOw^!?>T4a~;B%jMDwz$?<~O$PJcfrM@=!*M|Rk5-9gPmO;Zr;d{DuaH4A4P>^h) z#|FPH^pyn{p8&xp9(P(7G4z8BLJnefN?+60(zC=}U(r_wCn`ZI&GQHu%LL&#T`?pp z;o_IFmp<^)_iJaH9tYkAdTz*-u>G(i56Y4I^d^`{P(KF(X>~XHcv>{AHAPZ!s6FhT zg9D@pnWQ=n0u0H}0`c`5*i1DGCDUlgu$5t-KNes=ye{i@fDM_^hJ>4=F3ZdT&z}UfPX8Z~luX#Y;a-)QZ~l+eDNcnN(2aGy>*j(!F>xf91y z<*0t$dw1fmG=wzd|Jz zUXLr1Y5&pbVX1)F+zq-!O`}IddN2MODqNyIx^whTK?Sf6&{Z+9^tf(`Sfr&{xwC_3 ze=6riJN3szd3NP)5V}q3#gbO<)bT3*n_QkmCpU7?f5N|&u z_rl(?Pj!i~K)dD57V@YyuS^J`=ks0_7SihcylG%>B`ngK2f#i6G}uwz$0fp64s55S zt)DzeY^!>KFCV?THds0k*u&hl5z^ZT>Q6=#pP(THTFqEy%MeeWC`ju%5SmGM;|OtQ zO3HX@D@Yy$wVNQ2SKBGf16Fm{Y9$h|drGH81)aAziGEwqQ(PTKgU1ciOiPgcoEJw6 z#${*<7)p+#b>sSLQW*N7Cv6!QKe;PIAIm!(ZbpUL`ei}N@U?g_z=(eWzhK1gfWB=R zif~7E>$LT?L8?yDRYq#)Nqg!OG{+b!>q&C}z0T0+o^l#It5;E%J}F@#ll}z9QyZi? z_Ef<{w_@ob{S-|MLw}B?QH4nXR2EBf3gcZJ5EbxA2aRC^Z3mwte&_Qdrq`lz?lX{d z5x?_!3L`!20VF*9U|<1~x^rMpFw$p8>Kh=@*1`x)EYrN(gWf4j?Z=Hh3%r0wdiUaB z7}Z$dHRRt0ca1%0?)dofzN}&PAE}~Dm4K?n{&EBTq34;3@U^gKV4Uv2Q~>Aam_PJ& z3^Wb-H$nMDj2!Jt<7aCoKomey9z#b?cuYMMC{jTTwNB7#5}BdU7}_);dEh_c+&ij( zE{@=S3TH#RPV+Ue&|zdNA4uDy>GcW2`n&{I4n9JN`g9twBoMIf%|dygx~{07bUB zI7GIv71b(KX9m=roh%7O%E$_&sFCu^N00jPRyZLUUbapf8yjcn8@|-9x?KeQ>D@{z zESgD4IZ@CaVtN|Zh~9nJ{}9&o#$lmo6l2%0)&~-4UBEOPYeBZYd?ZgdIcpL54X#b3s4>*FjQ%)EZ&1+XdQ{U*09zK2#jq0t&u|@lNN%+ zy%t;R-CgcL9Q1CQF(oBF9^~Pn;k_X>cpP;sj_>rK_9Nf^FIT|Hlz73(<3^kgUn{4?s*~tX@d;@oTv@|IVY=auK0o~#an*aY%Z!&j_lnjDLB?O; z1adu9GRO$7K(9Nxz-VXq^W6D2bL%A`Z^ZHNjeHLq!x-zk(2!|~8YfrQ!!A)>z zXb7GEbe=2gD5hZN9S{P9oK|pCIs@ThH`2GDhIZfpY?pQ*z{S2MMUJX`Ca!_L!Durl zqW{mxyp!7E6S50c0HyIz)MqA#ui^dFMPNr}kg|@(YG}sHG|d!{g0)l)waiQv$A3*X z&nyh;xDPXMZKhUt6ru#$^}%3k;PghPPcXS18mS@wkkpf&oc)xhJ5yGxXzw}6nqOchVa#xFj-NA7EWAZ)<_r*@hkNUs^wDp^ z#wYjh{Kp^syL0e2{@q3Y@dN2s|9sMD+I4PhY(H%3o^+bK$DEOxkI|gD`-Laz{kg?` z*8fv(4d){a^{soDbvNBLH(?xCAmZR$d=OnaFD+pYLpR}I;KyKa_>mC}`B$W?`{=QG zllm-VgcU$&Ta0tVzHj{aeRBjpW{5P3W)u$=o~4H3{^AcJU0<9h`fkvVi?!l+`)GS{ zoOt~p4V!P&;4TFnCx~>({7fN@?wUU+@&kyb^cHNvETb9(`px|Q;^hN0%8(LSiONZx z%0U7xG;HeT*o%W_*K@pcu0B9-8yqDaec#R}q@(XUa@iu6f0xVMa=BM7_siu$xjZD7 zN958gm&fJuB$N|3CcX!++-V(si@P$O$jzF4P;Ny|B?Z(;!tnI+s zOsq9y&5X5|uvU$=4Om-+wbfXA6>GIv+le)+Cv?RqA`yQdC5bdtS-=mosm5tGSfIVxLADADoCfk&p~_fcC0i5~WShcH zE-1|8zM>MS4stEXNp1yIlS9ff(yla-%fS|-wXD*N9fCjPq^7i{qS6VieVT=~3YXPj zswyMbHO8_sgW0;oP--+SBCR1c_A(>%3KH^pNVyyhL$%ZBtf?leLvjBhnu=<2NvJYc zRhyk;t!N^D606B8qS0xqAnO&C)lPCwWhSdb><}$)NR1U~AB7MR1}zC?;EaO=);EG7!#$D(;Y6z%ij=OY&5m&G!2MWY}-10f2hgLuT6(rS2bRM;!Q zR+EA#E6F+0Y9f+ovN*_3BF^T&MHr-&yr3YW*-AbaP4;Ev2K3`C!7hx%1?HXPu2^L! z^$O^(6uU3O!i>cND7+S|Erh~Xg@p}eHQ<+(cofwJ@EjuJAe%#o0{l3uSYR_$SfTcV z!d~NKx${~ujBF|RU12vf<+lo>qZ+2mW%A z?6xRPkkd{x*$cF~wF2yfzI9mopTi~<X z*Vv%#*Dhr_`9K4W)^Tjr*|l$)$fk4%S2t$wo=5n$60tU?R%VF+ju@kWbWd;O~Js z-vJy)rFnsqw5c5xu5yc$e2?A0T^q)52+QWfavi^bL|eJTSY?nm7Pcq75)8}OK=wdP zyub(|?Q-db!v^YjdQW4Aez~msAGve6tUH5suTOBHKj#I(;9P1WuR{y}r>LoG<)UWr z0{S3-4yh$?qrp~Gw_L{3|G%=4D{_OYIB-~X2Saeoq#d}8U!bPlFSD*=*>Xdc+{DuV z6_%;(6281&%L=({zK!+f@3E}ABg^Y>V`@s(2)zVf(|CWe~(9g5yu+>?Q@v^ zWsY@ljsuOn$+5S9;e8zYTzV#WFVJ8j!xuPi=lB}O+R04+9mkFETLgA+pW}$97!HDq z13K8qaU{nj)0n;&#~BgRnc#6Q&^^s?ZUDo@0y~(B7_MWMrm3M2Hb2}gP@Do!I8=OP z3=ihGZUMu1RY5)M%QC-+V;$$uf6Oe&dv4Z|*?vogVEPOv)|{u{?$ zIDXJz3&(Zi7(T+W&&2Rqj&*RqME>OfhU+Ebn;iRi9KM$^q>XPDBRu2;EywVmC-R6( zW;1;>$AmkS%CWzS=`#cR@eJ!Y*1?qvs-%!(-{TBVN9=+^2eCrJTu#vO5S4M+ zjw=GW|e~o6{K{ z#<7lL9mn+WIc|o_ z4~z?r9X3Fpk>M^J>$roiBrd4qBkad@AHjVe!GnK`p?@;$w*tV~4CCPCzj2S~ zr#ymZK7vc3l?fg*Jg|F{a(Hk%hMXg?dy_@*z!pOwC&_HcI|BO)DT4==sr-Mz|KG-e zwpwEN0*=+*>pEbhz$~AXU zA-vGk)|VyMs)6srz?UKaCTz-x6Z$k& U#t9F*8p@Vcmf?+j30|K61E$pPE&u=k diff --git a/srcs/builtin/ft_echo.c b/srcs/builtin/ft_echo.c index ab2d03f..2ecbb30 100644 --- a/srcs/builtin/ft_echo.c +++ b/srcs/builtin/ft_echo.c @@ -6,43 +6,12 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:30:59 by kichan #+# #+# */ -/* Updated: 2023/07/21 17:56:58 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 18:41:23 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" - -char **join_cmd(t_leaf * com_leaf) -{ - int cnt =1; - - t_leaf *temp = com_leaf; - t_leaf *leaf = com_leaf; - // printf("%s\n",leaf->token->str); - while(temp && temp->right_child) - { - temp= temp->right_child; - cnt++; - } - char **str = (char **)ft_calloc(cnt + 1, sizeof(char *)); - - int i=1; - str[0]= leaf->token->str; - while(leaf) - { - if (leaf->right_child) - { - str[i] = leaf->right_child->token->str; - leaf = leaf->right_child; - i++; - } - else - break; - } - return str; -} - void check_echo_flag(char **av, int *i, int *flag) { int j; diff --git a/srcs/builtin/ft_echo.o b/srcs/builtin/ft_echo.o index 13f64f799fa3d590e1187d376c5f712f8da706e5..f7517530794ddb16bc6cddc2622d08564f01f5ac 100644 GIT binary patch delta 389 zcmeyu|AA+MgOCF=0~ly9L1+i&i9vRv9#9@glm#e}!OFnEIdQ465KMv{qMD(AW#TJ4 z*#M~W1gK~QP!Gu54M1(olU*5&g*HG{On|Dm!7{mv(N6OOPyriINCQZC0BLR@4uC3w zQ6PhuCx2wL*=)-k%)}@?c_OPglLF)9Q>=1K35=6pvD$GO{QVCG(vuC@`i-bNC05crm$=P29r{=m?;Ny5>L{h(slzd_gGx8zV&iJ&*>;ZvfIjq`MqQ0D*2d xkOulpcd`V#f+JW6NC*HiKTtveqKH8T%1?muK@<=(fr1eP?0^_7HMx^L9sn^RIB@^~ delta 724 zcmYjPO=uHA6rLGpx6xL18z=?Qrh1Ti*s@aaBx?>X4now5LJ=gDKu>}8(1IwXm5q?? zUJRp9^x{SFD0rxNkQBw9B{}4{$BlSU*h7$(_|5JFeemX+@4fH+u(Q7=QtMf{xXVdq zb1cVQ-n#8gEgkz8Rf4uj$cfgQh2khNmgmW~(fZ+?S=RDx9c>zfsE`dAmp)x6##-@F zD+;FEq22`-0@dm@jyu3{_$@6Nftt_dZ+dwv`00vpb8z6N6fqI`0}=X(#`t1e1e*zI z`W>rb<@rPe4{c(-*l$)kJAUUKwVq-#(mypyM`c^Jh$?BYPs2*u-y05xk)H-_Dr$qz z1?Unufv9(|<#+YmSVZMnctJ#!o(L%h$HZ#f%-hEK)W)R|Ra5>isNL;~kblSGs*&0t zjyAf%HyUnq``Loo@fN#4(-Xm0_x_ia`Eje%P|FajboIk|c8^gipYUmBQ~8L`Fqg@f zfHfvRaql=eL^X^`YLr-VDF5(tC+jGVkMhJ7xoAwwvcb*ghz^eAbz^4f2A&B|?OX%m zhnSkv{H*4t=0hY^zKsLl#MuMFoL4|doW~$|H)k1$yeZ!svx~O+dN3Pq;qK-|H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0root->left_child->right_child==NULL) //no cmmand but redirection 존재 + { + check_redirect(data->root,data); // redirection 실행 + recover_std(data); // 다시 돌려놔줘야함 안그러면 redirect로 바꾼곳으로 계속출력됨 + // free(data); + return 1; + } + if(confirm_bulitin(data->root->left_child->right_child->token->str)) + { + check_redirect(data->root,data); + // do_bulitin(data,0);// flag 에 따라 return 부모 프로세스 or exit 자식 쿠 + recover_std(data); // 커맨드가 하나이기 때문에 바로 종료 + // free(data); + return 1; + } + return 0; +} \ No newline at end of file diff --git a/srcs/execute/checkbulitin.o b/srcs/execute/checkbulitin.o new file mode 100644 index 0000000000000000000000000000000000000000..05005d60f1a53847f9d3e0bb8e9fdec75261f7c2 GIT binary patch literal 2524 zcma)8T}TvB6u$nH+wX2+Q53jDM1LEbFFllCr7(~WVOA2z&1Oe;$^BuR)vXYuRY|0% z2%+N<_uTKEd(WL=-~IkR zUnN9Yg+PZ^iRLRu7es??M!P}-9u{7v26oaMn1i7ysF5C-l$MdP)U(1Zjjb&U*m?R$ ziNHvY=C(p)HxZShpPXY->fM$ZOLQ_JWucyA15aC&l*CTmyg9^hQSPin(2Y$`h={DV|OJNRnd5XPTV-V39vfnGJv z(dMRtg|azEwpq#Myku)hmbO+}_6eeX0u&(yh-Hm6~ULW-)Jx)W)z{ z-a)$cd83x|tj{Bo#bJBwI9@30)~83wde-OE(y|*NTXc}cXXvkKaL+Gb-)~&#g|e)- z6U$=;@^34B;|c@=Z7=;b^-euluMsaveGtv3WitW14m)g7qBEe=YB_q5>~)=2;e;E- zlSk?UN+{!V6CC(Itx}2V5n*IfNz)SPM7Lo9#L(%{q)7E*DA9xU*>2;QVX9}2+$b{# zJ;rmmY-CN!Et(&u8v(no+@kSn#f!3w&7v$5C=0Bv@?A&NcJN!#qO*T(MkKcwt#upfy@c77unwUSr{65Cp7}HBmaX%qSdSBr| zZTQ6aE#onGiaW#napn&(4l~{bPjMB@|H2uN-UK}9e`fpvp5h)ef0y}dj4w031W$1% znLoz-0mge6Q~fCJEIch;&pyZ=&gSdj{RnXG6aCd7>{x{HD06!m=dcMfqVvM-`8_X+OE_~~sA9Vej6f^dW0;s5DGIAC!u!QPNUP~f literal 0 HcmV?d00001 diff --git a/srcs/execute/execve.c b/srcs/execute/execve.c new file mode 100644 index 0000000..f980799 --- /dev/null +++ b/srcs/execute/execve.c @@ -0,0 +1,94 @@ +#include "../../incs/minishell.h" + + +void do_cmd(t_data *data) +{ + if (data->root->left_child->left_child != NULL) + check_redirect (data->root,data); // redirect가 있는거는 먼저실행 + if (data->root->left_child->right_child== NULL) //커맨드가 없을때 종료하기 + exit(g_exit_status); + if (confirm_bulitin(data->root->left_child->right_child->token->str))//빌트인실행시키기 + // do_builtins (data, 1); + return ; + else + exec_fork(data); +} + +void execute(t_data *data) +{ + heredoc_flag(data->root,data); //heredoc 이 있는 지판별해준다 + data->info->heredoc_file= (char **)ft_calloc(data->info->pipe_num+1,sizeof(char *)); + if (!data->info->heredoc_file) // 파이프 기준으로 <info->pipe_num && !data->info->heredoc_flag)//단일 커맨들일때 히어독도 x + if(check_bulitin(data)) // bulitin 일때는 바로 실행하고 종료 아닌경우에는 sigle command frok 해야함 + return; + if(data->info->heredoc_flag) // heredoc 일 경우에는 무조건 fork 를 해줘야함 + { // 시그널 함수 때문인거같음 ctrl +d 눌렀을때 종료가되면안되는데 포크안햇을시 종료가됨 + if (fork_heredoc (data)) + { + // free(data); + return ; + } + } + execute_cmd(data,0); //그 외일경우 실행해 주기 + // free(data); +} + +void exec_fork(t_data *data) // 이제경로 찾고 하던 대로해주면됨 +{ + t_pipe *base = data->pipe; + + if(!data->root->left_child->right_child) + return ; + data->env_array = env_to_array(data); + abs_path(data); + base->command = set_path(data ,data->root->left_child->right_child); + if (!base->command) + exit(1); + if (execve(base->command, base->cmd_path, data->env_array) == -1) + exit(1); +} + +void execute_cmd(t_data *data,int flag) // flag 는 자식이랑 부모 차이를 두기위해서 주는거임 +{ // 부모에서 exit 하면 return 자식에서 하면 exit + int i; + + i = 0; + t_pipe *base = data->pipe; + t_leaf *head = data->root; + + while (i < data->info->pipe_num+1) + { + signal(SIGQUIT, SIG_DFL); + if (i < data->info->pipe_num) + { + if (pipe(base->com[i].fd) < 0) + exit(1); + } + base->com[i].pid = fork(); + if (base->com[i].pid == -1) + { + if (flag) + exit(1); // 자식일때는 exit ; + else + return; + } + if (base->com[i].pid == 0) + { + data->info->parent =1; + if(data->info->pipe_num != 0) + link_pipe(i, base,data); + do_cmd(data); + } + else + data->root = data->root->right_child; // pipepe 순회하기 root 바꿔주기 + close_pipe(i, base,data); + signal(SIGQUIT, SIG_IGN); + i++; + } + data->root = head; // root 는 원래 root 로 다시 돌려주기 + wait_child_processes(data); + + // free_cmd(base); +} diff --git a/srcs/execute/execve.o b/srcs/execute/execve.o new file mode 100644 index 0000000000000000000000000000000000000000..e2e6b60525fdabefd33d6ed6c1e141f7669fc1d3 GIT binary patch literal 2780 zcma)8-)kII6uz6L=~mnB`g@g17wkh{rlk6^rL=Bh7e+B9mIU%rZYQ&|yF)g+%gk&$ z6#{`tq{9#>S|7v*>mMK#L=YcRwZ+({Rz;`}LJaZw5q2DMdW(BdE4mZ7Z zaFg{at_8k1N$g$Ap1N8&nAx`gHDj55Y?JtgRll^hNem$$Id=Ghv31oS$#p3bw+vcY z8SU5_EDa6Ilqh zcg~wcElw6xe^j1TEQp#c?xHI$9UVoBM4?gH3Z9!o*avA>6cU<2Xy`MGGtkNWF{oED zd#x9?u+B!-haSaTYG1jEQN8liPk#HsN@=a@2&&xOxN?5!Hf5V?6uemo-pP62rViiC zES*5o4}I-_cZI&g@P+}36Nr2qc`KJ$IwGP56;pNWnb*Udq`p_T(|4fyE3zysv(#J0 z@WL`{WANXp>XY#QQTYGhrw~rR+B=N;(u?WMJwW3oC_mpS8n1xtzbgu#+*KkBUJ`gJ+>KT`$v@Ec1|FqQnw#ELqd_^w{yFP!qCyms*Ct1qPrn0+s zq%Xi~KXlZRQ-5!SL&nG0$e!$b18?k(o`14Cj(Jns$v8K)tHZALkKmK>ZfbWCcEkS) zI~jMM-6J&V^NcA!0iOe21L9Ac@-a0p@O>a2QRNsAZ@2Ogc|fx%zXM6W1$-L#DUkdN zK$t2o0e1uMBL{fc6ncs9zAIk=$@C%+kFIhKhz?RFfW$WfM1Ly#rMwM@+$#4F489HJ z7a-nT#Rpt)rMBb@vfos zO4FKQ+%_EE(wrLO+O#cKH3R21VNutr!uX6KurLB`>vEIpv*p-M S2o*%B)$2{2h39ce&DeiOi6>hC literal 0 HcmV?d00001 diff --git a/srcs/execute/freepipe.c b/srcs/execute/freepipe.c new file mode 100644 index 0000000..bf0c2e7 --- /dev/null +++ b/srcs/execute/freepipe.c @@ -0,0 +1,40 @@ +#include "../../incs/minishell.h" + +// void free_cmd(t_pipe *base) +// { +// int i; + +// i = 0; +// while (base->cmd_abs[i]) +// { +// free(base->cmd_abs[i]); +// i++; +// } +// free(base->cmd_path); +// free(base->com); +// } + + +void close_pipe(int i, t_pipe *base,t_data *data) +{ + if (i == data->info->pipe_num) + close(base->com[i - 1].fd[0]); + else if (i == 0) + close(base->com[i].fd[1]); + else + { + close(base->com[i - 1].fd[0]); + close(base->com[i].fd[1]); + } +} + +void check_file(int fd,t_data *data) +{ + if (fd < 0) + { + close(fd); + g_exit_status = 1; + if (data->info->parent ==0) // 자식에서 종료 or 부모에서 종료 확인해주기 + exit(1); + } +} diff --git a/srcs/execute/freepipe.o b/srcs/execute/freepipe.o new file mode 100644 index 0000000000000000000000000000000000000000..a0a60bc72b57981c4c3854fa078c09353c763bac GIT binary patch literal 1144 zcmb7DOKTHR6h0GU8?-e+q*SOFL{S&rxR8JdsWxy621FWgQ!Zhgn87}xnc!Fm2(d!A z2rm5z{)FyaRH&|uu3WlMNWnr7aUnzNcjlh4DW!r3&i&5wJLk^h!|&~#Q6lFE;ee*0 z>ultqkkilt`-ezRa-RhgADqO>yewJ=UKm*0`tzl`^Lu_`T^QoyU0#ELd9c`1hD5Y> zSC$%8H_)x+$Nus?t#8dHImS!EQ%r*3;a$GqNZFWxb+q>Cy7s8Lx^iaa;BnjX+s=D8~orKME}3k_908={9s&xR#ao{$Hu6?l;x>p6|9J z)ol$_x6(JINSSh9nYqHXnaS+hMQ|!p8Yn}i9CfxF<$hHDr!fvYJrkz;JansxqtlKk zyLOH@)UA?vs=I#0$N+iiBxLag#FRT({})6URLl6##I9}vp~PNe?|+rvKp ri||v}!HV`mKOlWSM%@gmL90pHU0i8;0=nTh*sgo-16}hM<3H>VekZhG literal 0 HcmV?d00001 diff --git a/srcs/execute/heredoc.c b/srcs/execute/heredoc.c new file mode 100644 index 0000000..b9a72af --- /dev/null +++ b/srcs/execute/heredoc.c @@ -0,0 +1,29 @@ +#include "../../incs/minishell.h" + + +int fork_heredoc(t_data *data) +{ + int status; + + data->pipe->com[data->info->pipe_num+1].pid =fork(); //인덱스 부여해주기 pid 갚곂치지않게 가장 마지막 인덱스 주기 + if (data->pipe->com[data->info->pipe_num+1].pid == 0) + { + data->info->parent=1; + mk_heredoc(data); + execute_cmd(data,1); // heredoc 실행후 다시 커맨드 확인해주러가기 + exit (g_exit_status);// 전역변수 + } + else + { + // signal (SIGINT, SIG_IGN); + waitpid(data->pipe->com[data->info->pipe_num+1].pid,&status,0); + g_exit_status = WEXITSTATUS(status); // 정상종료일경우 exit코 드 추출 + if (WIFSIGNALED(status)) // signal 에 의해 종료가 되었는지 아닌지 확인 + { + g_exit_status = WTERMSIG (status);//시그널로 종료시 시그널 번호를 저장 예 ctrl +c경우 2 번 + ft_putendl_fd("", STDERR_FILENO); // 빈문자열 출력을 위한 ctrl+c 이런거 눌렀을때 바로 새줄 + return (1); + } + } + return (1); +} \ No newline at end of file diff --git a/srcs/execute/heredoc.o b/srcs/execute/heredoc.o new file mode 100644 index 0000000000000000000000000000000000000000..83c0c025bad478b3bef08366d382f129e02ac7b1 GIT binary patch literal 1284 zcmb7CO=}ZT6nzuhG}hKcs1l(_7A`6pP;n8FLTU{>!J?D~Tquu_Oq!wQ!(>8(SfWf7 z%-&J1{Q?CnG05G9gU8X1cMPFC=a+baOA7?ct-{Z3r8s<`8>C z;F%EVidi-ai>e?*KcC0rNnfHL*kej=rvkoWzLZLvqFPus3K=18TgZgr6DX#d|6`xAk5yo;}On4CF_DX=s0&yBfA$VQ#xSXI*B&Czl-B1i0d{t@tEK<+5|!N^6rU>hNKNOvaq-LX%5p z3t~K7F?rt=^NAZDTruxujIUK~MKJCVB<XWj#|&Gm-Dc><env_array=env_to_array(data);//환경변수 가져오기 추후에 필요할 수있음 + + while (1) + { + str = readline ("> "); + if (!str) + { + free(str); + close(fd); + return ; + } + if (!ft_strncmp (content, str, ft_strlen(str) + 1)) + { + free (str); + close (fd); + return ; + } + // str = heredoc_parser(str, data->env_array); heredoc $pwd + if (str) + write (fd, str, ft_strlen (str)); + write (fd, "\n", 1); + free (str); + } +} + +void mk_num(char *str, int num) +{ + + int i=0; + int j=1; + while(i<3) + { + if (i ==0) + { + str[13+i++]= num/100 +'0'; + num %=100; + } + str[13+ i++] = num /(100/(j *10)) + '0'; + num%= (100 / (j*10)); + j*=10; + } + +} + +char *mk_filename() // 파일이름 유니크줘서만들어주기 +{ + char *str; + int exist; + int i; + + str = ft_strdup("/tmp/here_doc000"); + i=0; + exist=0; + while(exist ==0) + { + mk_num(str,i++); // doc000 doc100 doc 200 순으로접근 유효성검사 + exist =access(str,F_OK); //access 가 가능하면 1리턴해줘서 while문 탈출 . + if (!exist) + unlink(str); + } + return (str); +} + + + +void do_heredoc(t_leaf *leaf,t_data *data) +{ + int fd; + t_leaf *temp; + temp = leaf; + + while(temp) + { + if(temp->token->redirect_type==T_HEREDOC) + { + fd = open(data->info->heredoc_file[data->info->index], O_WRONLY | O_CREAT | O_TRUNC, 0644);//임시파일오픈 + write_str(temp->left_child->token->str,fd,data); //limiter 들고가서 작성하기 + } + temp = temp ->left_child; //순회하기 + } +} + + +void mk_heredoc(t_data *data) +{ + t_leaf *temp; + + // herdoc_signal(); + temp =data->root; + while(temp) + { + data->info->heredoc_file[data->info->index] = mk_filename(); //설명했듯이 이중 배열 + if(temp->left_child->left_child->token->redirect_type == T_HEREDOC) + do_heredoc(temp->left_child->left_child,data); // 실제 here _doc 이 나왔을경우 만들러가기 + data->info->index++; + temp= temp -> right_child;//순회하면서 heredoc 찾기 + } +} \ No newline at end of file diff --git a/srcs/execute/heredocutils.o b/srcs/execute/heredocutils.o new file mode 100644 index 0000000000000000000000000000000000000000..67616c0c8faf5424aa3ecc1a56c7148b6bc71abf GIT binary patch literal 2564 zcma)8Uuc_E6u;@RHmhqB#kmQhc^LiyhHs}IT^_K=4OsYLi5g3X++{?5JkYtz_*7f#N< z-#Pc3b8l{P^RGYd_c7+%!|(y}g91JH2!pU51uc+cmo>asIi98%EKf&HMnw5&abC2_ zMI|f!v~lM2mhMTPQz2NCk76g0t?>I8V+L3+e1RZQy)+J}=KB+P|vn^x}27 zo{IXCxlBHhEb>xzHl0mzJ{sF}La6Gxu4rQe`N$LwFs4&)OUb!4$tMbljHLp)>pQCl zQ`h+xdR0EHvIo$*ClfygIs}qO5$tEZAX>C3*-g~(Ao!VmjC~1?cs35|TvR8~{!Zin zl;fuO&9s~2rl_<Si=<2L+0Yi3TC2g!l;{erOtvE=?H+WOS@BP zNxt@lvbIg9R5u-fMdg+$YNjZysswwfRm9x_V$~GiNvqx7HQ`$Xmpjfs0}&f}sYT_6 z%3ReY+<>R*r6l0ui!}^#nRZm0qg+!MUrS}}@W#f5Y5y?(_V*Ld1)rD)h%q@2HH(_z zlBH%eDc-KQdxDEsm4srShvXQorEgLY*6-TYA#C1uDsEJ?qjuF76NYQo21b)NUtaJJ z5_0{nh_@h2jWzq1DM}a(u`1$s;K8IZSaE#`Q(M0;lU3R=$8Zg?617*5ZOld1fwAN& z(jAOV8O?sjxU&>pCsa!qw_~EZ1o1X3*k&r;>=*Io+N)@>v%SmuyhAwCuh5p7iZI%n z&9+b&nr)%Q6OeFFZImHaPy}iaKgx)sf0A8_!e}WpE~rGS*)G#;9ixr;hB^z-`-kbi z;ZC>`vw5fHvoZ;8jWZm!%l^LL#n+Stz~SSd04^ouk>h4^pXr>qe$9t3*z#v+<*I5% z7)?NsUK8I>_ zo-z1PhTJC(`4mce$Q1sc(GpdQ?Ir0x4s7)SPZ?BF1C$d$b54Lp47-d*0fxJFNfn3* zz7%Ht>_{<_KQd_*ES}0GhlYlb(p$ZBNA)w}*@%afo&BPWTH8Xn+H!sue_p?SAMfH1 z>G$)KUHlL0t$gpCV!m?77uw$!xQsmy!~Pg(?jBmi()BYI9SmLSd1U~nDi`5mpvk`# zPWQ1RZW_4oKMJS&*%9|4aAl3teeH<*7C2YqbbtTBy{r0~J zbm{3XopCFBo)>dGQ79xXFn*3(<#dtH6cfeL4C9Gp(wYIEEu@PUtOdp=$XiI2@}8JY zW+3PCR@SpjlbD&}*;0n#f68<^JEc=Fo}A9jSd15}L<)9Dz)hqPL4QH;PsGA!D#z(n Kz@s4Dp8PNKz%~v5 literal 0 HcmV?d00001 diff --git a/srcs/execute/pipe.c b/srcs/execute/pipe.c new file mode 100644 index 0000000..6a8f1cc --- /dev/null +++ b/srcs/execute/pipe.c @@ -0,0 +1,45 @@ +#include "../../incs/minishell.h" + +void link_pipe(int i, t_pipe *base,t_data *data) +{ + if (i == data->info->pipe_num) + { + if (dup2(base->com[i-1].fd[0], STDIN_FILENO) == -1 || \ + close(base->com[i-1].fd[0]) == -1) + program_error_exit("pipe"); + } + else if (i == 0) + { + if (close(base->com[i].fd[0]) == -1 || \ + dup2(base->com[i].fd[1], STDOUT_FILENO) == -1 || \ + close(base->com[i].fd[1])== -1) + program_error_exit("pipe"); + } + else + { + if (dup2(base->com[i - 1].fd[0], STDIN_FILENO) == -1 || \ + close(base->com[i-1].fd[0]) == -1 || \ + dup2(base->com[i].fd[1], STDOUT_FILENO) == -1 ||\ + close(base->com[i].fd[1]) == -1) + program_error_exit("pipe"); + } +} + + +// 정상 종료 확인해주고 수정; +void wait_child_processes(t_data *data) +{ + int i; + int status; + + i = 0; + while (i < data->info->pipe_num) + { + waitpid(-1, &status, 0); + i++; + } +} + + + + diff --git a/srcs/execute/pipe.o b/srcs/execute/pipe.o new file mode 100644 index 0000000000000000000000000000000000000000..fc05c86df26b40338512b52697bc5b825be94131 GIT binary patch literal 1644 zcmcIkO=uHQ5Pn-@TeO-zG|+-*pdtmyp`OGdwA$bk8?e%X2g@^Tw#{OjESn7tVxhRL zHY|l6J$m#mUOXt$f_kZ1@7}}&6mkesBsPAt`!+w7+Fl%(H}lPWGjI02ynOieW4DVj zbd$NfGZ@8r&)v8CK zlnk*YGJy!8^W;+TtLNl{1o)=Z%gS0pFBmoxvz`?> vJ89>0Oe`b~TWD!xE=6oj&*gMPwYh9gXJXFC+!NlNdpy%fF_Frf_yhX`d&4#M literal 0 HcmV?d00001 diff --git a/srcs/execute/pipeutils.c b/srcs/execute/pipeutils.c new file mode 100644 index 0000000..326aaf0 --- /dev/null +++ b/srcs/execute/pipeutils.c @@ -0,0 +1,75 @@ +#include "../../incs/minishell.h" + +void count_pipe(t_data*data) +{ + t_leaf *temp = data->root; + while(temp) + { + data->info->pipe_num++; + temp= temp->right_child; + } + if(data->info->pipe_num!=0) + data->info->pipe_num--; // 파이프가 1나일때 2개가됨 + data->pipe->com = (t_pid *)ft_calloc(data->info->pipe_num+2,sizeof(t_pid));// 하나를 여유롭게 생성하는이유는 herdoc 때문에 하나를 여유롭게생성 + if(!data->pipe->com) + program_error_exit("bash"); +} + +void heredoc_flag(t_leaf *leaf,t_data *data) +{ + if (!leaf) + return ; + if (leaf->token) + { + if (leaf->token->type == T_REDIRECT) + { + if (leaf->token->redirect_type == T_HEREDOC) + data->info->heredoc_flag = 1; + } + } + heredoc_flag(leaf->left_child,data); + heredoc_flag(leaf->right_child,data); +} + + + +void recover_std(t_data *data) +{ + dup2(data->info->oristdin,STDIN_FILENO); + close(data->info->oristdin); + dup2(data->info->oristdout,STDOUT_FILENO); + close(data->info->oristdin); +} + + + +char **join_cmd(t_leaf * com_leaf) +{ + int cnt =1; + + t_leaf *temp = com_leaf; + t_leaf *leaf = com_leaf; + + while(temp && temp->right_child) + { + temp= temp->right_child; + cnt++; + } + char **str = (char **)ft_calloc(cnt + 1, sizeof(char *)); + if(!str) + return NULL; + int i=1; + str[0]= leaf->token->str; + while(leaf) + { + if (leaf->right_child) + { + str[i] = leaf->right_child->token->str; + leaf = leaf->right_child; + i++; + } + else + break; + } + return str; +} diff --git a/srcs/execute/pipeutils.o b/srcs/execute/pipeutils.o new file mode 100644 index 0000000000000000000000000000000000000000..6130526dcddf406c99d0e536f1396f785c27e527 GIT binary patch literal 1976 zcmZ`)U1%It6uz^rNz~SvLJO$~T}8x~Na};EP+`RmTz?iNG|&gj?RGNBu55Oe+1WZ4 zi-p-p#-Sjn;G-Z)pM5b;VM~j7NWh3M`=7|7%fjF=%M^8b{+d`?p4Ff`GQ|f|! z@j{k8h`)0m>POs*Q_w@(d2xe6W=c7&z^^q{xG>o->+>k@pUxJX^J}tp(C2uo&59GK zcH@IuV@avE&)?s~V#I_STr8j;&Fm}a<1-#;sgzq)%YJ3m)r3iXA(3GlI*6~iAE)98 zA*$J$;!E&ZczPA)<6;U4T z$w}w0&0~PwBV96C#MZ*RjC0&*UPeV>t`S1seDzJtLIb0_)}=ekFPdjM#1rP3k~pA0 zZj;ZLv?jf#fk7Ms_7em?;>-M(U;RElu>A9P4~2t`1npIM(}6+!w%g8OOR0;oia@ zBQ(ryKx-cHTSQEI?k4BgIKPEn_$ubUK?LR0$B4wcj0nh7iDQ8yLRx?Fht)x-4 zf=bYC2~~A{cgb_qa=o%5lvDRwE`rx?1gcqUV(q(*ch&VlSQ6@euhvk`Dpt#Zaw_$@ M=LogbZjyBIKMAUx+5i9m literal 0 HcmV?d00001 diff --git a/srcs/execute/redirection.c b/srcs/execute/redirection.c new file mode 100644 index 0000000..6ffbe80 --- /dev/null +++ b/srcs/execute/redirection.c @@ -0,0 +1,62 @@ +#include "../../incs/minishell.h" + +void do_input_redirect(t_leaf *leaf,t_data *data) +{ + int fd; + + t_leaf *temp; + fd = 0; + temp =leaf; + if (temp->token->redirect_type == T_HEREDOC) // heredoc 일경우 전에만들어 준 heredoc 으로 접근해줘야함 + { + fd = open (data->info->heredoc_file[data->info->index-1], O_RDONLY);// 만들어지면 바로 ++을해줘서 인덱스 -1 로 접근을해야 전에 만들어진 heredoc으로 접근 + dup2 (fd, STDIN_FILENO); + return ; + } + else if (temp->token->redirect_type == T_INPUT) // 그냥 인풋 + fd = open (temp->left_child->token->str, O_RDONLY); + check_file (fd,data); + dup2 (fd, STDIN_FILENO); + close (fd); +} + +void do_output_redirect(t_leaf *leaf,t_data *data) +{ + int fd; + t_leaf *temp =leaf; + fd = 0; + + if (temp->token->redirect_type == T_APPEND) + fd = open (temp->left_child->token->str, O_WRONLY | O_APPEND | O_CREAT, 0644); + else if (temp->token->redirect_type == T_OUTPUT) + { + fd = open (temp->left_child->token->str, O_WRONLY | O_TRUNC | O_CREAT, 0644); + } + check_file (fd,data); + dup2 (fd, STDOUT_FILENO); + close (fd); +} + + + + +void check_redirect(t_leaf *leaf,t_data *data) +{ + + t_leaf *temp = leaf->left_child->left_child; + + while(temp) + { + if(temp->token->redirect_type == T_INPUT ||temp->token->redirect_type == T_HEREDOC) + { + + do_input_redirect(temp,data); // input or heredoc + } + else if (temp->token->redirect_type == T_OUTPUT ||temp->token->redirect_type == T_APPEND) + { + do_output_redirect(temp,data); // output or append + + } + temp=temp->right_child; + } +} diff --git a/srcs/execute/redirection.o b/srcs/execute/redirection.o new file mode 100644 index 0000000000000000000000000000000000000000..a9d396120a1a8a6838584a8d2c9bbd4b305d7a11 GIT binary patch literal 1648 zcmb7E&ubG=5Pqp?y8fseMWKS!96abD(t419A`u&0!GcH?J(Sn7+1g;6gmxE~LZFaF z40|c~4|ou~iQYt{9x5tc^ytBZ7a@@dJrxmb`^~<2W|P>1LnhywdEd-_Z(cT^e*fGW z5F)lm;0qpyzobP94m$?VP`rzcP$BFKb99WJf}FR7l&<5u#8f8bMDF&4j@o#!PpzpR zX)*eR7^GBOEE8yx(k{)Hr)^hy#ruU~Udn4@dXF&6eWo}$gl43rjDD<%8HymKGb?8n zrso|Ucj|l0>{agPb3YEnej#S{n(!=q2p*2b+$R!nGHOHlhtOdFjf5&hy|@mK8tEhl z^}p?=RsU{PTO(Gz^2@4w8}D;1>R|;rgt>1(cs5n_;{#^xJa$Gmk=sBn12?Q-9P6u@ z;868P%(6dP!G#acMT1(5Zq{?HpwbG1CS75qS-)93uA9*V&?uX-0^i_bls2ge>aD=r z;D)*zu%7!GCavn*k;(O$GvJw(|WINL?jp35IOTp_n1+=fxWryl}4zkMnQ~Ewa{c1i2E~H^qD-B_;RMg`eG&bB# zzqxX_GlSbwnF=^Oz~;G5PNJs@GohEr3Zhj=(BbJ>Ns`d?x3{-3_tfM%Z7F-FAp9BY z9N}jU-YD$ZU**iRUG|S~eQfE5i22D_^1y&WH8g+v1!ez042+*I#HEAD2Yr_ZaTB2t zZw%gG9_#ogZw|cWE!B_p^zer9>%b@7fChZhHGIW^OF+DT>3JaD#q=E@{@2pOjIYs~ zcrSp&dkQ4pBOvi?&fnrV3q)xm#Rv%FQ$Q0NdTvKKrhPJOh5LH$^xjcU+c*}{c&aPT zsJIVWL%X74jsP-Wk|obAd#+q?@`VM*cEenu*qO3t9s6E{a#uQj!Ig{dwCgPjSt>h4 WA?>-+q5}xIGle;<^In<$6L$c`r9oN% literal 0 HcmV?d00001 diff --git a/srcs/execute/setpath.c b/srcs/execute/setpath.c new file mode 100644 index 0000000..885e66a --- /dev/null +++ b/srcs/execute/setpath.c @@ -0,0 +1,89 @@ +#include "../../incs/minishell.h" + +static char **get_path_envp(char **env) +{ + char *path; + int i; + + path = NULL; + i = 0; + if (*env == NULL) + return (NULL); + while (env[i]) + { + if (ft_strncmp("PATH=", env[i], 5) == 0) + path = env[i]; + i++; + } + if (path == NULL) + return (NULL); + return (ft_split(path, ':')); +} + +void abs_path(t_data *data) +{ + int i; + t_pipe *pipe = data->pipe; + char *temp; + + i = 0; + data->env_array = env_to_array(data); // 환경 변수 array에 댐아주기 ! 1 + pipe->cmd_abs = get_path_envp(data->env_array); + if (!pipe->cmd_abs) + exit(1); + while (pipe->cmd_abs[i]) + { + temp = pipe->cmd_abs[i]; + pipe->cmd_abs[i] = ft_strjoin(temp, "/");// 절대 경로 만들어주기 + free(temp); + i++; + } +} + + +static int check_path(char *str) +{ + if (!ft_strncmp("./", str, 2) || \ + !ft_strncmp("../", str, 3) || \ + !ft_strncmp("/", str, 1)) + return (1); + return (0); +} + +char *set_path(t_data *data, t_leaf *leaf) +{ + char *tmp; + t_pipe *base; + + base= data->pipe; + base->cmd_path=join_cmd(leaf); //ls - l - y -t + if (!base->cmd_path[0][0]) + exit(1); + if (check_path(base->cmd_path[0]) == 1) + { + tmp = ft_strdup(base->cmd_path[0]); + if (access(tmp, X_OK) == 0) + return (tmp); + free(tmp); + return (NULL); + } + else + return (search_path(base)); +} + +char *search_path(t_pipe *base) +{ + char *tmp; + int k; + + k = 0; + while (base->cmd_abs[k]) + { + tmp = ft_strjoin(base->cmd_abs[k], base->cmd_path[0]); + if (access(tmp, X_OK) == 0) + return (tmp); + free(tmp); + k++; + } + return (NULL); +} diff --git a/srcs/execute/setpath.o b/srcs/execute/setpath.o new file mode 100644 index 0000000000000000000000000000000000000000..1b99702780ab1d65dabf98aea8d7527be4e66eba GIT binary patch literal 2528 zcmb7FO=x3P6uzmolhK(bh=mA)4eG+p>lE>)N(UP3lPfq{5D>1xoeC3*tmrzsGq7{+w>WB0pz!C6jbK zwU)lNl%7}WwduAJn{PR%AvknTNTuAATF53>T;tH6-wZeAfaB$dOgv`A z!$PEjJ>fH0F)V!*k%z<(77-mva)~^s)`_!1do z?{Qfww4`riO^wTvT`Sv7iX#0&t7bNrTe6gh8Jm185Y|{&lf`^YM6Oc~x2YIyP&cl2 z4Pj%_x!jb+$$b&ocpY*?>WKZpeVlrL;|}E3a|5WTbAbOUT(2}`Y4A7FYsIv0HxtDl zLenL?S>HK2I+Deo;#c<;w!7+S$g-`C%XXFXXvpFOk~~kxm+clw>o@2@J0#RVj#bW) z#-uIspWT;RmzL4(UFx(BTWldzw8u(UQSU=cI%}e7^*k@ zH+76fMmL}mg6qMZ6dJO$hK?agb4L|)qZYKOf_n%<3E>n_tW%x6m(kHqaQ>mlb-oF9 zGm79QZnf`Gm#Vww{!t?rp^x4W zp?owHJ$EL&jVMn+egSLyZ`2Cn{DnviM{f+gd>)@kO=L%J-o&A?<2p{XTZY{M+i^W7 z+Ikj&c$+K<)@f-Pu`7fE@ zV!p`yn?Sf)2_VIL0!ZSN}EImv>LKp)U%z@s># z6c*`&xf=uDWv=(#JpI>o^HfJSKhnqBef-;fJpEU8`_mf;eqaztMEBgS7s^e4puAO; z%x04xg3B*?LM?bImszIWqL!$fm-Nfr(Pi2x`io7$%-pkIfwYO +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 18:21:14 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 18:41:52 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -39,10 +39,6 @@ int main(int argc, char **argv, char **envp) builtin(data); input_free(data); - - // print_token(data); - // printf("\n\n"); - // tree_print(data->root); } return (0); diff --git a/srcs/minishell.o b/srcs/minishell.o index c9bcdc3461e306e3ad0ab8b6437a3751fac28bf3..88f8edd636ae341fd1f5486e3d94830b76034afd 100644 GIT binary patch delta 418 zcmZ3%^@nSMgJ1+B0~ly9LFkByf%c*gA#4VaAPbP)z|6qFKXIwC5KKY{s(_Pu;wwAJ zA5fkGj0P$PB8DH69U099C7?DqKxG{!cQV@Zg3RRyihKalJ(I68$}{p!W@J*IEWpGw zS%b-1W)V>C1xSZSr|S)m=Gq$!{H@X;Zm;d+$@NUxlg}`50x>to0kEogDqsSnd4USF zfi(N%tIXPr8IucHFxE|WWU*%~ncT?IFPvJDnp|3v$`GHNUz%4EUyxalI+>4E F5&(9SOf%c;3A#4VaAPbOPz|6qFJ8`M85KKY{s^B}*#8-Bb zFQ7aHC@la~4nzz$COa~k3vxhhaDd7hOzvc~=Y0S&5-73(Xnw`ytBmrDJd+uj)F%rt z@l4iWvX+?ulmnaV(dl}_qq+751AnVDP|Ty(wsCSjQ}*OPOq`4fli8S+fCinPtjTO% zf8*bOFn~Fd!I4j(jmepp4QlZ*APr>e?gG+4H|cH!(i}i~DUjv?(sO_`JCN=H(m+FX z>wq*c0CZ!4G$)V_gYZQifHW77Zw=*}0BLTZ(Yo3|2J7Un%-WM3SR5ELCpWU#Pc~o? hn0$eyL82%%F(oH6FO?xaGq0euBtESuH5I6w0RU|JMf(5% diff --git a/srcs/parser/parser.c b/srcs/parser/parser.c index ba26787..e7fb1e5 100644 --- a/srcs/parser/parser.c +++ b/srcs/parser/parser.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 18:35:07 by eunwolee #+# #+# */ -/* Updated: 2023/07/14 07:52:10 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 18:34:40 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/utils/tree.c b/srcs/utils/tree.c index ea425e5..13a51af 100644 --- a/srcs/utils/tree.c +++ b/srcs/utils/tree.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:48:39 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 18:15:48 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 18:33:51 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,7 +22,6 @@ t_leaf *tree_create_leaf(t_leaf *parent, int leaf_type) t_leaf *new; new = (t_leaf *)ft_calloc(1, sizeof(t_leaf)); - printf("new: %p\n", new); if (!new) return (NULL); new->leaf_type = leaf_type; @@ -62,10 +61,14 @@ t_bool tree_add_right(t_leaf *parent, t_token *new_token, int leaf_type) void tree_clear(t_leaf *leaf) { - printf("%p\n", leaf); + t_leaf *left; + t_leaf *right; + if (!leaf) return ; + left = leaf->left_child; + right = leaf->right_child; free(leaf); - tree_clear(leaf->left_child); - tree_clear(leaf->right_child); + tree_clear(left); + tree_clear(right); } diff --git a/srcs/utils/tree.o b/srcs/utils/tree.o index ef2d272dc7649508bd9124f523a836f390cc9a89..79cce5f1f383b1f01d6d344ccb5b99e474bb6a3e 100644 GIT binary patch delta 506 zcmXv~ze_@46usa3VF`*RL0W+?3N%QpC4+(r5}rd)w73YhH8$oTJ(7lp5ZYZD>mO(d z%Ap}Bh_;r%F`8bRql0DVKA#uvJ?DPseD}WheMQ@m=47I+h{!@BQph#MN}HbB)BO|b zh>RHZW8ji{>nJ~))I=iRWB{`!ksylG>Mx~6x+79tVQ~i09o2slQs47ttiDLkNC;*hqB(dgUWu8VP0bt&t8t z2i7vb8-=j_i;0LTub4CD4$L>aXl7KB_svYW`8QO{P^Xf8+{B~h&VhKG+&A2U{9!Ja o9DfgyOpl>hLJ)bR^rN-wK`)xbE;6wC{Q;LkX+8~Y@Kb2vALwyr&Hw-a delta 635 zcmYjPO-n*S6rHJgrjevlM76N!LyII^WknQJ@Pt-DfksqBUmLM6Y7+?}B#%IwO+TVV z(MESgLEGB7G}>6ZT0MfYb9G*H;Lg40o_p`iFq3O2Ix|fkdktf(0|vChPPx41ZJqJj zN{0DK1}t8Om`r3>2Z#EVNJRq43ym>5JV=6^h2`b7z5U(o*k*R8rQ2$9Ds_%J|AA&^ zF9%vfYIs6vE2yJG6|x`0?wk^HN-W9|KH)Ug{zo>(wq%NXxxi(7@|HKq0`GDg2SxpC z{F^g&#Y)sEzj%aC-z?OG`H4$UADg;yV4`Fenkvzg$0ln`VKRH`#iAQCrk;MRv{z!| z$X?2q%VkAerAs2o2iMYlZ2fSwqbFX^$o^ndBb?$taJ7td3oj4KA>nmADLE=5V%XvT z#!SGFccNXJMqfteg^%0ii|{!TKUFmfwIyV$K1Sdj6Yx@jS9qkF&*8C2;1k{CgYcyH z!ILg0wO}{{LZICnu>>gq24TdlV@)Ye8etx$N-KO(<~6Tl%*x7VZORtM57^(39$W7( Dlu3DZ diff --git a/srcs/utils/utils.c b/srcs/utils/utils.c index bcdfddd..0da0746 100644 --- a/srcs/utils/utils.c +++ b/srcs/utils/utils.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/12 19:40:44 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 18:11:15 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 18:35:07 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -35,8 +35,8 @@ void program_error_exit(char *str) //input 한번 끝났을 때 사용 void input_free(t_data *data) { - // ft_lstclear(&data->tokens); - // data->tokens = NULL; + ft_lstclear(&data->tokens); + data->tokens = NULL; free(data->input); data->input = NULL; tree_clear(data->root); diff --git a/srcs/utils/utils.o b/srcs/utils/utils.o index a9997ecc9c22519ec67e4fc3ab59e8513cfbbc4f..018e9aa8b59b317ed5911ecf5a12bb7968635aae 100644 GIT binary patch delta 288 zcmZqSnZq-|LC}GT0Sq*tw8O+edr<~Pgdhu$nE@oYCN4D=gh_w|K|o{TOM6KUsOko= z5Cek&GXnzCx@_!{fLENQhzb5+<|BFPIu66F@u$m?Iz@5P4y8BeOkY#N>m_>Wl@GUoxw6 zR{Z-91__ftGD}Z3VNp^222{t!z@YmINV5a!T|k-}NH2nlcY(wwm$C#iUf6t+#hMWS DHk3A; delta 269 zcmbQk)50^sLC}DS0Sq*tw86wcd(jUNF$Rzz3y>WFBseE7H5P Date: Fri, 21 Jul 2023 22:25:40 +0900 Subject: [PATCH 06/57] . --- Libft/libft.a | Bin 37376 -> 37376 bytes Makefile | 19 +++++----- incs/exec.h | 5 ++- incs/init.h | 21 +++++++++++ incs/minishell.h | 6 +-- incs/parse.h | 18 ++++----- incs/pipe.h | 7 ++-- incs/struct.h | 40 +++++++++----------- incs/utils.h | 23 +++++++----- libft.a | Bin 37376 -> 37376 bytes minishell | Bin 72592 -> 70632 bytes srcs/builtin/builtin.c | 24 +++++++----- srcs/builtin/builtin.o | Bin 1580 -> 1644 bytes srcs/builtin/ft_cd.c | 16 ++++---- srcs/builtin/ft_cd.o | Bin 2400 -> 2432 bytes srcs/builtin/ft_echo.c | 4 +- srcs/builtin/ft_echo.o | Bin 1648 -> 1656 bytes srcs/builtin/ft_exit.c | 8 ++-- srcs/builtin/ft_exit.o | Bin 2304 -> 2304 bytes srcs/builtin/ft_export.c | 16 ++++---- srcs/builtin/ft_export.o | Bin 4716 -> 4764 bytes srcs/builtin/ft_unset.c | 12 +++--- srcs/builtin/ft_unset.o | Bin 1440 -> 1448 bytes srcs/exec/get_input.c | 23 ++++++++++++ srcs/exec/get_input.o | Bin 0 -> 1040 bytes srcs/exec/pipe.c | 20 ++++++++++ srcs/exec/preorder.c | 19 ++++++++++ srcs/exec/sig.c | 8 ++-- srcs/exec/sig.o | Bin 1052 -> 996 bytes srcs/execute/checkbulitin.o | Bin 2524 -> 0 bytes srcs/execute/execve.c | 16 ++++---- srcs/execute/execve.o | Bin 2780 -> 0 bytes srcs/execute/freepipe.o | Bin 1144 -> 0 bytes srcs/execute/heredoc.o | Bin 1284 -> 0 bytes srcs/execute/heredocutils.o | Bin 2564 -> 0 bytes srcs/execute/pipe.c | 11 +++++- srcs/execute/pipe.o | Bin 1644 -> 0 bytes srcs/execute/pipeutils.c | 71 ++++++++++++++---------------------- srcs/execute/pipeutils.o | Bin 1976 -> 0 bytes srcs/execute/redirection.o | Bin 1648 -> 0 bytes srcs/execute/setpath.o | Bin 2528 -> 0 bytes srcs/init/init.c | 49 ++++++------------------- srcs/init/init.o | Bin 1996 -> 1540 bytes srcs/lexer/expand.c | 56 ++++++++++++++-------------- srcs/lexer/lexer.c | 38 +++++++++---------- srcs/lexer/quote.c | 62 +++++++++++++++---------------- srcs/lexer/tokenizer.c | 42 +++++++++++---------- srcs/lexer/tokenizer.o | Bin 2348 -> 2420 bytes srcs/minishell.c | 24 ++++-------- srcs/minishell.o | Bin 1404 -> 884 bytes srcs/parser/parser.c | 14 +++---- srcs/parser/syntax.c | 44 +++++++++++----------- srcs/utils/env.c | 32 ++++++++-------- srcs/utils/temp.c | 12 +++--- srcs/utils/utils.c | 65 ++++++++++++++++++++++++--------- srcs/utils/utils.o | Bin 1564 -> 2016 bytes 56 files changed, 450 insertions(+), 375 deletions(-) create mode 100644 incs/init.h create mode 100644 srcs/exec/get_input.c create mode 100644 srcs/exec/get_input.o create mode 100644 srcs/exec/pipe.c create mode 100644 srcs/exec/preorder.c delete mode 100644 srcs/execute/checkbulitin.o delete mode 100644 srcs/execute/execve.o delete mode 100644 srcs/execute/freepipe.o delete mode 100644 srcs/execute/heredoc.o delete mode 100644 srcs/execute/heredocutils.o delete mode 100644 srcs/execute/pipe.o delete mode 100644 srcs/execute/pipeutils.o delete mode 100644 srcs/execute/redirection.o delete mode 100644 srcs/execute/setpath.o diff --git a/Libft/libft.a b/Libft/libft.a index 5e57af59b74f8f404295ae9113c2a7992827436a..ed823d74fb626a8ff88249d7eeba8d28dca88202 100644 GIT binary patch delta 460 zcmZoz!ql*YX@V?^iLs&SWJL*yjg~UZtU!*5`Q|9*&rA^Jpxn(?oX!wM z7GRl`JWv^n%~|}9A&M*}TZsbo2*G8nL=iHas+-*<A_9lGMWriu*mcjJc%q`j=0fH>Oi+&aU;+}8EhYFi z$8*ZTltWakwVKvw~4AOquxR9j0p$oCeFY zFpk9LOj{8IXQl%Wj3d7JfU_tIEL=8!a4$v3Gn#LFTBSDl{r8m diff --git a/Makefile b/Makefile index 81bf91a..c521020 100644 --- a/Makefile +++ b/Makefile @@ -26,6 +26,7 @@ SRCS = $(SRCS_DIR)/minishell.c \ $(SRCS_DIR)/utils/tree.c \ $(SRCS_DIR)/utils/utils.c \ $(SRCS_DIR)/utils/temp.c \ + $(SRCS_DIR)/exec/get_input.c \ $(SRCS_DIR)/exec/sig.c \ $(SRCS_DIR)/builtin/builtin.c \ $(SRCS_DIR)/builtin/ft_cd.c \ @@ -34,15 +35,15 @@ SRCS = $(SRCS_DIR)/minishell.c \ $(SRCS_DIR)/builtin/ft_pwd.c \ $(SRCS_DIR)/builtin/ft_unset.c \ $(SRCS_DIR)/builtin/ft_export.c \ - $(SRCS_DIR)/execute/checkbulitin.c \ - $(SRCS_DIR)/execute/execve.c \ - $(SRCS_DIR)/execute/freepipe.c \ - $(SRCS_DIR)/execute/heredoc.c \ - $(SRCS_DIR)/execute/heredocutils.c \ - $(SRCS_DIR)/execute/pipe.c \ - $(SRCS_DIR)/execute/pipeutils.c \ - $(SRCS_DIR)/execute/redirection.c \ - $(SRCS_DIR)/execute/setpath.c \ + # $(SRCS_DIR)/execute/checkbulitin.c \ + # $(SRCS_DIR)/execute/execve.c \ + # $(SRCS_DIR)/execute/freepipe.c \ + # $(SRCS_DIR)/execute/heredoc.c \ + # $(SRCS_DIR)/execute/heredocutils.c \ + # $(SRCS_DIR)/execute/pipe.c \ + # $(SRCS_DIR)/execute/pipeutils.c \ + # $(SRCS_DIR)/execute/redirection.c \ + # $(SRCS_DIR)/execute/setpath.c \ OBJS = $(SRCS:%.c=%.o) diff --git a/incs/exec.h b/incs/exec.h index 5359d35..26d7f84 100644 --- a/incs/exec.h +++ b/incs/exec.h @@ -3,7 +3,7 @@ # include "struct.h" -void sig(char *command); +void sig(void); t_bool builtin(t_data *data); void ft_cd(t_data *data); void ft_echo(t_data *data); @@ -16,4 +16,7 @@ int count_args(char **args); void update_env(t_data *data, char *key, char *value); void print_export_order(t_data *data); + +void get_input(t_data *data); + #endif \ No newline at end of file diff --git a/incs/init.h b/incs/init.h new file mode 100644 index 0000000..23dc0fc --- /dev/null +++ b/incs/init.h @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* init.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/21 19:06:16 by eunwolee #+# #+# */ +/* Updated: 2023/07/21 21:10:55 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef INIT_H +# define INIT_H + +# include "struct.h" + +void init(t_data **data, char **envp); +void init_env(t_input *input, char **envp); + +#endif \ No newline at end of file diff --git a/incs/minishell.h b/incs/minishell.h index aa0b13a..a32c769 100644 --- a/incs/minishell.h +++ b/incs/minishell.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:05:33 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 17:53:39 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 19:09:20 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,6 +20,7 @@ # include # include # include +# include "init.h" # include "exec.h" # include "pipe.h" # include @@ -30,9 +31,6 @@ # include "message.h" # include "../Libft/libft.h" -void init(t_data **data, char **envp); -void env_init(t_data *data, char **envp); - //signal // void child_handler(int signo); // void herdoc_signal(void); diff --git a/incs/parse.h b/incs/parse.h index 29751b2..d71c55f 100644 --- a/incs/parse.h +++ b/incs/parse.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/04 07:53:54 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 17:54:18 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 21:16:53 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,20 +15,20 @@ # include "struct.h" -void tokenizer(t_data *data, t_token **token, int *i); +void tokenizer(t_input *input, t_token **token, int *i); t_token *token_create(void); void token_add_list(t_list **head, t_token **token, t_bool token_flag); -void token_redirect(t_data *data, t_token *token, int *i); +void token_redirect(t_input *input, t_token *token, int *i); -void single_quote(char *input, t_token *token, int *i); -void double_quote(char *input, t_token *token, int *i, t_data *data); +void single_quote(char *line, t_token *token, int *i); +void double_quote(char *line, t_token *token, int *i, t_input *input); -void lexer(t_data *data); +void lexer(t_input *input); -t_bool syntax(t_data *data); +t_bool syntax(t_input *input); -void parser(t_data *data); +void parser(t_input *input); -t_bool expand(t_data *data, t_token *token, int *i, t_bool quote); +t_bool expand(t_input *input, t_token *token, int *i, t_bool quote); #endif \ No newline at end of file diff --git a/incs/pipe.h b/incs/pipe.h index 194fcfa..a51dda7 100644 --- a/incs/pipe.h +++ b/incs/pipe.h @@ -4,10 +4,9 @@ # include "struct.h" int g_exit_status; -//info init -void info_init(t_info **info); -void pipe_init(t_pipe **pipe); -void count_pipe(t_data*data); + +void set_pipe(t_data *data); + void execute_cmd(t_data *data,int flag); int fork_heredoc(t_data *data); int check_bulitin(t_data * data); diff --git a/incs/struct.h b/incs/struct.h index d955f70..9f6726c 100644 --- a/incs/struct.h +++ b/incs/struct.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:24:15 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 17:54:07 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 21:58:24 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -58,43 +58,37 @@ typedef struct s_leaf t_bool exist; }t_leaf; -typedef struct s_pid +typedef struct s_cmd { pid_t pid; int fd[2]; -} t_pid; - -typedef struct s_pipe -{ - t_pid *com; - char **cmd_path;//명령어 +옵션 char *command; char **cmd_abs; // 절대경로 -} t_pipe; +} t_cmd; + +typedef struct s_input +{ + char *line; + t_list *tokens; + t_list *envs; + char **env_array; + t_leaf *root; + int error_code; + int pipe_num; // fork 를 해주기위해서 갯수가 필요함 +} t_input; -typedef struct s_info +typedef struct s_data { // 항상 기준은 파이프 한커맨드라는건 파이프 기준으로 < 히어독은 포크로 진행되기때문에 char **heredoc_file; // 한 커맨드에 여러개 리다이렉션이 들어올수 있다 int oristdin; // 이놈은 redirection이 나오면 fd 가변경 되는데 안돌려주면 계속 그 fd 를 사용 int oristdout; // 같은이유 - int pipe_num; // fork 를 해주기위해서 갯수가 필요함 int parent; -} t_info; - -typedef struct s_data -{ - char *input; - t_list *tokens; - t_list *envs; - char **env_array; - t_leaf *root; - int error_code; - t_pipe *pipe; - t_info *info; + t_input *input; } t_data; #endif \ No newline at end of file diff --git a/incs/utils.h b/incs/utils.h index 6a89be2..9756363 100644 --- a/incs/utils.h +++ b/incs/utils.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:32:09 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 17:54:29 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 21:48:54 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,10 +17,10 @@ # include "struct.h" -void env_print(t_data *data); -t_list *env_search(t_data *data, char *key); -t_bool env_remove(t_data *data, char *key); -char **env_to_array(t_data *data); +void env_print(t_input *input); +t_list *env_search(t_input *input, char *key); +t_bool env_remove(t_input *input, char *key); +char **env_to_array(t_input *input); t_list *ft_lstnew(void); void ft_lstadd_back(t_list **lst, t_list *new); @@ -34,15 +34,18 @@ t_bool tree_add_left(t_leaf *parent, t_token *new_token, int leaf_type); t_bool tree_add_right(t_leaf *parent, t_token *new_token, int leaf_type); void tree_clear(t_leaf *leaf); -t_bool error_back_readline(t_data *data, char *str, int error_code); +t_bool error_back_readline(t_input *input, char *str, int error_code); void program_error_exit(char *str); -void input_free(t_data *data); -void data_free(t_data *data); +void free_input(t_input *input); +void free_data(t_data *data); + +char **join_cmd(t_leaf * com_leaf); + /*temp.c 임시 함수*/ void tree_print(t_leaf *leaf); -void print_token(t_data *data); -void env_array_print(t_data *data); +void print_token(t_input *input); +void env_array_print(t_input *input); void check_leak(void); #endif \ No newline at end of file diff --git a/libft.a b/libft.a index 5e57af59b74f8f404295ae9113c2a7992827436a..ed823d74fb626a8ff88249d7eeba8d28dca88202 100644 GIT binary patch delta 460 zcmZoz!ql*YX@V?^iLs&SWJL*yjg~UZtU!*5`Q|9*&rA^Jpxn(?oX!wM z7GRl`JWv^n%~|}9A&M*}TZsbo2*G8nL=iHas+-*<A_9lGMWriu*mcjJc%q`j=0fH>Oi+&aU;+}8EhYFi z$8*ZTltWakwVKvw~4AOquxR9j0p$oCeFY zFpk9LOj{8IXQl%Wj3d7JfU_tIEL=8!a4$v3Gn#LFTBSDl{r8m diff --git a/minishell b/minishell index a6b6da5eb51856e03202e007dd8b9498164cceaf..41628b12537a7b8909606ea31e2cd3ec61001906 100755 GIT binary patch delta 9284 zcmbVRd0f=h+CRVFunmHM3nHSTq9Sf+ZnzFAI%+B{wwO2$!>|+#(=elG>0n4j6Yr(Y z?Q(lxQ|fK;mJ3B`nG2?=xAICiE3a*nsr|T7am&ie;{877oN?>Fcl^wm^L@7SJkNQ~ zhV{F`jOW7YTf60sVoYO<#a@pFpWIQ8oSxoo`5H-GB#CVK8a`H=p0HJsA64Y7e7!a! zVfsB%*c~Rx)A_sFuUafWrr)C#^LeH|S{!$ph9?xaNVzDbUCf^}&CuNZbCXRsy7QS~ zld~bgF2J9vaK?1>lkiQA)R-H;^<6b~8|Yoo&&8KM-PM=;wBsAcwTM39sgO*01sy8OP&e)??8u@}e857Zy?$ME# z=+*!_jc~!3lA(}CbQT7!fz|1?IUgG{2f_3Sn6AI_v&33^)>_>jZ&jA}(~R!RL}NU1 zp4?c70X6=?zy$vw3y3WP8M{Kp9+C-|t+mbFbuRBAfuTR#&F8xD5#qxI~%6 z;%Z`uP&e(s3@9$g2xB^pFQ=0XMh}>4vy)(WIC$?}NlZ~}3J}TYFnW@e>O=8)2l?G| z5_wVDh*9RgAl2pst<`ITm&X}EapF{+oSN52i# zM0S*z!RpGW%Zk=X%>~1=biMN{zIkMd{_S|acjWW>c!>s&Z+>7@f*zA{9b>y`g&MyY z{OQareZL{3cZ_ZREpx4=|MLvLcWhSDm*<3Qt#GaN@(7=0@?&FzG0`Z{-BhW@*|Ve^ z`Tl71J>B@|Q9XI3BZ2GV+%Y+zNug9Bq{olu8^_Jpcb*aBJv)j=j9(vR6 zNAefPKNn*g8KO`ALda)~lU!Bg&r;OBBrSnbr@ul-)`0=Lmi&IAHcc(Xx zocbT#{Ni9y9v=jLuMb=^ouF{o1CfUXZi`(j;HYJ=8Wq4cnXqGfF>}>@TKtbIkWT$Dg5O* z)A|Q2>1yS{;JS<-d7$^Img@m~Vp_tciP*`JB09%nKx% znar!^4mA&xs2jH2xqTLOm*|_`6bbDw^HQr_6Z@qbMYl``>L>qeZ=|C??Wa}*!_Bv|>_ge>~luK%FGK+bqkzA4#(VOqF zE;jd(XnPXxF>gQ!ZAjwN=k@W2N!|(^YVa8w#Ju>ce0C=bpDo~re1?!E{wkkumO_0< zXt4||Bouimut`$r$6gRZtb?v6rKR>;-n zv?GP{-oad$mqs@7U6O0EE`IH4CBC{ZA6ee=lg5)A`*40fLK%}vWA^<7_6qh=u zP-oRw97``j##sDws0u67jnh~xvLpe*zal`DLuaX?S$64@$cYZHX6X+j{}44qrHtbW@Cd=;qC=VF|dXi!-QZZ@E5P|m3|%U z?j{9e*RjsdYTCnRk!E0Rhw&KbmxPZmP8tY5zDEj?ldpO(h6@D^(zXWeB{A3>cMLMS zal|oWddMbxkTz3r)`S#CU#s}QCB^R%jd13Y;sEny#WTX%;3bx*&;3THl@v z->iXftjwl`1N;l1j~pgpyRZiK27kq5*NvY^Mk$}QHLai+_rI+&FkTE_V~|*&G99A5 zA!;OwbJUV#4W~@gu6E)rNYvJxgkYOXD1~f)jkx3vo(ZdSMPmPG_AN*mE#J^EWR?OX zv+J%fD>gXkvQfzYv}lk&sT&3H3Jr?taKi*58z6{#iCA0n4qD?Zro&pdw?j})pxwui z662g8zd~eaTcC{qT7Y2WW8wvrkv*UpFM$%MA#H0Qb{MAI8sK9Vrwwv|9@nLCR9ycJ z@EQI7Oy%7o^ZscfcP}116L&mID!#aP;Owccj7PDf{Am=C-MaC1l(o_N8xj~RYE#k! zD*0G4#~1fb+6X?SaKmh&dnGfGcgyYW?+YskU<)pOZ4Z--3|xj>1*)|!6!Iym0Xb*T zSV=tPOrTEAIBhC>sUobk$1(TkprCTPp`8+un*B_4(fh^@>kb` z@Kuyt+@EQi$vPTW0~WKcKSUYIJ80~UYd)Kc)A@=NRmK}--{A!I-EBd$&zOin3rD3(Xx)HmTt#0B|Hke7E!KJ})9 ziDjUUX?ZZ`C*ufi?{fc}m(CMz?lo`@SPw1v2^WV4Ta5;A_jkfwoC!uLKw(_}*?iH> zd-Ve?Ja);mDOWrFHu*}IYq}Dx<8LoX&Zvf0V_J+L7Ik3ld0gg=UFcS?J)_6fEEJPS z;+0WG29LX?=j0xTP`5efQIV6SVnayrW5b0mEMG7-QeJex8c%708ZfyJ7U2^kYDlvAeU8jd#X79LPD1o6)L97*CKA5FDRCNzhI#l8oWM| zW6;(X@U^iXF?3A4L zxVoXl5q@A}lrJ$%(RHwYzXgcRS51B-@};%AHnVr7a;C^m}h__k?Myqgqv3vtQjxl4PcnB_`7N$$rY zNtoJ9dfQb&jr*7Oilv#SWTGS&oaURC_Pe1EW$!*R8^AL-P?==Bi6ckEY9Su${XAtw*v-f0jlk31me;52Hy0^dT6jkcyt*IE8>m_Mj=bd2nEU|ZyZ1DOgz(h- z;?i!dU3d~>R<~$YN5_5)$Bbup@s7M?{l9nfnB|$;ZG77D%;CSl1H_+(at$mwA(p|3 zwl^`6a=tI0m4)@ZetAFr)1AC&c}Bu6l#B5Kma5!0@MoK^mJih*dX4w6r6t@>%!QYj z!!dwpHsSMZa4Q|I7?;rMG@@t=6cnxRGX=Z?00h^lx7^OD-o_0+qMdYh?NNxf~!=05S-st8o>sDiJ^Bw-aUFpx7;-mJ~wq!(It2|KreTTxQvvX?SH*eeLGuJAg`AS^$cjfJxWTUjyu za5{Wmr>z+JP7nJZt&nZj%IqaB_MEANZ8eobz{B1(dD#c13id)+LAfu#)M>lhSMGJP z&%&JSY?zyE3BR+v#AS1o6|kx(2YWTDh&^R4wz~>S{Z8@(jT`*o(fi|uT^?(&tffNo-~ z%b1BZ=Aj8v)3hAJ%5?v)Ucf#!n^?V#F_YKB_UXR-3jF@nqMfmfwZJ&zVH(zKmdg zy<`pM?|YMtU4UH6Iz;4gq9mOTFMB+UCZeyelh)Ct=dUgEX6%JIeQ)I~%45n*F9Z0L4R1!CA4?qLTa!&t|2phbx4 zXFrEmIPD%sG3yNXILpdcI$2GGx7=p;c#d@# z+9Bd>BC9UvDt0h}vLZ_J?-8YTB#-)LH0de~a{#6cu~f z4kEuw<{DoU1K=Hr{_7-IUgWWt*~Gpex0FvJvDj>kN5Lsb_?cefa{IjOd?ePGo&5q^ z^?OLaL$pnMHO=N-Rn8tqR)Tco=w4AmTceznZkp3t#ep^B8lHw?_yM_01Vuu*@K*j1;fZTd*)eJm8vB70u8Et(R+zJP4- zQ{uD)h16+ktG*DjX9WFAYJ<3EL+0Pqb_^6hjqL;)zooYRKY~$(+W~!Amo;RVwSLhn zI3EUuY z1nwWikH?>d$Y6JcTNF-HxZ`HYpAf=JB%VVU_qO7O8@g!y{VlkWkeM`mhyt@;6BAXYnpc__Gqo^+^1T!kKd< zZdSO(A@L!F<8jZW0go$Ob&JHOLKxRD;-6EvRq?+Q*pEcsCIv`}BE+dE6nZM$R3`DD z5VlG@TwyoPPITD>h2s^TsW4r`h`&JLdOWBI-$Iy5Extq&@{~Y)sli0dA@3bjN~s;IQ2S-mxl0oiJdy;Uqq~msGJ1w=LvU<6j-Mea#fYrD%`5@Ulk6j z?PF7jKSk$&#wr%Y8AYraMe^P@LmY30sf_M$4!#|xx$UBB>q9+ z7Q4i_fr$Wd%M$}8D%_z0@b^)K_*qh5n8Ni~u;k$cg_{;jJY8WnQ{qJ-d4-oLoS7~8 zr3zcHfsnmbA$@EZzhS zY51^*me6p%hn5r-y3;gd_tg4#z50sO(9%=OZ1|<8HoL)=sP*hY7j|(&6R$ye<7x0G zYOgoU>!nqv<5{R~K{oNOy7a696;~9|(rch0EJ+&~Bi?T|x41Vqc$2h=4abwToej_S x)<%tz4^r_Il{ZHD{0u!jLr+fi*lZY+tPN@?P1b%*uobK>Eug#fN_r>Y^M7wl^MC*V literal 72592 zcmeHweSDlnwg0nuY18y&161r)kmXH4p`<`1g$5Jag)I;WFA+t#+jO&SV)MpkLsKvs zx(Q~pU8u^dFHjT_L@-`JUX(N~*c5pSSRrb!EKp=tA}rcl0`}71_nb5H?6aGu>ivA~ z@BZ@y_SrczXU?2C=ggUzGxKbp|KKklPPZ&ip=DVG_#A*ws@SsnEFV&q^>6qD@CgQM ztIzgd=D+9y%FX@r^ha<$4JnZ)>Gc+Tg2AQLmsAIrTyXxyqTL>$V^yJ${(AUn8JO&i zKBTKMe1gGMZ4R|gNsn;(uSe=@$RhcF)ByMh%ZOMa2{WP`L9a83}5t3f5BjL zeXwI~%Zj$~^Jj)2C?xyWNtUrJCau;5n!4xmDh$79_MArVjW2(Q#*-HPwe&-GXp$e)RH zEk5*zq0FDv`0l}nc%AC+mV8$xl)F!@; zo#C-k_&!d$eSyC-7Z z6V=}JrN~3-GVgVBB~|ZTf3T#k@?K9{^b!9a+E=G3?1MC(R>HsM@+UT!zbw6SyY8ZY zvM$k}`hnPZ8F)%`PpHfH?%f-ku)KYTQcKAAuF25c5C?`E;tbpbVo#RY95Fo*i+An{ z#OqWb;hzY^{i#IFuKt==0I5KHbKsiIpt?5@uTcSNtoINQ8t|jICKZVPI&jSvqKxXP zeouNEVSF)_EEq)eY#h2J+9z__`I&uc)mN2VG_RlRzbnb|4^~5`Oq<;;Dx$202 z4Cq>Gy`MD{A;{DHcaA6g zs?j^B8TK7}AJ+Q3xA)T`qA~B!OOW*+p8mS$ynPg1MD0<@^xn7y zxdZ;^P+`FTylu^NYy>Q-D#&FJa4$tcb90Y-Azrg5jp!-o+p;G9Mr~*`T?f{t^si*g zBmP~W0Uw;?I zw0X zy*=Q6+vbP@yQ}@XN}+2ET!#||kp;20%RQO6e^>g4U^3y~MGjX+zP7(w@?RJOq+W~z zxD(hSeCn|J#RqIZ!+}Mcz1M1wybWzx>5K6I=P9(9Nz{$UUkZ5M4aA>^)jXp5q}C%` zi{>IAW)d~yV9Ya0#@s*%asRe7j|rke0MP~JHZ2To_=_(`F4<(Pdo15~f1hfM_(!>B zta}> zj6W5Bu4-U$Ie3HRb&f8JXO>+vOqO&W#z-KN*4I(EJ9+C-WRJ*!PU+sk~pa=!PlUKCrF_pmBU_s2&* z25Tnx7b<}qCRl`YT1Ehz&FM9}ynXxd8^<#WmTwrALmBl&un_lSGRi;>@C_J^JfuS~ zh!<#;lfIqDa7I=-PI;0K@2`6kNaP;JMu-z?U9@?#2552`s(X{>GtG^2h11Mf-B^=! zzNwxEuwZxGznzUURJUC{`*-#R@K|-2V-F0(i(Wtj0MTS1X1D@$B$AXEqAIOPEEQ1^R_KJ53unl zuDyGCkq&5!+9;kZg`o(~(DOv=lpOx-|Xcz4|WjY`etb(7Wb+s&u7re+e zQq1e6_z2NZo1iXjfK$nrM?P790!@<-p0U(BR8&$OoA`>i_cP3pvrydJVs9@G{G57H zbcVOjFSX#GK(eZY=Q$f)_@iA&e1u(<`WP`uz2>b+ol;F0HtCD-Fh(zY3H@WHZu$ss zpDjT{>rkSFDcECN5Z@}I`dWsq7l`C~2$AcsVHnSKHJ07#u1|n0sOCTNj2AxAX}>hy z_Gb@$2WA-+zmR@favc1MnxG4xT~r~Aa*xRqs7t4TvxHra&a>qi4fl~>5GgpTD!M$A z)*Hh~E$-hYDgKr(`xlUxC!}1_8-AuVcJwlAv&y|l9Dof$AoOdg3Io%F!LXZKKEvC4 z^#1B&XcrTc`x!kus6M+Shrf5u>adX!i`;f@-^?gq?Cm=@w=kDQlURV7Nu zb(N%N3QR@J=zdATH8@DIpTbnS4^prWQH)uS#m0TKz9aj@W=luO>6_n`%` zHc|&XcXgTeEh%-tM`=GWj(FLp(SV|;9&ljsH1A@$?3n&PL$vBai|u2Qd=XETbp*{2 zYS~*Dm9z!mu$CEze}kc_PY62`BYgJ@v(jsnd+gghjL{z+!>CA}-Bf&xP~P~MR+uyP zN=uq4#;Xxy){#Q8Wse?1{M~~Gc20U33$KHPIjv-4A0E^1f8E=QrbuQmQO77WE7{iv z{IARVQk8s;A*xV-qF_d9u(l?4-XglUE*XZ=W_C!b`)DM8bLdC1|Eo#p`zV z*Szi>^1mLNz;L@6^jRm|8_er=kH> zOSEaPz`bPy&34G1W3dXre39&YUFL`2pV_dmD`3OYO9o?D^))bt^;m)Fwg2QWKO*DW zzREG)SpJv~Qt_G{vF;tP(6f!uXlR9I7$+zDYo3f8`EYI+a3s%^)-u|Ku~=#FLD|B5 zwwiOMyD`1Lp4@yMda?!7Cv6PP_#pn-U+{bu2U}=wX~L?8WS7R#x-nuu4HGPQEwv7T z(71ocK8DE={r*4vgJJTA0skLtCEhOm%Qbo|0k96Fesg}Vm&K}vMh>Kmfpi?BnOJR| zdX$8wevmWHg2-aa(B@&fQ>PL&J9xh`^_cwFKRqT9lllK)4-asMX)WV09}Guq_()!y zpDQnTf(25jN5H~?bFlTr{?SsGy_sV=sYDsY=*rUM^#6g?9hO@)Z~PpNCe(Q!nQV1> ztI1zlUR8PH2MyCGph?q?Mw%^rqAsP1!8&V9$3}RZ?7$P2ivD9i04!4N`h6ijun)v< zVX-uc;s6lYVzm3jIudl9^8upv8zHEDmt!EHyl2XCAD1tmvU~=YS4~+irv^Thi`wy} zEn;zrI_Y&ex}*bxoTCD9C*7mDb)4Sh>^EQ%2*hHB#;(!$!wUn@=T{Em#*A{(uhUUg zR_3GX7bHjaezG03y;+)eM>1k*n$2xpTqDfXsZUC?^mE)6!X(-7fYX23{#QtMm8j=2 zJ)j>t+SwbHX2-D0DvNa$P51U)EIDRSbirZE%;4XdGbr*b`)uH;2v+xKDc@O72gw|M z;S~M>zxI6bp0EQ0&T5ioaZ9RH4(%}QF=Q?mJCRXj_JGt;S zzY)sn*Y+or7T~E{V7cj2g@6%wu0Pd-LhCvGxZviS!d=nQ<-o7cM9i5^E+QZ-@ zb2Fy;>{8RAZ@;>~4t*DRYQ)Pn31?=dp$5lHm~W|OJk{o`2W0kFstucv?0D+CmRL$w zo=HvgidZoQ^*%dijeanpRD%mMG{r@uH*xqOL|@{a+teMeP)Eowb#6nnb4!Z*H3h{d zmw@6s7~kn1f{W})4Gr#j*|lt?w--3sb!hr`GMPiI95`Tfd-+OdX%vW0Tr|(*y&LfS z6-*8X;xD7;kElI=WG08fgkgY!0CH{y3Xm7OTKeqrP*qM??4Nt8$8A zQ{snpLoWhlQbW9Ms?4cZlvnQ@o?-Jw1X1QrXCGp`!f*Oqr~$S|7AZGou#|SjUw!s^ zfK49$n!1Czhb)M?T{gn6_oPpDWbuylP|iS~k_+#JtRE{t8|qpJFYe!ycFrg{Z6g@a zi;6n_OKV{hRHCK}y?vizvO3TNCMX+{&>R8X=IClCCZQF0dymb}EA;kCh(%M}CppZd zR$6rAK!c=3t(0fC3RDrebGGpwX5!g-^3)vwDTlbeQf0(-=}Zw<1Bi;evpsfHIM=T5 zNnOF#h71D-Zh@_f4@!l&o+xwGVEoU%`GvqY+blt3T}8z?J$Mrbl%nt(btAvZMW2>~ z{)UadQlsCLi;fk7qYJOw=%;G*Rk`RTIq0w1=p`Dx0_fTkz=kJ@=oP!d%QL1Hk#q6v zh;J+yj&H_E5nFB@4C5krkvh1g=hc@XXsiM#dg2qS?(z-s%D>i>B$h$mI<}Ii0+#Jn zaJQ@Xdc!srxpdpB-~Xn!m!=U=BYy=Gx4buQ?yq@s!2hPbsY65+2sneMlbz3HvB|q- z(mx|NELX>hiTtOt2uzNn2YiM&5<_X4vXcF;2gBb-VXMnsOx|7|j}Pn^d5 zAa@ybT$4#ZCpymduPQqqz@(B3|Gd~Nf4(yYOQO>(t$3u(djC>sYz%Y#JeVP&q(EoX zEI7(v=DB>7794cGTJ?K<*>kq3NLLqdo(j>>Jry1mW9i$7Iem?ig%NuadlK(qJwV)t zztz+0$y6)%)Xgj(&yp5W98&GYhMC#}w`h;!t<_~|JHxkYhuQzt?wP|aNau*TsnAM4`(U&4h$b!57Y!X z0+qf>ID$&as_}7LL$tl5u}6tN`>3-|ZRgHvlgzypOVZ$8W@*9*C-2|jFELKZ-^kre z%zs$c@l{y%XMUjro+wJLcfzo59xskLy+X0);{_kd77=B$S<|6*IjgYm$Z&rs)+mkT zXzBzsYUURp@bRa^Pm|O#X)IVpkGhA>-kJ3R`lj#q>F!a;8&^eG;kaReUdTwD;2XRs zG0Ryqf6Mrn06z<4wJne?I=Vf@fN-C=oPsp6usT<91PoZOlz}7VwFc%h=w3ZYf!{Sx zU2e*NcOj+OC7J%1^AHC=+9#v7MPdX%jUE?Z)|B0&4%H(R62U%S~}Ol)MKo#Bon4UhP8~Fr5umm*lvj@?7(> z?|1#r`6KIb7&R=zHfrJTD!Dv86@O*_6n`?l9rgm7GRDZ`C~KIs9f9+K;f-PWi}^dF z9%duKZjTNmV2TbC(f-KxAABDiZX{WG5SqZ9poc+Z!Be>ZiCJkP{<&k}8u)h5zScWf zE2yi1ua3Y2^ZL2?%K9qjehOmJdm3}$LA|zz9RV!ac}J!~9S9=aBW>Y4iFf(bYaHoA zPe-bJ5QZLN#=mCiv$KOV)*1Rp58)&%cfG>+4*C8}mU-G?@&+eaISu0iBDs@lvxD#Q zLHi2~Dwe9WyXreEs~aB{7C7Lkd>;-5HNT9S={=5O-plO+|7F2Hjqs`8TD_o;W#rE& zBU!mwa1Lf}*aiAxYiS2^kd*&K%6BgSjkQi1T}9Y;Xrv8-^a3H_;4<3~$0IdTRFHl` zNJr-)VUMAO^94crIw1jPKabNj3AwvtjxQ7K$D&h*3YBW2q6r@&S@R8Hkp&!bm9c;X z)(|HXz+TpAanAJ*d@D`N>`BSMpMqgQCojPpYM1nsXp-Emton8THRex%nZ6+hC##MB z5NiEIjXY0cSy_%YJ|X3eL_=#s+Hq>5K#-OYlGcVn!ro7F^Cu`Ae1C$Fv^ES`6Di6;(_R0*NcgdUt~u?yREGdx+lGa|poTHGwf{vu`qi zhnRo@fkq-wokIXS4PJC4D`{W>XX#`DQ6{hxg~t#9)X#rFxzrT#as*#pr6Q35@6qXQymK=V!w1(C$y?^OVR-j&Z(BEsoS_ZHOvzd&$Z- zQAu5gDmjyJc7Kfbx%PnesL;L`h+?}r>y=Hk<-_KJUa?ZA17{O$!1$FM>VZ0ztMR)y zGq@{ozdNz$(xiA5Fv%a9{WPy?Xm3pi& zs`{Ndd|GF=tgNqV#%sY}AW?ii%wAT6n9v_rbU8czP>Szp%U7~;1mgkbS#~^OKF(#y zg+s{XgQIxgD6rLTydT9%g<1%WDJ2))3N-bpcWK_mHmR7TKI9nT@UHKl&f*$+`RYClOMCf+v;2t;;J zSwa)}CGyl=$VqVRKw|a_&>HP)6Nq0edLiET2r#^TUNDy6bl{pNNllkOp%$T2d zbImwiw1xhzV-jc*LqO|qq>p6DolW$y9-JdGM!OMxAH!(rT?`_%6So`mMM%ltM`e3( zwU?*|fzLbHDl`??A2PX2<_SU;HCH}_79pQs9tSVmPxVEvBGG>229idi5gOrQE2uF* zW!k(FNwL?*$pY!Uq2$7KK-TJdknd2{&I2}=Cl?+>-TY4ssX+2ZR+nw2=TgZNC`pUh zicf`=$(bZHvrVq{KpP}*y`u%O4^N=mS$z_BBp2wQ%>=5v zH_*FDIXATEA`%XdZ2rh+I_?eiVw4NxIR&lyo*_E!I9mFJYz;H!hTi7{R?>av`G#YE z%|bzppqB#8xm)aOHp8z%*?2_-;Td|(43nFlUwpKF*017Z55H)&dK&9gjA+n# z3|KPFn=Q4rC+G5kZ*iYszYvI5NpP$C)8@k2xLz@!b;InqyeJ!R9Y8b?-r4{iEsu;BF$Hg+-vc5&-@SVhxXqT%9cU^u5t+5(F?(_77C$m&A8S8$Z@mc_%N}Fk^nz5~c00x>45SjB+xZRU?P;1^ z}MGJ=2 zo+Du<-Mb({wHZmEV69#woq>q3gPLz<320m7O1XDGNtE$IQl&bI2|Zv4?ND7v(mGK6 zfF>li)MVu!VO1C{>rtk4D8qFh0Z`jtn1D6Cq{WkEcSc?|e{2(X626&MwsHuOto#m| zP=}!bSrojB$QZGKphQOPCV(e9u#0TGaFwjQ1Tp|m6B>~$cN^nT^n-gq*9KJ=94-`qP<7zy(V25!0a@v4g zp(gtj=l~w?vbWeA^22#mWkA->Cp+A7+mrpQ4@QWUHSFVd*gtW}bdUG|K26~s>Nxx| z8F+$xZRI++G{_}&I2pt^1kBNgWaYJzzYX~$9axs~p|9yPiHl_A6;gZ;iZT57<$NfE zQCU7AM2g{p)p}gP!xd$ItyZO9APPXsI#DgJT8#G$-46!oBZTz%Aic>4T)cm#jw3d* zrxUY@gbBQtd8l0+NQ@xYBqe6FiG-%ceUyu7f^UxlQC3wvIH(>Lq>mGdA-KsrV=xyEO&>P+R6H~!U9%}C|*>uNP{sqGZpjagJ*1t{FP^Co8 zwyi~;N;F~$hSe!jFuZjs-gbcrkC9-+gctgV1Ae_##r?ljw?4r%sC)C6(d^kkZLarU zn&(fP?}vy?Fd33|U&6qFQ9KP>U{-NqkqqDho|R$75M+9hpbiV_Mn*-^HJeH1*;-($ zW=wrV=5sjFt?CPOE0bM8HvV13@ivbcE3L#% z_wV#3|4xi2E6FLN+G13Lyg_#vUX@#f%iZeoN2DWt7nv@?_j!jZR1^lsJ6twXdr^p! zy8%Cp_&~FX_A6FQPw7^U(-Zq4@VC;d&5|}Wt4nFmY@f?Uti`aqvp^SNQ z><|$};>+c$wnPu%o#%w@CUnMqw9jAI zAK?9ZvqaPU-;ZURw78R6#9n~D;JC;5TbAtXCX$s&AJp~Vm;q(xejX{2Cy6V&X}E+4 zm@KGSUG^CDkY1gk6E2nm^#QX6Z8FUI<3yrP^Q%z50;#Mq+$zQ()kcc85p(>@1vd_# zvezD}Bs9IZGaZ46U|NxPRnXojbaW4}v}99chLpxuMqW!}xsqM6jTUXgs2s&~#@7}9 z`g7LQD7+=|x2OX2iwyU=WjPe75?MeFRb;XRa3>*N^ezg4P-8cX3x`GT>Rny7)1O7B z(+8WLvpdYLhsa-;RZlz5*W|)w%2xs6G+Fsu3<5B#h}k;rp!B^qK7e`%3vsisuB zFA%iSzFe{?_3lGV_NPJ?J=vl@H0}c1Ickf-{?`*(T8*oeDRq*4%3un&W9r*N_97vR z8EuRDk*Vk)dy-8yZc3eGBe`Tp)e<55SBwoX1}$z;wWgwj?29OuVC6}s)JYblV&!b= z*++KP(YuU&_!FZa{PMcU#^~qn2U(C832UsMhcFP?3p!Xk$!6_lQ|e^x$=n{N)P+K} zSje(|{@qk`kfm4WBotj`N}Xg|a>>7WNtT>Q zR(zbwmti)(hxZ5BzG>kx6KkFuHH3H1zChk1Au;pBBdvUvWN;6^Ldk=RG(AUXLr^S8W8J42*A zp*V~@<$0fzzj8P{lC6_h;(>fXy4TPP{Q+jg_hD#NjTOok<~*;LxU{F1LDRs@=YD&+WeJ_~?_gPbDZW1yga zkic?n+9LTgkj>*FTOZi`+klLHAO;uP8OxP61&qx<7c!yHMbk(7?vUfYq>t<=_xE*R zS)@6on*#>kZ6RUuYNsM`;XKTVi$=Z4^Wnd6-E=FTj;VuS7`$c_d7OUEJa6)J?h%o) zFmq-CO;6F#q!&htiztB=*{`8g;y#&GOA=Y!1r-;Kqy7x65>Wp|ss94KdQ2PNyzJN_ z92C%YlYb7TH%sy~BKg2n-0%@O($3UCSQNi3^~tvv*MXZ5$0^Ji$Reh*@htGq*)ip|7B`eF^~4EsF{ zhcxYYTdnpN{CY6G$8zUy$!z($;yh{s<3JS8)iA52m?UE(v(F1Xe`bHt9Kw9> z{dgU1$X3^kmp(?d;Edy=c%dI9kTe7v-*zjmF~9dA6YHM9aZAP@-&_q(vJ|caRA<+O zMnUeQOIQ2HOK});YxR4Cg^=`)rSaigk=%hCG_$&HycAc@(r2NI&KOp9K1^0V1LvuJ z@)O7a0WbaAUUu{wKfBep7(9|H!3JICC3lAK)9>NX^dxjMYz%>I_R4ajpZw-ukekM4 zNhZd;C57>Kyxt*)N50jzsoqv@lDsAEe({y5b0vp{RRumJ#%1uiBBBZ&xa-I6gody& zUdH^;@4tb-GN96ZinS#as7=&mRGCB!hNag% zI5k#@oK^h0LCvnyClM@B$LDc0mpFRjC2;iEKhgCMX6UYeCCknflOUauvy}cZ=XV;^ z{c;}BSVoqY!K11f#5s7`?|e%3s0Sy;J1iVFBkO}Coro`ZaT81h^AWZ*9cUzbP?vqx zg8ja>ADEY8C7!i!y>t+RbAD{*De$j$(Ix&o-{Dx_3jgFk9Cu7*D+_-T>!N$4;=W{? z!uLG2YKSjAC?S4got+ELCdkh_G{M84M`}j(l5{1b3_}-Eri@7p+ULX0_jMo^L>Jd# zCusDRSX)LHzd|`#b9oFv7wXcSe4vgi`nTL<#h9I|9P+4wJ}Lf9J>U+JOQnt>HpS?eC|QKlj3yfzP7eHl-hJNw{u@jpWnzov*HCZ193 z(ddUi#}nP->Q(^hOQbU-Ng{?@#D^GSlt+^TB+^xa%HIM$s0Eg=<#g#hdU1CXZvMXz+KkkvP{_w49zIWPM{^46}`bTRdK!fsC`v+ z&b`lK=a=7$cm77JvT^b4>wus;vKmS0h*^*Lj6Rrukq^z$xR^lKNP4@ad1Z^U7mF7Q z$R-EZc_l}`kvJDKEB_*e1815yzZPVIPz~tlTK7{eWEje1YbxC(LmkTm+kS*!Ssy_5 z6vN*o^{@bHq+57)=!1+ACu`qgs(L|9d`q|hQ<;u(v|@MRY@6P4-=)t2&d;(W*@>cU zXchXwdN#Rm-VAum7jX{)twJEnfMd=e@c!80AWVxyy(-<6{*K)rId8+ihd}+YfAc?k z;Rx=vB7bOK3tkMLbWFBW^SD%al&l1wSFFP}S3<+T`o3P{W2z?MYAo)BvVTP?eGhZS z7l&9c=0w@3cIY%zSBiR?9ptopvtuBR@sQ#3aPjV>BRCdpY@Wt3KE#AQ3BM3a-UegA zqF-fnY(QUy=K`C$v_f^FUH5uE8%b0OjpII!DWwGhc@>nt zJq@MgmDS0*l$RoA&xpDdxWp5Cn>`q!Sb1h;>zHrYUYvHKf0aSoLJ$O4%O)FcQo|5- zx%%XtEH&6_w-TwHhZ;_)DVCZXF+yvXGe_okzy`=nvZ~y!Yr=;Z!#?(vV6235+*Vae4=(X!()GYh!yGkD(OZOK)6AsUb?8 zNh!qm_cqc*nf@`QXfvGNNU4>Sx`|RzO0B0<52e;oYCWaMZ#CXRsa8teMX3f#JxHm` zC^bx}T1q`fsk12cdrB>))CZJ0iBdCQGwEX~HIGuCpwuyxnoFruDOHM8OH*r82mbBm z=A(R8xT`5zYOSd6K!?9{gmn}rPxE!GZH?A<`NEM%Tg2BIu8;USTf<%L;ZQW(;ET4c z4!8Q2f905e0eSJif_%omg1q=&BmFPYZVj(#ZfXr5V;$X5YE@dLr6=V4MI+&`uRRiO zi!_8IIVC5QT1#q{9`D1yYJHlIDpy~0wgb8d|K#vR{w0?j@3W$7+ry{%7MJS8878qf zn}xj6+GVx=<9*OpM-&7bm^`xc8Dh;e11X;y*4b&k_NMkQS|GI3d=dN;yb-9BxR9JR z=m{X3Yn>fxpQ4RrcM(Np|(!Lg;k2Kh(3I48cBG~ZEfu~ z-$o9kuhV?XkM20;G$ve6%4urwH8ntPO)Hziky5KB+(MdRvD8PK+FBjru+H#VCq`S^ zPizcF!oh~NPg;2cF8Jl{o!5zp)6m=-;|O1>f|cf2W@Q zC{45JEYvLH+LW73Fyua53Ahq)CE!ZHm4GV&R|2jCTnV@ma3$bMz?Fb20apU91Y8NY z5^yEpO2CzXD*;ymt^`~OxDs$B;7Y)ifGYu40j)-=x1c>hB-x?+5kwkpAALzhBhf$LjAL`uk7% zJEOlp(BDN@yFXs=e`+vpR_mGb#PT@eWby|*YwnbJ`x|Y(BFynk4=~dxqXiWo^ECb((OpM+w6A{ z)YQ%tdOQR~np&eP39;XEKvggju5V~=YUT0`RNm3FsyD0P_U(u``H-{2OH5AiP^K#y1~<8JzCggJzdyt zeOMT_?kH-u62(#L&f*ShcX5Mt-?Wf*+l)r*?$Q;VP0i7!R_iyVUv6t^4Tf48tY6Kn zw_>w8+Z*aZG~9Zn^@CY!tk-5o!lAY+!x5;o!5W*h3e7e}N%PUp4(oPr0r6B24O;hj zAYAYg2{%A^J7!xmnmVjMdRoFQ9pR`oP!O`NFX*toUr--yYqFBy?~cOej;M9xbZ|Md zvz3tEn`sq5Mt|`%G_8WtdJ3$9_Qrba@1EAq7OStI(AxMZtI*2OWAM{>^c;_-MOoh~ zXs})>Ewoa|DvU;~M+!Pubm04&h3(BC_1!|NxY>HCpfzOur6AN8u|6yyGoeX|?{dup@}xL7oxoftgkzczwTc zWm~YRmAEcy?~IC}zF7i>{OB8OP6}@>s*iL)?SG#Zv3`Zp;j_^G;MqWFy)tNRDeAIb znnr^yxPr#0ZI7Eutm#br+F~|Yt7m#gxIPkUwECt;!Y$CWH84He7Oam%>epJ=Pv>v3 zZtIpAp=RJ(@1jSk0Qkp9i&(c8!*pdZ45MQk&Ot%jYRL1!VhpjM_11K&py?_gZY~a5 zTZ)mNE?bbGYU~rGl42P^A%|`hOFtM>6k5m`&)Q!jR zS1I*1tH|oP#$#F2TElCsk?GVE61Vm2^yYeW=r_|l&~xi|(;LFgZEyy!Ocw#ZF&*_{ z9@HL{XD_7(`{D$ln_npyCtHmzo7>#q97Ep(z>aH_3>y4s!@f4=J3j> zbze!OX;ov?dVsR~iROj@rk~*SdO~bl6{&9tvOD7eZM|9o{}r^}N1ah%fWIU?Q~ca; z9o31lR=+tT+|^DRXp4~7`Nb?W@(n`G+z6ziM(bBI+N`%qg-du5$g?4A{r60A++ro8 zvtc=~N$Zsv^{uPIK{153$Xe@nrPg%xXtnkI(r~D;Ex59|ewFn`X(vr1D`0r{%xbM~ z30ps%wW1TF8pCO1*2*SW!Ao#b+MF_T!1PVTE))t?!|$SF)<~&1CL#GEka}(=rZ@64 zBkAvOk8k77+(9HdNhG~9TURzkT3~U~W@;8_M^<%MH_YT2;299xaHq!;jIL?3Ho=8~ zbL+mDUDnGpAmi7A78xZck>{V+WTAK~XO=(*u>&?sDB zZJ%|L_4`@YpU_-tm{Fgk=kQiW8Ua!fO$&F-HctJ)IZdtPk!)e_oYU4B&B^&Qco^PB zJj!JI@N9TP>+#uW;wd7#@o5N(sQwyR8=mF%M!CHg>6yV37LM7DJ!0P+OoUhfG+{;2 z9%-XhLAb-(N^Sg>`ar|F`PaIl+l-o;^6Q2`Fnbf{(;-rLC;i*^Izqh z*XX%nCp~-K;QTi^ou=pTpXr%-i#Uslq`&1Qk16R}y{P&QqrA)L*A&u}xbai9Rkh38 zmydcfo*w*{@@y=~6!a8~a=Ny?J>%KnX&>~^e;bNM3r7JGR!`xuXS86jV7Le+sF5ky zP|)KUB|OybDcInt9VFC(+8)pHDv;>$Y{Y-dtIC&`rwV(D+I_y-!NTFf4TT#Esxqhs zq=FO(v=4hg3yJbUG=iMMjfKMnAhywi63-wwSU!rzzyedu6xI$S(LPu(3WPyar2jTR z3jBBUG|QR;p!_iTeWm#t9@Ow64R7#Cd6kA!8eXR1;iILzPQ%MFfm0hR4gLuNM>U)| zQQ&n3|73x`q2aPq1inqfRSN~aSHpv!5%@t3moE}{vnki`a~keBP0IgZ@J|$X9zrJy2xkvN`Vj6@bWH!k0ZFmvK|>0nATBVPZ^#9AIz|2WjY1+8TbnVV{rm} zl%Ff`sT$r`Bk(c}ZwLwec?~aLE^woUtrY@;EumK{a9qP>O#$AQ-E9DPrxJtvr8t$o*^5-;Mru*}{hEuvfZ)SZ-(4DB{t1CU)Np2=z%vR(-tGS;@LUZqKU83!hRd;eCVIzf zcvQE4s)j91Z;6I8n%)Hl{N;5#(jqwViL4OeMn6F$`@!jgMACZXK1)q_wOPNm+Afl z4L%$r;Wuk|!y19F)bK_v->Ws;^JyuM8~lG4_$CeeDg?ew!|k6E_1_6JJ@o~z-qvjz5PxaTr~kJs>W?QhT2 z@bH(Vyaq7nVid^V=knmjJoxH7IF<(wq<-uF? z;AisS?RoI;^WfJ6CeicXcwYIgJa|tYTr@3LzO(b-xp{C8TDb0s9-j^Pd;_0v;`1$hZoub8d~U+$W_;G+a|=E_`226R;j@DK zh-n4u&E_UZ`(S(1gUy(Pudq4D+e0FUHkW3%mJ2Sha^aH(wthIwBZlwb&Vn)lE_1m<)kBiPW!yD0iL zdmc*X?awGHe}{%VM+}6iJ7YYYAyEoWa;%6`5`o~P4is@(M~^sd$BlGkAvg5I0ZZ8y zn%Jdf64DzEEt>cXia034HL|^23DHpqF^EJ+f`6QB;2hGUBoL+43Eor_PE$vHGi@17 znu3dxmVhIr5tFo|I2zW{kU|~F(M25P(P;_+=_E&eD6ONPl*BgKgasKyWRSi)I6ld# zDE5>Q$&5xQJgIXzMyb=y6rwa~#MpGQHH1K=okqNp(-H!uq{LT)xxw2YhK?gdVni$< z5}1++LrT0++ZKn-AxS%G8MNcac1ldSnWKY1iXstJb8=$N zOyso0oReq=$Q@W|Wn<9hFa*-&QxJ3fVV`?QSFA}VNx={tCxyz1BQtcg^r#4NAmh+6 zFVI-R2~@B(+!fU!-(ZJ!)l%G$1Iff;o1>mbn(J{eqw(6JD5Z|HH`j;4FdViHL^u)K zHNYCgMQuPFxkk&{hmd9~2}alA6e&AOB(O_zWm_e;iqR|;ILa3cvREM0D=Ad|{{VXA Bz3c!0 diff --git a/srcs/builtin/builtin.c b/srcs/builtin/builtin.c index c0911aa..d467b35 100644 --- a/srcs/builtin/builtin.c +++ b/srcs/builtin/builtin.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/21 17:42:18 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 18:07:23 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 21:39:57 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,37 +14,43 @@ t_bool builtin(t_data *data) { - if (ft_strncmp(data->root->left_child->right_child->token->str, "cd", 3) == 0) + if (ft_strncmp(data->input->root->left_child->right_child->token->str, "cd", 3) == 0) { - printf("cd check!"); + // printf("cd check!"); ft_cd(data); - printf("data name : %s\n", data->root->left_child->right_child->right_child->token->str); + printf("data name : %s\n", data->input->root->left_child->right_child->right_child->token->str); // printf("%s", env_search(data, "HOME")->env); + return (TRUE); } - if (ft_strncmp(data->root->left_child->right_child->token->str, "echo", 5) == 0) + if (ft_strncmp(data->input->root->left_child->right_child->token->str, "echo", 5) == 0) { // printf("echo check!"); ft_echo(data); + return (TRUE); } - if (ft_strncmp(data->root->left_child->right_child->token->str, "exit", 5) == 0) + if (ft_strncmp(data->input->root->left_child->right_child->token->str, "exit", 5) == 0) { // printf("exit check!"); ft_exit(data); + return (TRUE); } - if (ft_strncmp(data->root->left_child->right_child->token->str, "pwd", 4) == 0) + if (ft_strncmp(data->input->root->left_child->right_child->token->str, "pwd", 4) == 0) { // printf("pwd check!"); ft_pwd(); + return (TRUE); } - if (ft_strncmp(data->root->left_child->right_child->token->str, "unset", 6) == 0) + if (ft_strncmp(data->input->root->left_child->right_child->token->str, "unset", 6) == 0) { // printf("unset check!"); ft_unset(data); + return (TRUE); } - if (ft_strncmp(data->root->left_child->right_child->token->str, "export", 7) == 0) + if (ft_strncmp(data->input->root->left_child->right_child->token->str, "export", 7) == 0) { // printf("export check!"); ft_export(data); + return (TRUE); } return (FALSE); } \ No newline at end of file diff --git a/srcs/builtin/builtin.o b/srcs/builtin/builtin.o index 87628f31eb1d0de4257bd054bdfc38d6252b4634..a61025c205fe5f45f570d18da51c7659e7d666c1 100644 GIT binary patch literal 1644 zcma)6O=uHA6n?2Sjcqk6SWpn$gF-=8MJPx>sID0yJ7{!9#!hk_jYF6X=qFzynXL`Gw++X^JeDVuWx^bh*C!g zALt-7Gk}i`g`9z|@<0!H%5x#(+9nvB#L9duLdbGUDqrE*{M_swPP}++0OsS|O?*!A z;2^EANkj-Qk_|st&;cR#^Cdi&^!Sye5RG-Y2_5S5>b0=wNzn`z{h%bo%=GRcoNGG4 z*1>u3@t(~eRr>~aAEglGs;D%IwX#a+u5V7yo>arMqWLtW5u$41v%LyE4UJoo9i}vt zg=simMI9W;q=`zf$fsLSQ#hCPm>E2zf7@OA7{VeEsk z@R+%9LUp-6m2*g{k1_v$x8pOWY@oYFRVNdaRJ7io<~h@#xdzRFKUe5aC76mY=U#&j zq~a;45MS!#cii@C>+UPBM5UrE+5t|sowF}Q!&LUFbt<=fN#SCNnn6^SfMLC1TzB=R z>|Pb7R1)89xT&QArCL_X8Xd|!!RDVw>@0Nk_up8O`%E`ZSdRv#j`L2iY+)`o*Le?% znDZ7EcVcWE7WF$F9e<$X1y~#rXIjT|Iz9r6Gwb{WC-Z!VWu8rCofkUJZQytl7Wc>r zG`Ze%1pf5!vi?SKT19*M|uNJCAJ_6!i)4wnMfJBIgSyti^J`zlW Hb3^|C&T0xd literal 1580 zcmbVM&ubG=5T3-E##+sSRumLhP^`#`6$B|1TWVn|6+}|-pgiJc(}db>OkPM3Dq^S@ zL(zZ0gC|ddR|P@PgEvn?&w|i{p6nqA{`e+uHr)gw#evzG`DW&O@6Ep5Pd~r^9wdtG zAUvQ0&}1AB8wxoDeZ+}A;&LryRBRZ7lUSLLMJesqwDC=xp1GdhibLurt4dHU1X-o#E_IS{He_G6 zfEM<}l=e8_oB0RA^T zmks8vwnV7Ix_YRqi5OWfuaaLs~i7F@I7YAfP9;G4J@?drSgDP9!^ zkF3gP z!r0ww6suV=Yj`mE6jjH8ABL{~`qP&1`=hD7*2DPp9zHP3bJSvH&J$Q*&MGYK@JJ38 zCv(z*Ul#l{ET-xl5qzKEo8ZDdbH2bb&pIsgyf)T(A^0=F@4;eLPE}(5^?=H81)map z43_y$N({qwiD}proKSASiG(!X6A$;qTpO*I^?@2W0~5`U^u$L^9OwJSG6#*;lgeo& zuhF=8!R(k9tQL?gXjRr3T`9K{_olv(bh14o C+w^w; diff --git a/srcs/builtin/ft_cd.c b/srcs/builtin/ft_cd.c index 565cdcf..0a39deb 100644 --- a/srcs/builtin/ft_cd.c +++ b/srcs/builtin/ft_cd.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* ft_cd.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:31:18 by kichan #+# #+# */ -/* Updated: 2023/07/20 22:27:49 by kichlee ### ########.fr */ +/* Updated: 2023/07/21 21:41:23 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,9 +20,9 @@ int change_directory(t_data *data, char *path) printf("\npath : %s\n", path); if (!ft_strncmp(path, "~", 1)) - buf = ft_strdup(env_search(data, "HOME")->env + 5); + buf = ft_strdup(env_search(data->input, "HOME")->env + 5); else if (!ft_strncmp(path, "-", 1)) - buf = ft_strdup(env_search(data, "OLDPWD")->env + 7); + buf = ft_strdup(env_search(data->input, "OLDPWD")->env + 7); else buf = ft_strdup(path); if (!buf) @@ -41,18 +41,18 @@ void ft_cd(t_data *data) char pwd[1024]; option = NULL; - if(!(data->root->left_child->right_child->right_child)) + if(!(data->input->root->left_child->right_child->right_child)) change_directory(data, "~"); - else if(change_directory(data,data->root->left_child->right_child->right_child->token->str) != 0) + else if(change_directory(data,data->input->root->left_child->right_child->right_child->token->str) != 0) { - option = data->root->left_child->right_child->right_child->token->str; + option = data->input->root->left_child->right_child->right_child->token->str; printf("bash: %s: No such file or directory\n", option); } else { getcwd(pwd, 1024); printf("current directory : %s\n",pwd); - update_env(data, "OLDPWD", env_search(data, "PWD")->env); + update_env(data, "OLDPWD", env_search(data->input, "PWD")->env); update_env(data, "PWD", pwd); } } \ No newline at end of file diff --git a/srcs/builtin/ft_cd.o b/srcs/builtin/ft_cd.o index 30e3358493bde6d48838723c2f6084a4c3bfe5ab..e9758fb1b7da1a739d7bf5be892802979f0e9940 100644 GIT binary patch delta 733 zcmZXSKS&!<9LL|gJ1;qE4AG|56dKdT6MJ<@3>`uuREXW2w9p|Sq>5lGh;%ccsVQl} z@Ec0Tbjr}7;1;k;1|1x95p|GkO*W@uk)Ypq_oG4jINtaDKEJ>3c&)+0&~7GFFoe5o z&C^0n;;Z+9PceE!0=Y%D zu0^o;f94*wwVZrIvwBL7(~kbOKmQ^a-A0xW!6^OKr=(30BR2XPmE1y|08SXmYtK_; zY??Qo1z#a6Tkf%KV?1CYoG;S(LJi}oY|^aiAqXA0Eusc^OL?x6g-N|HKEpiS; zo-?B9^W0~#7~SYDqj{sDI;ga~(jE=kHd?!;|0SMc>{AKJK4A4-R3-jbZPSYplLIvB z=#w7Wbc~x-EklCd96b~?o16MkYnK)zb{N2JmQFBe*Q~2waQ&XV7O`9Z#5yYsl<3h5 zNxC>6AW{uKUd^Z@E z8y|zvthDx*L0qFX3vz=A759yR+@Kf4pJTP_ctFR!pcDENy1Br6&1;YczXZ|8cL2IY aqp)_gum*C$63B^jbX7Vgvqyf{r2GahD3>|_ diff --git a/srcs/builtin/ft_echo.c b/srcs/builtin/ft_echo.c index 2ecbb30..0a56ff3 100644 --- a/srcs/builtin/ft_echo.c +++ b/srcs/builtin/ft_echo.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:30:59 by kichan #+# #+# */ -/* Updated: 2023/07/21 18:41:23 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 21:40:44 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -52,7 +52,7 @@ void ft_echo(t_data *data) int flag = 0; // int i = 0; int blank = 0; - cmd = join_cmd(data->root->left_child->right_child); + cmd = join_cmd(data->input->root->left_child->right_child); int k = 1; check_echo_flag(cmd, &cnt, &flag); blank = count_args(cmd); diff --git a/srcs/builtin/ft_echo.o b/srcs/builtin/ft_echo.o index f7517530794ddb16bc6cddc2622d08564f01f5ac..c6bf5ff0931ea42d497ed0822a13c8cff1806d24 100644 GIT binary patch delta 248 zcmeys^MhxCgP;d90~ly9L1>SOf%bwvP!33t1t?xHaiKX}kR76sp=9Dqd&vl>$^@uj z15i20#2u3z8O;TEKxHRDWgkrLWVGkJz{~0$)e7vFju~_M4Gf%bwPP!33t1t^{|aiKX}kR76sp*C%(dI557Le3HeS z(O@zot2(2`WKC9ePKSU0!QjPYLsoG|JD_1eox0{g8i+(CpnO3n{~IGj{ymTe$!`GC RK%~1INC1Iu_vDSN#{ueSEPwz2 diff --git a/srcs/builtin/ft_exit.c b/srcs/builtin/ft_exit.c index f18bc51..ed42470 100644 --- a/srcs/builtin/ft_exit.c +++ b/srcs/builtin/ft_exit.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* ft_exit.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichan +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:23:29 by kichan #+# #+# */ -/* Updated: 2023/07/19 21:50:38 by kichan ### ########.fr */ +/* Updated: 2023/07/21 21:40:55 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,7 +31,7 @@ int is_num_str(char *str) void exit_not_num(t_data *data) { printf("exit\n"); - printf("bash: exit: %s: numeric argument required\n", data->root->left_child->right_child->token->str); + printf("bash: exit: %s: numeric argument required\n", data->input->root->left_child->right_child->token->str); exit(255); } @@ -85,7 +85,7 @@ void ft_exit(t_data *data) char **cmd; int count; - cmd = join_cmd_two(data->root->left_child->right_child); + cmd = join_cmd_two(data->input->root->left_child->right_child); count = count_args_two(cmd); status = 0; if (count == 1) diff --git a/srcs/builtin/ft_exit.o b/srcs/builtin/ft_exit.o index c696e83e67c93e5ec3c842557444f699a0a64d75..7683e84a36c27530baadaed95505b8cf71ac583f 100644 GIT binary patch delta 240 zcmZn=Y7m+*fzfQ@M0Y_mW(F__gis7|8(;oo6f0(8U@$z;;rjgrNZ6y>_lHNfr^e); zOlHjd@-Carm{S=UH8#&+kzt&?gH?esYVu9ic*bj!E!on6?1gOQK=wj5@p=WI;hYQ% zx{^Q|Xrd@DkY)t(S%5Svkp2l21j&B_(jfU4K!Od(zXYU#N_2MvX^^@NKpLcOC6ERp m(LNvn1iFntngvLo1{%r^q}hNp*j%6_P(73Go6Q^9{TTuKM=bOJ delta 238 zcmZn=Y7m+*fzfE_s8VFOlItQ z{PHb8{$?}gRL0HoStJ=JZ(&to44ZtDHJ! diff --git a/srcs/builtin/ft_export.c b/srcs/builtin/ft_export.c index bf44036..a89c3c5 100644 --- a/srcs/builtin/ft_export.c +++ b/srcs/builtin/ft_export.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:25:07 by kichan #+# #+# */ -/* Updated: 2023/07/21 15:53:13 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 21:43:26 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -44,15 +44,15 @@ t_list *create_env_node(char *key, char *value) void add_env_back(t_data *head, char *key, char *value) { - if (head->envs == NULL) + if (head->input->envs == NULL) { printf("\nenv dose not exit!\n"); - head->envs = create_env_node(key, value); + head->input->envs = create_env_node(key, value); } else { printf("\nenv exit!\n"); - ft_lstadd_back(&(head->envs), create_env_node(key, value)); + ft_lstadd_back(&(head->input->envs), create_env_node(key, value)); } } @@ -60,7 +60,7 @@ void update_env(t_data *data, char *key, char *value) { t_list *tmp; char *key_equal; - tmp = env_search(data, key); + tmp = env_search(data->input, key); if (!tmp) { add_env_back(data, key, value); @@ -140,7 +140,7 @@ void ft_export(t_data *data) int i; i = 1; - cmd = join_cmd(data->root->left_child->right_child); + cmd = join_cmd(data->input->root->left_child->right_child); arg_count = count_args(cmd); printf("arg_count : %d\n", arg_count); @@ -221,8 +221,8 @@ void print_export_order(t_data *data) t_list *cur; i = 0; - lst_size = ft_lstsize(data->envs); - cur = data->envs; + lst_size = ft_lstsize(data->input->envs); + cur = data->input->envs; order_copy = (char **)ft_calloc(sizeof(char *), lst_size + 1); while (cur) { diff --git a/srcs/builtin/ft_export.o b/srcs/builtin/ft_export.o index 363fa28b919062236e26ba675a36989f2aaf1e2a..3d3a9aa68b3e906ccc5261f60be2bf83a12755cf 100644 GIT binary patch delta 1001 zcmYL{KTK0m6vppuX=&*zudS9pLZ}!`8{-u_C=6mBLzBm#!hmrwhJ=I|!k~jmhnkY0 z!)r0NISEP8rHh-1(1GBBaX}|5ad9xg1QSRw)@YzGh~MqIt#|pI^PO|g`+9r!&b~O8 zH-bYxRzER^&7s10BIx)07h4cc7D|In@uOX1mkYaz?k&~HxUG6H&WUi0M)+W8%WJE* z8&!?6{F*nfGuB&g`ow4We)+1Si}QV&aNY^!jF>r}3NZc202<7v!!K#w899?1jhWU+ zV0YLS7u<}!W;=4YnY&&yQKp)6pnpy(6Q=duoZmA{>ru_L9#&0jV#mxS(Uppk(X#5l zs7D^lMy5v$MzxkB9;2VGD8EUa?kk9IxbN|=wCa8yHyXn($zdDGKk}A63qEtHK;43s ztTtU_S{L~`b$I%;>E>sq^W`DWdj~I4$=Bsk@4QLe*XgaQOw_Z}^5t+|Q9l}0lBREM zo!&8*UD}q7+@LjIf-^ewMZM<1as3o&Th&Djy=mg; z)$p%O9@)w^{n8SdrB=o|7!z4A3?AT}+rS^-DR2jb~wb!T|=s&)C8cxCY9BE1)#82;x_Ww4IA7 zupRjrDEmfjJ$wPgDABF-kkVZsHdxf~*j+3GM+p27Dwuu}d?UXCmJ}C2={y5U=d((m z0;TbB5J$v8EWbF0J8Zl74PvyYfYR6pP+nbDdP(XqBbI2neIwY|gc;1zQL2)qN8%N= Z61SAvSc<MWj$!gc76* zZbPJTuov~vi=GOB9I8+cUYdHT7CaQJVnJyFRSH&&IjH~aPSk<$&HMlNX5Y@fJnG)) zno5LJAF`{wKPzjTUBl|BA02k9Z2zczaQm5p}q-jgTg6_woVS+gkKG zYP#Y2_$2N3UJMe_X(uhy3|%OlaOspT@Kn?JQxm2}f_DzWH1d5n6+()nBF->!TtJSxh|$t@unxn#}AnVQ{$l|)N;*3;%`I>-Cf zJ?>y6K}sX)qKoEv%(v4^+T>Yn$Yw{R!{rCXa>yEO@_XXnF3_fui zA#4~7gJoPGz8!l3?gF2IXgGWy+>ZFN^e;$%So()SKm0B9+yQ<8Mcq6Ii%o)}{u(Iq zPJ +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 22:51:02 by kichan #+# #+# */ -/* Updated: 2023/07/19 23:56:22 by kichan ### ########.fr */ +/* Updated: 2023/07/21 21:42:05 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,14 +15,14 @@ void env_clear(t_data *data) { printf("env clear start!\n"); - t_list *current = data->envs; + t_list *current = data->input->envs; while (current != NULL) { t_list *next = current->next; ft_lstdelone(current); current = next; } - data->envs = NULL; + data->input->envs = NULL; } void ft_unset(t_data *data) @@ -31,7 +31,7 @@ void ft_unset(t_data *data) int arg_cnt; int i; - cmd = join_cmd(data->root->left_child->right_child); + cmd = join_cmd(data->input->root->left_child->right_child); arg_cnt = count_args(cmd) - 1; i = 1; printf("\n=====arg_Cnt : %d\n========", arg_cnt); @@ -45,7 +45,7 @@ void ft_unset(t_data *data) printf("else start!"); while (i < arg_cnt) { - env_remove(data, cmd[i]); + env_remove(data->input, cmd[i]); ++i; } } diff --git a/srcs/builtin/ft_unset.o b/srcs/builtin/ft_unset.o index 72eb6dcfa425ac791df2d44a7c18a0f2b80ba391..8555a50dab5161a132d46c8f76415b9e4ea48959 100644 GIT binary patch delta 432 zcmZ3$y@Gp!gP;Zz0~o;RiGlWlri=(d79cZV;zDz{pbJEfA$H;^19?fqQJUVNE3SEKNL1Xd?Cd05kpfac-&9!eB z_*>;c#`W4xLWp~G*Z$~qeFC=Vr5i-L79rj3`oh}v4S%mXNCs?lg~nuUW@*N=liisU z8FMGEWR_<@@ delta 424 zcmZ3%y?}dygP;Nv0~lyPX@!Y__JX>M2tgJg(_`X7bGV=jM2;bJ;!AtU3aCm4sNe!- z1_mHv*f80V(Ohr`R5k-D`(Sb>qdn&VpphIv5r@ea8PoWsfNC}{ya1{2==S|F*^9|a zZ9>07Gh|4e`)T8sMNAnv6kIvd39^I}#Ca+;KWbB%Jk4ZeN4=4{e zruIjt>l3h%FP(tm9=*1e2GTmT-GX^HlRAE%?nxB83AI~XvhEn diff --git a/srcs/exec/get_input.c b/srcs/exec/get_input.c new file mode 100644 index 0000000..95c24df --- /dev/null +++ b/srcs/exec/get_input.c @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* get_input.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/21 20:37:23 by eunwolee #+# #+# */ +/* Updated: 2023/07/21 21:39:04 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +void get_input(t_data *data) +{ + data->input->line = readline("minishell$ "); + if (!data->input->line) + program_error_exit("bash"); + lexer(data->input); + syntax(data->input); + parser(data->input); +} \ No newline at end of file diff --git a/srcs/exec/get_input.o b/srcs/exec/get_input.o new file mode 100644 index 0000000000000000000000000000000000000000..b09fed7dd8b4c17ef99dbdee3dd5e4a8ce55f261 GIT binary patch literal 1040 zcma)4O^Xvj5Uq)tU3E1hC@6TyVGnc3#f!PD?4prY6c$<0ixy+HO$L%l?CIdFAP7O( z5CpIO1CRa$LGSt}1P^-iuy{~k&2(pzfM7w*t5+Ydo0|Uo>&NdEqTmSO13wC1t>9CK z!!E%0rSK2?=JJuuz&wX0iHn{Xv(>pRR?(ZCOA3bq_=*et|i-``%3juG;?aZ1a z?YIQc9p#zOuhmBIr zBR91`L}D+Rw0@Sw@u%>?$9|F~Sy%UZ>veh*XA8@Kru)CeIzVT3)2PF;hi1^h(_?MS gz_88} +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/21 21:52:27 by eunwolee #+# #+# */ +/* Updated: 2023/07/21 21:59:01 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +void set_pipe(t_data *data) +{ + data->cmd = (t_cmd *)ft_calloc(data->input->pipe_num + 2, sizeof(t_cmd));// herdoc 때문에 하나를 여유롭게생성(ㅇㅗㅐ +2??) + if(!data->cmd) + program_error_exit("bash"); +} \ No newline at end of file diff --git a/srcs/exec/preorder.c b/srcs/exec/preorder.c new file mode 100644 index 0000000..942badd --- /dev/null +++ b/srcs/exec/preorder.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* preorder.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/21 22:00:48 by eunwolee #+# #+# */ +/* Updated: 2023/07/21 22:04:30 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +t_bool preorder(t_data *data, t_leaf *cur_root) +{ + if (cur_root->right_child) + preorder(data, cur_root->right_child); +} \ No newline at end of file diff --git a/srcs/exec/sig.c b/srcs/exec/sig.c index 4981ae3..aaf8f89 100644 --- a/srcs/exec/sig.c +++ b/srcs/exec/sig.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* sig.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichan +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/15 18:40:34 by kichlee #+# #+# */ -/* Updated: 2023/07/17 23:26:37 by kichan ### ########.fr */ +/* Updated: 2023/07/21 20:44:56 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -46,10 +46,8 @@ void handle_sigint(int sig) (void) sig; } -void sig(char *command) +void sig(void) { signal(SIGINT, handle_sigint); signal(SIGQUIT, SIG_IGN); - if(command) - free(command); } \ No newline at end of file diff --git a/srcs/exec/sig.o b/srcs/exec/sig.o index a9a9947bf2a5abbc22ddf577d63faa984b0b6852..4329b6fdc38df453cd976c99aa35d58179714cfe 100644 GIT binary patch delta 282 zcmbQk@q~SXgCGMV0~ly9L1>1Ff%c+7P&P=A1<2N5W?*2QxYSq>CIM4iHSwjrWCT>T z1C(w6$^tbo1Wa~hG#8u!70rOs2PSti+VduWOazK-0MaItuQJLrGEZh?QlBiq#4}lg ziO<3TB**Xqq{pNAh(PS&385aHPd%F726R*XiI z4>FlEdQASwq|WK^9|DXfGct?IdH_`cJ){fL4WbQzG!V#&0tx2Hsm#`sH!!CF0C%i2 AQ~&?~ delta 308 zcmaFDK8It1gP;T>0~ly9L1>AIf%c+V5Hl&Jp(8U)WA?M*^$v)a065{14`eR+{tLq+W;~VDDnVE+f2U7D9^|;nUP6-vH%m$ zWDO=hxd@=#28I_PJs!e2j0z@xMF$K(JeIgt-g+1eir{4Jayh26E2 z^O&p{y(X_@GG{cH{E$hVQ{z7bcuf{$7FSIGsscJr*9S+N<_uTKEd(WL=-~IkR zUnN9Yg+PZ^iRLRu7es??M!P}-9u{7v26oaMn1i7ysF5C-l$MdP)U(1Zjjb&U*m?R$ ziNHvY=C(p)HxZShpPXY->fM$ZOLQ_JWucyA15aC&l*CTmyg9^hQSPin(2Y$`h={DV|OJNRnd5XPTV-V39vfnGJv z(dMRtg|azEwpq#Myku)hmbO+}_6eeX0u&(yh-Hm6~ULW-)Jx)W)z{ z-a)$cd83x|tj{Bo#bJBwI9@30)~83wde-OE(y|*NTXc}cXXvkKaL+Gb-)~&#g|e)- z6U$=;@^34B;|c@=Z7=;b^-euluMsaveGtv3WitW14m)g7qBEe=YB_q5>~)=2;e;E- zlSk?UN+{!V6CC(Itx}2V5n*IfNz)SPM7Lo9#L(%{q)7E*DA9xU*>2;QVX9}2+$b{# zJ;rmmY-CN!Et(&u8v(no+@kSn#f!3w&7v$5C=0Bv@?A&NcJN!#qO*T(MkKcwt#upfy@c77unwUSr{65Cp7}HBmaX%qSdSBr| zZTQ6aE#onGiaW#napn&(4l~{bPjMB@|H2uN-UK}9e`fpvp5h)ef0y}dj4w031W$1% znLoz-0mge6Q~fCJEIch;&pyZ=&gSdj{RnXG6aCd7>{x{HD06!m=dcMfqVvM-`8_X+OE_~~sA9Vej6f^dW0;s5DGIAC!u!QPNUP~f diff --git a/srcs/execute/execve.c b/srcs/execute/execve.c index f980799..fd85c11 100644 --- a/srcs/execute/execve.c +++ b/srcs/execute/execve.c @@ -16,12 +16,12 @@ void do_cmd(t_data *data) void execute(t_data *data) { - heredoc_flag(data->root,data); //heredoc 이 있는 지판별해준다 - data->info->heredoc_file= (char **)ft_calloc(data->info->pipe_num+1,sizeof(char *)); - if (!data->info->heredoc_file) // 파이프 기준으로 <root,data); //heredoc이 있는지 판별해준다 + data->info->heredoc_file = (char **)ft_calloc(data->pipe_num + 1, sizeof(char *)); + if (!data->info->heredoc_file) // 파이프 기준으로 <info->pipe_num && !data->info->heredoc_flag)//단일 커맨들일때 히어독도 x - if(check_bulitin(data)) // bulitin 일때는 바로 실행하고 종료 아닌경우에는 sigle command frok 해야함 + if (!data->pipe_num && !data->info->heredoc_flag)//단일 커맨들일때 히어독도 x + if(check_bulitin(data) == TRUE) // bulitin 일때는 바로 실행하고 종료 아닌경우에는 sigle command frok 해야함 return; if(data->info->heredoc_flag) // heredoc 일 경우에는 무조건 fork 를 해줘야함 { // 시그널 함수 때문인거같음 ctrl +d 눌렀을때 종료가되면안되는데 포크안햇을시 종료가됨 @@ -58,10 +58,10 @@ void execute_cmd(t_data *data,int flag) // flag 는 자식이랑 부모 차이 t_pipe *base = data->pipe; t_leaf *head = data->root; - while (i < data->info->pipe_num+1) + while (i < data->pipe_num+1) { signal(SIGQUIT, SIG_DFL); - if (i < data->info->pipe_num) + if (i < data->pipe_num) { if (pipe(base->com[i].fd) < 0) exit(1); @@ -77,7 +77,7 @@ void execute_cmd(t_data *data,int flag) // flag 는 자식이랑 부모 차이 if (base->com[i].pid == 0) { data->info->parent =1; - if(data->info->pipe_num != 0) + if(data->pipe_num != 0) link_pipe(i, base,data); do_cmd(data); } diff --git a/srcs/execute/execve.o b/srcs/execute/execve.o deleted file mode 100644 index e2e6b60525fdabefd33d6ed6c1e141f7669fc1d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2780 zcma)8-)kII6uz6L=~mnB`g@g17wkh{rlk6^rL=Bh7e+B9mIU%rZYQ&|yF)g+%gk&$ z6#{`tq{9#>S|7v*>mMK#L=YcRwZ+({Rz;`}LJaZw5q2DMdW(BdE4mZ7Z zaFg{at_8k1N$g$Ap1N8&nAx`gHDj55Y?JtgRll^hNem$$Id=Ghv31oS$#p3bw+vcY z8SU5_EDa6Ilqh zcg~wcElw6xe^j1TEQp#c?xHI$9UVoBM4?gH3Z9!o*avA>6cU<2Xy`MGGtkNWF{oED zd#x9?u+B!-haSaTYG1jEQN8liPk#HsN@=a@2&&xOxN?5!Hf5V?6uemo-pP62rViiC zES*5o4}I-_cZI&g@P+}36Nr2qc`KJ$IwGP56;pNWnb*Udq`p_T(|4fyE3zysv(#J0 z@WL`{WANXp>XY#QQTYGhrw~rR+B=N;(u?WMJwW3oC_mpS8n1xtzbgu#+*KkBUJ`gJ+>KT`$v@Ec1|FqQnw#ELqd_^w{yFP!qCyms*Ct1qPrn0+s zq%Xi~KXlZRQ-5!SL&nG0$e!$b18?k(o`14Cj(Jns$v8K)tHZALkKmK>ZfbWCcEkS) zI~jMM-6J&V^NcA!0iOe21L9Ac@-a0p@O>a2QRNsAZ@2Ogc|fx%zXM6W1$-L#DUkdN zK$t2o0e1uMBL{fc6ncs9zAIk=$@C%+kFIhKhz?RFfW$WfM1Ly#rMwM@+$#4F489HJ z7a-nT#Rpt)rMBb@vfos zO4FKQ+%_EE(wrLO+O#cKH3R21VNutr!uX6KurLB`>vEIpv*p-M S2o*%B)$2{2h39ce&DeiOi6>hC diff --git a/srcs/execute/freepipe.o b/srcs/execute/freepipe.o deleted file mode 100644 index a0a60bc72b57981c4c3854fa078c09353c763bac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1144 zcmb7DOKTHR6h0GU8?-e+q*SOFL{S&rxR8JdsWxy621FWgQ!Zhgn87}xnc!Fm2(d!A z2rm5z{)FyaRH&|uu3WlMNWnr7aUnzNcjlh4DW!r3&i&5wJLk^h!|&~#Q6lFE;ee*0 z>ultqkkilt`-ezRa-RhgADqO>yewJ=UKm*0`tzl`^Lu_`T^QoyU0#ELd9c`1hD5Y> zSC$%8H_)x+$Nus?t#8dHImS!EQ%r*3;a$GqNZFWxb+q>Cy7s8Lx^iaa;BnjX+s=D8~orKME}3k_908={9s&xR#ao{$Hu6?l;x>p6|9J z)ol$_x6(JINSSh9nYqHXnaS+hMQ|!p8Yn}i9CfxF<$hHDr!fvYJrkz;JansxqtlKk zyLOH@)UA?vs=I#0$N+iiBxLag#FRT({})6URLl6##I9}vp~PNe?|+rvKp ri||v}!HV`mKOlWSM%@gmL90pHU0i8;0=nTh*sgo-16}hM<3H>VekZhG diff --git a/srcs/execute/heredoc.o b/srcs/execute/heredoc.o deleted file mode 100644 index 83c0c025bad478b3bef08366d382f129e02ac7b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1284 zcmb7CO=}ZT6nzuhG}hKcs1l(_7A`6pP;n8FLTU{>!J?D~Tquu_Oq!wQ!(>8(SfWf7 z%-&J1{Q?CnG05G9gU8X1cMPFC=a+baOA7?ct-{Z3r8s<`8>C z;F%EVidi-ai>e?*KcC0rNnfHL*kej=rvkoWzLZLvqFPus3K=18TgZgr6DX#d|6`xAk5yo;}On4CF_DX=s0&yBfA$VQ#xSXI*B&Czl-B1i0d{t@tEK<+5|!N^6rU>hNKNOvaq-LX%5p z3t~K7F?rt=^NAZDTruxujIUK~MKJCVB<XWj#|&Gm-Dc><hHs}IT^_K=4OsYLi5g3X++{?5JkYtz_*7f#N< z-#Pc3b8l{P^RGYd_c7+%!|(y}g91JH2!pU51uc+cmo>asIi98%EKf&HMnw5&abC2_ zMI|f!v~lM2mhMTPQz2NCk76g0t?>I8V+L3+e1RZQy)+J}=KB+P|vn^x}27 zo{IXCxlBHhEb>xzHl0mzJ{sF}La6Gxu4rQe`N$LwFs4&)OUb!4$tMbljHLp)>pQCl zQ`h+xdR0EHvIo$*ClfygIs}qO5$tEZAX>C3*-g~(Ao!VmjC~1?cs35|TvR8~{!Zin zl;fuO&9s~2rl_<Si=<2L+0Yi3TC2g!l;{erOtvE=?H+WOS@BP zNxt@lvbIg9R5u-fMdg+$YNjZysswwfRm9x_V$~GiNvqx7HQ`$Xmpjfs0}&f}sYT_6 z%3ReY+<>R*r6l0ui!}^#nRZm0qg+!MUrS}}@W#f5Y5y?(_V*Ld1)rD)h%q@2HH(_z zlBH%eDc-KQdxDEsm4srShvXQorEgLY*6-TYA#C1uDsEJ?qjuF76NYQo21b)NUtaJJ z5_0{nh_@h2jWzq1DM}a(u`1$s;K8IZSaE#`Q(M0;lU3R=$8Zg?617*5ZOld1fwAN& z(jAOV8O?sjxU&>pCsa!qw_~EZ1o1X3*k&r;>=*Io+N)@>v%SmuyhAwCuh5p7iZI%n z&9+b&nr)%Q6OeFFZImHaPy}iaKgx)sf0A8_!e}WpE~rGS*)G#;9ixr;hB^z-`-kbi z;ZC>`vw5fHvoZ;8jWZm!%l^LL#n+Stz~SSd04^ouk>h4^pXr>qe$9t3*z#v+<*I5% z7)?NsUK8I>_ zo-z1PhTJC(`4mce$Q1sc(GpdQ?Ir0x4s7)SPZ?BF1C$d$b54Lp47-d*0fxJFNfn3* zz7%Ht>_{<_KQd_*ES}0GhlYlb(p$ZBNA)w}*@%afo&BPWTH8Xn+H!sue_p?SAMfH1 z>G$)KUHlL0t$gpCV!m?77uw$!xQsmy!~Pg(?jBmi()BYI9SmLSd1U~nDi`5mpvk`# zPWQ1RZW_4oKMJS&*%9|4aAl3teeH<*7C2YqbbtTBy{r0~J zbm{3XopCFBo)>dGQ79xXFn*3(<#dtH6cfeL4C9Gp(wYIEEu@PUtOdp=$XiI2@}8JY zW+3PCR@SpjlbD&}*;0n#f68<^JEc=Fo}A9jSd15}L<)9Dz)hqPL4QH;PsGA!D#z(n Kz@s4Dp8PNKz%~v5 diff --git a/srcs/execute/pipe.c b/srcs/execute/pipe.c index 6a8f1cc..f205fc4 100644 --- a/srcs/execute/pipe.c +++ b/srcs/execute/pipe.c @@ -1,8 +1,15 @@ #include "../../incs/minishell.h" +void set_pipe(t_data *data) +{ + data->pipe->com = (t_pid *)ft_calloc(data->pipe_num + 2, sizeof(t_pid));// 하나를 여유롭게 생성하는이유는 herdoc 때문에 하나를 여유롭게생성 + if(!data->pipe->com) + program_error_exit("bash"); +} + void link_pipe(int i, t_pipe *base,t_data *data) { - if (i == data->info->pipe_num) + if (i == data->pipe_num) { if (dup2(base->com[i-1].fd[0], STDIN_FILENO) == -1 || \ close(base->com[i-1].fd[0]) == -1) @@ -33,7 +40,7 @@ void wait_child_processes(t_data *data) int status; i = 0; - while (i < data->info->pipe_num) + while (i < data->pipe_num) { waitpid(-1, &status, 0); i++; diff --git a/srcs/execute/pipe.o b/srcs/execute/pipe.o deleted file mode 100644 index fc05c86df26b40338512b52697bc5b825be94131..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1644 zcmcIkO=uHQ5Pn-@TeO-zG|+-*pdtmyp`OGdwA$bk8?e%X2g@^Tw#{OjESn7tVxhRL zHY|l6J$m#mUOXt$f_kZ1@7}}&6mkesBsPAt`!+w7+Fl%(H}lPWGjI02ynOieW4DVj zbd$NfGZ@8r&)v8CK zlnk*YGJy!8^W;+TtLNl{1o)=Z%gS0pFBmoxvz`?> vJ89>0Oe`b~TWD!xE=6oj&*gMPwYh9gXJXFC+!NlNdpy%fF_Frf_yhX`d&4#M diff --git a/srcs/execute/pipeutils.c b/srcs/execute/pipeutils.c index 326aaf0..583434e 100644 --- a/srcs/execute/pipeutils.c +++ b/srcs/execute/pipeutils.c @@ -1,20 +1,5 @@ #include "../../incs/minishell.h" -void count_pipe(t_data*data) -{ - t_leaf *temp = data->root; - while(temp) - { - data->info->pipe_num++; - temp= temp->right_child; - } - if(data->info->pipe_num!=0) - data->info->pipe_num--; // 파이프가 1나일때 2개가됨 - data->pipe->com = (t_pid *)ft_calloc(data->info->pipe_num+2,sizeof(t_pid));// 하나를 여유롭게 생성하는이유는 herdoc 때문에 하나를 여유롭게생성 - if(!data->pipe->com) - program_error_exit("bash"); -} - void heredoc_flag(t_leaf *leaf,t_data *data) { if (!leaf) @@ -43,33 +28,33 @@ void recover_std(t_data *data) -char **join_cmd(t_leaf * com_leaf) -{ - int cnt =1; +// char **join_cmd(t_leaf * com_leaf) +// { +// int cnt =1; - t_leaf *temp = com_leaf; - t_leaf *leaf = com_leaf; +// t_leaf *temp = com_leaf; +// t_leaf *leaf = com_leaf; - while(temp && temp->right_child) - { - temp= temp->right_child; - cnt++; - } - char **str = (char **)ft_calloc(cnt + 1, sizeof(char *)); - if(!str) - return NULL; - int i=1; - str[0]= leaf->token->str; - while(leaf) - { - if (leaf->right_child) - { - str[i] = leaf->right_child->token->str; - leaf = leaf->right_child; - i++; - } - else - break; - } - return str; -} +// while(temp && temp->right_child) +// { +// temp= temp->right_child; +// cnt++; +// } +// char **str = (char **)ft_calloc(cnt + 1, sizeof(char *)); +// if(!str) +// return NULL; +// int i=1; +// str[0]= leaf->token->str; +// while(leaf) +// { +// if (leaf->right_child) +// { +// str[i] = leaf->right_child->token->str; +// leaf = leaf->right_child; +// i++; +// } +// else +// break; +// } +// return str; +// } diff --git a/srcs/execute/pipeutils.o b/srcs/execute/pipeutils.o deleted file mode 100644 index 6130526dcddf406c99d0e536f1396f785c27e527..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1976 zcmZ`)U1%It6uz^rNz~SvLJO$~T}8x~Na};EP+`RmTz?iNG|&gj?RGNBu55Oe+1WZ4 zi-p-p#-Sjn;G-Z)pM5b;VM~j7NWh3M`=7|7%fjF=%M^8b{+d`?p4Ff`GQ|f|! z@j{k8h`)0m>POs*Q_w@(d2xe6W=c7&z^^q{xG>o->+>k@pUxJX^J}tp(C2uo&59GK zcH@IuV@avE&)?s~V#I_STr8j;&Fm}a<1-#;sgzq)%YJ3m)r3iXA(3GlI*6~iAE)98 zA*$J$;!E&ZczPA)<6;U4T z$w}w0&0~PwBV96C#MZ*RjC0&*UPeV>t`S1seDzJtLIb0_)}=ekFPdjM#1rP3k~pA0 zZj;ZLv?jf#fk7Ms_7em?;>-M(U;RElu>A9P4~2t`1npIM(}6+!w%g8OOR0;oia@ zBQ(ryKx-cHTSQEI?k4BgIKPEn_$ubUK?LR0$B4wcj0nh7iDQ8yLRx?Fht)x-4 zf=bYC2~~A{cgb_qa=o%5lvDRwE`rx?1gcqUV(q(*ch&VlSQ6@euhvk`Dpt#Zaw_$@ M=LogbZjyBIKMAUx+5i9m diff --git a/srcs/execute/redirection.o b/srcs/execute/redirection.o deleted file mode 100644 index a9d396120a1a8a6838584a8d2c9bbd4b305d7a11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1648 zcmb7E&ubG=5Pqp?y8fseMWKS!96abD(t419A`u&0!GcH?J(Sn7+1g;6gmxE~LZFaF z40|c~4|ou~iQYt{9x5tc^ytBZ7a@@dJrxmb`^~<2W|P>1LnhywdEd-_Z(cT^e*fGW z5F)lm;0qpyzobP94m$?VP`rzcP$BFKb99WJf}FR7l&<5u#8f8bMDF&4j@o#!PpzpR zX)*eR7^GBOEE8yx(k{)Hr)^hy#ruU~Udn4@dXF&6eWo}$gl43rjDD<%8HymKGb?8n zrso|Ucj|l0>{agPb3YEnej#S{n(!=q2p*2b+$R!nGHOHlhtOdFjf5&hy|@mK8tEhl z^}p?=RsU{PTO(Gz^2@4w8}D;1>R|;rgt>1(cs5n_;{#^xJa$Gmk=sBn12?Q-9P6u@ z;868P%(6dP!G#acMT1(5Zq{?HpwbG1CS75qS-)93uA9*V&?uX-0^i_bls2ge>aD=r z;D)*zu%7!GCavn*k;(O$GvJw(|WINL?jp35IOTp_n1+=fxWryl}4zkMnQ~Ewa{c1i2E~H^qD-B_;RMg`eG&bB# zzqxX_GlSbwnF=^Oz~;G5PNJs@GohEr3Zhj=(BbJ>Ns`d?x3{-3_tfM%Z7F-FAp9BY z9N}jU-YD$ZU**iRUG|S~eQfE5i22D_^1y&WH8g+v1!ez042+*I#HEAD2Yr_ZaTB2t zZw%gG9_#ogZw|cWE!B_p^zer9>%b@7fChZhHGIW^OF+DT>3JaD#q=E@{@2pOjIYs~ zcrSp&dkQ4pBOvi?&fnrV3q)xm#Rv%FQ$Q0NdTvKKrhPJOh5LH$^xjcU+c*}{c&aPT zsJIVWL%X74jsP-Wk|obAd#+q?@`VM*cEenu*qO3t9s6E{a#uQj!Ig{dwCgPjSt>h4 WA?>-+q5}xIGle;<^In<$6L$c`r9oN% diff --git a/srcs/execute/setpath.o b/srcs/execute/setpath.o deleted file mode 100644 index 1b99702780ab1d65dabf98aea8d7527be4e66eba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2528 zcmb7FO=x3P6uzmolhK(bh=mA)4eG+p>lE>)N(UP3lPfq{5D>1xoeC3*tmrzsGq7{+w>WB0pz!C6jbK zwU)lNl%7}WwduAJn{PR%AvknTNTuAATF53>T;tH6-wZeAfaB$dOgv`A z!$PEjJ>fH0F)V!*k%z<(77-mva)~^s)`_!1do z?{Qfww4`riO^wTvT`Sv7iX#0&t7bNrTe6gh8Jm185Y|{&lf`^YM6Oc~x2YIyP&cl2 z4Pj%_x!jb+$$b&ocpY*?>WKZpeVlrL;|}E3a|5WTbAbOUT(2}`Y4A7FYsIv0HxtDl zLenL?S>HK2I+Deo;#c<;w!7+S$g-`C%XXFXXvpFOk~~kxm+clw>o@2@J0#RVj#bW) z#-uIspWT;RmzL4(UFx(BTWldzw8u(UQSU=cI%}e7^*k@ zH+76fMmL}mg6qMZ6dJO$hK?agb4L|)qZYKOf_n%<3E>n_tW%x6m(kHqaQ>mlb-oF9 zGm79QZnf`Gm#Vww{!t?rp^x4W zp?owHJ$EL&jVMn+egSLyZ`2Cn{DnviM{f+gd>)@kO=L%J-o&A?<2p{XTZY{M+i^W7 z+Ikj&c$+K<)@f-Pu`7fE@ zV!p`yn?Sf)2_VIL0!ZSN}EImv>LKp)U%z@s># z6c*`&xf=uDWv=(#JpI>o^HfJSKhnqBef-;fJpEU8`_mf;eqaztMEBgS7s^e4puAO; z%x04xg3B*?LM?bImszIWqL!$fm-Nfr(Pi2x`io7$%-pkIfwYO +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:52 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 17:55:31 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 21:16:09 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" void init(t_data **data, char **envp); -void env_init(t_data *data, char **envp); +void init_env(t_input *input, char **envp); -//필요하신 초기화 내용 여기 넣어주시면 됩니당 void init(t_data **data, char **envp) { - t_pipe *pipe; - t_info *info; - *data = (t_data *)ft_calloc(1, sizeof(t_data)); if (!*data) program_error_exit("bash"); - pipe_init(&pipe); - info_init(&info); - (*data)->pipe= pipe; - (*data)->info= info; - env_init(*data, envp); + (*data)->input = (t_input *)ft_calloc(1, sizeof(t_input)); + (*data)->pipe = (t_pipe *)ft_calloc(1, sizeof(t_pipe)); + if (!(*data)->input || !(*data)->pipe) + program_error_exit("bash"); + (*data)->oristdin = dup(STDIN_FILENO); + (*data)->oristdout = dup(STDOUT_FILENO); + init_env((*data)->input, envp); } -void env_init(t_data *data, char **envp) +void init_env(t_input *input, char **envp) { int i; t_list *new; @@ -45,31 +43,6 @@ void env_init(t_data *data, char **envp) new->env = ft_strdup(envp[i]); if (!new->env) program_error_exit("bash"); - ft_lstadd_back(&data->envs, new); + ft_lstadd_back(&input->envs, new); } } - -void pipe_init(t_pipe **pipe) -{ - *pipe = (t_pipe *)malloc(sizeof(t_pipe)); - if (!*pipe) - program_error_exit("bash"); - (*pipe)->cmd_path = NULL; - (*pipe)->command = NULL; - (*pipe)->cmd_abs = NULL; - -} - -void info_init(t_info **info) -{ - *info = (t_info *)malloc(sizeof(t_info)); - if (!*info) - program_error_exit("bash"); - (*info)->index = 0; - (*info)->heredoc_flag = 0; - (*info)->heredoc_file = NULL; - (*info)->oristdin = dup(STDIN_FILENO); - (*info)->oristdout = dup(STDOUT_FILENO); - (*info)->pipe_num = 0; - (*info)->parent =0; -} diff --git a/srcs/init/init.o b/srcs/init/init.o index 0f804970d6ab82cb09a8f0091e26515cdf5f33c8..bd7c4287b701bdeb7f689f740882fa55dc1029dd 100644 GIT binary patch literal 1540 zcmb7E&ubGw6n?4wk!m#&tVAp{phyrR>P3b6qiA4IOGPS(ScdIp+XmAlY&LBa3c^-# zSp;wDMZAcAgBOdm(B9OO*LV;VBIFo)X#C#pY_g5^;DecO-uvGB=FMcXpSON*4-iH6 z5GIUXjA#$0BnIpV#xo{%F~Pa8l)}J=Ch=fBHYqKmYWZv5pUT{w>iEIxrP_=2xVD7p zAd|iHm?1DJ^|EE=3UewTxv3)LXRbz=uc_wkd)Gxm$Rm}VE6^y{neD-ywZz8C*0ybqJZ);&SFkrcxAD@)Q`c& zn{qsggAM{;0rNoA(=Cj!aV`)3UH;eZ2v7>MH-%Gata2kCPhBEO@=j4$Sru&XJGt?(o8NpSAMw=>6?ekY2e@l9a(k3tpTma%t4o?E1mA<6n7gYQh z5KlV&4cb_yKLC-Rey8vakab@B{;&bW|0sP!;h5sjDgLO6CxOuO+GjioKZZqM{C?RF z?(I7K5KXenpX~BEH=KXD%jbU%_#WJaXNP@Xc>p+TPczBCSOg?KwF`SHuj1VVP`1^rhU|8)Tkbr5SE#@oU!9i1@BGOeLcFX>QFt( zec#2{08MtXMFMR?gtJyAo}5tuA)4#yI!KrHObb!IT1I)KFPxf9hr*V~CFkSGh!EE& zYLgf|R0)eJxPp50=&|nFGd7hJ!i@wN*OtV(rQY=DEdJ( zc@&<*tQ(Dt%20d-I{JVdo4y1@KD&k1XtV{?+>OD19N*!^Z@f_P@!~?27jwItBxJ*n zZigyxdlF$6w}Vw)7-OF2Qp@VqA?R}ms|!1NP*y3y9hqkL@?zjTQpFF3#dc34((}#end9aL^P^%ZMa+~pz-%VAVRmk-=yR@Z@7q-1v(=$Br zzw4dW>s{DaOO&XfUa#b*W6+)!Q-1=xw;1rs9d3^Gs|_jz9DTIuc5f*#B&$iaE&EeD zuTrqG4}+Rrd$Lma;3`g5c=!u1jDKdHr4$M{OBHbng@tnc1n<|Tkjlfzvd2GaS!JBu zAZj8fKUmK>(~wi;U9`72NRUf1@%tPpkq0^*%EmBTw`FH2U-NpDu{Gs9YBTSA7>vDb zGrz7XzG*Yxuj;#=+-9!4*X8Z&ajzlg6ykDwf7ABu?<;+b1&(=_JFXqYXD5w#cuiPL z@s!R3c?s~=6;J6skoN+-u{~#9rTZ@)#|H)t#wZZqykP+G8}OiW!{5U*Q2Zy5;$MNd zB8)r`FQE}pco9gv5g_r7198I`ThKu94Isr|11bI#2s3V=1Jwuuaeo=(K;mBp68|I+ zSDWz=2wt~ep-&+|#>w}9pwH=?^7Xl1(LRvu5*qRKdqJ-$+?vg|_@c!pZX^F@i|=>* z4(yRM`a&A{biXzFOhhe_$XZEro{4lOHG`{Pn3+r}Bg}l{Q(A%T)O}O diff --git a/srcs/lexer/expand.c b/srcs/lexer/expand.c index 7e85896..cac1643 100644 --- a/srcs/lexer/expand.c +++ b/srcs/lexer/expand.c @@ -6,53 +6,53 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:20:49 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 17:56:05 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 20:55:49 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -t_bool expand(t_data *data, t_token *token, int *i, t_bool quote); -static t_bool check_heredoc(t_data *data, t_token *token, int *i); -static t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote); -static t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote); -static void replace(t_data *data, t_token *token, char *name); +t_bool expand(t_input *input, t_token *token, int *i, t_bool quote); +static t_bool check_heredoc(t_input *input, t_token *token, int *i); +static t_bool check_blank(t_input *input, t_token *token, int *i, t_bool quote); +static t_bool check_other(t_input *input, t_token *token, int *i, t_bool quote); +static void replace(t_input *input, t_token *token, char *name); //환경변수 뒤에 숫자 알파벳 외에는 환경변수 치환해야함 -t_bool expand(t_data *data, t_token *token, int *i, t_bool quote) +t_bool expand(t_input *input, t_token *token, int *i, t_bool quote) { char *name; *i += 1; name = NULL; - if (check_heredoc(data, token, i) == TRUE) + if (check_heredoc(input, token, i) == TRUE) return (TRUE); - if (check_blank(data, token, i, quote) == TRUE) + if (check_blank(input, token, i, quote) == TRUE) return (TRUE); - if (check_other(data, token, i, quote) == TRUE) + if (check_other(input, token, i, quote) == TRUE) return (TRUE); - while (data->input[*i] != '\'' && data->input[*i] != '\"' \ - && data->input[*i] != ' ' && data->input[*i] != '\t' \ - && data->input[*i] != '\0' && ft_isalnum(data->input[*i])) + while (input->line[*i] != '\'' && input->line[*i] != '\"' \ + && input->line[*i] != ' ' && input->line[*i] != '\t' \ + && input->line[*i] != '\0' && ft_isalnum(input->line[*i])) { - name = ft_strncat(name, &data->input[*i], 1); + name = ft_strncat(name, &input->line[*i], 1); if (!name) program_error_exit("bash"); *i += 1; } - replace(data, token, name); + replace(input, token, name); if (quote == FALSE) *i -= 1; - else if (quote == TRUE && data->input[*i] == '\"') + else if (quote == TRUE && input->line[*i] == '\"') return (TRUE); return (FALSE); } -static t_bool check_heredoc(t_data *data, t_token *token, int *i) +static t_bool check_heredoc(t_input *input, t_token *token, int *i) { t_list *tmp; - tmp = ft_lstlast(data->tokens); + tmp = ft_lstlast(input->tokens); if (tmp && tmp->token->redirect_type == T_HEREDOC) { token->str = ft_strncat(token->str, "$", 1); @@ -64,9 +64,9 @@ static t_bool check_heredoc(t_data *data, t_token *token, int *i) return (FALSE); } -static t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote) +static t_bool check_blank(t_input *input, t_token *token, int *i, t_bool quote) { - if (quote == FALSE && (data->input[*i] == ' ' || data->input[*i] == '\t')) + if (quote == FALSE && (input->line[*i] == ' ' || input->line[*i] == '\t')) { token->str = ft_strncat(token->str, "$", 1); if (!token->str) @@ -76,7 +76,7 @@ static t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote) *i -= 1; return (TRUE); } - token->str = ft_strncat(token->str, &data->input[*i], 1); + token->str = ft_strncat(token->str, &input->line[*i], 1); if (!token->str) program_error_exit("bash"); if (quote == TRUE) @@ -85,9 +85,9 @@ static t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote) return (FALSE); } -static t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote) +static t_bool check_other(t_input *input, t_token *token, int *i, t_bool quote) { - if (data->input[*i] == '\"') + if (input->line[*i] == '\"') { if (quote == TRUE) { @@ -97,18 +97,18 @@ static t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote) } else { - if (data->input[*i + 1] == '\0') + if (input->line[*i + 1] == '\0') return (FALSE); *i -= 1; } return (TRUE); } - else if (data->input[*i] == '\'') + else if (input->line[*i] == '\'') { *i -= 1 ; return (TRUE); } - else if (data->input[*i] == '\0') + else if (input->line[*i] == '\0') { token->str = ft_strncat(token->str, "$", 1); if (!token->str) @@ -118,12 +118,12 @@ static t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote) return (FALSE); } -static void replace(t_data *data, t_token *token, char *name) +static void replace(t_input *input, t_token *token, char *name) { int j; t_list *tmp; - tmp = env_search(data, name); + tmp = env_search(input, name); if (!tmp) { token->str = ft_strdup("$"); diff --git a/srcs/lexer/lexer.c b/srcs/lexer/lexer.c index a71ca98..7c0d5d3 100644 --- a/srcs/lexer/lexer.c +++ b/srcs/lexer/lexer.c @@ -6,16 +6,16 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 16:24:37 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 15:56:51 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 20:55:32 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -void lexer(t_data *data); -static void check_char(t_data *data, t_token **token, int *i); +void lexer(t_input *input); +static void check_char(t_input *input, t_token **token, int *i); -void lexer(t_data *data) +void lexer(t_input *input) { int i; t_token *token; @@ -24,35 +24,35 @@ void lexer(t_data *data) if (!token) program_error_exit("bash"); i = -1; - while (data->input[++i]) - check_char(data, &token, &i); + while (input->line[++i]) + check_char(input, &token, &i); if (token->str && *(token->str)) - token_add_list(&data->tokens, &token, FALSE); + token_add_list(&input->tokens, &token, FALSE); } -static void check_char(t_data *data, t_token **token, int *i) +static void check_char(t_input *input, t_token **token, int *i) { - if (data->input[*i] == '|' \ - || data->input[*i] == '<' || data->input[*i] == '>') + if (input->line[*i] == '|' \ + || input->line[*i] == '<' || input->line[*i] == '>') { if (*(*token)->str) - token_add_list(&data->tokens, token, TRUE); - tokenizer(data, token, i); + token_add_list(&input->tokens, token, TRUE); + tokenizer(input, token, i); } - else if (data->input[*i] == '\'' || data->input[*i] == '\"') + else if (input->line[*i] == '\'' || input->line[*i] == '\"') { - tokenizer(data, token, i); + tokenizer(input, token, i); } - else if (data->input[*i] == ' ' || data->input[*i] == '\t') + else if (input->line[*i] == ' ' || input->line[*i] == '\t') { if (*(*token)->str) - token_add_list(&data->tokens, token, TRUE); + token_add_list(&input->tokens, token, TRUE); } - else if (data->input[*i] == '$') - expand(data, *token, i, FALSE); + else if (input->line[*i] == '$') + expand(input, *token, i, FALSE); else { - (*token)->str = ft_strncat((*token)->str, &data->input[*i], 1); + (*token)->str = ft_strncat((*token)->str, &input->line[*i], 1); if (!(*token)->str) program_error_exit("bash"); } diff --git a/srcs/lexer/quote.c b/srcs/lexer/quote.c index cce7479..1e9f900 100644 --- a/srcs/lexer/quote.c +++ b/srcs/lexer/quote.c @@ -6,69 +6,69 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 07:46:30 by eunwolee #+# #+# */ -/* Updated: 2023/07/16 20:16:29 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 20:55:14 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -void single_quote(char *input, t_token *token, int *i); -void double_quote(char *input, t_token *token, int *i, t_data *data); -static t_bool find_next_quote(char *input, t_token *token, int i, char quote); -static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next_quote); -static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next_quote); +void single_quote(char *line, t_token *token, int *i); +void double_quote(char *line, t_token *token, int *i, t_input *input); +static t_bool find_next_quote(char *line, t_token *token, int i, char quote); +static t_bool s_check_char(char *line, t_token *token, int *i, t_bool next_quote); +static t_bool d_check_char(char *line, t_token *token, int *i, t_bool next_quote); -void single_quote(char *input, t_token *token, int *i) +void single_quote(char *line, t_token *token, int *i) { t_bool next_quote; *i += 1; - next_quote = find_next_quote(input, token, *i, '\''); - while (input[*i] != '\'' && input[*i] != '\0') + next_quote = find_next_quote(line, token, *i, '\''); + while (line[*i] != '\'' && line[*i] != '\0') { - if (s_check_char(input, token, i, next_quote) == TRUE) + if (s_check_char(line, token, i, next_quote) == TRUE) return ; *i += 1; } - if (input[*i] == '\0') + if (line[*i] == '\0') *i -= 1; } -void double_quote(char *input, t_token *token, int *i, t_data *data) +void double_quote(char *line, t_token *token, int *i, t_input *input) { t_bool next_quote; *i += 1; - next_quote = find_next_quote(input, token, *i, '\"'); - while (input[*i] != '\"' && input[*i] != '\0') + next_quote = find_next_quote(line, token, *i, '\"'); + while (line[*i] != '\"' && line[*i] != '\0') { - if (input[*i] == '$') + if (line[*i] == '$') { - if (input[*i + 1] != '\'' && next_quote == TRUE) - if (expand(data, token, i, TRUE) == TRUE) + if (line[*i + 1] != '\'' && next_quote == TRUE) + if (expand(input, token, i, TRUE) == TRUE) return ; } - if (d_check_char(input, token, i, next_quote) == TRUE) + if (d_check_char(line, token, i, next_quote) == TRUE) return ; *i += 1; } - if (input[*i] == '\0') + if (line[*i] == '\0') *i -= 1; } -static t_bool find_next_quote(char *input, t_token *token, int i, char quote) +static t_bool find_next_quote(char *line, t_token *token, int i, char quote) { if (quote == '\"') - while (input[i] != quote && input[i] != '\0') + while (line[i] != quote && line[i] != '\0') { - if (input[i] == '\\' && input[i + 1] == quote) + if (line[i] == '\\' && line[i + 1] == quote) i++; i++; } else - while (input[i] != quote && input[i] != '\0') + while (line[i] != quote && line[i] != '\0') i++; - if (input[i] == '\0') + if (line[i] == '\0') { token->str = ft_strncat(token->str, "e, 1); if (!token->str) @@ -78,36 +78,36 @@ static t_bool find_next_quote(char *input, t_token *token, int i, char quote) return (TRUE); } -static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next_quote) +static t_bool s_check_char(char *line, t_token *token, int *i, t_bool next_quote) { if (next_quote == FALSE \ - && (input[*i] != ' ' || input[*i] != '\t')) + && (line[*i] != ' ' || line[*i] != '\t')) { *i -= 1; return (TRUE); } else - token->str = ft_strncat(token->str, &input[*i], 1); + token->str = ft_strncat(token->str, &line[*i], 1); if (!token->str) program_error_exit("bash"); return (FALSE); } -static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next_quote) +static t_bool d_check_char(char *line, t_token *token, int *i, t_bool next_quote) { if (next_quote == FALSE \ - && (input[*i] != ' ' || input[*i] != '\t')) + && (line[*i] != ' ' || line[*i] != '\t')) { *i -= 1; return (TRUE); } - if (input[*i] == '\\' && input[*i + 1] == '\"') + if (line[*i] == '\\' && line[*i + 1] == '\"') { token->str = ft_strncat(token->str, "\\\"", 2); *i += 1; } else - token->str = ft_strncat(token->str, &input[*i], 1); + token->str = ft_strncat(token->str, &line[*i], 1); if (!token->str) program_error_exit("bash"); return (FALSE); diff --git a/srcs/lexer/tokenizer.c b/srcs/lexer/tokenizer.c index 5433ee4..5484f5c 100644 --- a/srcs/lexer/tokenizer.c +++ b/srcs/lexer/tokenizer.c @@ -6,32 +6,36 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:26:13 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 09:06:12 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 20:54:53 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -void tokenizer(t_data *data, t_token **token, int *i); +void tokenizer(t_input *input, t_token **token, int *i); t_token *token_create(void); -void token_redirect(t_data *data, t_token *token, int *i); +void token_redirect(t_input *input, t_token *token, int *i); void token_add_list(t_list **head, t_token **token, t_bool token_flag); -void tokenizer(t_data *data, t_token **token, int *i) +void tokenizer(t_input *input, t_token **token, int *i) { - if (data->input[*i] == '|') + if (input->line[*i] == '|') + { (*token)->type = T_PIPE; - else if (data->input[*i] == '\"') - double_quote(data->input, *token, i, data); - else if (data->input[*i] == '\'') - single_quote(data->input, *token, i); - else if (data->input[*i] == '<' || data->input[*i] == '>') - token_redirect(data, *token, i); - if ((data->input[*i] == '\'' || data->input[*i] == '\"') \ - && (data->input[*i + 1] != ' ' && data->input[*i + 1] != '\t') \ - && (data->input[*i + 1] != '\0')) + input->pipe_num++; + printf("%d\n", input->pipe_num); + } + else if (input->line[*i] == '\"') + double_quote(input->line, *token, i, input); + else if (input->line[*i] == '\'') + single_quote(input->line, *token, i); + else if (input->line[*i] == '<' || input->line[*i] == '>') + token_redirect(input, *token, i); + if ((input->line[*i] == '\'' || input->line[*i] == '\"') \ + && (input->line[*i + 1] != ' ' && input->line[*i + 1] != '\t') \ + && (input->line[*i + 1] != '\0')) return ; - token_add_list(&data->tokens, token, TRUE); + token_add_list(&input->tokens, token, TRUE); } t_token *token_create(void) @@ -48,12 +52,12 @@ t_token *token_create(void) return (token); } -void token_redirect(t_data *data, t_token *token, int *i) +void token_redirect(t_input *input, t_token *token, int *i) { token->type = T_REDIRECT; - if (data->input[*i] == '<') + if (input->line[*i] == '<') { - if (data->input[*i + 1] == '<') + if (input->line[*i + 1] == '<') { token->redirect_type = T_HEREDOC; *i += 1; @@ -63,7 +67,7 @@ void token_redirect(t_data *data, t_token *token, int *i) } else { - if (data->input[*i + 1] == '>') + if (input->line[*i + 1] == '>') { token->redirect_type = T_APPEND; *i += 1; diff --git a/srcs/lexer/tokenizer.o b/srcs/lexer/tokenizer.o index 0d663794e5d711af315751387b39550d29838394..f0849c8da851a8b86a8720e147696bc8b9003a04 100644 GIT binary patch delta 646 zcmZ1@^hIcbgAfNR0~ly9L1+%vi9vRvN0||#EI_6KI|GBr#HGf9FbOV*Jj2_GFYP5S zKvg$D1%Cj|1PNW3?8s;?7yvQ=2zEdyhKk9ZjP|@AfF|++MGkNUfUd?MH?7ifRwyE zJ=u?0YI74)0V6ZNyu;-0%)c3LPyWo}&DcNLp4Ca*2dD2L-}=3`AR518At;|PS+YLZUz;X0@6Uo z>T&~VHX!{TXc)-cS3nwM?iC;b3{BlfARhr~Ss)D*Qq(;MorVH9QXhSs*YIi1~p!1Aw-GfB_JL_#YsqGWbLJAUP1|24bibn7@3oAcwzV aDVnGZ8ozdOAxA4)K~ZL2N!sKu92NiysBxSC delta 575 zcmZ8dze_?<6u$TAdukc#6O(>`)S}A;A;>Aset^*sH04lHL$no?b3rteM7_??m_cq1 zMh%WafnY=~QGbHc($Ek&)OYnt(&66w-Sd6toO{ptGz;e0q*=GKmPNES*6r3}Jdn5j zu`H=Qv_%POtJ#v^Up25+ymZLV*4LNknl_9lNNzdp~iw5m@9 zQ;4g}Smb?G7?-z`i5Qji(XgjmOC3CTm+#ltb~a^nmsN=yL0+Q)Bjn1dfgIBaxG1HK zgsa&6X<3!7jMKdf^w`6gI0qs)unR;tVoUieN>3|)8i>h=A;tGA{u{~otat}vuHqRe z>sEnSfjbC$FNh2fLl#tXMCLmGwm^E25ydOgqS(@}wX3iN{{muQUReMD diff --git a/srcs/minishell.c b/srcs/minishell.c index edc1c71..dc1e33d 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 18:41:52 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 22:02:40 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,30 +15,20 @@ int main(int argc, char **argv, char **envp) { t_data *data; - char *command = NULL; + (void)argc; (void)argv; init(&data, envp); - while (TRUE) { - sig(command); - command = readline("minishell$ "); - if (!command) - { - printf("exit\n"); - return (0); - } - data->input = ft_substr(command, 0, ft_strlen(command)); - lexer(data); - syntax(data); - parser(data); + get_input(data); + sig(); - count_pipe(data); - execute(data); + set_pipe(data); + // preorder(data, data->input->root); builtin(data); - input_free(data); + free_input(data->input); } return (0); diff --git a/srcs/minishell.o b/srcs/minishell.o index 88f8edd636ae341fd1f5486e3d94830b76034afd..56d17b9875df7765e064ce88406a514bbc7bdb76 100644 GIT binary patch literal 884 zcma)4Jxc>Y5S_#r#m^KL3L*h5EDS^o5wTD-u!w?a0_ldRXL4XpF?$#VK@fx^2>zUu zc9u3478W)_1O-bGF}_Lm;wcCYynAmxc6M%eZ{A-%JBUJUgbxq_sv_b5YzUYU{|~F0 z_?@Zoee@)O^c7>)R#`W7(@&?e>2Kdx8%9V!ndLG})Go0IoeKHJytP-{&uwXTokQE% zW?otHbHZ8U#0@9WM`o#l&8Se{#%vXM=O9R-6(fFnsb{Y9x~FB&f z)fnQ#Kmm=!{ClQ_zSwzqvDg2{Wz^tk60=||OH6{1OH6Zy&5L9!TQ#nnf%Qh~(KS+nP%{r`;0qrfctN O+aWIIk}UolUokf*=08|Nfu%XEL*y&%b``^%G?d z5e9fKJllgI4~LzEKjp$dY*yFKvIZ7&^dxrf$0nt+YbuH(K5foU@AEj?)&cip?Fu%Q z<6JMTFvKS1f~TsEThs|D5B7`u9Mkmy{(%Y8+wEr1?_RlLEhy=`_Z@dp${W|ZMFee4 z@-dBCWUf|}I2r@`@7u*j5b6rpRTeVvX%=cmZ?N+DLDLby?E!(BiSf1>fqoU*G z-xAt(1mW@PR0zj4$vm8*Ol>4HGT5Jej#*>KpN4Plp*KwHi6)0fp7dND>eD(tx-60L z2?&|72E?aeyaVEHjkiE-#drurwlKQC>=UTE((tF@4t40#{twSaMuMj$82+-UXYVg+GP~ B(N+Ke diff --git a/srcs/parser/parser.c b/srcs/parser/parser.c index e7fb1e5..c4f0df7 100644 --- a/srcs/parser/parser.c +++ b/srcs/parser/parser.c @@ -6,25 +6,25 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 18:35:07 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 18:34:40 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 20:54:30 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -void parser(t_data *data); +void parser(t_input *input); static void link_pipe_leaf(t_leaf **cur_leaf); static void check_token_type(t_leaf *cur_leaf, t_list *cur_token); -void parser(t_data *data) +void parser(t_input *input) { t_list *cur_token; t_leaf *cur_leaf; - cur_token = data->tokens; - data->root = tree_create_leaf(NULL, T_PIPE); - data->root->left_child = tree_create_leaf(data->root, T_CMD); - cur_leaf = data->root->left_child; + cur_token = input->tokens; + input->root = tree_create_leaf(NULL, T_PIPE); + input->root->left_child = tree_create_leaf(input->root, T_CMD); + cur_leaf = input->root->left_child; while (cur_token) { while (cur_token && cur_token->token->type != T_PIPE) diff --git a/srcs/parser/syntax.c b/srcs/parser/syntax.c index 8e58659..b02004b 100644 --- a/srcs/parser/syntax.c +++ b/srcs/parser/syntax.c @@ -6,24 +6,24 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/07 22:24:38 by eunwolee #+# #+# */ -/* Updated: 2023/07/17 06:40:42 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 20:54:38 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -t_bool syntax(t_data *data); -static t_bool syntax_none(t_data *data, t_list *cur); +t_bool syntax(t_input *input); +static t_bool syntax_none(t_input *input, t_list *cur); static void syntax_word(t_list *cur); -static t_bool syntax_redirect(t_data *data, t_list *cur); -static t_bool syntax_pipe(t_data *data, t_list *cur); +static t_bool syntax_redirect(t_input *input, t_list *cur); +static t_bool syntax_pipe(t_input *input, t_list *cur); -t_bool syntax(t_data *data) +t_bool syntax(t_input *input) { t_list *cur; - cur = data->tokens; - if (syntax_none(data, cur) == FALSE) + cur = input->tokens; + if (syntax_none(input, cur) == FALSE) return (FALSE); cur = cur->next; while (cur) @@ -32,12 +32,12 @@ t_bool syntax(t_data *data) syntax_word(cur); else if (cur->token->type == T_PIPE) { - if (syntax_pipe(data, cur) == FALSE) + if (syntax_pipe(input, cur) == FALSE) return (FALSE); } else if (cur->token->type == T_REDIRECT) { - if (syntax_redirect(data, cur) == FALSE) + if (syntax_redirect(input, cur) == FALSE) return (FALSE); } cur = cur->next; @@ -45,12 +45,12 @@ t_bool syntax(t_data *data) return (TRUE); } -static t_bool syntax_none(t_data *data, t_list *cur) +static t_bool syntax_none(t_input *input, t_list *cur) { if (cur->token->type == T_WORD) cur->token->type = T_CMD; else if (cur->token->type == T_PIPE) - return (error_back_readline(data, E_SYNTAX_PIPE, 258)); + return (error_back_readline(input, E_SYNTAX_PIPE, 258)); return (TRUE); } @@ -67,31 +67,31 @@ static void syntax_word(t_list *cur) cur->token->type = T_CMD; } -static t_bool syntax_redirect(t_data *data, t_list *cur) +static t_bool syntax_redirect(t_input *input, t_list *cur) { if (cur->pre->token->type == T_REDIRECT) { if (cur->token->redirect_type == T_INPUT) - return (error_back_readline(data, E_SYNTAX_INPUT, 258)); + return (error_back_readline(input, E_SYNTAX_INPUT, 258)); if (cur->token->redirect_type == T_OUTPUT) - return (error_back_readline(data, E_SYNTAX_OUTPUT, 258)); + return (error_back_readline(input, E_SYNTAX_OUTPUT, 258)); if (cur->token->redirect_type == T_HEREDOC) - return (error_back_readline(data, E_SYNTAX_HEREDOC, 258)); + return (error_back_readline(input, E_SYNTAX_HEREDOC, 258)); if (cur->token->redirect_type == T_APPEND) - return (error_back_readline(data, E_SYNTAX_APPEND, 258)); + return (error_back_readline(input, E_SYNTAX_APPEND, 258)); } if (!cur->next) - return (error_back_readline(data, E_SYNTAX_NEWLINE, 258)); + return (error_back_readline(input, E_SYNTAX_NEWLINE, 258)); return (TRUE); } -static t_bool syntax_pipe(t_data *data, t_list *cur) +static t_bool syntax_pipe(t_input *input, t_list *cur) { if (cur->pre->token->type == T_PIPE) - return (error_back_readline(data, E_SYNTAX_PIPE, 258)); + return (error_back_readline(input, E_SYNTAX_PIPE, 258)); if (cur->pre->token->type == T_REDIRECT) - return (error_back_readline(data, E_SYNTAX_PIPE, 258)); + return (error_back_readline(input, E_SYNTAX_PIPE, 258)); if (!cur->next) - return (error_back_readline(data, E_SYNTAX_NEWLINE, 258)); + return (error_back_readline(input, E_SYNTAX_NEWLINE, 258)); return (TRUE); } diff --git a/srcs/utils/env.c b/srcs/utils/env.c index 5f216a9..f260421 100644 --- a/srcs/utils/env.c +++ b/srcs/utils/env.c @@ -6,22 +6,22 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 06:38:21 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 08:49:50 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 20:53:31 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -void env_print(t_data *data); -t_list *env_search(t_data *data, char *key); -t_bool env_remove(t_data *data, char *key); -char **env_to_array(t_data *data); +void env_print(t_input *input); +t_list *env_search(t_input *input, char *key); +t_bool env_remove(t_input *input, char *key); +char **env_to_array(t_input *input); -void env_print(t_data *data) +void env_print(t_input *input) { t_list *cur; - cur = data->envs; + cur = input->envs; while (cur) { printf("%s\n", cur->env); @@ -30,13 +30,13 @@ void env_print(t_data *data) } //환경변수 이름에 해당하는 노드를 반환하는 함수입니다 -t_list *env_search(t_data *data, char *key) +t_list *env_search(t_input *input, char *key) { char *tmp; t_list *cur; tmp = ft_strncat(key, "=", 1); - cur = data->envs; + cur = input->envs; while (cur) { if (!ft_strncmp(cur->env, tmp, ft_strlen(tmp))) @@ -46,35 +46,35 @@ t_list *env_search(t_data *data, char *key) return (NULL); } -t_bool env_remove(t_data *data, char *key) +t_bool env_remove(t_input *input, char *key) { t_list *env; - env = env_search(data, key); + env = env_search(input, key); if (!env) return (FALSE); if (env->pre) - data->envs = env->next; + input->envs = env->next; else env->pre->next = env->next; ft_lstdelone(env); return (TRUE); } -//리턴값 더블포인터를 data->env_array에 담아서 사용하시고, 쓰고 나서 더블포인터만 free해주면 됩니다 -char **env_to_array(t_data *data) +//리턴값 더블포인터를 input->env_array에 담아서 사용하시고, 쓰고 나서 더블포인터만 free해주면 됩니다 +char **env_to_array(t_input *input) { t_list *cur; char **array; int i; int cnt; - cnt = ft_lstsize(data->envs); + cnt = ft_lstsize(input->envs); array = (char **)ft_calloc(cnt, sizeof(char *)); if (!array) return (NULL); i = -1; - cur = data->envs; + cur = input->envs; while (++i < cnt) { array[i] = cur->env; diff --git a/srcs/utils/temp.c b/srcs/utils/temp.c index f6442b2..9902c65 100644 --- a/srcs/utils/temp.c +++ b/srcs/utils/temp.c @@ -3,8 +3,8 @@ #include "../incs/minishell.h" void tree_print(t_leaf *leaf); -void print_token(t_data *data); -void env_array_print(t_data *data); +void print_token(t_input *input); +void env_array_print(t_input *input); void check_leak(); //트리 전위순회 출력 @@ -45,9 +45,9 @@ void tree_print(t_leaf *leaf) } //토큰 리스트 출력용 -void print_token(t_data *data) +void print_token(t_input *input) { - t_list *tmp = data->tokens; + t_list *tmp = input->tokens; printf("\n\n--------------token list--------------\n"); while (tmp) { @@ -85,9 +85,9 @@ void print_token(t_data *data) } //배열에 넣은 환경변수 출력용 -void env_array_print(t_data *data) +void env_array_print(t_input *input) { - char **array = env_to_array(data); + char **array = env_to_array(input); for(int i=0; array[i]; i++) printf("%s\n", array[i]); diff --git a/srcs/utils/utils.c b/srcs/utils/utils.c index 0da0746..aebe1b8 100644 --- a/srcs/utils/utils.c +++ b/srcs/utils/utils.c @@ -6,22 +6,22 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/12 19:40:44 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 18:35:07 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 21:48:40 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -t_bool error_back_readline(t_data *data, char *str, int error_code); +t_bool error_back_readline(t_input *input, char *str, int error_code); void program_error_exit(char *str); -void input_free(t_data *data); -void data_free(t_data *data); +void free_input(t_input *input); +void free_data(t_data *data); //input 관련 에러일 때 사용 -t_bool error_back_readline(t_data *data, char *str, int error_code) +t_bool error_back_readline(t_input *input, char *str, int error_code) { printf("%s\n", str); - data->error_code = error_code; + input->error_code = error_code; return (FALSE); } @@ -33,19 +33,50 @@ void program_error_exit(char *str) } //input 한번 끝났을 때 사용 -void input_free(t_data *data) +void free_input(t_input *input) { - ft_lstclear(&data->tokens); - data->tokens = NULL; - free(data->input); - data->input = NULL; - tree_clear(data->root); - data->root = NULL; + ft_lstclear(&input->tokens); + input->tokens = NULL; + free(input->line); + input->line = NULL; + tree_clear(input->root); + input->root = NULL; } //정상종료 시 사용 -void data_free(t_data *data) +void free_data(t_data *data) { - ft_lstclear(&data->envs); - free(data); -} \ No newline at end of file + ft_lstclear(&data->input->envs); + free(data->input); +} + +char **join_cmd(t_leaf * com_leaf) +{ + int cnt =1; + + t_leaf *temp = com_leaf; + t_leaf *leaf = com_leaf; + + while(temp && temp->right_child) + { + temp= temp->right_child; + cnt++; + } + char **str = (char **)ft_calloc(cnt + 1, sizeof(char *)); + if(!str) + return NULL; + int i=1; + str[0]= leaf->token->str; + while(leaf) + { + if (leaf->right_child) + { + str[i] = leaf->right_child->token->str; + leaf = leaf->right_child; + i++; + } + else + break; + } + return str; +} diff --git a/srcs/utils/utils.o b/srcs/utils/utils.o index 018e9aa8b59b317ed5911ecf5a12bb7968635aae..f8dc405e8da98261e1852c334517e3c723936b9f 100644 GIT binary patch literal 2016 zcma)7TWAzl7(SCGalOt$D|mx!ph8|&8Xrm?S{TuR^I)nLBeoFEj+04T-Rv&Av$%)> zVWMUngd+MbK1d(?)>1^21h&&Bm1e@XvSt+jstRnVHvr z|Mh+cW7cO34`@F$)rUt03ONW}pujfr8x=xEs0Lzea57TjBM~AD>Y*Ad`@DPc{72i2 zMl}!dQEh90vE3BxXEzCq2;o=5O1?Ow9YSp8GdyPgAIw1K>uC%f`twV(WzP>qt#~b8 zoD$;nsSiO6#&p3W?aYCXmOeJf7+NIRL@7jYSxi^F*+2z*`)lg#mI_M}y_M2~HD5L% z!sE~bPoj zU-um3HMXoXP3n3F>sfEOZ8{drxXxp@rLj5soJVslw%{(?^R|k&cvMd_`{9d)@#VYj z^3Rriiw1 z+Di1&ifb!tvTyl#f)k4J($zzXv}B?$oM6oZF#^_j*e81IVP*IA14+JucJu$(V}I9U zGkoNOK;(<%TF6AXQkuaxUj&s(sUm`U9=;igq8fT(t%?*G!~aGlp*|FaYUmdNufjw~ yWO`i2?=75Wn(UJ2UloL3W}Hj0jN{ATt9tXj;) zFgb=Lhsl6p@+%fI&WL~i!N6v6AgeT+3s6tNzsX*#YMd2Ni3E@Y?-ZcK2B?SuP((c7 z8&HIefkF2bkY)$cyMQ#%vAT<(;$2YjSRf7bi*6W@20B_d5J+Q8ovgOZ;HwnVi1K0 tFoA*>1XLy~vdarN0a?h#PWEBXk;u#|C@qOkD@sjeh)+o@NrW&N7yyA)Sug+q From b551d518c0ca3bf280cc9d06bf403d513716b218 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Fri, 21 Jul 2023 22:25:58 +0900 Subject: [PATCH 07/57] sav --- Libft/ft_atoi.o | Bin 892 -> 0 bytes Libft/ft_bzero.o | Bin 684 -> 0 bytes Libft/ft_calloc.o | Bin 776 -> 0 bytes Libft/ft_isalnum.o | Bin 760 -> 0 bytes Libft/ft_isalpha.o | Bin 680 -> 0 bytes Libft/ft_isascii.o | Bin 664 -> 0 bytes Libft/ft_isdigit.o | Bin 664 -> 0 bytes Libft/ft_isprint.o | Bin 664 -> 0 bytes Libft/ft_itoa.o | Bin 1160 -> 0 bytes Libft/ft_memchr.o | Bin 732 -> 0 bytes Libft/ft_memcmp.o | Bin 756 -> 0 bytes Libft/ft_memcpy.o | Bin 764 -> 0 bytes Libft/ft_memmove.o | Bin 856 -> 0 bytes Libft/ft_memset.o | Bin 700 -> 0 bytes Libft/ft_putchar_fd.o | Bin 696 -> 0 bytes Libft/ft_putendl_fd.o | Bin 876 -> 0 bytes Libft/ft_putnbr_fd.o | Bin 984 -> 0 bytes Libft/ft_putstr_fd.o | Bin 756 -> 0 bytes Libft/ft_split.o | Bin 2048 -> 0 bytes Libft/ft_strchr.o | Bin 732 -> 0 bytes Libft/ft_strdup.o | Bin 828 -> 0 bytes Libft/ft_striteri.o | Bin 696 -> 0 bytes Libft/ft_strjoin.o | Bin 936 -> 0 bytes Libft/ft_strlcat.o | Bin 888 -> 0 bytes Libft/ft_strlcpy.o | Bin 840 -> 0 bytes Libft/ft_strlen.o | Bin 700 -> 0 bytes Libft/ft_strmapi.o | Bin 848 -> 0 bytes Libft/ft_strncat.o | Bin 916 -> 0 bytes Libft/ft_strncmp.o | Bin 824 -> 0 bytes Libft/ft_strnstr.o | Bin 988 -> 0 bytes Libft/ft_strrchr.o | Bin 728 -> 0 bytes Libft/ft_strtrim.o | Bin 1408 -> 0 bytes Libft/ft_substr.o | Bin 1056 -> 0 bytes Libft/ft_tolower.o | Bin 664 -> 0 bytes Libft/ft_toupper.o | Bin 664 -> 0 bytes Libft/get_next_line.o | Bin 2808 -> 0 bytes Libft/get_next_line_utils.o | Bin 884 -> 0 bytes Libft/libft.a | Bin 37376 -> 0 bytes libft.a | Bin 37376 -> 0 bytes srcs/builtin/builtin.o | Bin 1644 -> 0 bytes srcs/builtin/ft_cd.o | Bin 2432 -> 0 bytes srcs/builtin/ft_echo.o | Bin 1656 -> 0 bytes srcs/builtin/ft_exit.o | Bin 2304 -> 0 bytes srcs/builtin/ft_export.o | Bin 4764 -> 0 bytes srcs/builtin/ft_pwd.o | Bin 1216 -> 0 bytes srcs/builtin/ft_unset.o | Bin 1448 -> 0 bytes srcs/exec/get_input.o | Bin 1040 -> 0 bytes srcs/exec/sig.o | Bin 996 -> 0 bytes srcs/init/init.o | Bin 1540 -> 0 bytes srcs/lexer/expand.o | Bin 3508 -> 0 bytes srcs/lexer/lexer.o | Bin 1804 -> 0 bytes srcs/lexer/quote.o | Bin 2820 -> 0 bytes srcs/lexer/tokenizer.o | Bin 2420 -> 0 bytes srcs/minishell.o | Bin 884 -> 0 bytes srcs/parser/parser.o | Bin 1692 -> 0 bytes srcs/parser/syntax.o | Bin 2720 -> 0 bytes srcs/utils/env.o | Bin 1992 -> 0 bytes srcs/utils/list.o | Bin 1376 -> 0 bytes srcs/utils/list_clear.o | Bin 1060 -> 0 bytes srcs/utils/temp.o | Bin 2948 -> 0 bytes srcs/utils/tree.o | Bin 1592 -> 0 bytes srcs/utils/utils.o | Bin 2016 -> 0 bytes 62 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Libft/ft_atoi.o delete mode 100644 Libft/ft_bzero.o delete mode 100644 Libft/ft_calloc.o delete mode 100644 Libft/ft_isalnum.o delete mode 100644 Libft/ft_isalpha.o delete mode 100644 Libft/ft_isascii.o delete mode 100644 Libft/ft_isdigit.o delete mode 100644 Libft/ft_isprint.o delete mode 100644 Libft/ft_itoa.o delete mode 100644 Libft/ft_memchr.o delete mode 100644 Libft/ft_memcmp.o delete mode 100644 Libft/ft_memcpy.o delete mode 100644 Libft/ft_memmove.o delete mode 100644 Libft/ft_memset.o delete mode 100644 Libft/ft_putchar_fd.o delete mode 100644 Libft/ft_putendl_fd.o delete mode 100644 Libft/ft_putnbr_fd.o delete mode 100644 Libft/ft_putstr_fd.o delete mode 100644 Libft/ft_split.o delete mode 100644 Libft/ft_strchr.o delete mode 100644 Libft/ft_strdup.o delete mode 100644 Libft/ft_striteri.o delete mode 100644 Libft/ft_strjoin.o delete mode 100644 Libft/ft_strlcat.o delete mode 100644 Libft/ft_strlcpy.o delete mode 100644 Libft/ft_strlen.o delete mode 100644 Libft/ft_strmapi.o delete mode 100644 Libft/ft_strncat.o delete mode 100644 Libft/ft_strncmp.o delete mode 100644 Libft/ft_strnstr.o delete mode 100644 Libft/ft_strrchr.o delete mode 100644 Libft/ft_strtrim.o delete mode 100644 Libft/ft_substr.o delete mode 100644 Libft/ft_tolower.o delete mode 100644 Libft/ft_toupper.o delete mode 100644 Libft/get_next_line.o delete mode 100644 Libft/get_next_line_utils.o delete mode 100644 Libft/libft.a delete mode 100644 libft.a delete mode 100644 srcs/builtin/builtin.o delete mode 100644 srcs/builtin/ft_cd.o delete mode 100644 srcs/builtin/ft_echo.o delete mode 100644 srcs/builtin/ft_exit.o delete mode 100644 srcs/builtin/ft_export.o delete mode 100644 srcs/builtin/ft_pwd.o delete mode 100644 srcs/builtin/ft_unset.o delete mode 100644 srcs/exec/get_input.o delete mode 100644 srcs/exec/sig.o delete mode 100644 srcs/init/init.o delete mode 100644 srcs/lexer/expand.o delete mode 100644 srcs/lexer/lexer.o delete mode 100644 srcs/lexer/quote.o delete mode 100644 srcs/lexer/tokenizer.o delete mode 100644 srcs/minishell.o delete mode 100644 srcs/parser/parser.o delete mode 100644 srcs/parser/syntax.o delete mode 100644 srcs/utils/env.o delete mode 100644 srcs/utils/list.o delete mode 100644 srcs/utils/list_clear.o delete mode 100644 srcs/utils/temp.o delete mode 100644 srcs/utils/tree.o delete mode 100644 srcs/utils/utils.o diff --git a/Libft/ft_atoi.o b/Libft/ft_atoi.o deleted file mode 100644 index 061a592c6db7f9e146e403ff0530b299e700c793..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 892 zcma)4&nrYx6uyr!7(ea^MOn-O8!4>Vjkxs|lr&Q|x+X>>KhhH^MPuX{$--JT%1&8X zNn@dGZ2bckvoPLb7Q@2$&b<4^ouqtq?mg!__k8zzulxM@_EpW8QOU3%e2800LI|K8 zF-Y|v*j2q3wR<%*83pMQq_pB&mYchEL`+3~YA@^1^vFvIKDJxRkw`hay1W*fwdBUi z=Hkknlw+fMKcsX*ip*EIUZ!A3wZQy9%J_nuUym)vT~5k!e_=HgRwHfD@xG0yI>r`M ztGEqdZ9^2tc!2p41iF;?8RcUQdp&B*vk8O_npM~8^uO|`X}_BGPX1Bk==`H_NXblz zJin_+eAM#eR=sYxF%F~e{3NK8A%2zydnDek44$k)E7Pp{W>rzn7WvFop-?F4_VE2O ziC&)U(j`&Tt5_0F!4?jUX-a6Y{(Cbu4v$TV&%Q&E<;P`mL;M_$vPU9Ya@1Xv%LQo6 zw4cnqwCgMik^V%s&v0y!%Ur@_O62&paHb#V9uMlh{rb%<>VUC5$&9U_5v;GSImM|? n@EwSYFDL@udu79o!GnsC2EQka9moA7%yo4+Z^@Xox(NOoU0R&9 diff --git a/Libft/ft_bzero.o b/Libft/ft_bzero.o deleted file mode 100644 index cfe1fcb38b2a14fd921d7ec79f72985c3db1d65d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 684 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%*Z>v30aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7DmfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1- z%29yQ8cYzkbO33nQ-Lf5h>uUrh)*j@%uR)e#mA$%uK=pl0ZMy7&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNPGg+9SeXo50DSk&j52XkO>ALy->G8MTn=2n__UJvq^i`Sdt_Z)8v$I9qsSg51`;uYTqgYo z?q&T^o>3Y-fk?gt&V8rpi(KfESuPE=%3PU{AI)-^0>Fnvn}P!8cHKL$Y@au3$NRNC z&NtT89>t0jhKws{LbF_Bl%vMBavSG!D%?G^JV#VG|2f~e@{w^@`lu?A%g^fc$Uq>#7>XDJis* zEzp{IEuYPdUErw&tj{9LUjpjC!|G)IEVY(P%Rc%hc)T!&5x+x$%Ba)it0!)wG$A4T YO9OX(?m6C(;{*4sYPD|1C0nHM4T&sd0{{R3 diff --git a/Libft/ft_isalnum.o b/Libft/ft_isalnum.o deleted file mode 100644 index beb024fb43c977a5ff07b8d7ec035a1071eac39f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 760 zcmb7CJxjw-6uqg^inb<$gMvZ_hb~>592G4@a1g2BB9G7y6RnmF<;GA^&_iMi!w@$&gaR-6=75QiKQtbJJ!rgz$_4+ zrB6~C;NU|!e=YS--~v4AhciQl!LNju#Rk_Y;0rB26=5w9{?UT83t1GZUBCwTS#Y;C)9C-!H9B z8|SIDTw3b#V0>p$2cxXWX>d9R))S}k|Cq3$PI^*xUpdEBXW#KfTL*5lG1Q)Iaqk~* Cq*RFj diff --git a/Libft/ft_isalpha.o b/Libft/ft_isalpha.o deleted file mode 100644 index da20b0195bfc3228a1611cc01e4a7ae55c359431..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SOFEk0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7kxfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw$ z%29yPOc1v;0BNXGfh+`wk5A2rPb*5yO@)ZX$D_J01FF;kMnlbmav8W87+^}kLPkJR z0*JwO@pCb-0Wk=GECq>oK;1C|NDBb@K>Z8>K#UAPdZBJb7AA@v>e2bMv-U@G?GH!( z9+1^QRuq4q2!xf$-y;TLRq^-p09nUf|A1_I35qfx8%Q#AyZ(ti3}S!*G+r>A12PZ< z7^{L97%K!A1$fvwCID5b0L5g0xZ*zqz~Ys`kx!tF$(ff8qzMXu%Gp2$^CO!cpH>o| NS)7+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z82Ed{fLeg8dj5VMAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag;K7AI$Bf|LRP DvIs#H diff --git a/Libft/ft_isdigit.o b/Libft/ft_isdigit.o deleted file mode 100644 index a0e0f40d01b86d5d7227538c36481efb8e07fb54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z4ETG*fLeeoOa6WyAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag<#WTt0=Qwad2 CK0yZn diff --git a/Libft/ft_isprint.o b/Libft/ft_isprint.o deleted file mode 100644 index 8cf5033396fa25d36dbe5e96031092dc2714b779..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z6!?3@fLeg8I{tnhAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag;46lLatQwadc C8bMe9 diff --git a/Libft/ft_itoa.o b/Libft/ft_itoa.o deleted file mode 100644 index 6b8424d68378e36d6a5611c4e94625e64d9abff7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1160 zcmb7D&ubGw7@e)54caCFD^w5+=)p@QcF=6!G8%5v|ISwItR z5o0ejhk7Z^dUc~{+Oko5X4TfDT+WZLztw&exB(;N<(Ae{vbsjfQbm@Z7OSNQk@BoR zeZGn+c(3$y{UyfqQV88ayMPRBBrmdQBn6#?@J09_KNa+8^r&a|krY&;llY+qEu14B z3iqdQ`dPPmBusuJT<#06=^v7W%ljVhJ9~yOzlqO3m~cBG4pLV*%`Qv6oC8g?`GDxX zcW9{K&~SMGf)Bzh5j@^KVA?K3!8}7T8enS*!@KJB7Xl7 zTVJvv*ywuAAm91~;Xs&${y{7ry1~K#*g!a6 zv#a~%+sW%KXfjsb3Gc&g25sIa05$@3iZ&n81@|7Ez}r_ajBW^5C9Faaoud%wBcQgG zK11?wGpA>P?cR43LB!=lj}KS(!5)uT^r#b0n^MSDM4nimS0cvq2h7+^8L8Qs_zqY% zfnP($kICz3r1TlfB~q`Zmgc5a9r5zWK=IT*6Fhnge0v%CRuP#r8f+8FP>*B@G}+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%cmNf@0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8z3?fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1z8@Z zSOF>+!31&34j>J6Dv*T$@$sn{@o7bgxv3Db_;^(JEr2R@fYKFE^PpS?ZU%-77#lmYz0vLaro;C-koUl&^PorL!T&(u(dqlZqxlB|e~U5DXrSB;{%sum z+d{8fUgU4(g$e;R|9B}4;6uKmbb*432yPZA{L*YzU)4VZ#P8m>=2n__UJv+|=CU Hj3NdADT-*# diff --git a/Libft/ft_memcmp.o b/Libft/ft_memcmp.o deleted file mode 100644 index 4ae0e2bb654a43e15e6c99b8ab3cf36fdc659359..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 756 zcma)4Jxjw-6n&|+Em}X2Hb#UcobMF?HGi2jn& zwKzDMZW+4>?I1W7DeAe+?H3|=;N+fr-+Skski34re}#q6W&|E!5Nwc$fxrs5N&O$_ z@!aD*!ycZ3NWKK6idMPkYrjvL$H{R&RF5pkkFtyq6gMLcp;YGFE~GO>RmxwU2;wHwm5b(3Os2mk)45h4`%3h>x%bzJVov*=Lx4G8Xk6SS>L~f|5Zh*_+;4Xbm zgg^paN^_5MbWo${ab6sPlc2Mlb#nYKos!O*bgn<7Q|d@3)s|Hg+VoJ-n=WcwI!$@o z{05|xXv@2v&?^UU$C{_tBPgz3H?~@Og%VFs*IQ1a-;MKJ&QebHcSoJueSrCk*~g-& zn*Eb!5(Dse{`GoGysljx39W2sMl>9$Vb>bwt6-es0>l4A>?|7hf!&1=pQD29Au`q{ O-Bq@zY|GBr1@QxK3v*xq diff --git a/Libft/ft_memcpy.o b/Libft/ft_memcpy.o deleted file mode 100644 index d0b66830935e4bef0eeb8229d790025509088e30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 764 zcma)4Jxc>Y6nv*45ly@+EEFtK*xFcGDtfSmf=B{3vV?dc78iqDFbV<14?Jxw#max7 zrNP3|lvkz^l0ry%Sg7;dz2t%j4oqg=+qbhXB(ERupD7|^l<)y2z(+P&5SRfMx&90K zEQn^bB9oY$%aGD@>Ynnd&e>bJK^?g}Z8(p2=_5hMeGemLanG$5ik_@h4t6U$Qm(DW z&+m1S)mk4>y97|ZBHRE{I%QefFSw5CNjbdVlOA2tdaLtvNfSin$g?hh)8Nlr<~Sum z20zOEw%(%$O{2zr+5qF=yL#7n`(HjU{5Rn@dcv=Dgr9GV(?*ZXbAB4O1Dj#{Vuu{p zEpTydW84m)xMH`UZQ(b?N%IR3{yIWJGSBAKY)hT-f;ekkS(p!odcmdDec-DqIE04V z&zO%v|K7j8=9Hc>jyB1tTZWZRjon~s4*gj$%R2$l|Am$(t&5SBOfr^@@gxVE@pM`8 Lr0clF>LGmt?|yTx diff --git a/Libft/ft_memmove.o b/Libft/ft_memmove.o deleted file mode 100644 index 215dd01afd4aabcfc28b0b90b7a1c2f4460f6e6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 856 zcma)4K}!Nb6dp}fD%(AHFzVo;YY?4;E=euSAt6e^OAKO)9o8bWBoK;9T)Xsdif+=O zI_1%$m%u#)LYJk3_PyO%-H50M-@fm?dGDJyv-A4-J`6GDn_~C?0pOlU9DvOO35tKQ ztX%6#@5az%1kxoFqEe_;9PY$vEt{UiF8h##^k|l`1=#tRg9wp7)Q@ucil~-P56b&O zY;AhiEg8h6@A#crRxpqp6`6?%Q7DPxaZWEdIU&B!7n4ovvSlFkT!k6NN-ihA3d8`r zO_^pvfQ&Y!d_vB_;Z?-wXWM|+s8??5P5+B$xben~`hXkNJ~uKwepw$d<(jqz?Sn>$ zK56zvnGY1)XeigZ@MzIG@Lj&9b(BUDt0q7tJ#Mu5MSBF}MhdzXQ?3@AHMFF9t!UWp z1Z_sc<_ikV-M<8uT>)F14h`{6OSP4}xo%T6??@6Q?!*?Vti4Cdj7`3yAJ-R^6~40_ z=Buebbv6{fMb#4Wi@@`cPBt33?~o+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%H~)KfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1; z%29yQ7EBPg%mC6*rvh0B5FekK5ua9+n41a_i;qWjUjtOB1C)+{ng``Fa5FGuz}O(# z2#6(s7;G0m7Xup*g8;}IX`og2z^@m5N>w|9JFCD)3fxH(Uod-P{5B>)Nk51ng9?d@(_*-OvMt8XarF|cG zbe{5PJOr{GsQp0)6aUHDCpp!TLcjV9*qk2&>_OWOAO1pq6bZ67bOq`A(Rk0cI?lH zu66I)KM)kuT{>iM-1%@j1P#3Jy*E2E->~2F*XMVN$eJM>z$|btA`2kaft>h1;#Tu7 zT4OwBl0fE4Fb94+h;-x&N5#U_8?~oG=E*LNM6?%7*VG6zdl$8a>jfOvTh)4r`S>vY zJ*OtCY-5h>(l+ympr*m>SGe4CYkrht{=HvOOY_P*I!`Sv5LJv8-UZfx$#2QbQxcGn zOC{fh5PgS3Jo@Pbh==qV#Pk2rXU^c&>3!JwerG%gN4?I7GQ&A^zOUf8?u?vaIDU}n zZ!*s5J=y1vqBQg!ChMD=@TwZ?@|3K$ZP|;d^bM*uk>3FN<0#BK(*Cl2l{i>RYTp(Z j<=bMx$uu|18#(YS8ej!|B`_%H;6XZ6-|Wtk3N`S}%r`spy?IZcKHtBhM4=Ia14e;Z7%m0C=7A=E_`@Eh zzQi-IfJ2iQtjDIcWz;M`_jxXx&;9ZsGbCX>p8b#ravAh+)cWwus+P?oDQZ2a7wE`Z z)Cv;mAEK;xa(sGlXldI#FPjCeH#el!3nd{biERk*nX$3wBcxT1ODFU$ZpOIHqHtJo9x5hB=nuc@hUFF(6-NImD$_DW$n3vxW5?GZ6I8r$qDIZ<70QC?4XcD^7kIcntVwX)zH7$mmeYA3;z2 z7@lJ2#XF$aNUPABzYkwB-2aAirn^PYwcAdyEwtJYgv}pVj7-Wi=0HkXnI25F*fwe} z55ej*$0;D1Wh_q7gYGF?!& zaS;0QUWE4bkUkuVenZs+^3Q;i4$g+DcPCzt>R$)mjQDRC`wal)@hbZ@_8;K!-5$~H m(f$m_a1@85@EV9RqCFx0SbK$>WeSX-M;-kGLInkf4#h$JF1=_K9Q??a@4kEQ?p^Zk-d^70M3Di)3mgP5IWRzA8eC%k z2QDQ4AbUcOp2Xz746SXmY4_ru&t!*H8a8hT+8H||6)sdkE-=-D9`PBPN(H|D0wo3E>H7# z`EEz~PFMNauIIig?^bzEyUl0#u)fn)-c?{#>&Do*<^_S=kNm0;r;ehTv6$3lp!m-8A{1q5PD5i8&}83f9QIjC{PLtrw%)hv WyJn4aqh7JiAY(Z;lDbsHcKQT3j9ec8 diff --git a/Libft/ft_split.o b/Libft/ft_split.o deleted file mode 100644 index 34c727b49092ba2f6d31d2490e2121323eb1eec3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmb7FPiP!v6#u5C=~mm!T3d}EGzAYuTusD-#fT9*@PRG{=|T?;({(zrk?l67I~at4 zg-ImSp^$^3C-vBio;}Fg8gb*v2CD4QLnJejvU6D4q13Fu_syGaT(busyzhPQz2Eo# zeY4;GdjHPO0U@+U1QzfRIJXbW7#Q?4c!eATXr2y$PSP1rrX!{xX16fSn!Q*fL`tT4 z#yEQ>(;mvdI1a_5vtJAg@ff*>M4d!NrfFTNEzDKlXG4FyEKXMXk^R}pRC1c05%Dfx znlD>5)2V(mSG{1GZ=dctv5EP>*K8a`JepaI`Z)BzLYk(1(VSfm$|`-MB|Wz#^yR~_$)=GIIGV%a zxtlOk;quyRSJ6azA}F?`uSKuJ-Za?cwq)QSSE((p6+>n8lCHjdj1C8GD{xXH(j^fk ziooz7IV_Ng^nMzjS(|-9KfXjRp&y?T+|L;LNqnc%G-C1)y8epLm*~qRMQ`L@Eq3(f zCs>#JX^1M-^UCBVfzi<$v8u~AwgV%^9DE}VjBObd6KUO&+J^LtN%U2>+l3p|jLod= zo~QJkaHX^b5Lz`_O$1iiLsiP>te_MOVe8aJubQw|O&C=a$_;TRTdJ0cyS{N7^9iL@ zy3M03#xf|iq;*94LmNm16)CNQ(wkhzbsR#Brttt}cB7Nn2Na-)0Ng@I@Ia&fwCEgA z00RcxgZ>e(a({WAFNWmb^loc_&8pETyMDdPVKB1ZGGvfhr!`Gn)B|9DgCpb>9f6Rw6AOW zGW`mo5mh>0SM)7%V zLi_k#p)KaM{GkK6RpfjY_GiG;>KeOUu3v~ZM)IHRd-E`!D@BAm4Ne$WS5_>0;ON_$ z{u}cFaX)+FJ_Rnflj69qJ#pUyH_kZj??1Q?(LZjfaGvE4=q(5R8%R8zg%d2lL@YoG zJ|s+qG9;eB!nxFb>_tfQT%i9kP@#?mxZ(3Gr&x}$gi!tykRt$Q_e}38>Dj$L$9i^; zldNa=2B^?!VKN|hsp73ZeWFjNAINUJFlTG#mHEnCO_=tgoo&hJyoY~6VOmw})uv*X cp_8k&aKV{RT@||u+k$N?k5#TzE?da)55k_hwg3PC diff --git a/Libft/ft_strchr.o b/Libft/ft_strchr.o deleted file mode 100644 index 0f0c202426d5830381eab492ee1bd9626e5043fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 732 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%cmNf@0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8zY1fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1z8@Z zSOF>+!31&34j>J6Dv*T$@$sn{@o7bgxv3Db_;^(JEr2R@fYKFE^PpS?ZU%-77#lYqto@rOKTX16=XM1=)=nc z|NsBTr-cKg@VM&_AO$k|N9{=4FHG15rTbY#@XAkxh?JD~T^IDN4>LVgLYE|79!y diff --git a/Libft/ft_strdup.o b/Libft/ft_strdup.o deleted file mode 100644 index d96ab0ed5ffbdd7eee8fec0146c58f826f641262..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 828 zcmah{J4?e*6h6_~idq}NLBS!Yn|5(>RJ3ph3q>lp$R(sH719SarBw(BMImHy^k+D_ z`hdFW*fEPxL7`)DP|r#3wNVfceEGif%*nlZe1H2$04Sq?4@3-cO+rJU%_G*y|HHZ> z-W4^{$C*H&xn!K%X3GwB=;t&0`JpdWQwW+zyIhTk88JAOHN>17)pAWYY~H9e4=V-E zcebPXmT)w|IWgw}S*(g`Xq=lRUaae7GmLTmbH7Vbx*@nG_Y(djKuO4e*6=xp2;P;N zfH;DTUP|#N6!d*69?&W>_CpR4HR>hEGmPf`(|gQ)X6;vvxlW&XPQOPD%+2(ehZv)= z?8e7PM`nE1c6>;kB`MX(45;B{ksQzQnb*KE-<|Gl*yUw?=4J<&8L;-fc5p{cfr)zz zK3~R&XN9Aj?1Iu#6?G~xet}iX7+*lJ&(P$50Gre5`N&o>F8Xw2EKjc>O!L?rDaxtmvzgk8USA=scVb? diff --git a/Libft/ft_striteri.o b/Libft/ft_striteri.o deleted file mode 100644 index b14ffbd07af69e702ca1c6ba0618d99d4bb81546..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%*Z~#40aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj0F<{nFn$U9I!Anz}Y}Xe0*|#Zb4#lNqlKud1hWpe7uhfvU~)T zqX4B1m>_PM0HmQ#1+owzK0Y-gKCLJ*Hx(ilACKz33aC;CC>;Pb56WfWW?;yGu|c#E z5K90t*e-r91~woD0g$C2@flEetN_viKt51ELjVvX1CU;*Takr{VuyNkKJ{pRqu|k5 z`@^HN^uux2Hz0i;-L5}8l6~Ja*l;lLx2QryK6KZ<@#yviN`$`gV7%zjdG7xOpiuL1 z#?IO|FHipe|KFqeh(hdPWQ(EkgyB39s3OLyAO^+?0Y(8Hc8&=^RVqMn86eI8ng#-} ncxG_q6KG>{=4C@N9H^WPWH3Ln>G5eL@x>)YnI)-3nLs%J-wawt diff --git a/Libft/ft_strjoin.o b/Libft/ft_strjoin.o deleted file mode 100644 index 0e88db478a65639c179019944de738852d5e1711..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 936 zcmaJ<&r2IY6rR-(Lv5NIB3SScO0O2_DF+WqyD$d>K@_}{Y1l?g$q&&D1|blMO2%Az z>fhqg&>y)qIqp?RVFNAXW{_g~z3kg&bEpr#c|YcT-@MtK?)~qF1tE-ifdvQw*AyfH z*mEF7`G4#^?>X%K9GZeax@1b(xvK5OUcO`Q?M!n&`ojU~(JUzlOf*8G?)Q*a$|@HR zvzDzYrIUQ=gHl^>gZq=qppfLEGw11KAjYGjGBu@g2WtN)Tg-VirDo?#GHHV;Bi8d3 z7KJ$QWAd+oWne;!JrQAmj1Hyx9^b18pF|G6$N)hjE@5WSV8bKvuGBwe^vQ_|_-RU8dYtJ2qZjgFyfeQEt@CL)7xk%rwfr!=z59z3UKp)F=76D6r0cD zmve8TVdkyF=t&Z)ZkL7$xa9qeCEM^OZ HvL*fkEIy)# diff --git a/Libft/ft_strlcat.o b/Libft/ft_strlcat.o deleted file mode 100644 index 1a44b8f2d409487dbcfa82492673fcda67ba14d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 888 zcma)5ze^)Q6rS}*6i?k1EEFs(J5G3iWsMT#^B8&F6YER5gF&S)$IKlt{&_q}=FyujrC>G8RPF{_o~1Ga$| zlnjHwAUH|&2bj^le>$2Po{UJo1S#G0o*U+2J;&$g-fELQ>V*7gmr)qBkk-b2QZSG* zwXwdLOu2F=v%8vEl5+Zo=~1leVpzulOlX%$eDtafTiwQf=@q%Wm0VAUij?p7bM#P5 z4+PrJ%zt5Q#pDzxzyYu^W_Pg&NT5qekLlmFh)6Z&*$mhWnl)_JKa(ef`Y*hPm{12* zp>_hH5@q2ZR0A3oiWgA?rYHy>!W1vtzx$}|^MYvQWgM$j{)R#k0*pW(jWHaL(rSvA z#;=4Q5A4f6?}=r3-ahPy?(>q$dAYiZm%JLY|6FGi`4gT$x9p>Kv@6lj6>H_huN*lE z6%S4vxZ{>4t(tWzXZ3oW8h4G=Xp;i12B{{z+t|Vl#troQA;)*1r3lvkEVK3;%jxdu zJjJOIXhUG}8J7U&{jqPo&T-54o(K&AUqKv?(*J=XX^0V!+4RxqL2N4V@Rwb=?QX55 KlJ0As&af9Gnwnhz diff --git a/Libft/ft_strlcpy.o b/Libft/ft_strlcpy.o deleted file mode 100644 index 98c68f0743316b5bc1f76fa4c587c67bf9078b5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 840 zcma)4Jxjw-6uqh17QYg~LBXMegNsm|1Q$gEZ?GUz!9^aWRur^~ruYFxr7EUfT*TGU zpWr0*195ZIv5Sy`f@5*8o}0YbI0#-ix%ZrR-?=v-PoM8!5hAUL@Bo^DD=uOHq8Aup z{znX`vlo?p4o_mRFNc&?X4~>=k0;H!WP|(Ftt!}$cVPq9x|#OXk(;DUudS}9(w59+ zx0bUDQcg_<&mR?useBRgc8U6aL{J(bWoAh(ZlqQ-o+jn*{T$UgrgB;NDN1cbOMcCH z80Z1q-St)q0~|b*bpv~F9Yi?-{h5afDZ*gJgKZKogggsjkrM%<5 zhp^2TQOH+FKk9&)D1q8$t-1$NW%r@7C?y>Ix~uR>C+4$$$m{V9O+PO~D4Nfgnts&6 z{iA$TGBM#s9Nh4}!cI6v0~#g=w2u?kDx#&1z`RQJj0?0qG3iNbw+{tiZgxb>DQ{*rY(D|W) XzfXYTM_#n#rnRw>Uf=ntGg(}!*iUF| z3>q9;gXZ8l1dh^>eaCm78WHrtchC2od+xd4%jd^eoXD6W9AFfD6p;pjB`_oY4?OAq ztDXrxc9Kx`3Ya~&<^?+NSv!{<`%pPr$Uez3LX;XK4Z&PEDWB#G9-mh(jw*-D+gp?O zjy7psGm#+69jcBBH3qX=;$k&lc7q=C&wLF%x~^+Z@6(oMiAtfCx(Y6W!@tZKih%<8 zRQmTi#{+5-9`9)voP@m9Str~7()+6Qu3Gh;>e#+KP|bRe%SvQf*R4nwU7>`K=Q;rZ^^!UuH9=jF#27dWeJ^%m! diff --git a/Libft/ft_strmapi.o b/Libft/ft_strmapi.o deleted file mode 100644 index 42f0f023a9174375d2eec7f7338b8d8a2a5b0db6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 848 zcmaJ-#ROosO5p6_{|_t*DwcfaoM9)?7$LBRo}fD1ZV z0QLs>K>ZJMOfEE>Xv`FXb7@+8rCl%fW4-KtUVhezcV-;U<1VcM5j+(8q{Or?ZdSGm zMNikNI~&zit(O*)9QoXctl?t};VvDpS@mhGNn^j#x?bBZR7!C~>;C<2OyQj2Q!~#< zc_p%*_~duM1n_j1{Zi5Zjh8acWw=icM;45J`3UqHdx^e9dkg;KuPFbIYW&S9zus1U zt)+r`yTy9-f+N+{Z&7|Tj`(h<8ud`@!x5&MZij`pUvMNqtT)S||<<=3Ly@7-<}{Yd1a>r{rbLgl+1a7Q(M=Dz;m z4T+iW&mH@0%qVN`lUTcskf})~Od)z|~UJ6NxkmKUP_`TUTO+2&@zIngq`{wP=?(M_<NhJojSuHixDlkS>|lUU|n$<1}BCUlzN$js9>zdNj*81p25pAoj>v)7srw z-z>SF_N&`pt1DW6p0z#lZBEA6UqOUsnZm-O8d+{*zVe!0-72k@(~8#5=gTvx$b<&# zS^kg^Yc?kT4j2IpE%!oX05Uq1>P5^!^K4>y0}sBK2YQXTglB{HZun2Uq{81SXiciH zmZ;Eghf6IL)shBLlsnf_&Q&NIk!%E~j&hS9bWYj~<=v&Mn|(no5xMV0#7&b&G6A=~ z_c4nyO|7_cSjZy0qvk;&8~OF%!U_F)^SaaN80w{rjY3dsgF0;$BN=~?t=!SuRI3ev zn6)6%@5jphX#`^<7&mXMpgAr$pIkm8-LCQXV_ti=Dnx-3XLmt3J9#Jnaxi<0UGx;M zfnSeMhS~2=e0r7N@0%IUFz-D)wolOA;XWp)j66dJY5Z#L!#jm@{s&93 z5KGZQut?6zlxYN02$m`#@l9?niHP99%e;9zGy67N?(41GDumG_@B=ghH$*}Jq7N9O z`j7C>^4#Os*eM9KmqKehnzTLc)r)dzv0nS^nF;M9FSTeE2Q?0&bz~#Hxe~GUPGWaG zv8wgVbmMuRixB6_fak@6A+`#o9$H6ZdTnbZ9`!V>fBO62)(Oro@8eQ*2odu+du^2e#ly;ZQO^Fma&}&o6E3KX1ebYa)Y2Wf zRhij>avs&;T?J9?Ir}V%v~5} zx&;lzx%#NrY>hveDS9z4WOeAtnJpCuSywIePWI>4Dz_MhwFguq~0 J5s7b7&o}l;ioyT@ diff --git a/Libft/ft_strnstr.o b/Libft/ft_strnstr.o deleted file mode 100644 index 10bba56b90c572c309b9a3fe5211716834ae6601..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 988 zcmaJ=&r2IY6rS}*47R#Cc&OmPg9qCpR8JN!5j!vk3!*M~DN{)!7EBboK`EpJ7d3GY z_2U2FpWsPEh0RUdQ!a&E3Q1`p$Fv92@6FD%&JPFm-))_Uu?1`mLAQr4gsan!%C)y zqLi7<+}3KwmxcV!+x#0T=U>?MXIf`eFDA842~n52?0zY;>vC;-HJ6Q7rMy4if+nRk zY23`E@dJ#iQx&H0d<0iCx1S~8WV9)*mo@(kaSRxIwg9({xa9W+wHyAEd!q7H1mDx5 zQf!Gzp&=?>T|~S_6cO@9X_~qF12I4YZ#TaY2#R&H9`QCcH$SVUVyi(2owp(^HVmjj zt1f1E)!iFZeJB$Ol(dofh*Fd2lNTaca5!B6I%T$a7) zh)1W6yWdMpq3SqCh;xKqRc#)$&7dKV5AZmasfk{CX_yonp=402`JvP4;2o%Aq0|<^ zb^6s6dM(r6pSm_{nGI>+ykBI_ZpukL>`T(OPIor~KfZ%F%zVFWb})6&H8+sZyf28j u$BEa7piM04h(I_&8@lw+M*p1!8NE*%Gr8u=cm8%B{wL4mwoJZ}&9mP%!lxww diff --git a/Libft/ft_strrchr.o b/Libft/ft_strrchr.o deleted file mode 100644 index 5df8815da6375cb5853e5789029454873c59165c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 728 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%xB(Tv0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8zI{fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zElV z%29yQ0Zb6LYyi?wrvh0B5FekK5ua9+n41a_i;qWj-wdcy2PjkE*cZr3jzuFpNXU4JxKFz~nN0fj&u{(T($+d`jPUgU4(fC_nZy1oEOd9Z@4 z2l9TrJo^9tfBdRn#2yAJh5=|iVmMy}s(`U7h=H*}fKh;lonrz}l?qT?28ca?_J9B^ o9WXfZ3A8ae^RmGV2GT&~Y#@XAkxh?JD~T^IDJn|NC;}-30DQw^DF6Tf diff --git a/Libft/ft_strtrim.o b/Libft/ft_strtrim.o deleted file mode 100644 index 4a891a2cb4a204f63ecbe7a9aa3da2d1bf9add5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1408 zcmb_cL2DCH5PnWe}=m{WITHzdy!8SG#Xnq>ogawa)>k|0F6Dk`m#RaW@; zd}*1zF8RJnJ_*@5#;VFEdkcCQ8jqo$Whp2L(NKI-?v)>7>>)7fV+#}KP#)FNtVsQ5 zDRTEacYfr#+a7RtxyQZsphqmO(IuaIh`lLx;}~}h1fZ_rdxfsk*MNL(e&L!=F{j;S z`q~9lqtriE>KR>UQ{(0?-}=V5yQla9?z97@znY+;&qheC`_~eN01N|F=qD9kA>eKy zMBk7*JNbp}$_;&LjjEVFHOH9TCyRYT?1NE@*vSYxGnnj7!b>}Z`lo!t=!9sG*Hvvn zJVq~yg{V!>OJh$r-Tx3pk!+h?*j7#dPd`vcr}lGp&3bx6rwhlS)W;lPiWn}tO@m6aAI#`Jwn z;zGUCZHd*p+yvHfuY~^3j=wwsMzAU-Kv?*RrsxjMMvFMakJV|ZmnEb WuH9O)WcJgN`HTsxRI4>iaQ_D40uwU; diff --git a/Libft/ft_substr.o b/Libft/ft_substr.o deleted file mode 100644 index db439e35cfcacbe79efe23715dd4f782507200ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1056 zcmaJot5L8fz;I&Xah++>Beeeoh2-=_*dBm6!AxTTR!Jq_`wI#26 z(2IXSJoFzVCrMPA=)vwua?C|AutK~=4~;X~_vl8@fqCD2GxN=xUEaa(ABXb*#xcMH zeHOh*K>{7^Ec#XA|1eM0dI~kinLti+$%L?TRXd0SzQ*pY9dR9PhUU>OdpLj)k7oqh zgvf3bH#1pVR7#H@l^zPQdP~;`^_+xCa-2iEbn#GE%&5`?gvjN^dO1_f1z91c_j{#8 zNhQjwd5XdbfV_?gFQcD9pUBMP5J4xSODXSZJ$_sQIqD&W9yZdFPc0g5_)nbX@*8*j z6qmK3toU4}`!4fko4d6kmsaaLX}N2)__emVvp}T7x|AH;nN(OGt3x;K%dgz{$>jl; ztf^JaiRygNICL#ve&&Y9WhZEmtUHM6DMT>F%UGAs(f9CnA40u7?$ml E0X|8}Jpcdz diff --git a/Libft/ft_tolower.o b/Libft/ft_tolower.o deleted file mode 100644 index 940856f607c9a3610ea6a8646714448622eb4e2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAa64fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z9Qk`d76MsO{QZ1DR=4Yq<^u|yu76&#L3luBx9gwS!^j3h;{n5Z5vU@@svri&3IRp| z9(IliKvgP0aTy@)_zwZFcw}(o6KG>{<^@>=13=|$AcOglO^;72i7&~|$uCbW0;vN4 Db)`kr diff --git a/Libft/ft_toupper.o b/Libft/ft_toupper.o deleted file mode 100644 index 137ae034299c5876940f6875451f8bafc47236ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAa64fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z68U>T76MsS{QZ1DR=4Yq<`)W`u76&#L3luBx9gwS!^j3h;{n5Z5vU@@svri&3IRp| z9(IliKvgP0aTy@)_zwZFcw}(o6KG>{<^@>=13=|$AcOglO^;72i7&}7EhtDW0;vN4 DyER5X diff --git a/Libft/get_next_line.o b/Libft/get_next_line.o deleted file mode 100644 index 3fe2879730db3b1523d6228938a97ac898c702c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2808 zcmb7GTWDKl9RIS_?pU{;4C-a*SV14Ea&(RggCQi?14l3*(#jafX-!UTHBB^4Seb-H zPAfS*6ec*lqJ8Y}#U~#`)`_L*TlGO&e99n$1dh^&3bB^P-~YQTm!^UreBb|m`!4@; zHuwHGIKf!xIKzV3gQ*?EGKh(B2D3Ck@CSp(`3=kCL#56$q$d+i%UzDgw~9N1~(ACPU=`^ZSEpRHL&b+m5Ga-kXSL z?Of{WbSh!nuZ}2P4j&NIvSbdSIPy3CAY)P_cR(oEwlifMy zNwS9+n^HKz3z&~#^1Ssv){9Alf)c-oJWc^#274J0_UtuG8Wf5q+0yaQx%}TTW_kB4 zHyHHtyKa7$=}Q#MDw%b1R9nO1=XR~7mx!#=VtHoOa`RQDFSMzC4w;|dwftO_>$&xY zK7X1Fd>HrDZrgKz$< z>b1Q5j+YA{*s**nN(Fo#Zv1?pYE|sETE7&r%a$M8vAj?XB$Wx>xiHh`4N3airC1=h zNhVSoSE_y_Oi^oVjYflPh4TDG$nS^uW5_-lZn|#Y@_`OtT(7O#$s4L(FJHI3+|KH= zu<5MrBzPrrABi+-KXN>vE9K?`6!R4@AI5&J{KGTAxv^&kkm7*pvU0rzx`?$j7M?{s z7OeMZgkyW>G_n>^`Hn@wfWV#8aKaCBo4k;#G+q>rxbbZYBCOpyGUAc=a)s}mH1*BE zGxvRSUmUc4t^hM8>pxHDT{0`gdf^T~H~$sQijP(F+ry{bgTA79!j7=?i$hO|@3nR%pZWN^&!+ z!jl!>uztFW%eX13^~`O&g6+ZN%z%yyHS-LDOJ+r1I@g|lusA^byp2kN;(%7$ zgu!9Es=h?Ws&eyV!SPtdivJo}9HxsWOBxFz#o@5JtmLxNJYQaORnprn@9li^y`jIX z(xps`$g)>db;X;0=*U9E*g!3 zs;Em`>Lu(z#Fh0O^7lRJ$9K#48W7($<9!J~#YdRv>wtLw#ya+q^lkxafWD;P1;isW zE&!sB8Gj)kvil4Wu8cDh{*F|zC&q7-6Juw;!$S18oMdM|21F?1y5wJz{4qedHmIk= zl`$mw1wr?YOBj)GP(lFG@BI+49}d)i3w6kT2-JB+C9Uoe{ST153>zA6U=pqF$&;XU z&}zhiw2=JYpp_=Pm8M?bO4BoIrEhl7A9T>np3K^_*-U&YqtJKK(!PRhAzr_u>#C!C~{bp%enCKCcDs}AqaO>y4LL^7GC HtziEGhP9L- diff --git a/Libft/get_next_line_utils.o b/Libft/get_next_line_utils.o deleted file mode 100644 index d4ef3003edb8ea27560f9b335abdf86315d80376..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 884 zcma)4&r1S96rQzE>DO-1!Jxw)x_0R#bWv(y4h0bgb%;@P#UM3gB?*GS43@q0=XmN; zAav>KCD==#P~cHIXy4nN!6k_L;LZ2FH#6UR`{VWNbCO_8n`2lI^N21969KFv(v<&# zjNI!>RyjNw1^E($aO{>7>M+k)C%IX!lrIJO(JUz#5M#L|QV^n8uU;04j%e1d&TAzh z_V?5tu`d%-ayJ&vl7^og6_pu;uq&e6C{*pRCd7~V)bq(Jed(th78$E3O}vdrA%biA z0*fOE)RgKO%t1O2UIXJkJ48f5cU45||Ix?Xedp~Dle;$~?luS9vqs!w+_ij2pYK=$ zy+iLm$l5J~=^Z0XN4ytw80u=<%NX1{fRBdLuxcd-bRtOHUZ{K4m}Kc74ROmZ2F-iR1%b z<|b+z2!De9fDauYyJFnOc9-KaeF5Y6)}!PL$$7~j+KLtd$0l)%@iU0rr diff --git a/Libft/libft.a b/Libft/libft.a deleted file mode 100644 index ed823d74fb626a8ff88249d7eeba8d28dca88202..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37376 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 diff --git a/libft.a b/libft.a deleted file mode 100644 index ed823d74fb626a8ff88249d7eeba8d28dca88202..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37376 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 diff --git a/srcs/builtin/builtin.o b/srcs/builtin/builtin.o deleted file mode 100644 index a61025c205fe5f45f570d18da51c7659e7d666c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1644 zcma)6O=uHA6n?2Sjcqk6SWpn$gF-=8MJPx>sID0yJ7{!9#!hk_jYF6X=qFzynXL`Gw++X^JeDVuWx^bh*C!g zALt-7Gk}i`g`9z|@<0!H%5x#(+9nvB#L9duLdbGUDqrE*{M_swPP}++0OsS|O?*!A z;2^EANkj-Qk_|st&;cR#^Cdi&^!Sye5RG-Y2_5S5>b0=wNzn`z{h%bo%=GRcoNGG4 z*1>u3@t(~eRr>~aAEglGs;D%IwX#a+u5V7yo>arMqWLtW5u$41v%LyE4UJoo9i}vt zg=simMI9W;q=`zf$fsLSQ#hCPm>E2zf7@OA7{VeEsk z@R+%9LUp-6m2*g{k1_v$x8pOWY@oYFRVNdaRJ7io<~h@#xdzRFKUe5aC76mY=U#&j zq~a;45MS!#cii@C>+UPBM5UrE+5t|sowF}Q!&LUFbt<=fN#SCNnn6^SfMLC1TzB=R z>|Pb7R1)89xT&QArCL_X8Xd|!!RDVw>@0Nk_up8O`%E`ZSdRv#j`L2iY+)`o*Le?% znDZ7EcVcWE7WF$F9e<$X1y~#rXIjT|Iz9r6Gwb{WC-Z!VWu8rCofkUJZQytl7Wc>r zG`Ze%1pf5!vi?SKT19*M|uNJCAJ_6!i)4wnMfJBIgSyti^J`zlW Hb3^|C&T0xd diff --git a/srcs/builtin/ft_cd.o b/srcs/builtin/ft_cd.o deleted file mode 100644 index e9758fb1b7da1a739d7bf5be892802979f0e9940..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2432 zcma)8QD_`R82%H}^qMxk0}aF?WFIVE(XA*wXe)s$CNfHELuqY&km+`BFLxxloO^re z=|gEqH*{GK6cOy3`qT#>1PO?ERY)Oy2&95Y@uBpk(11dpB(&7}{j;-om$fMlo%!bf z{{R1G_Mf>)*B<=!&vv4oX9xp&A9|`6gMp6rJo;sJY|$=q0$P@H&|({!#9g~dO3!I{ z91%4sPmZ5C8CxAJ^G48Ek8`i~6YXQ7k1jIAO-j4wx#h~FCX#xw&Xo3lwk^(#P;a+Q zLT`4aYT2HwSI(C!1u2h?wVjyU()-HCB=*JBeSD*h*sW( z4NCht73M3Yu#pwbTrWa(c79lF<0VC~5;1{)3)$6)#7!WvPnpH$^#c1L%pQ|0LDH6wUCi)+m{ zR0M0di)%>eKE`lj7@wy6&D>cy)%Hd63w4a`Vtg5U)-gdb+CQ7{7*6a)+TX$S{B=Hr z_9+ciEw5x8HulyA=mLr3$HvK|<44CPPLI*KdeNA(rnT3uyRK95j6&IUY;V^6Nb~2c zT8Z-y8}H5xIKMr#oh<~GpFyI$p z@-qW|Xhhq4w4DN?-sU4X+5ZOyynE)Vwyy#4Mw(YO|F!1N0@2J@G`^(y+xR9(j<$fH z%+IyG2*fL5dO+4MM*g8QK-ND3>;t~4{aNkb14IqXzp+>fcw6HtkoUa;#5zOY0&z{u zZ?t_G$nkSPj{8va?*TdPEo~nJ@_t^^Hvetl{Tsk&=?F2WG!MF60kR#R`w7@xZdy#( z2NHH6VUHy2M#6q0Ve|gG*V`M}y{MsT7b06*xHk!#U+?aGl6J|eOgggtDeYB!v1c%s9A{4R?hR*d32~+8 zcMwXSE*Q|x2f(Az-=IHz1b;vZkxGlf@x(|<75v@b8=XC+@yZ%cn`{ST=|CrW0=x$- zufp2STERpFL;la`qZRTP77mGeb``vysLz1c`~OFe^WryN%r|&3TjRxeh5JrzUUmbm z!M&WxtVcB;U9zS-Os|Pf zk8T*qSdV0N1X15v@@9;pvs8Vzy1Gi^`ldH)6wT@lWmnYr{d3kKyp-U4=AAl<)uvt- zb~+%j>JqCi$9p(yQbw`2QT+-i->LV{P04z1*`_m|cPfN|{z>TmBixVKV3Yf~u#EE} zuD~g)8S^z>$}aO#yrN=$z9tn6;N>eg7Wxp7P47jXHBE#gDRb}a0@}Q+c2X|?+srA{9EN{CIPw$i zg7p53UDzFd+;V9beM>}?hwEkbiptY{Y?yZ!d0jeB_w!HQMO*;hSo91eex3WZ-Kp&+ zdZYLcNQ%FP#4q|13n=;&G6Wfe0kzfE5<=QXAT5VzMEdZ`{%z07}FkN7{C#*K7hdlgN}h~j52WE8!wFWrt-h5@(kCjbVC*S zIr;2-(s6kycQKQj=KRd7_nes2R9>Gc<1*rr=||+JLidE^JT=SHg=97*7xd>hq8d|I z@g@dkJf*Tn7@G~}B%cRA4i-mY9AblDBHEPf+sK0~OFCookXX+qz}-Z7hTLucKl4f3 z|HJkx+v`?~;C5hb8!NhZCuUTm-TJe};z8(v)$&#~-)c2OwCyBX3oq)-sM-oo7Gve8 zzA_5Kshh^fLwyeK?kVHSVHnq~9gM6=fcufZ*xlWQhdL5iJLj&YpEHK5gk#1q6Zv{A z6FGP6k6tRGPh+b!>vn_uc97`U!D}O66Rd-ya(+Pv_zb|8CvW@KcI}41U){wb6eEK;7o4X ze&iSAO@SzZdQjT*e$f2VW>e%R20AZbwrubF(caSv`{}hrKSTq9IF2XGsvHfoMt3R= zq4?G<)qJmV3yq+c3Ww)IjI9bpP-!C-F$HA6SWL(Y5TmS1a|dNU({J^yHUh=_0{t#l zVEc}kh|37r>wqoGrmAz4S6&pEDrek7?0m8~J8sf^+&o?!H*=+Is*rKaWMKxgoNE?R z7fP8zYPuKd=JRGYnS1{pt|&iwY{=N>VwBH;oXT-oDevs#kBSF`v6uJpPbj}8rP5ST zh$;2T-P~vWQ3cgLc#CP}s1`kZKwmev%E2V7aA6DbgSe_*H8;nbx~i+&HCtrJRm{E3#f`+H+W4YR2Tf<2a5K=pk3lhrdaJZsban} zb7ueSNQjZ{esg~2%sFSy%-p;0TzmhzV+=h25dx|Rr%#Z6n;aBkN!z0xr{bC0mYBVYFFTjtx zfg`(xcpOT!EF*Y28~I7ko=)cf*pJ)(KkUlti0x0V*?y^RPY-^G_5F>glYtonKfbjj z3EQ`7c4e|AB2!pAVOOmtKs2Io%MKu`63N{dIV5JH_)&v{;hOC~7L|&Xaui0W1SRQL zm5MevqXj`MT9uiQYDC3k-GN-Q$zU)Ph0(AbOs**t+bM4|luX;7S1jLJZp$U17zk%U zyS6aj7aD|BsR_ZX7R=5c3x(iiX_*qUqm>v~gl?(sTW@Gp3U8l^$7%wbcIC>*({GJ^ zDYE}8{1GCuAC<@XK8Sobk#FQYUYE*2Y`|7|`7(JwJ@{(ZY>1a;ThX&&hM@sUXk$>R zzu2ihti(Tflk!i|tI=?Ac$qE0f1RPqm4i>e71@6Vy4t_kX8+0qFv4kWSHhiY0?db4 zf_Pn8Z~RblQ4&FUpPujkTA@W9?_$pibu67)A+;V_T`flCO00VUVluwixykF1%hvTu z(}_%Be~PO036)HP4mR}hD+22i%8Aa0LHna>t&-@$S=8Q|?Z#Ilmk;f(+z{uitC6#x zfdmT){xJA^!j)@-vB*pFv2&%X=dG)+g(6eiq0t!Hq~=7a8AbYqicti_a+S5nW+EV;e`@1BE7BJC!IG)+R#}f z%9Pa_-$crIiR3gL+P;Ndh#eUa9#k-*)yhco~HQo3^_)6K+MIHrX<&;2~vYxnnyaQEq(Q_WRz2c?htqINO5K zdSyQ3m)09|GSeIEXJ*=0bjasqsg$ zDC2A&X=4}oJd@`I<_)a%E#kn;D>O3-k^ncyvc$?{9cwI)km!oNkN^H&hdl41X-AH-`&qV2wIQ+}z&q_A%Rr^=%3S8);O z^9*!Q0)I|AOGW&Xp)QLwh!(udDwr|@CCb3RA%wzkYuXQp$xF}<`cVYkxKl?ikIH^G z?I4ie3S8e zlvspLKOsWpXehe#mhc7Weja>!uM{7m0?;@=LOgbR^heu{?qai2?-~S8q)Z2-;k6%-IoX;)w4nc3= zy3*skZqj=h?+Q4$%=188%;rZ(7%I+uANW~d9f;D{I|uwU=u0gBDa+5Z{ChxL^5)&Z z&jI%`e+BD~uK7BU#$N=IUJi(tI`fM_d<&TO0O5kU4Tw(!bE!{=JAl6jlD*e~9zy$=9k%DjvDcQAiDFbsYZ^@{Hj^CEB;a1q8)W9A=d65uP0 zF9ON$?*qy2H1k~``TZRrnn|brt-uX9hff{zKR}o^7lGv0pMW&weJ7yVw$#{nG zIAe^_UEv?n_0*Lw6H?UB#*$p6_x-_t{XtA{?_L;tLY{zVTx)k6;` zdK=1Cw)=YgqdMt~=cv+WZ6W^NLkp*rOX6;HaIFcab$y9lXsI+F6Q0wJXrXvL*Io?HlOssbH_dRB>t`dF`594$?%s*vXs-^j62cl zKa)*mG(YXBZmN(-XG#;oNhFixuQQr(PfDdU+yYP0Bq?|aIKqC6X`Mpqw5R>Z&|e)+ u0e7)8S{fZqgBZ(uB$n?A(muT_2!~v8+=--cCggoAt-0+kxs@AF2=QNL1#=+) diff --git a/srcs/builtin/ft_pwd.o b/srcs/builtin/ft_pwd.o deleted file mode 100644 index fba9ce086e66daf4e954266dddfa93eba7d405b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1216 zcma)5L2DCH5T3-4#%fItttg0WgQAy35rtj~iZ1TKgGdA~@(7zv8c35Rc_E<~5K^Tf z2>l6OJnJt|#DGVyJ@z6fM96XR(D=>U*)|CZ4$S-B_h!DCw>!LVzkeMq5hYF$7I+Gt zNn)|!u#50L4*bJhiCt$6Eas?5>|BpcDeZT4w2yefc~&^#@opp=uE*K{7hB=86uo4K zO)0OXo7H+n4wRa&7uU&4d@T2i^$QgD^BUVh(bKA3?^Nq0r5-(qa~XdKu>^Ct7yq*Z zEbLKMf4< z(;fq%HwZX3*0N`gPyT=N)E#_x`(w-f>V&KUPIy4>us8Y0Ma>U#2Tthrdm&|Co#&)C zn|pES(@D~>7rMjtBvSN|ynBU{hwTso9_Rm>586xdpnre|g$+aqcqtxQfAjWjlST>-%$x7u%-fyaFMob*4-&-= z5DsuZINpcD1cQ!)pKxFwn&4beuLLGBGai$au3d9OJ+$YnJ98a7(k|&PTAO^)@uPgpvwkSJ=JhaK z?}U9TxN5bGwR0R%W7Kd_bj{4*Mi)0!oj)HmKE%BFpt*@FHIYg}-NSZP%uK;fm(7Zs zF1x3OXlRltU0#$^j%!{q&tyXnoRrV$G_ng7JJK1gi;AJHx2F?W*6Qbd;zxBn_TU!9 zYKd6l@L>EIP)@^t5^Qc`bdbg;x^^V-xNmAW+7-^51~2J6-RGaYQD9<~lfRLR??2gs z#LkU;hXf_R;b8wJB>UfK`;E3=hBEma61|iBO0e3=V~|{Dgz*s*60OvDEYHF=phUzf z+tG750lO&NdEqTmSO13wC1t>9CK z!!E%0rSK2?=JJuuz&wX0iHn{Xv(>pRR?(ZCOA3bq_=*et|i-``%3juG;?aZ1a z?YIQc9p#zOuhmBIr zBR91`L}D+Rw0@Sw@u%>?$9|F~Sy%UZ>veh*XA8@Kru)CeIzVT3)2PF;hi1^h(_?MS gz_88}lwy}cq!r%6g-8n7l<6aRCJ*!}=1PMg2!fb} z;Ico%U(giVeSd}EqTP#>w&%P%kH&}#56ql9cV^C=dz1I$=GUJwk-{T^gOyamQ%2p-D)kM>R%;3dT9mvz`6SWDyF z55@bicNrf440?yZ!?Wco+ArjaBH{7(;KR4`Jm2R5;n^FevV5PXec{+)Z}obh#m~<= z;)N&s_xOOmVoTm1xRamu`%*aAkU}>o1mk1nb5y;={xewk*TeKhRwjd!;@gQ)>th{% z=&IG(Id|$p)RaUPc`@=UFz|c^4mVt!1mo&66)=v^q>c_(0sI`~#^mXyX6? diff --git a/srcs/init/init.o b/srcs/init/init.o deleted file mode 100644 index bd7c4287b701bdeb7f689f740882fa55dc1029dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1540 zcmb7E&ubGw6n?4wk!m#&tVAp{phyrR>P3b6qiA4IOGPS(ScdIp+XmAlY&LBa3c^-# zSp;wDMZAcAgBOdm(B9OO*LV;VBIFo)X#C#pY_g5^;DecO-uvGB=FMcXpSON*4-iH6 z5GIUXjA#$0BnIpV#xo{%F~Pa8l)}J=Ch=fBHYqKmYWZv5pUT{w>iEIxrP_=2xVD7p zAd|iHm?1DJ^|EE=3UewTxv3)LXRbz=uc_wkd)Gxm$Rm}VE6^y{neD-ywZz8C*0ybqJZ);&SFkrcxAD@)Q`c& zn{qsggAM{;0rNoA(=Cj!aV`)3UH;eZ2v7>MH-%Gata2kCPhBEO@=j4$Sru&XJGt?(o8NpSAMw=>6?ekY2e@l9a(k3tpTma%t4o?E1mA<6n7gYQh z5KlV&4cb_yKLC-Rey8vakab@B{;&bW|0sP!;h5sjDgLO6CxOuO+GjioKZZqM{C?RF z?(I7K5KXenpX~BEH=KXD%jbU%_#WJaXNP@Xc>p+TPczBCSOgj!qG->F996SVj6f?Gmv3tc>z@%YVy~e3ba=;Q` zxqla>y(Iy&qOvFT-Hi3ht|y*C+lcBNg}#f`qf((oX}kq~G(c*58T$ef^H~Qf6^bKO znoGWxg#sgYFP+@^h1`N{eXyEH|-Oo%q#ui4!1}XssuwxtqZ9VOpJ=`}L`(_u1>sPipofpt#G5?4t0o@y@K{Zpd3Y0W#0%a*B;Z|GpE{z+oiqLX_3_U6iTM0QM2k+T zl<@e&#o!zsn&ZyRtJpB}rgA4<!>uvGfdddw3CUGz%o)@d3?VI~Y7qI$JOLIAC;{8^6Qt8?h5Jr=HLs8Kn_+R^FdO z{`(^~RuCb;J{GW#1*VVElL5BC-B`pf)a}&AUJ)a>Qw5Dr9!}#n`y${ba2?wP{cls1vRCyKTIhVc>-169c8Z_ZOOq$)S zkJX4a{g4Hp<>q=^KbIu1|Ljhi$Zw{kIhTucvlYckTZ*w=7e>Z@=|`zxh_>C z-KrL+u(n4jeS+R>d>O5J+>P8!EQ`Rk>7(@P<;Iuo>5vm&F8#1U`ARwA<$^{xv5a3D zZr@d+hv*a&j6@UfFb#!t?^=iL!0eM~-k(csDFVXy52K zF>^AR?PZS<;4g>8uRY=wEHN?8XtyX8_^QNP1X6)FA!Sh+tbw0Ja;Ne}4g7$BS?KgJ z7AizSkv%)Lv*6MO9!71wjliNv{~2p>vjN%Q9*!_a4>{v{;-q81wBb;Q_Ogd6yw+-bZL?-lWt|Kx)u$;cPJ_dI^&FpF)@+WK*y)D(K6jA(~0ZnzgVWzzY>1@(K0GMT}QVHNr?1|0u!q|GGyJ>D4fWGFLhYA+a|P4O1i~REEJN6 z%Mz#_#EW?J>cNwTq9|4mB6{}VMMy!Rha6&2>-#&iZIYTpKl$_L{XhTxKeMx&PwPMb z?q)2oi(!BUp;`-u2o!P%dY=MKBuR;oUdn;^7@Ulh_(+7Xt(-0A5|6}gj%;Cn_CoOx zALTB!GS)%CAX_BkixB3lolT`DltYMmKA#8ao_zHiQCO8xi25@#(=&!?i@EfjRC-K^ zt3#VXOkSyk0p%=%kG5V#0TrsF6v9f1@vJdz$%MxKykvxuimw+u>L@+W-mQ>_Ph&g? z^&W-3hqXaTs3`fhHpW7*k74PUkxV_Lytg->&Zmh~(=Ef`e*8wM9;pXSX{xH)E2WY*!Q01k$GA|`6UefAE znF7+BhD9g6MX2EpX!^32{{ab$t>r|a>>mH##J_XSSu=wqt#(?ia^rFPk5G**OPf=Tg zy{_yfSn@wX4YH$NRTk}qCB9>@#7Ey!y#LV%tW1%17`PJ-{~WFW>%hKDVNwIx@dn%{ zaZ6Ao>}!ZqZf*Xp20YM!nXogHR$3TiV`3^bYcnyE%}n5XDy(calNDAj1>d+W@Gp=y s4a_GzAFyH1&8qa&yp?5Q%F2;3la@J&(ZF1in_0`SEr!GyBR$6c0jRoQI{*Lx diff --git a/srcs/lexer/quote.o b/srcs/lexer/quote.o deleted file mode 100644 index 072c3049740e7a15308c23ea12c1db7565b9cabb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2820 zcmcImUuauZ7(c07m(JRg$%b<%#!^>B0-b*zhA1ia;uRJdvcQm*(=1J!vMs6kgHZ_t zZlk%q3?@u`w2wZC;M2wk)5$Eph|kSK+GLo3LVfFMZT)@soO^S#v~vo6^xW@!f6kZR z_nq(Sy+3dLzH^8%-y;kUtOHp7K0Jb0peL~^WY~v-I85|BodG#AscBI>A|Y~#LQd|b zd`>%mt|L3UYX{|y;?Y@sfUy9n4zLn2hlGe{bD8OtpJ}gb%hinkrcC;*yV&ga6i6qztqpR~mIJ5#>F(}sZ){$svMAVXf^GZ|oVv}Q2{TWA$SvP8qs>aB!K+%s*c|5NF9-$} zv$NUI79zU&KIAMkztC!L6tE`FW7EHK&Cm4wywK(+nF-~AGo!#gBf_kZp>|;MF<1*hz?=oK@;0p{M@?VAT2=q^3E#E_TfE0el#)kr* z^u76*dQIAX6Yx8~CH+($d-`31-#33sKb6m(e%IiqZ%aRw*Pebi;kWRY^i%ou_?7UY z@-r6t7#yWMHU$psp<%_3EB$k*6YQaTs3%mR_hel|hr#LmL2x?%D;{({3{Lvjz)AnK z(tid_C|`(%3=}Hi0l9x#@v!1S#ldX*8So)E)=2>x!yoI BvZnw5 diff --git a/srcs/lexer/tokenizer.o b/srcs/lexer/tokenizer.o deleted file mode 100644 index f0849c8da851a8b86a8720e147696bc8b9003a04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2420 zcma)8-)kII6uz5o(n;DnE3IJtK^L)DFatqE3jINX30$zjAPp2T+-_zk$ zaiuWX(s3xwLqYrtd=(KCA7V6>1qIuOzWEY_LLytbk4we2-?{hB&SaYn9=LPnobQ}( z&bjx@?B0F+@X3D0Qu`P#SZOR{0GBKlf$q{m-*)>v;2w_(|w@_Nt4k32(MLZ)Kf2iw>@^!h9iTdpF z<>j31iE8Oep_CWm++-KT%{^V$HSO$xk6iaqpYCx7r4Y`NSa5Tf9hJ~q-;7TBQS;S? z6rVQP0mhc1d(!V~kSS0jN^0!gPA?S63vG1Xg&t|ZaLXV_1oOJ%r`&k}5 z;C?I1gL;Pt)iw`iw|F?!;UVMU^cJ^=C(X6AG2wSUHyiJQ6kr=*Q}R<}$VdHOQUM>8 z#_}k?d8UXR{FZG|$o3y9CqZbg9WngJZ|#69PMa&Q_JPit4H`xsViRP4vJyoHKilqJsL6P5qI&ugqe~i;L{|8s|7(id zzpK=&xiYmEK5VWW-wS8v${_IVZexRn45x!^{zOA1o8bPP?A(TVY@EsS-g(yTrktKc zjfqn~Z8kpGs{r8o+3n_d8pBGxZiNPogt1N23Y#EV=AKkIgano9V^=D?QtCwJHdcG* zH<)dyj)SR9?$nrFq^e52xC9r0pDeodQLWjn+ z&T0)M{WRnz0@e{s@--IO(Rqz&J34>*ND>}Nh?|7TzUi@@9-Cs5@gMit*Ncr zW5ZsQeo^sqUbUj(!d1tW#Q2MmuP#T=AmaI)eTj$*C2xU=3jTl;9r0^V&2%hmbV UQV+6SCr22nv~$H`*+%`(0Q>axg8%>k diff --git a/srcs/minishell.o b/srcs/minishell.o deleted file mode 100644 index 56d17b9875df7765e064ce88406a514bbc7bdb76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 884 zcma)4Jxc>Y5S_#r#m^KL3L*h5EDS^o5wTD-u!w?a0_ldRXL4XpF?$#VK@fx^2>zUu zc9u3478W)_1O-bGF}_Lm;wcCYynAmxc6M%eZ{A-%JBUJUgbxq_sv_b5YzUYU{|~F0 z_?@Zoee@)O^c7>)R#`W7(@&?e>2Kdx8%9V!ndLG})Go0IoeKHJytP-{&uwXTokQE% zW?otHbHZ8U#0@9WM`o#l&8Se{#%vXM=O9R-6(fFnsb{Y9x~FB&f z)fnQ#Kmm=!{ClQ_zSwzqvDg2{Wz^tk60=||OH6{1OH6Zy&5L9!TQ#nnf%Qh~(KS+nP%{r`;0qrfctN O+aWIIf0geA5k*mtXc5Fv7SSwPjOf4<5<(PgA-Bi)#u*&PVSIyAFd&Q* zj)UZ;b*;i}yJ#UJ3b}LJwji8=g0~6@)4p?m9A~se2hW^)&iU?lzx(st`Tg^tld(V> z!wK{+Nq(lUOA zu^uY5vjqy;IFHTFWSp4CbLshHdXn=egStm?Rq;Gm#RSMm%NqEUCWVjy&fNr$XPp^W z=gs?~smJ*Idcei<%~#pq!ja5AEydKEh8eC~BHmO{jQ_7qM=7;>6R zTCvoB+n8PcZWn)8ebw?t-!Hpd*t08R@R2UNJm%Zwof=WvmEk?R+;7>HD0+EootABM zDnk~!U9uYiDuUV3nq4gT%vgL4Y@Jy8s-m(K-8B|3AP3$D)+~mZ@n&Obcy~FvyB07? z*fOhM7l1;|uH<~Rl0Xx)U;l7;cqr*5`c4a7shbKbh1$ufaWQqvn%FdMM3~yYDRy4Y zL66qdZj`P{4cIajGv+5cVZm5mZ(1;T3ijxT>MKpyHls9uRKOX~{!d$rZd9%{&~Srq*Yyzt?;f95|29PZ;3_;oE;C?nuumIQm}S9Y~zg zbAm4hz2FW#RPh_M;Qfc*BI31$xXK@>{3|#y482E$g&yOF=HFB?f{1>Hr6PjJpCR_5 zq4f^wT%Ffl)Py*JEulKAt~n=`-$SU6(tPlRTT8N_fZelp9An#oc_; z<8z+l<>naAIN3Qjt5C75>v%3txlWw%R5CryGs%q3V+l7l&Ar)aH_g2l8T=pq3#0B= A;Q#;t diff --git a/srcs/parser/syntax.o b/srcs/parser/syntax.o deleted file mode 100644 index 9d57e733a1b49ce97b83836e5693a417becddafc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2720 zcmb7FOK1~e5dM>H0p`FU1z?`OGBKc3t5RrHt1UoNCGt}NLjIXf%m(ZdZV zZc^<^d&I^9hNGQ5>JoxoT1qLcVL9leFIy^Let$I%`po%an3MAP)GfrYe@}8Jcn#Pa z$5{IB2_ML#40ue8cgNbO5#1uKWX&g$O{Pi$Gi~q;Sl->;A8{Zr!l>abv6`Hz(+<71=GPuH`o`en`qj~ClmVk! zKT5Y5JHC#Ua@o}AvQz%krw zeg1RhUo~37YRi#!?Z8(A8hWe4J2ZHA0RB*icWUsi0DMS?M>Tjf08aq!J$>FY99U6% zAfVNXE~JaYd(Gli+fA2E%W?9KXEZJ7MU}an@Yr6T1mTeB)*en(g-nSI+fu(@= zEiLtua@*F(rJQZiJHkX~3Q||Lk%+NnMA-uVdu*9pz(2qr_h$?EWBilZsPY8z)7wrI zx^_Z@%CS&vd1sVrZh~z+c={KA?h=V<`Tj4`1{NF3#4ue1cRydxcCGHY%i9ZU* z^R&d>r+kd#xmx000yjLP^6`8DTyMnt2gbW0v8vuL*a!ZJ@lTMXKWF_Z>$h0H!TM>| zkFov}K@?wur1*ENzhwOZ>l3UGVwZ$J2MJT}YxIm%@jH;vTqddC3E zewHRn2+zLy>y1*VD#fcCq47xBKf^1U7I;DrPHbqjs+JdEY ztZdG~doARUw8}YG7TvU4DmMIuT)}E6cHV~KeHG+|bmk(W(^+~$8ikr51vFsM6J-Cd|V`l9C8t|pb&3Cs`2}0W^EcRI57Lq|N7?p|C!zW@Z;OB zjf_RsF+4CkF{2%L^kQP{!ki<=8sjx3VjQ9zj8F$Aqe*x)gmCPlqt;5lU|znkqKB)S z8i(*Gx3-?KP2}uk(EHi`}9IA-D|Ujeu^pRQv?UndRUCky|tyu#=+!qKTn}*xqR}XuiEId{I`Rw!+gb zRk6ip#4ei4loFi6LvnMEf%T41qy4BU-atIqw%S-;3kvXT|<_AjC8euM>>AX@R>xNn+XvO*o7*{Sl8hgiQ~ zolWq$rPJX#&=zzKwO~py!jaN7ljqPkw6H(l%}&r3YUsNyUx&~}GQ9JTmGLjXdVv_b zy@vm;&iKBDf4j1?$kcfjDaIr5%^RbXvk&$?nB`?^XtNpeU;|s@vmGb5gx?{G8zhXM zDo*oc|B6c^Y);2%zW zhlvqK;FpxKQdo})yEsmI$|>YmToaSwI&EiEa^6nmtT84e$cS{O^G<$z%2xiIJ(0bJ XHPB(dVyCki(sH)4S*dh7Yccj4gp`;> diff --git a/srcs/utils/list.o b/srcs/utils/list.o deleted file mode 100644 index 34d4f239cdc64565d9bc95294badb241baad5146..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1376 zcmaJ=L2DC16rPPS4ceL&Jya2zgW#zmUW~Vvc3}krq7}T9aZNThn5MyOY$yZ*slu|C z9Q*^`di27giPVPn1K6$06)ZkDS>Deo?i*K5qv=1mtuNJ|%d_#azI6dMXwDIC*AHFn_%73>A~U-eu&G zGwgh@LT9LM5#0e@KJI@59V)AP)IDbO05JYqG@zA!W3m@I9IJoP`{Ka~^&32K`-J*M zp0~E{3#(~c_ViS`i=-c5w)_tt+4SFDR{sLkW@v+9K1&&#c2-KINPbh=LyyrAy^L{9)I)buWSgGH< z-x4tO7~}uZ1kTnbOM$G^gQ~wNIIVc~K**=kZUNN>_h>7mC+4J_zEqy<6B5Yp`rnx>L$=pqD!twLCY z{s}#L^ys~X9xe3ZKOm%_uoofp(DZvVZ?dta&V}j^Zf6{BvI}TVS$gq ze{fKO!ydsGnBQOrQu`(7IC>I0_hr*M45HA+mM>M_EoIzA|0LjkJWGTIY^Y7m)7xNhfu^d#pP<9SjC$@MB0ZUwl+r zIW(bNzFLr1nHBaWl;3=<{!r?* m#`L-lqRmjZ!fM!VkzNaRy%pB#LAB|~YEa*41Ypg;jDHD6d8gU{ diff --git a/srcs/utils/temp.o b/srcs/utils/temp.o deleted file mode 100644 index a6a8d465e7054628bed02116eb5ee3bcfcc4c65f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2948 zcma)8QD_`h6n&ed$+FeXTCG$OGD-sxceS+IBS zgg{^uZ5$%~i1g12eh7Xg_#^hG7^U^2^urGeA_h^&!U_>YqSeN8=iRqEvq`~A-rRTY zJ@3Bz?tMFx+kgLduSJMRqrd~B2_xEohlv4s4C4|x?jzTmm7|^3Kr}{7L4)FvNa@-| zSIre3O}#!^!+Q26FQ9ld-Hr-znw(8yk(3rGGX>Yl<|f%7WjLOW)5^KO&w1+goUVq* zFEclrPiI_tA$KvG8<+BIf7OY}r9%oWvT+@Uqna(os%H#^l+vD(6Ha>8RtxI$i*i0+ zaJ-W^C&klpScoY-C;dFeaSZ=BMoctgkkF=N{}>PjZav((XG zEVpVu43?LVV&#e2%JM$}cd4WCKz>7jeUu-aWgU8~s)?ONWTS(+r@8bmyQ7RrsZ69ak<=b&6 zD-eaNJ`gZbOuzJAF}mGzZ*Px5eET$k(%12^&537?)+Hheqg8N!O~1d?Pp>Cxt)zCa z)gQQHx_+gF9dz?k^vHT zLz8OVcql;PZfH`i8-F5AK3shxZmAloH60OS`6L-uy91kBd;-gRi*E0e*l{IQ(ed63 z1;B;p0FAZ8>H=&bo0ZhI4$vD4fM38fDudg#r0W7)^#lB(1AtzCzi<)gM1FJ233VCF zvCVM*7k1T;7Z>10szOoxWtpLhRqDEl8_*s!d1r3o@B_7^yi}!hJ%UPYIGjqDb}?IU5pdiO4|9D&bJKRtoB^pm8<#wt zWuXlsz*;JqXHo zC>%sR0}i@DzTl2QH1YvGw(yc5Nh`I_Ka3YD$x)^D`5#es5qW1sM2hi9{DGF}Ww1`b z{shLIztC|A=O;w(k@&j}eGlr-FY(ZRarv&|`5!RggLri4secuZ^F5Ha2HraJIPZPD z^Eeki*~!|8b#tn?`q9^4444U@)gz*)|)HCwG z!uTb|3C3-VTNu+#BL2^)HO2b@n($YQuQC3J@fF57#*>WCFitXl1DdwzVQsR8^6m6L zi~)kamj+{fkLepp{w)j=6N9i8ng*aqC`|u1_;OxhMtINFVIl3@+tQtrX~#*=E96gQ w9{+v1LegtW&nG3`A+9XAY4<`wC@a?Dx1cIr; zvX>$rJo*=SwI?l9$kA(#K`LyZ!XAUv*5B-#wW+m5abVtj&-~u(OFn=9b}%SJ>YTs< z?gwv?Vu3+d!1u^Lg{G(w)Z(1PMo&S^VWE`gRz1qpq|~%MJDpfZGSjDZ>PJ{^oYxXY z{U}SIUw(CY&B=SJvhrkUWkIQj6TR`IPf`>C2w{;)KOuOMu2RY^szTXWb`$$JzBin` zrNd$k;F7zM>w*wP4#na&&I~wSi!meyz(mxB{6*lP{j?zGAyF@;z`aEGC+?lo8$U~* zk^WcN*t4Wxi~P#oN5b)83`a;+(zn~PQELn1#R!>AyG!oQ9UOtZCxgkhpUXf*GMH&g ze~3J?nM+d^>*g=rpX|!O?#jj|Yi`FFty6&KkI{VTS3-Yg7Xu?ZQaC#?yctb=rrAhcc)|L1j0&M+^BOAho2Qv!KHUYCo4oW4d%; z?*rJ_+)m-9F}gtmgfTk)|M<+~_{@LBXZ{sF`hHk!t&45prHIa59PzSwC9KnUYyls^ zZ|copOW}LHt}uK@O8j}~{zOl;h@Yoc^;u`*m6j*s7JE*MZ*zS1l={ouKlSX9NL9_0 zIXsx&M9p>huYu(cKm{>AA#xYZmwgXL2Dpy$Cctkwk8%7luY|nJf$n!!-fQG-avtM8 z(U0CzzYy8ykoY}jzo3TXRY-i8>^vkw1LG_$mJqR@p0a_2Iypd4W7{GHbPG)JZMN^T zO);WLFo$CM@o%=J?LJ`Cq`b20DraFqm6sNao;b2gZUN?^a;r<8TK62Uvd+F8xskEBMgrCTbM1KGP diff --git a/srcs/utils/utils.o b/srcs/utils/utils.o deleted file mode 100644 index f8dc405e8da98261e1852c334517e3c723936b9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2016 zcma)7TWAzl7(SCGalOt$D|mx!ph8|&8Xrm?S{TuR^I)nLBeoFEj+04T-Rv&Av$%)> zVWMUngd+MbK1d(?)>1^21h&&Bm1e@XvSt+jstRnVHvr z|Mh+cW7cO34`@F$)rUt03ONW}pujfr8x=xEs0Lzea57TjBM~AD>Y*Ad`@DPc{72i2 zMl}!dQEh90vE3BxXEzCq2;o=5O1?Ow9YSp8GdyPgAIw1K>uC%f`twV(WzP>qt#~b8 zoD$;nsSiO6#&p3W?aYCXmOeJf7+NIRL@7jYSxi^F*+2z*`)lg#mI_M}y_M2~HD5L% z!sE~bPoj zU-um3HMXoXP3n3F>sfEOZ8{drxXxp@rLj5soJVslw%{(?^R|k&cvMd_`{9d)@#VYj z^3Rriiw1 z+Di1&ifb!tvTyl#f)k4J($zzXv}B?$oM6oZF#^_j*e81IVP*IA14+JucJu$(V}I9U zGkoNOK;(<%TF6AXQkuaxUj&s(sUm`U9=;igq8fT(t%?*G!~aGlp*|FaYUmdNufjw~ yWO`i2?=75Wn(UJ2Ulo Date: Sat, 22 Jul 2023 14:25:13 +0900 Subject: [PATCH 08/57] . --- Makefile | 24 +++--- incs/exec.h | 30 ++++--- incs/minishell.h | 2 +- incs/pipe.h | 25 +----- incs/struct.h | 13 ++- minishell | Bin 70632 -> 0 bytes srcs/builtin/builtin.c | 56 ++++--------- srcs/builtin/builtin_utils.c | 77 ++++++++++++++++++ srcs/builtin/ft_cd.c | 51 ++++++------ srcs/builtin/ft_echo.c | 62 +++++++-------- srcs/builtin/ft_exit.c | 99 +++++++---------------- srcs/builtin/ft_export.c | 101 ++++++++++-------------- srcs/builtin/ft_pwd.c | 15 ++-- srcs/builtin/ft_unset.c | 32 ++++---- srcs/exec/pipe.c | 20 ----- srcs/exec/preorder.c | 19 ----- srcs/execute/checkbulitin.c | 68 ---------------- srcs/execute/execute.c | 105 +++++++++++++++++++++++++ srcs/execute/execve.c | 94 ---------------------- srcs/execute/freepipe.c | 40 ---------- srcs/{exec => execute}/get_input.c | 0 srcs/execute/heredoc.c | 58 +++++++++++--- srcs/execute/heredoc_utils.c | 90 +++++++++++++++++++++ srcs/execute/heredocutils.c | 103 ------------------------ srcs/execute/pipe.c | 62 ++++++++------- srcs/execute/pipeutils.c | 60 -------------- srcs/execute/redirect.c | 57 ++++++++++++++ srcs/execute/redirection.c | 62 --------------- srcs/execute/{setpath.c => set_path.c} | 0 srcs/{exec => execute}/sig.c | 0 srcs/init/init.c | 5 +- srcs/minishell.c | 4 +- srcs/utils/utils.c | 33 +------- 33 files changed, 629 insertions(+), 838 deletions(-) delete mode 100755 minishell create mode 100644 srcs/builtin/builtin_utils.c delete mode 100644 srcs/exec/pipe.c delete mode 100644 srcs/exec/preorder.c delete mode 100644 srcs/execute/checkbulitin.c create mode 100644 srcs/execute/execute.c delete mode 100644 srcs/execute/execve.c delete mode 100644 srcs/execute/freepipe.c rename srcs/{exec => execute}/get_input.c (100%) create mode 100644 srcs/execute/heredoc_utils.c delete mode 100644 srcs/execute/heredocutils.c delete mode 100644 srcs/execute/pipeutils.c create mode 100644 srcs/execute/redirect.c delete mode 100644 srcs/execute/redirection.c rename srcs/execute/{setpath.c => set_path.c} (100%) rename srcs/{exec => execute}/sig.c (100%) diff --git a/Makefile b/Makefile index c521020..bac1838 100644 --- a/Makefile +++ b/Makefile @@ -14,20 +14,22 @@ MAKE = make SRCS = $(SRCS_DIR)/minishell.c \ $(SRCS_DIR)/init/init.c \ + $(SRCS_DIR)/lexer/lexer.c \ $(SRCS_DIR)/lexer/tokenizer.c \ $(SRCS_DIR)/lexer/quote.c \ $(SRCS_DIR)/lexer/expand.c \ + $(SRCS_DIR)/parser/syntax.c \ $(SRCS_DIR)/parser/parser.c \ + $(SRCS_DIR)/utils/env.c \ $(SRCS_DIR)/utils/list.c \ $(SRCS_DIR)/utils/list_clear.c \ $(SRCS_DIR)/utils/tree.c \ $(SRCS_DIR)/utils/utils.c \ $(SRCS_DIR)/utils/temp.c \ - $(SRCS_DIR)/exec/get_input.c \ - $(SRCS_DIR)/exec/sig.c \ + $(SRCS_DIR)/builtin/builtin.c \ $(SRCS_DIR)/builtin/ft_cd.c \ $(SRCS_DIR)/builtin/ft_echo.c \ @@ -35,15 +37,15 @@ SRCS = $(SRCS_DIR)/minishell.c \ $(SRCS_DIR)/builtin/ft_pwd.c \ $(SRCS_DIR)/builtin/ft_unset.c \ $(SRCS_DIR)/builtin/ft_export.c \ - # $(SRCS_DIR)/execute/checkbulitin.c \ - # $(SRCS_DIR)/execute/execve.c \ - # $(SRCS_DIR)/execute/freepipe.c \ - # $(SRCS_DIR)/execute/heredoc.c \ - # $(SRCS_DIR)/execute/heredocutils.c \ - # $(SRCS_DIR)/execute/pipe.c \ - # $(SRCS_DIR)/execute/pipeutils.c \ - # $(SRCS_DIR)/execute/redirection.c \ - # $(SRCS_DIR)/execute/setpath.c \ + + $(SRCS_DIR)/exec/get_input.c \ + $(SRCS_DIR)/exec/sig.c \ + $(SRCS_DIR)/execute/pipe.c \ + $(SRCS_DIR)/execute/execute.c \ + $(SRCS_DIR)/execute/heredoc.c \ + $(SRCS_DIR)/execute/heredoc_utils.c \ + $(SRCS_DIR)/execute/redirect.c \ + $(SRCS_DIR)/execute/set_path.c \ OBJS = $(SRCS:%.c=%.o) diff --git a/incs/exec.h b/incs/exec.h index 26d7f84..213af99 100644 --- a/incs/exec.h +++ b/incs/exec.h @@ -4,19 +4,31 @@ # include "struct.h" void sig(void); -t_bool builtin(t_data *data); -void ft_cd(t_data *data); -void ft_echo(t_data *data); -void ft_exit(t_data *data); -void ft_pwd(void); -void ft_unset(t_data *data); -void ft_export(t_data *data); + +/*builtin*/ +char *(*get_builtin_func(char *name))(t_data *, t_leaf *); +t_bool ft_cd(t_data *data, t_leaf *cur_root); +t_bool ft_echo(t_data *data, t_leaf *cur_root); +t_bool ft_exit(t_data *data, t_leaf *cur_root); +t_bool ft_pwd(t_data *data, t_leaf *cur_root); +t_bool ft_unset(t_data *data, t_leaf *cur_root); +t_bool ft_export(t_data *data, t_leaf *cur_root); + +/*builtin utils*/ char **join_cmd(t_leaf * com_leaf); int count_args(char **args); void update_env(t_data *data, char *key, char *value); -void print_export_order(t_data *data); - void get_input(t_data *data); +t_bool execute(t_data *data); +void exec_cmd(t_data *data); +t_bool command(t_data *data, t_leaf *cur_root); + +t_bool heredoc(t_data *data, t_leaf *cur_root); +void make_heredoc(t_data *data, t_leaf *heredoc); +char *make_filename(void); +void make_unique_num(char *str, int num); +void read_heredoc(t_data *data, char *content, int fd); + #endif \ No newline at end of file diff --git a/incs/minishell.h b/incs/minishell.h index a32c769..5e47bb5 100644 --- a/incs/minishell.h +++ b/incs/minishell.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:05:33 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 19:09:20 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 08:27:15 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/incs/pipe.h b/incs/pipe.h index a51dda7..f151f0a 100644 --- a/incs/pipe.h +++ b/incs/pipe.h @@ -3,29 +3,12 @@ # include "struct.h" -int g_exit_status; +int g_exit_status; void set_pipe(t_data *data); +void link_pipe(t_data *data, t_cmd *cur_cmd, t_cmd *pre_cmd); + +void redirect(t_data *data, t_leaf *cur_root); -void execute_cmd(t_data *data,int flag); -int fork_heredoc(t_data *data); -int check_bulitin(t_data * data); -void heredoc_flag(t_leaf *leaf,t_data *data); -void check_file(int fd,t_data *data); -void check_redirect(t_leaf *leaf,t_data *data); -void recover_std(t_data *data); -int confirm_bulitin(char *str); -void mk_heredoc(t_data *data); -void link_pipe(int i, t_pipe *base,t_data *data); -void check_redirect(t_leaf *leaf,t_data *data); -void do_cmd(t_data *data); -void exec_fork(t_data *data); -void abs_path(t_data *data); -char *set_path(t_data *data, t_leaf *leaf); -char **join_cmd(t_leaf * com_leaf); -void close_pipe(int i, t_pipe *base,t_data *data); -void wait_child_processes(t_data *data); -char *search_path(t_pipe *base); -void execute(t_data *data); #endif \ No newline at end of file diff --git a/incs/struct.h b/incs/struct.h index 9f6726c..a75ee52 100644 --- a/incs/struct.h +++ b/incs/struct.h @@ -6,13 +6,18 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:24:15 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 21:58:24 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 13:25:48 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef STRUCT_H # define STRUCT_H +# include + +# define CHILD 0 +# define BUF_SIZE 1024 + typedef enum e_bool { FALSE, @@ -65,6 +70,8 @@ typedef struct s_cmd char **cmd_path;//명령어 +옵션 char *command; char **cmd_abs; // 절대경로 + int infile_fd; + int outfile_fd; } t_cmd; typedef struct s_input @@ -82,9 +89,7 @@ typedef struct s_data { // 항상 기준은 파이프 한커맨드라는건 파이프 기준으로 < 히어독은 포크로 진행되기때문에 - char **heredoc_file; // 한 커맨드에 여러개 리다이렉션이 들어올수 있다 + int cmd_idx; int oristdin; // 이놈은 redirection이 나오면 fd 가변경 되는데 안돌려주면 계속 그 fd 를 사용 int oristdout; // 같은이유 int parent; diff --git a/minishell b/minishell deleted file mode 100755 index 41628b12537a7b8909606ea31e2cd3ec61001906..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70632 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/21 17:42:18 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 21:39:57 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 11:57:28 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -t_bool builtin(t_data *data) +char *(*get_builtin_func(char *name))(t_data *, t_leaf *) { - if (ft_strncmp(data->input->root->left_child->right_child->token->str, "cd", 3) == 0) - { - // printf("cd check!"); - ft_cd(data); - printf("data name : %s\n", data->input->root->left_child->right_child->right_child->token->str); - // printf("%s", env_search(data, "HOME")->env); - return (TRUE); - } - if (ft_strncmp(data->input->root->left_child->right_child->token->str, "echo", 5) == 0) - { - // printf("echo check!"); - ft_echo(data); - return (TRUE); - } - if (ft_strncmp(data->input->root->left_child->right_child->token->str, "exit", 5) == 0) - { - // printf("exit check!"); - ft_exit(data); - return (TRUE); - } - if (ft_strncmp(data->input->root->left_child->right_child->token->str, "pwd", 4) == 0) - { - // printf("pwd check!"); - ft_pwd(); - return (TRUE); - } - if (ft_strncmp(data->input->root->left_child->right_child->token->str, "unset", 6) == 0) - { - // printf("unset check!"); - ft_unset(data); - return (TRUE); - } - if (ft_strncmp(data->input->root->left_child->right_child->token->str, "export", 7) == 0) - { - // printf("export check!"); - ft_export(data); - return (TRUE); - } - return (FALSE); + if (!ft_strncmp(name, "cd", 3)) + return (ft_cd); + if (!ft_strncmp(name, "echo", 5)) + return (ft_echo); + if (!ft_strncmp(name, "exit", 5)) + return (ft_exit); + if (!ft_strncmp(name, "pwd", 4)) + return (ft_pwd); + if (!ft_strncmp(name, "unset", 6)) + return (ft_unset); + if (!ft_strncmp(name, "export", 7)) + return (ft_export); + return (NULL); } \ No newline at end of file diff --git a/srcs/builtin/builtin_utils.c b/srcs/builtin/builtin_utils.c new file mode 100644 index 0000000..a21bc42 --- /dev/null +++ b/srcs/builtin/builtin_utils.c @@ -0,0 +1,77 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* builtin_utils.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/22 13:20:41 by eunwolee #+# #+# */ +/* Updated: 2023/07/22 13:28:22 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +int count_args(char **args) +{ + int count = 0; + + while (*args != NULL) + { + count++; + args++; + } + + return count; +} + +char **join_cmd(t_leaf * com_leaf) +{ + int cnt =1; + + t_leaf *temp = com_leaf; + t_leaf *leaf = com_leaf; + + while(temp && temp->right_child) + { + temp= temp->right_child; + cnt++; + } + char **str = (char **)ft_calloc(cnt + 1, sizeof(char *)); + if(!str) + return NULL; + int i=1; + str[0]= leaf->token->str; + while(leaf) + { + if (leaf->right_child) + { + str[i] = leaf->right_child->token->str; + leaf = leaf->right_child; + i++; + } + else + break; + } + return str; +} + +void update_env(t_data *data, char *key, char *value) +{ + t_list *tmp; + char *key_equal; + tmp = env_search(data->input, key); + if (!tmp) + { + add_env_back(data, key, value); + } + else + { + free(tmp->env); + key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key) + 2); + key_equal = ft_strdup(key); + key_equal[ft_strlen(key)] = '='; + key_equal[ft_strlen(key) + 1] = '\0'; + tmp->env = ft_strjoin(key_equal, value); + } +} diff --git a/srcs/builtin/ft_cd.c b/srcs/builtin/ft_cd.c index 0a39deb..2445f1d 100644 --- a/srcs/builtin/ft_cd.c +++ b/srcs/builtin/ft_cd.c @@ -6,13 +6,38 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:31:18 by kichan #+# #+# */ -/* Updated: 2023/07/21 21:41:23 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 13:18:56 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -int change_directory(t_data *data, char *path) +t_bool ft_cd(t_data *data, t_leaf *cur_root); +static int change_directory(t_data *data, char *path); + +t_bool ft_cd(t_data *data, t_leaf *cur_root) +{ + char *option; + char pwd[1024]; + option = NULL; + + if(!(data->input->root->left_child->right_child->right_child)) + change_directory(data, "~"); + else if(change_directory(data,data->input->root->left_child->right_child->right_child->token->str) != 0) + { + option = data->input->root->left_child->right_child->right_child->token->str; + printf("bash: %s: No such file or directory\n", option); + } + else + { + getcwd(pwd, 1024); + printf("current directory : %s\n",pwd); + update_env(data, "OLDPWD", env_search(data->input, "PWD")->env); + update_env(data, "PWD", pwd); + } +} + +static int change_directory(t_data *data, char *path) { char *buf; int res; @@ -34,25 +59,3 @@ int change_directory(t_data *data, char *path) free(buf); return (res); } - -void ft_cd(t_data *data) -{ - char *option; - char pwd[1024]; - option = NULL; - - if(!(data->input->root->left_child->right_child->right_child)) - change_directory(data, "~"); - else if(change_directory(data,data->input->root->left_child->right_child->right_child->token->str) != 0) - { - option = data->input->root->left_child->right_child->right_child->token->str; - printf("bash: %s: No such file or directory\n", option); - } - else - { - getcwd(pwd, 1024); - printf("current directory : %s\n",pwd); - update_env(data, "OLDPWD", env_search(data->input, "PWD")->env); - update_env(data, "PWD", pwd); - } -} \ No newline at end of file diff --git a/srcs/builtin/ft_echo.c b/srcs/builtin/ft_echo.c index 0a56ff3..156d8b5 100644 --- a/srcs/builtin/ft_echo.c +++ b/srcs/builtin/ft_echo.c @@ -6,46 +6,16 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:30:59 by kichan #+# #+# */ -/* Updated: 2023/07/21 21:40:44 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 13:21:19 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void check_echo_flag(char **av, int *i, int *flag) -{ - int j; +t_bool ft_echo(t_data *data, t_leaf *cur_root); +static void check_echo_flag(char **av, int *i, int *flag); - *i = 1; - if (av[1] && av[*i][0] == '-' && av[*i][1] == 'n') - { - while (av[*i][0] == '-' && av[*i][1] == 'n') - { - j = 1; - while (av[1][j] != '\0') - { - if (av[1][j] != 'n') - return ; - j++; - } - (*i)++; - } - *flag = 1; - } -} -int count_args(char **args) -{ - int count = 0; - - while (*args != NULL) - { - count++; - args++; - } - - return count; -} -void ft_echo(t_data *data) +t_bool ft_echo(t_data *data, t_leaf *cur_root) { char **cmd; int cnt; @@ -67,4 +37,26 @@ void ft_echo(t_data *data) } if(flag == 0) printf("\n"); -} \ No newline at end of file +} + +static void check_echo_flag(char **av, int *i, int *flag) +{ + int j; + + *i = 1; + if (av[1] && av[*i][0] == '-' && av[*i][1] == 'n') + { + while (av[*i][0] == '-' && av[*i][1] == 'n') + { + j = 1; + while (av[1][j] != '\0') + { + if (av[1][j] != 'n') + return ; + j++; + } + (*i)++; + } + *flag = 1; + } +} diff --git a/srcs/builtin/ft_exit.c b/srcs/builtin/ft_exit.c index ed42470..4c3705a 100644 --- a/srcs/builtin/ft_exit.c +++ b/srcs/builtin/ft_exit.c @@ -6,87 +6,23 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:23:29 by kichan #+# #+# */ -/* Updated: 2023/07/21 21:40:55 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 13:24:11 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -int is_num_str(char *str) -{ - int i; - - i = 0; - if (str[0] == '-' || str[0] == '+') - i++; - while (str[i]) - { - if (!('0' <= str[i] && str[i] <= '9')) - return (0); - i++; - } - return (1); -} - -void exit_not_num(t_data *data) -{ - printf("exit\n"); - printf("bash: exit: %s: numeric argument required\n", data->input->root->left_child->right_child->token->str); - exit(255); -} - -int count_args_two(char **args) -{ - int count = 0; - - while (*args != NULL) - { - count++; - args++; - } - - return count; -} - -char **join_cmd_two(t_leaf * com_leaf) -{ - int cnt =1; +static int is_num_str(char *str); +static void exit_not_num(t_data *data); - t_leaf *temp = com_leaf; - t_leaf *leaf = com_leaf; - // printf("%s\n",leaf->token->str); - while(temp && temp->right_child) - { - temp= temp->right_child; - cnt++; - } - char **str = (char **)ft_calloc(cnt + 1, sizeof(char *)); - - int i=1; - str[0]= leaf->token->str; - while(leaf) - { - if (leaf->right_child) - { - str[i] = leaf->right_child->token->str; - leaf = leaf->right_child; - i++; - } - else - break; - } - return str; -} - - -void ft_exit(t_data *data) +t_bool ft_exit(t_data *data, t_leaf *cur_root) { int status; char **cmd; int count; - cmd = join_cmd_two(data->input->root->left_child->right_child); - count = count_args_two(cmd); + cmd = join_cmd(data->input->root->left_child->right_child); + count = count_args(cmd); status = 0; if (count == 1) { @@ -110,3 +46,26 @@ void ft_exit(t_data *data) status = 1; } } + +static int is_num_str(char *str) +{ + int i; + + i = 0; + if (str[0] == '-' || str[0] == '+') + i++; + while (str[i]) + { + if (!('0' <= str[i] && str[i] <= '9')) + return (0); + i++; + } + return (1); +} + +static void exit_not_num(t_data *data) +{ + printf("exit\n"); + printf("bash: exit: %s: numeric argument required\n", data->input->root->left_child->right_child->token->str); + exit(255); +} diff --git a/srcs/builtin/ft_export.c b/srcs/builtin/ft_export.c index a89c3c5..042335f 100644 --- a/srcs/builtin/ft_export.c +++ b/srcs/builtin/ft_export.c @@ -6,12 +6,49 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:25:07 by kichan #+# #+# */ -/* Updated: 2023/07/21 21:43:26 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 13:28:14 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" +t_bool ft_export(t_data *data, t_leaf *cur_root) +{ + char **cmd; + char **tmp; + int arg_count; + int i; + + i = 1; + cmd = join_cmd(data->input->root->left_child->right_child); + arg_count = count_args(cmd); + + printf("arg_count : %d\n", arg_count); + if (arg_count == 1) + print_export_order(data); + else + { + while (i < arg_count) + { + printf("\nft_export while loop start!\n"); + if (!ft_isalpha(cmd[1][0]) && !check_underbar(cmd[1][0]) && !check_name(cmd[i])) + printf("bash: export: `%s': not a valid identifier\n", cmd[i]); + else if (!ft_strchr(cmd[i], '=')) // = 가 없는 경우 + { + ++i; + continue; + } + else + { + tmp = ft_split(cmd[i], '='); + update_env(data, tmp[0], tmp[1]); + free(tmp); + } + ++i; + } + } +} + t_list *create_env_node(char *key, char *value) { printf("\ncreate env_node start!\n"); @@ -56,26 +93,6 @@ void add_env_back(t_data *head, char *key, char *value) } } -void update_env(t_data *data, char *key, char *value) -{ - t_list *tmp; - char *key_equal; - tmp = env_search(data->input, key); - if (!tmp) - { - add_env_back(data, key, value); - } - else - { - free(tmp->env); - key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key) + 2); - key_equal = ft_strdup(key); - key_equal[ft_strlen(key)] = '='; - key_equal[ft_strlen(key) + 1] = '\0'; - tmp->env = ft_strjoin(key_equal, value); - } -} - int check_underbar(char ch) { if (ch == '_') @@ -132,43 +149,6 @@ int check_name(char *str) // return (0); // } -void ft_export(t_data *data) -{ - char **cmd; - char **tmp; - int arg_count; - int i; - - i = 1; - cmd = join_cmd(data->input->root->left_child->right_child); - arg_count = count_args(cmd); - - printf("arg_count : %d\n", arg_count); - if (arg_count == 1) - print_export_order(data); - else - { - while (i < arg_count) - { - printf("\nft_export while loop start!\n"); - if (!ft_isalpha(cmd[1][0]) && !check_underbar(cmd[1][0]) && !check_name(cmd[i])) - printf("bash: export: `%s': not a valid identifier\n", cmd[i]); - else if (!ft_strchr(cmd[i], '=')) // = 가 없는 경우 - { - ++i; - continue; - } - else - { - tmp = ft_split(cmd[i], '='); - update_env(data, tmp[0], tmp[1]); - free(tmp); - } - ++i; - } - } -} - char **sort_bubble(char **str, int size) { char **res = (char **)ft_calloc(sizeof(char *), (size + 1)); @@ -212,7 +192,7 @@ char **sort_bubble(char **str, int size) return res; } -void print_export_order(t_data *data) +static void print_export_order(t_data *data) { int i; int lst_size; @@ -237,4 +217,5 @@ void print_export_order(t_data *data) printf("%s\n", order_set[j]); ++j; } -} \ No newline at end of file +} + diff --git a/srcs/builtin/ft_pwd.c b/srcs/builtin/ft_pwd.c index 943c7af..eda64b6 100644 --- a/srcs/builtin/ft_pwd.c +++ b/srcs/builtin/ft_pwd.c @@ -3,17 +3,18 @@ /* ::: :::::::: */ /* ft_pwd.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichan +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:24:31 by kichan #+# #+# */ -/* Updated: 2023/07/20 00:31:25 by kichan ### ########.fr */ +/* Updated: 2023/07/22 13:26:10 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#define BUF_SIZE 1024 #include "../incs/minishell.h" -void ft_pwd() +t_bool ft_pwd(t_data *data, t_leaf *cur_root); + +t_bool ft_pwd(t_data *data, t_leaf *cur_root) { char *buf; size_t buf_size; @@ -23,20 +24,20 @@ void ft_pwd() while (1) { buf = (char *)ft_calloc(buf_size, sizeof(char)); - if(!buf) + if (!buf) { perror("ft_calloc fail!"); // malloc 실패시에 프로그램 종료 exit(1); } - if(getcwd(buf, buf_size) != NULL) + if (getcwd(buf, buf_size) != NULL) { printf("%s\n", buf); free(buf); return ; } free(buf); - if(errno != ERANGE) + if (errno != ERANGE) { perror("getcwd error!"); exit(1); diff --git a/srcs/builtin/ft_unset.c b/srcs/builtin/ft_unset.c index 20604f8..ad80fa4 100644 --- a/srcs/builtin/ft_unset.c +++ b/srcs/builtin/ft_unset.c @@ -6,26 +6,13 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 22:51:02 by kichan #+# #+# */ -/* Updated: 2023/07/21 21:42:05 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 13:27:04 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void env_clear(t_data *data) -{ - printf("env clear start!\n"); - t_list *current = data->input->envs; - while (current != NULL) - { - t_list *next = current->next; - ft_lstdelone(current); - current = next; - } - data->input->envs = NULL; -} - -void ft_unset(t_data *data) +t_bool ft_unset(t_data *data, t_leaf *cur_root) { char **cmd; int arg_cnt; @@ -49,4 +36,17 @@ void ft_unset(t_data *data) ++i; } } -} \ No newline at end of file +} + +void env_clear(t_data *data) +{ + printf("env clear start!\n"); + t_list *current = data->input->envs; + while (current != NULL) + { + t_list *next = current->next; + ft_lstdelone(current); + current = next; + } + data->input->envs = NULL; +} diff --git a/srcs/exec/pipe.c b/srcs/exec/pipe.c deleted file mode 100644 index aa01df6..0000000 --- a/srcs/exec/pipe.c +++ /dev/null @@ -1,20 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* pipe.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/21 21:52:27 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 21:59:01 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../../incs/minishell.h" - -void set_pipe(t_data *data) -{ - data->cmd = (t_cmd *)ft_calloc(data->input->pipe_num + 2, sizeof(t_cmd));// herdoc 때문에 하나를 여유롭게생성(ㅇㅗㅐ +2??) - if(!data->cmd) - program_error_exit("bash"); -} \ No newline at end of file diff --git a/srcs/exec/preorder.c b/srcs/exec/preorder.c deleted file mode 100644 index 942badd..0000000 --- a/srcs/exec/preorder.c +++ /dev/null @@ -1,19 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* preorder.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/21 22:00:48 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 22:04:30 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../../incs/minishell.h" - -t_bool preorder(t_data *data, t_leaf *cur_root) -{ - if (cur_root->right_child) - preorder(data, cur_root->right_child); -} \ No newline at end of file diff --git a/srcs/execute/checkbulitin.c b/srcs/execute/checkbulitin.c deleted file mode 100644 index 9beec7e..0000000 --- a/srcs/execute/checkbulitin.c +++ /dev/null @@ -1,68 +0,0 @@ -#include "../../incs/minishell.h" - -int check_bulitin1(char * str) -{ - if (str) - { - if (!ft_strncmp("cd", str, ft_strlen(str)) \ - && !ft_strncmp("cd", str, 2)) - return 1; - else if (!ft_strncmp("export", str, ft_strlen(str)) \ - && !ft_strncmp("export", str, 5)) - return 1; - else if (!ft_strncmp("unset", str, ft_strlen(str)) \ - && !ft_strncmp("unset", str, 5)) - return 1; - else if (!ft_strncmp("exit", str, ft_strlen(str)) \ - && !ft_strncmp("exit", str, 4)) - return 1; - } - return (0); -} - - -int check_bulitin2(char * str) -{ - if (str) - { - if (!ft_strncmp("echo", str, ft_strlen(str)) \ - && !ft_strncmp("echo", str, 4)) - return 1; - else if (!ft_strncmp("pwd", str, ft_strlen(str)) \ - && !ft_strncmp("pwd", str, 3)) - return 1; - else if (!ft_strncmp("env", str, ft_strlen(str)) \ - && !ft_strncmp("env", str, 3)) - return 1; - } - return (0); -} - - -int confirm_bulitin(char *str) // bulitin 확인하기 -{ - if(check_bulitin1(str)|| check_bulitin2(str)) - return 1; - return 0; -} - - -int check_bulitin(t_data * data) -{ - if(data->root->left_child->right_child==NULL) //no cmmand but redirection 존재 - { - check_redirect(data->root,data); // redirection 실행 - recover_std(data); // 다시 돌려놔줘야함 안그러면 redirect로 바꾼곳으로 계속출력됨 - // free(data); - return 1; - } - if(confirm_bulitin(data->root->left_child->right_child->token->str)) - { - check_redirect(data->root,data); - // do_bulitin(data,0);// flag 에 따라 return 부모 프로세스 or exit 자식 쿠 - recover_std(data); // 커맨드가 하나이기 때문에 바로 종료 - // free(data); - return 1; - } - return 0; -} \ No newline at end of file diff --git a/srcs/execute/execute.c b/srcs/execute/execute.c new file mode 100644 index 0000000..28bd8cb --- /dev/null +++ b/srcs/execute/execute.c @@ -0,0 +1,105 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* execute.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/22 12:06:55 by eunwolee #+# #+# */ +/* Updated: 2023/07/22 13:30:29 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +t_bool execute(t_data *data) +{ + t_leaf *cur_root; + + data->cmd_idx = 0; + while (cur_root) + { + if (cur_root->left_child->left_child) + { + heredoc(data, cur_root); + redirect(data, cur_root); + } + command(data, cur_root); + cur_root = data->input->root; + data->cmd_idx++; + } +} + +t_bool command(t_data *data, t_leaf *cur_root) +{ + char *(*func)(t_data *, t_leaf *); + + if (!cur_root->left_child->right_child) //cmd 없을 때 + { + // 다시 돌려놔줘야함 안그러면 redirect로 바꾼곳으로 계속출력됨 + recover_std(data); + return ; + } + func = get_builtin_func(cur_root->left_child->right_child); + if (!func) // execve + exec_cmd(data); + if (func(data, cur_root) == FALSE) + return (FALSE); + return (TRUE); +} + +// 부모에서 exit 하면 return 자식에서 하면 exit (??) +void exec_cmd(t_data *data, t_leaf *cur_root) +{ + t_cmd *cmd; + t_cmd *pre; + + cmd = &data->cmd[data->cmd_idx]; //왜 &? + pre = &data->cmd[data->cmd_idx - 1]; + signal(SIGQUIT, SIG_DFL); + if (pipe(cmd->fd) < 0) + // exit(1); 에러처리 + cmd->pid = fork(); + // if (cmd->pid == -1) 에러처리 + // return; + if (cmd->pid == CHILD) + { + // data->parent =1; 무슨 용도? + link_pipe(data, cmd, pre); + exec_fork(data, cur_root); + } + close_pipe(data, cur, pre); + signal(SIGQUIT, SIG_IGN); + wait_child_processes(data); + + // free_cmd(base); +} + +void exec_fork(t_data *data, t_leaf *cur_root) // 이제경로 찾고 하던 대로해주면됨 +{ + t_cmd *base = data->cmd; + + if(!data->input->root->left_child->right_child) + return ; + data->input->env_array = env_to_array(data); + abs_path(data); + base->command = set_path(data ,data->input->root->left_child->right_child); + if (!base->command) + exit(1); + if (execve(base->command, base->cmd_path, data->input->env_array) == -1) + exit(1); +} + +// 정상 종료 확인해주고 수정; +void wait_child_processes(t_data *data) +{ + int i; + int status; + + i = 0; + while (i < data->input->pipe_num) + { + waitpid(-1, &status, 0); + i++; + } +} \ No newline at end of file diff --git a/srcs/execute/execve.c b/srcs/execute/execve.c deleted file mode 100644 index fd85c11..0000000 --- a/srcs/execute/execve.c +++ /dev/null @@ -1,94 +0,0 @@ -#include "../../incs/minishell.h" - - -void do_cmd(t_data *data) -{ - if (data->root->left_child->left_child != NULL) - check_redirect (data->root,data); // redirect가 있는거는 먼저실행 - if (data->root->left_child->right_child== NULL) //커맨드가 없을때 종료하기 - exit(g_exit_status); - if (confirm_bulitin(data->root->left_child->right_child->token->str))//빌트인실행시키기 - // do_builtins (data, 1); - return ; - else - exec_fork(data); -} - -void execute(t_data *data) -{ - heredoc_flag(data->root,data); //heredoc이 있는지 판별해준다 - data->info->heredoc_file = (char **)ft_calloc(data->pipe_num + 1, sizeof(char *)); - if (!data->info->heredoc_file) // 파이프 기준으로 <pipe_num && !data->info->heredoc_flag)//단일 커맨들일때 히어독도 x - if(check_bulitin(data) == TRUE) // bulitin 일때는 바로 실행하고 종료 아닌경우에는 sigle command frok 해야함 - return; - if(data->info->heredoc_flag) // heredoc 일 경우에는 무조건 fork 를 해줘야함 - { // 시그널 함수 때문인거같음 ctrl +d 눌렀을때 종료가되면안되는데 포크안햇을시 종료가됨 - if (fork_heredoc (data)) - { - // free(data); - return ; - } - } - execute_cmd(data,0); //그 외일경우 실행해 주기 - // free(data); -} - -void exec_fork(t_data *data) // 이제경로 찾고 하던 대로해주면됨 -{ - t_pipe *base = data->pipe; - - if(!data->root->left_child->right_child) - return ; - data->env_array = env_to_array(data); - abs_path(data); - base->command = set_path(data ,data->root->left_child->right_child); - if (!base->command) - exit(1); - if (execve(base->command, base->cmd_path, data->env_array) == -1) - exit(1); -} - -void execute_cmd(t_data *data,int flag) // flag 는 자식이랑 부모 차이를 두기위해서 주는거임 -{ // 부모에서 exit 하면 return 자식에서 하면 exit - int i; - - i = 0; - t_pipe *base = data->pipe; - t_leaf *head = data->root; - - while (i < data->pipe_num+1) - { - signal(SIGQUIT, SIG_DFL); - if (i < data->pipe_num) - { - if (pipe(base->com[i].fd) < 0) - exit(1); - } - base->com[i].pid = fork(); - if (base->com[i].pid == -1) - { - if (flag) - exit(1); // 자식일때는 exit ; - else - return; - } - if (base->com[i].pid == 0) - { - data->info->parent =1; - if(data->pipe_num != 0) - link_pipe(i, base,data); - do_cmd(data); - } - else - data->root = data->root->right_child; // pipepe 순회하기 root 바꿔주기 - close_pipe(i, base,data); - signal(SIGQUIT, SIG_IGN); - i++; - } - data->root = head; // root 는 원래 root 로 다시 돌려주기 - wait_child_processes(data); - - // free_cmd(base); -} diff --git a/srcs/execute/freepipe.c b/srcs/execute/freepipe.c deleted file mode 100644 index bf0c2e7..0000000 --- a/srcs/execute/freepipe.c +++ /dev/null @@ -1,40 +0,0 @@ -#include "../../incs/minishell.h" - -// void free_cmd(t_pipe *base) -// { -// int i; - -// i = 0; -// while (base->cmd_abs[i]) -// { -// free(base->cmd_abs[i]); -// i++; -// } -// free(base->cmd_path); -// free(base->com); -// } - - -void close_pipe(int i, t_pipe *base,t_data *data) -{ - if (i == data->info->pipe_num) - close(base->com[i - 1].fd[0]); - else if (i == 0) - close(base->com[i].fd[1]); - else - { - close(base->com[i - 1].fd[0]); - close(base->com[i].fd[1]); - } -} - -void check_file(int fd,t_data *data) -{ - if (fd < 0) - { - close(fd); - g_exit_status = 1; - if (data->info->parent ==0) // 자식에서 종료 or 부모에서 종료 확인해주기 - exit(1); - } -} diff --git a/srcs/exec/get_input.c b/srcs/execute/get_input.c similarity index 100% rename from srcs/exec/get_input.c rename to srcs/execute/get_input.c diff --git a/srcs/execute/heredoc.c b/srcs/execute/heredoc.c index b9a72af..bc0da43 100644 --- a/srcs/execute/heredoc.c +++ b/srcs/execute/heredoc.c @@ -1,23 +1,63 @@ #include "../../incs/minishell.h" +t_bool heredoc(t_data *data, t_leaf *cur_root); +static t_leaf *find_heredoc(t_data *data, t_leaf *cur_leaf); +static int fork_heredoc(t_data *data, t_leaf *heredoc); -int fork_heredoc(t_data *data) +t_bool heredoc(t_data *data, t_leaf *cur_root) +{ + t_leaf *heredoc; + + heredoc = find_heredoc(data, cur_root->left_child->left_child); + // data->cmd[i].heredoc_file = (char **)ft_calloc(data->input->pipe_num + 1, sizeof(char *)); + // if (!data->cmd[i].heredoc_file) + // program_error_exit("bash"); + // if (!data->input->pipe_num && data->heredoc_flag == FALSE)//단일 커맨드고 히어독도 없으면 + // if(check_bulitin(data, cur_root) == TRUE) // bulitin 일때는 바로 실행하고 종료 아닌경우에는 sigle command fork 해야함 + // return (FALSE); + + + // heredoc 일 경우에는 무조건 fork 를 해줘야함 + // 시그널 함수 때문인거같음 ctrl +d 눌렀을때 종료가되면안되는데 포크안햇을시 종료가됨 + if (heredoc) + if (fork_heredoc(data, heredoc)) + return (FALSE); + return (TRUE); +} + +static t_leaf *find_heredoc(t_data *data, t_leaf *cur_leaf) +{ + t_leaf *heredoc; + + heredoc = NULL; + while (cur_leaf) + { + if (cur_leaf->token->redirect_type == T_HEREDOC) + heredoc = cur_leaf; + cur_leaf = cur_leaf->left_child; + } + if (cur_leaf->parent->token->redirect_type != T_HEREDOC) //output이 있을 수 있으니 수정해야함 + return (NULL); + return (heredoc); +} + +static int fork_heredoc(t_data *data, t_leaf *heredoc) { int status; - data->pipe->com[data->info->pipe_num+1].pid =fork(); //인덱스 부여해주기 pid 갚곂치지않게 가장 마지막 인덱스 주기 - if (data->pipe->com[data->info->pipe_num+1].pid == 0) + data->cmd[data->input->pipe_num + 1].pid = fork(); //pid가 겹치지않게 가장 마지막 인덱스 부여해주기 + if (data->cmd[data->input->pipe_num + 1].pid == CHILD) { - data->info->parent=1; - mk_heredoc(data); - execute_cmd(data,1); // heredoc 실행후 다시 커맨드 확인해주러가기 + data->parent = 1; + make_heredoc(data, heredoc); + execute_cmd(data, CHILD); // heredoc 실행후 다시 커맨드 확인해주러가기 exit (g_exit_status);// 전역변수 } else { // signal (SIGINT, SIG_IGN); - waitpid(data->pipe->com[data->info->pipe_num+1].pid,&status,0); - g_exit_status = WEXITSTATUS(status); // 정상종료일경우 exit코 드 추출 + waitpid(data->cmd[data->input->pipe_num + 1].pid, &status, 0); + g_exit_status = WEXITSTATUS(status); // 정상종료일경우 exit코드 추출 if (WIFSIGNALED(status)) // signal 에 의해 종료가 되었는지 아닌지 확인 { g_exit_status = WTERMSIG (status);//시그널로 종료시 시그널 번호를 저장 예 ctrl +c경우 2 번 @@ -26,4 +66,4 @@ int fork_heredoc(t_data *data) } } return (1); -} \ No newline at end of file +} diff --git a/srcs/execute/heredoc_utils.c b/srcs/execute/heredoc_utils.c new file mode 100644 index 0000000..946910d --- /dev/null +++ b/srcs/execute/heredoc_utils.c @@ -0,0 +1,90 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* heredoc_utils.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/22 10:08:39 by eunwolee #+# #+# */ +/* Updated: 2023/07/22 12:30:51 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +void make_heredoc(t_data *data, t_leaf *heredoc); +char *make_filename(void); +void make_unique_num(char *str, int num); +void read_heredoc(t_data *data, char *content, int fd); + +void make_heredoc(t_data *data, t_leaf *heredoc) +{ + int fd; + char *name; + + // herdoc_signal(); + name = make_filename(); + data->cmd[data->cmd_idx].infile_fd = open(name, O_WRONLY | O_CREAT | O_TRUNC, 0644); + // if (data->cmd[data->cmd_idx].heredoc_fd < 0) //open 실패 시 에러처리 해야함 + read_heredoc(data, heredoc->left_child->token->str, data->cmd[data->cmd_idx].heredoc_fd); +} + +// 유니크한 파일명 생성 +char *make_filename(void) +{ + char *str; + int exist; + int i; + + str = ft_strdup("/tmp/here_doc000"); + i = 0; + exist = 0; + while(!exist) + { + make_unique_num(str,i++); // doc000 doc100 doc 200 순으로접근 유효성검사 + exist = access(str,F_OK); //access 가 가능하면 1리턴해줘서 while문 탈출 . + if (!exist) + unlink(str); + } + return (str); +} + +void make_unique_num(char *str, int num) +{ + + int i=0; + int j=1; + while(i<3) + { + if (i ==0) + { + str[13+i++]= num/100 +'0'; + num %=100; + } + str[13+ i++] = num /(100/(j *10)) + '0'; + num%= (100 / (j*10)); + j*=10; + } +} + +void read_heredoc(t_data *data, char *content, int fd) +{ + char *str; + data->input->env_array = env_to_array(data);//환경변수 가져오기 추후에 필요할 수있음 + + while (TRUE) + { + str = readline ("> "); + if (!str || !ft_strncmp (content, str, ft_strlen(str) + 1)) + { + free (str); + close (fd); + return ; + } + // str = heredoc_parser(str, data->env_array); heredoc $pwd + if (str) + write(fd, str, ft_strlen(str)); + write (fd, "\n", 1); + free(str); + } +} diff --git a/srcs/execute/heredocutils.c b/srcs/execute/heredocutils.c deleted file mode 100644 index f829da6..0000000 --- a/srcs/execute/heredocutils.c +++ /dev/null @@ -1,103 +0,0 @@ -#include "../../incs/minishell.h" - -void write_str(char *content, int fd, t_data *data) -{ - char *str; - data->env_array=env_to_array(data);//환경변수 가져오기 추후에 필요할 수있음 - - while (1) - { - str = readline ("> "); - if (!str) - { - free(str); - close(fd); - return ; - } - if (!ft_strncmp (content, str, ft_strlen(str) + 1)) - { - free (str); - close (fd); - return ; - } - // str = heredoc_parser(str, data->env_array); heredoc $pwd - if (str) - write (fd, str, ft_strlen (str)); - write (fd, "\n", 1); - free (str); - } -} - -void mk_num(char *str, int num) -{ - - int i=0; - int j=1; - while(i<3) - { - if (i ==0) - { - str[13+i++]= num/100 +'0'; - num %=100; - } - str[13+ i++] = num /(100/(j *10)) + '0'; - num%= (100 / (j*10)); - j*=10; - } - -} - -char *mk_filename() // 파일이름 유니크줘서만들어주기 -{ - char *str; - int exist; - int i; - - str = ft_strdup("/tmp/here_doc000"); - i=0; - exist=0; - while(exist ==0) - { - mk_num(str,i++); // doc000 doc100 doc 200 순으로접근 유효성검사 - exist =access(str,F_OK); //access 가 가능하면 1리턴해줘서 while문 탈출 . - if (!exist) - unlink(str); - } - return (str); -} - - - -void do_heredoc(t_leaf *leaf,t_data *data) -{ - int fd; - t_leaf *temp; - temp = leaf; - - while(temp) - { - if(temp->token->redirect_type==T_HEREDOC) - { - fd = open(data->info->heredoc_file[data->info->index], O_WRONLY | O_CREAT | O_TRUNC, 0644);//임시파일오픈 - write_str(temp->left_child->token->str,fd,data); //limiter 들고가서 작성하기 - } - temp = temp ->left_child; //순회하기 - } -} - - -void mk_heredoc(t_data *data) -{ - t_leaf *temp; - - // herdoc_signal(); - temp =data->root; - while(temp) - { - data->info->heredoc_file[data->info->index] = mk_filename(); //설명했듯이 이중 배열 - if(temp->left_child->left_child->token->redirect_type == T_HEREDOC) - do_heredoc(temp->left_child->left_child,data); // 실제 here _doc 이 나왔을경우 만들러가기 - data->info->index++; - temp= temp -> right_child;//순회하면서 heredoc 찾기 - } -} \ No newline at end of file diff --git a/srcs/execute/pipe.c b/srcs/execute/pipe.c index f205fc4..41018a5 100644 --- a/srcs/execute/pipe.c +++ b/srcs/execute/pipe.c @@ -1,52 +1,60 @@ #include "../../incs/minishell.h" +void set_pipe(t_data *data); +void link_pipe(t_data *data, t_cmd *cur_cmd, t_cmd *pre_cmd); +void close_pipe(t_data *data, t_cmd *cur_cmd, t_cmd *pre_cmd); + void set_pipe(t_data *data) { - data->pipe->com = (t_pid *)ft_calloc(data->pipe_num + 2, sizeof(t_pid));// 하나를 여유롭게 생성하는이유는 herdoc 때문에 하나를 여유롭게생성 - if(!data->pipe->com) + data->cmd = (t_cmd *)ft_calloc(data->input->pipe_num + 2, sizeof(t_cmd));// herdoc 때문에 하나를 여유롭게생성(ㅇㅗㅐ +2??) + if(!data->cmd) program_error_exit("bash"); } -void link_pipe(int i, t_pipe *base,t_data *data) +void link_pipe(t_data *data, t_cmd *cur_cmd, t_cmd *pre_cmd) { - if (i == data->pipe_num) + if (!data->input->pipe_num) + return ; + if (data->cmd_idx == 0) { - if (dup2(base->com[i-1].fd[0], STDIN_FILENO) == -1 || \ - close(base->com[i-1].fd[0]) == -1) + if (close(cur_cmd->fd[0]) == -1 \ + || dup2(cur_cmd->fd[1], STDOUT_FILENO) == -1 \ + || close(cur_cmd->fd[1])== -1) program_error_exit("pipe"); } - else if (i == 0) + else if (data->cmd_idx == data->input->pipe_num) { - if (close(base->com[i].fd[0]) == -1 || \ - dup2(base->com[i].fd[1], STDOUT_FILENO) == -1 || \ - close(base->com[i].fd[1])== -1) + if (dup2(pre_cmd->fd[0], STDIN_FILENO) == -1 \ + || close(pre_cmd->fd[0]) == -1) program_error_exit("pipe"); } else { - if (dup2(base->com[i - 1].fd[0], STDIN_FILENO) == -1 || \ - close(base->com[i-1].fd[0]) == -1 || \ - dup2(base->com[i].fd[1], STDOUT_FILENO) == -1 ||\ - close(base->com[i].fd[1]) == -1) + if (dup2(pre_cmd->fd[0], STDIN_FILENO) == -1 \ + || close(pre_cmd->fd[0]) == -1 \ + ||dup2(cur_cmd->fd[1], STDOUT_FILENO) == -1 \ + || close(cur_cmd->fd[1]) == -1) program_error_exit("pipe"); } } - -// 정상 종료 확인해주고 수정; -void wait_child_processes(t_data *data) +void close_pipe(t_data *data, t_cmd *cur_cmd, t_cmd *pre_cmd) { - int i; - int status; - - i = 0; - while (i < data->pipe_num) + if (data->cmd_idx == 0) + close(cur_cmd->fd[1]); + else if (data->cmd_idx == data->input->pipe_num) + close(pre_cmd->fd[0]); + else { - waitpid(-1, &status, 0); - i++; + close(pre_cmd->fd[0]); + close(cur_cmd->fd[1]); } } - - - +void recover_std(t_data *data) +{ + dup2(data->oristdin,STDIN_FILENO); + close(data->oristdin); + dup2(data->oristdout,STDOUT_FILENO); + close(data->oristdin); +} \ No newline at end of file diff --git a/srcs/execute/pipeutils.c b/srcs/execute/pipeutils.c deleted file mode 100644 index 583434e..0000000 --- a/srcs/execute/pipeutils.c +++ /dev/null @@ -1,60 +0,0 @@ -#include "../../incs/minishell.h" - -void heredoc_flag(t_leaf *leaf,t_data *data) -{ - if (!leaf) - return ; - if (leaf->token) - { - if (leaf->token->type == T_REDIRECT) - { - if (leaf->token->redirect_type == T_HEREDOC) - data->info->heredoc_flag = 1; - } - } - heredoc_flag(leaf->left_child,data); - heredoc_flag(leaf->right_child,data); -} - - - -void recover_std(t_data *data) -{ - dup2(data->info->oristdin,STDIN_FILENO); - close(data->info->oristdin); - dup2(data->info->oristdout,STDOUT_FILENO); - close(data->info->oristdin); -} - - - -// char **join_cmd(t_leaf * com_leaf) -// { -// int cnt =1; - -// t_leaf *temp = com_leaf; -// t_leaf *leaf = com_leaf; - -// while(temp && temp->right_child) -// { -// temp= temp->right_child; -// cnt++; -// } -// char **str = (char **)ft_calloc(cnt + 1, sizeof(char *)); -// if(!str) -// return NULL; -// int i=1; -// str[0]= leaf->token->str; -// while(leaf) -// { -// if (leaf->right_child) -// { -// str[i] = leaf->right_child->token->str; -// leaf = leaf->right_child; -// i++; -// } -// else -// break; -// } -// return str; -// } diff --git a/srcs/execute/redirect.c b/srcs/execute/redirect.c new file mode 100644 index 0000000..d4b00da --- /dev/null +++ b/srcs/execute/redirect.c @@ -0,0 +1,57 @@ +#include "../../incs/minishell.h" + +void redirect(t_data *data, t_leaf *cur_leaf) +{ + input_redirect(cur_leaf, data); + output_redirect(cur_leaf, data); +} + +void input_redirect(t_data *data, t_leaf *cur_leaf) +{ + t_leaf *input; + + if (data->cmd[data->cmd_idx].infile_fd > 0) + { + dup2 (data->cmd[data->cmd_idx].infile_fd, STDIN_FILENO); + return ; + } + while (cur_leaf) + { + if (cur_leaf->token->redirect_type == T_INPUT) + input = cur_leaf; + cur_leaf = cur_leaf->left_child; + } + data->cmd[data->cmd_idx].infile_fd = open(input->left_child->token->str, O_RDONLY); + check_file(data->cmd[data->cmd_idx].infile_fd, data); + dup2(data->cmd[data->cmd_idx].infile_fd, STDIN_FILENO); +} + +void output_redirect(t_data *data, t_leaf *cur_leaf) +{ + t_leaf *output; + + while (cur_leaf) + { + if (cur_leaf->token->redirect_type == T_OUTPUT \ + || cur_leaf->token->redirect_type == T_APPEND) + output = cur_leaf; + cur_leaf = cur_leaf->left_child; + } + if (cur_leaf->token->redirect_type == T_OUTPUT) + data->cmd[data->cmd_idx].outfile_fd = open (cur_leaf->left_child->token->str, O_WRONLY | O_TRUNC | O_CREAT, 0644); + else if (cur_leaf->token->redirect_type == T_APPEND) + data->cmd[data->cmd_idx].outfile_fd = open (cur_leaf->left_child->token->str, O_WRONLY | O_APPEND | O_CREAT, 0644); + check_file(data->cmd[data->cmd_idx].outfile_fd, data); + dup2(data->cmd[data->cmd_idx].outfile_fd, STDOUT_FILENO); +} + +void check_file(int fd,t_data *data) +{ + if (fd < 0) + { + close(fd); + g_exit_status = 1; + if (data->parent ==0) // 자식에서 종료 or 부모에서 종료 확인해주기 + exit(1); + } +} diff --git a/srcs/execute/redirection.c b/srcs/execute/redirection.c deleted file mode 100644 index 6ffbe80..0000000 --- a/srcs/execute/redirection.c +++ /dev/null @@ -1,62 +0,0 @@ -#include "../../incs/minishell.h" - -void do_input_redirect(t_leaf *leaf,t_data *data) -{ - int fd; - - t_leaf *temp; - fd = 0; - temp =leaf; - if (temp->token->redirect_type == T_HEREDOC) // heredoc 일경우 전에만들어 준 heredoc 으로 접근해줘야함 - { - fd = open (data->info->heredoc_file[data->info->index-1], O_RDONLY);// 만들어지면 바로 ++을해줘서 인덱스 -1 로 접근을해야 전에 만들어진 heredoc으로 접근 - dup2 (fd, STDIN_FILENO); - return ; - } - else if (temp->token->redirect_type == T_INPUT) // 그냥 인풋 - fd = open (temp->left_child->token->str, O_RDONLY); - check_file (fd,data); - dup2 (fd, STDIN_FILENO); - close (fd); -} - -void do_output_redirect(t_leaf *leaf,t_data *data) -{ - int fd; - t_leaf *temp =leaf; - fd = 0; - - if (temp->token->redirect_type == T_APPEND) - fd = open (temp->left_child->token->str, O_WRONLY | O_APPEND | O_CREAT, 0644); - else if (temp->token->redirect_type == T_OUTPUT) - { - fd = open (temp->left_child->token->str, O_WRONLY | O_TRUNC | O_CREAT, 0644); - } - check_file (fd,data); - dup2 (fd, STDOUT_FILENO); - close (fd); -} - - - - -void check_redirect(t_leaf *leaf,t_data *data) -{ - - t_leaf *temp = leaf->left_child->left_child; - - while(temp) - { - if(temp->token->redirect_type == T_INPUT ||temp->token->redirect_type == T_HEREDOC) - { - - do_input_redirect(temp,data); // input or heredoc - } - else if (temp->token->redirect_type == T_OUTPUT ||temp->token->redirect_type == T_APPEND) - { - do_output_redirect(temp,data); // output or append - - } - temp=temp->right_child; - } -} diff --git a/srcs/execute/setpath.c b/srcs/execute/set_path.c similarity index 100% rename from srcs/execute/setpath.c rename to srcs/execute/set_path.c diff --git a/srcs/exec/sig.c b/srcs/execute/sig.c similarity index 100% rename from srcs/exec/sig.c rename to srcs/execute/sig.c diff --git a/srcs/init/init.c b/srcs/init/init.c index d1da6e5..c967cbf 100644 --- a/srcs/init/init.c +++ b/srcs/init/init.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:52 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 21:16:09 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 08:20:41 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,8 +21,7 @@ void init(t_data **data, char **envp) if (!*data) program_error_exit("bash"); (*data)->input = (t_input *)ft_calloc(1, sizeof(t_input)); - (*data)->pipe = (t_pipe *)ft_calloc(1, sizeof(t_pipe)); - if (!(*data)->input || !(*data)->pipe) + if (!(*data)->input) program_error_exit("bash"); (*data)->oristdin = dup(STDIN_FILENO); (*data)->oristdout = dup(STDOUT_FILENO); diff --git a/srcs/minishell.c b/srcs/minishell.c index dc1e33d..faa26d2 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 22:02:40 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 10:16:24 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,8 +25,8 @@ int main(int argc, char **argv, char **envp) sig(); set_pipe(data); - // preorder(data, data->input->root); builtin(data); + execute(data); free_input(data->input); } diff --git a/srcs/utils/utils.c b/srcs/utils/utils.c index aebe1b8..4fee07c 100644 --- a/srcs/utils/utils.c +++ b/srcs/utils/utils.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/12 19:40:44 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 21:48:40 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 13:23:33 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -49,34 +49,3 @@ void free_data(t_data *data) ft_lstclear(&data->input->envs); free(data->input); } - -char **join_cmd(t_leaf * com_leaf) -{ - int cnt =1; - - t_leaf *temp = com_leaf; - t_leaf *leaf = com_leaf; - - while(temp && temp->right_child) - { - temp= temp->right_child; - cnt++; - } - char **str = (char **)ft_calloc(cnt + 1, sizeof(char *)); - if(!str) - return NULL; - int i=1; - str[0]= leaf->token->str; - while(leaf) - { - if (leaf->right_child) - { - str[i] = leaf->right_child->token->str; - leaf = leaf->right_child; - i++; - } - else - break; - } - return str; -} From 167a83803bf63cca08a979525ca54619da318072 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Sat, 22 Jul 2023 16:04:47 +0900 Subject: [PATCH 09/57] . --- Libft/ft_atoi.o | Bin 0 -> 892 bytes Libft/ft_bzero.o | Bin 0 -> 684 bytes Libft/ft_calloc.o | Bin 0 -> 776 bytes Libft/ft_isalnum.o | Bin 0 -> 760 bytes Libft/ft_isalpha.o | Bin 0 -> 680 bytes Libft/ft_isascii.o | Bin 0 -> 664 bytes Libft/ft_isdigit.o | Bin 0 -> 664 bytes Libft/ft_isprint.o | Bin 0 -> 664 bytes Libft/ft_itoa.o | Bin 0 -> 1160 bytes Libft/ft_memchr.o | Bin 0 -> 732 bytes Libft/ft_memcmp.o | Bin 0 -> 756 bytes Libft/ft_memcpy.o | Bin 0 -> 764 bytes Libft/ft_memmove.o | Bin 0 -> 856 bytes Libft/ft_memset.o | Bin 0 -> 700 bytes Libft/ft_putchar_fd.o | Bin 0 -> 696 bytes Libft/ft_putendl_fd.o | Bin 0 -> 876 bytes Libft/ft_putnbr_fd.o | Bin 0 -> 984 bytes Libft/ft_putstr_fd.o | Bin 0 -> 756 bytes Libft/ft_split.o | Bin 0 -> 2048 bytes Libft/ft_strchr.o | Bin 0 -> 732 bytes Libft/ft_strdup.o | Bin 0 -> 828 bytes Libft/ft_striteri.o | Bin 0 -> 696 bytes Libft/ft_strjoin.o | Bin 0 -> 936 bytes Libft/ft_strlcat.o | Bin 0 -> 888 bytes Libft/ft_strlcpy.o | Bin 0 -> 840 bytes Libft/ft_strlen.o | Bin 0 -> 700 bytes Libft/ft_strmapi.o | Bin 0 -> 848 bytes Libft/ft_strncat.o | Bin 0 -> 916 bytes Libft/ft_strncmp.o | Bin 0 -> 824 bytes Libft/ft_strnstr.o | Bin 0 -> 988 bytes Libft/ft_strrchr.o | Bin 0 -> 728 bytes Libft/ft_strtrim.o | Bin 0 -> 1408 bytes Libft/ft_substr.o | Bin 0 -> 1056 bytes Libft/ft_tolower.o | Bin 0 -> 664 bytes Libft/ft_toupper.o | Bin 0 -> 664 bytes Libft/get_next_line.o | Bin 0 -> 2808 bytes Libft/get_next_line_utils.o | Bin 0 -> 884 bytes Libft/libft.a | Bin 0 -> 37376 bytes Makefile | 18 ++-- incs/exec.h | 24 ++++- incs/minishell.h | 5 +- incs/struct.h | 8 +- libft.a | Bin 0 -> 37376 bytes minishell | Bin 0 -> 71896 bytes srcs/builtin/builtin.c | 4 +- srcs/builtin/builtin.o | Bin 0 -> 1380 bytes srcs/builtin/builtin_utils.c | 48 +++++++++- srcs/builtin/builtin_utils.o | Bin 0 -> 2832 bytes srcs/builtin/ft_cd.c | 9 +- srcs/builtin/ft_cd.o | Bin 0 -> 2408 bytes srcs/builtin/ft_echo.c | 7 +- srcs/builtin/ft_echo.o | Bin 0 -> 1512 bytes srcs/builtin/ft_exit.c | 15 +-- srcs/builtin/ft_exit.o | Bin 0 -> 1764 bytes srcs/builtin/ft_export.c | 57 ++--------- srcs/builtin/ft_export.o | Bin 0 -> 3276 bytes srcs/builtin/ft_pwd.c | 7 +- srcs/builtin/ft_pwd.o | Bin 0 -> 1224 bytes srcs/builtin/ft_unset.c | 12 ++- srcs/builtin/ft_unset.o | Bin 0 -> 1456 bytes srcs/execute/execute.c | 83 ++++++++-------- srcs/execute/execute.o | Bin 0 -> 2552 bytes srcs/execute/get_input.o | Bin 0 -> 1040 bytes srcs/execute/path.c | 105 +++++++++++++++++++++ srcs/execute/path.o | Bin 0 -> 2544 bytes srcs/execute/pipe.c | 3 +- srcs/execute/pipe.o | Bin 0 -> 2028 bytes srcs/execute/set_path.c | 89 ----------------- srcs/execute/sig.c | 7 +- srcs/execute/sig.o | Bin 0 -> 996 bytes srcs/init/init.o | Bin 0 -> 1484 bytes srcs/lexer/expand.o | Bin 0 -> 3508 bytes srcs/lexer/lexer.o | Bin 0 -> 1804 bytes srcs/lexer/quote.o | Bin 0 -> 2820 bytes srcs/lexer/tokenizer.o | Bin 0 -> 2420 bytes srcs/minishell.c | 6 +- srcs/minishell.o | Bin 0 -> 924 bytes srcs/parser/parser.o | Bin 0 -> 1692 bytes srcs/parser/syntax.o | Bin 0 -> 2720 bytes srcs/{execute => redirect}/heredoc.c | 9 +- srcs/redirect/heredoc.o | Bin 0 -> 1640 bytes srcs/{execute => redirect}/heredoc_utils.c | 9 +- srcs/redirect/heredoc_utils.o | Bin 0 -> 2272 bytes srcs/{execute => redirect}/redirect.c | 14 ++- srcs/redirect/redirect.o | Bin 0 -> 1768 bytes srcs/utils/env.o | Bin 0 -> 1992 bytes srcs/utils/list.o | Bin 0 -> 1376 bytes srcs/utils/list_clear.o | Bin 0 -> 1060 bytes srcs/utils/temp.o | Bin 0 -> 2948 bytes srcs/utils/tree.o | Bin 0 -> 1592 bytes srcs/utils/utils.o | Bin 0 -> 1576 bytes 91 files changed, 289 insertions(+), 250 deletions(-) create mode 100644 Libft/ft_atoi.o create mode 100644 Libft/ft_bzero.o create mode 100644 Libft/ft_calloc.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_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 create mode 100644 Libft/ft_strmapi.o create mode 100644 Libft/ft_strncat.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 Libft/get_next_line.o create mode 100644 Libft/get_next_line_utils.o create mode 100644 Libft/libft.a create mode 100644 libft.a create mode 100755 minishell create mode 100644 srcs/builtin/builtin.o create mode 100644 srcs/builtin/builtin_utils.o create mode 100644 srcs/builtin/ft_cd.o create mode 100644 srcs/builtin/ft_echo.o create mode 100644 srcs/builtin/ft_exit.o create mode 100644 srcs/builtin/ft_export.o create mode 100644 srcs/builtin/ft_pwd.o create mode 100644 srcs/builtin/ft_unset.o create mode 100644 srcs/execute/execute.o create mode 100644 srcs/execute/get_input.o create mode 100644 srcs/execute/path.c create mode 100644 srcs/execute/path.o create mode 100644 srcs/execute/pipe.o delete mode 100644 srcs/execute/set_path.c create mode 100644 srcs/execute/sig.o create mode 100644 srcs/init/init.o create mode 100644 srcs/lexer/expand.o create mode 100644 srcs/lexer/lexer.o create mode 100644 srcs/lexer/quote.o create mode 100644 srcs/lexer/tokenizer.o create mode 100644 srcs/minishell.o create mode 100644 srcs/parser/parser.o create mode 100644 srcs/parser/syntax.o rename srcs/{execute => redirect}/heredoc.c (86%) create mode 100644 srcs/redirect/heredoc.o rename srcs/{execute => redirect}/heredoc_utils.c (88%) create mode 100644 srcs/redirect/heredoc_utils.o rename srcs/{execute => redirect}/redirect.c (80%) create mode 100644 srcs/redirect/redirect.o create mode 100644 srcs/utils/env.o create mode 100644 srcs/utils/list.o create mode 100644 srcs/utils/list_clear.o create mode 100644 srcs/utils/temp.o create mode 100644 srcs/utils/tree.o create mode 100644 srcs/utils/utils.o diff --git a/Libft/ft_atoi.o b/Libft/ft_atoi.o new file mode 100644 index 0000000000000000000000000000000000000000..061a592c6db7f9e146e403ff0530b299e700c793 GIT binary patch literal 892 zcma)4&nrYx6uyr!7(ea^MOn-O8!4>Vjkxs|lr&Q|x+X>>KhhH^MPuX{$--JT%1&8X zNn@dGZ2bckvoPLb7Q@2$&b<4^ouqtq?mg!__k8zzulxM@_EpW8QOU3%e2800LI|K8 zF-Y|v*j2q3wR<%*83pMQq_pB&mYchEL`+3~YA@^1^vFvIKDJxRkw`hay1W*fwdBUi z=Hkknlw+fMKcsX*ip*EIUZ!A3wZQy9%J_nuUym)vT~5k!e_=HgRwHfD@xG0yI>r`M ztGEqdZ9^2tc!2p41iF;?8RcUQdp&B*vk8O_npM~8^uO|`X}_BGPX1Bk==`H_NXblz zJin_+eAM#eR=sYxF%F~e{3NK8A%2zydnDek44$k)E7Pp{W>rzn7WvFop-?F4_VE2O ziC&)U(j`&Tt5_0F!4?jUX-a6Y{(Cbu4v$TV&%Q&E<;P`mL;M_$vPU9Ya@1Xv%LQo6 zw4cnqwCgMik^V%s&v0y!%Ur@_O62&paHb#V9uMlh{rb%<>VUC5$&9U_5v;GSImM|? n@EwSYFDL@udu79o!GnsC2EQka9moA7%yo4+Z^@Xox(NOoU0R&9 literal 0 HcmV?d00001 diff --git a/Libft/ft_bzero.o b/Libft/ft_bzero.o new file mode 100644 index 0000000000000000000000000000000000000000..cfe1fcb38b2a14fd921d7ec79f72985c3db1d65d GIT binary patch literal 684 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%*Z>v30aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7DmfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1- z%29yQ8cYzkbO33nQ-Lf5h>uUrh)*j@%uR)e#mA$%uK=pl0ZMy7&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNPGg+9SeXo50DSk&j52XkO>ALy->G8MTn=2n__UJvq^i`Sdt_Z)8v$I9qsSg51`;uYTqgYo z?q&T^o>3Y-fk?gt&V8rpi(KfESuPE=%3PU{AI)-^0>Fnvn}P!8cHKL$Y@au3$NRNC z&NtT89>t0jhKws{LbF_Bl%vMBavSG!D%?G^JV#VG|2f~e@{w^@`lu?A%g^fc$Uq>#7>XDJis* zEzp{IEuYPdUErw&tj{9LUjpjC!|G)IEVY(P%Rc%hc)T!&5x+x$%Ba)it0!)wG$A4T YO9OX(?m6C(;{*4sYPD|1C0nHM4T&sd0{{R3 literal 0 HcmV?d00001 diff --git a/Libft/ft_isalnum.o b/Libft/ft_isalnum.o new file mode 100644 index 0000000000000000000000000000000000000000..beb024fb43c977a5ff07b8d7ec035a1071eac39f GIT binary patch literal 760 zcmb7CJxjw-6uqg^inb<$gMvZ_hb~>592G4@a1g2BB9G7y6RnmF<;GA^&_iMi!w@$&gaR-6=75QiKQtbJJ!rgz$_4+ zrB6~C;NU|!e=YS--~v4AhciQl!LNju#Rk_Y;0rB26=5w9{?UT83t1GZUBCwTS#Y;C)9C-!H9B z8|SIDTw3b#V0>p$2cxXWX>d9R))S}k|Cq3$PI^*xUpdEBXW#KfTL*5lG1Q)Iaqk~* Cq*RFj literal 0 HcmV?d00001 diff --git a/Libft/ft_isalpha.o b/Libft/ft_isalpha.o new file mode 100644 index 0000000000000000000000000000000000000000..da20b0195bfc3228a1611cc01e4a7ae55c359431 GIT binary patch literal 680 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SOFEk0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7kxfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw$ z%29yPOc1v;0BNXGfh+`wk5A2rPb*5yO@)ZX$D_J01FF;kMnlbmav8W87+^}kLPkJR z0*JwO@pCb-0Wk=GECq>oK;1C|NDBb@K>Z8>K#UAPdZBJb7AA@v>e2bMv-U@G?GH!( z9+1^QRuq4q2!xf$-y;TLRq^-p09nUf|A1_I35qfx8%Q#AyZ(ti3}S!*G+r>A12PZ< z7^{L97%K!A1$fvwCID5b0L5g0xZ*zqz~Ys`kx!tF$(ff8qzMXu%Gp2$^CO!cpH>o| NS)7+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z82Ed{fLeg8dj5VMAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag;K7AI$Bf|LRP DvIs#H literal 0 HcmV?d00001 diff --git a/Libft/ft_isdigit.o b/Libft/ft_isdigit.o new file mode 100644 index 0000000000000000000000000000000000000000..a0e0f40d01b86d5d7227538c36481efb8e07fb54 GIT binary patch literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z4ETG*fLeeoOa6WyAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag<#WTt0=Qwad2 CK0yZn literal 0 HcmV?d00001 diff --git a/Libft/ft_isprint.o b/Libft/ft_isprint.o new file mode 100644 index 0000000000000000000000000000000000000000..8cf5033396fa25d36dbe5e96031092dc2714b779 GIT binary patch literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z6!?3@fLeg8I{tnhAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag;46lLatQwadc C8bMe9 literal 0 HcmV?d00001 diff --git a/Libft/ft_itoa.o b/Libft/ft_itoa.o new file mode 100644 index 0000000000000000000000000000000000000000..6b8424d68378e36d6a5611c4e94625e64d9abff7 GIT binary patch literal 1160 zcmb7D&ubGw7@e)54caCFD^w5+=)p@QcF=6!G8%5v|ISwItR z5o0ejhk7Z^dUc~{+Oko5X4TfDT+WZLztw&exB(;N<(Ae{vbsjfQbm@Z7OSNQk@BoR zeZGn+c(3$y{UyfqQV88ayMPRBBrmdQBn6#?@J09_KNa+8^r&a|krY&;llY+qEu14B z3iqdQ`dPPmBusuJT<#06=^v7W%ljVhJ9~yOzlqO3m~cBG4pLV*%`Qv6oC8g?`GDxX zcW9{K&~SMGf)Bzh5j@^KVA?K3!8}7T8enS*!@KJB7Xl7 zTVJvv*ywuAAm91~;Xs&${y{7ry1~K#*g!a6 zv#a~%+sW%KXfjsb3Gc&g25sIa05$@3iZ&n81@|7Ez}r_ajBW^5C9Faaoud%wBcQgG zK11?wGpA>P?cR43LB!=lj}KS(!5)uT^r#b0n^MSDM4nimS0cvq2h7+^8L8Qs_zqY% zfnP($kICz3r1TlfB~q`Zmgc5a9r5zWK=IT*6Fhnge0v%CRuP#r8f+8FP>*B@G}+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%cmNf@0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8z3?fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1z8@Z zSOF>+!31&34j>J6Dv*T$@$sn{@o7bgxv3Db_;^(JEr2R@fYKFE^PpS?ZU%-77#lmYz0vLaro;C-koUl&^PorL!T&(u(dqlZqxlB|e~U5DXrSB;{%sum z+d{8fUgU4(g$e;R|9B}4;6uKmbb*432yPZA{L*YzU)4VZ#P8m>=2n__UJv+|=CU Hj3NdADT-*# literal 0 HcmV?d00001 diff --git a/Libft/ft_memcmp.o b/Libft/ft_memcmp.o new file mode 100644 index 0000000000000000000000000000000000000000..4ae0e2bb654a43e15e6c99b8ab3cf36fdc659359 GIT binary patch literal 756 zcma)4Jxjw-6n&|+Em}X2Hb#UcobMF?HGi2jn& zwKzDMZW+4>?I1W7DeAe+?H3|=;N+fr-+Skski34re}#q6W&|E!5Nwc$fxrs5N&O$_ z@!aD*!ycZ3NWKK6idMPkYrjvL$H{R&RF5pkkFtyq6gMLcp;YGFE~GO>RmxwU2;wHwm5b(3Os2mk)45h4`%3h>x%bzJVov*=Lx4G8Xk6SS>L~f|5Zh*_+;4Xbm zgg^paN^_5MbWo${ab6sPlc2Mlb#nYKos!O*bgn<7Q|d@3)s|Hg+VoJ-n=WcwI!$@o z{05|xXv@2v&?^UU$C{_tBPgz3H?~@Og%VFs*IQ1a-;MKJ&QebHcSoJueSrCk*~g-& zn*Eb!5(Dse{`GoGysljx39W2sMl>9$Vb>bwt6-es0>l4A>?|7hf!&1=pQD29Au`q{ O-Bq@zY|GBr1@QxK3v*xq literal 0 HcmV?d00001 diff --git a/Libft/ft_memcpy.o b/Libft/ft_memcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..d0b66830935e4bef0eeb8229d790025509088e30 GIT binary patch literal 764 zcma)4Jxc>Y6nv*45ly@+EEFtK*xFcGDtfSmf=B{3vV?dc78iqDFbV<14?Jxw#max7 zrNP3|lvkz^l0ry%Sg7;dz2t%j4oqg=+qbhXB(ERupD7|^l<)y2z(+P&5SRfMx&90K zEQn^bB9oY$%aGD@>Ynnd&e>bJK^?g}Z8(p2=_5hMeGemLanG$5ik_@h4t6U$Qm(DW z&+m1S)mk4>y97|ZBHRE{I%QefFSw5CNjbdVlOA2tdaLtvNfSin$g?hh)8Nlr<~Sum z20zOEw%(%$O{2zr+5qF=yL#7n`(HjU{5Rn@dcv=Dgr9GV(?*ZXbAB4O1Dj#{Vuu{p zEpTydW84m)xMH`UZQ(b?N%IR3{yIWJGSBAKY)hT-f;ekkS(p!odcmdDec-DqIE04V z&zO%v|K7j8=9Hc>jyB1tTZWZRjon~s4*gj$%R2$l|Am$(t&5SBOfr^@@gxVE@pM`8 Lr0clF>LGmt?|yTx literal 0 HcmV?d00001 diff --git a/Libft/ft_memmove.o b/Libft/ft_memmove.o new file mode 100644 index 0000000000000000000000000000000000000000..215dd01afd4aabcfc28b0b90b7a1c2f4460f6e6b GIT binary patch literal 856 zcma)4K}!Nb6dp}fD%(AHFzVo;YY?4;E=euSAt6e^OAKO)9o8bWBoK;9T)Xsdif+=O zI_1%$m%u#)LYJk3_PyO%-H50M-@fm?dGDJyv-A4-J`6GDn_~C?0pOlU9DvOO35tKQ ztX%6#@5az%1kxoFqEe_;9PY$vEt{UiF8h##^k|l`1=#tRg9wp7)Q@ucil~-P56b&O zY;AhiEg8h6@A#crRxpqp6`6?%Q7DPxaZWEdIU&B!7n4ovvSlFkT!k6NN-ihA3d8`r zO_^pvfQ&Y!d_vB_;Z?-wXWM|+s8??5P5+B$xben~`hXkNJ~uKwepw$d<(jqz?Sn>$ zK56zvnGY1)XeigZ@MzIG@Lj&9b(BUDt0q7tJ#Mu5MSBF}MhdzXQ?3@AHMFF9t!UWp z1Z_sc<_ikV-M<8uT>)F14h`{6OSP4}xo%T6??@6Q?!*?Vti4Cdj7`3yAJ-R^6~40_ z=Buebbv6{fMb#4Wi@@`cPBt33?~o+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%H~)KfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1; z%29yQ7EBPg%mC6*rvh0B5FekK5ua9+n41a_i;qWjUjtOB1C)+{ng``Fa5FGuz}O(# z2#6(s7;G0m7Xup*g8;}IX`og2z^@m5N>w|9JFCD)3fxH(Uod-P{5B>)Nk51ng9?d@(_*-OvMt8XarF|cG zbe{5PJOr{GsQp0)6aUHDCpp!TLcjV9*qk2&>_OWOAO1pq6bZ67bOq`A(Rk0cI?lH zu66I)KM)kuT{>iM-1%@j1P#3Jy*E2E->~2F*XMVN$eJM>z$|btA`2kaft>h1;#Tu7 zT4OwBl0fE4Fb94+h;-x&N5#U_8?~oG=E*LNM6?%7*VG6zdl$8a>jfOvTh)4r`S>vY zJ*OtCY-5h>(l+ympr*m>SGe4CYkrht{=HvOOY_P*I!`Sv5LJv8-UZfx$#2QbQxcGn zOC{fh5PgS3Jo@Pbh==qV#Pk2rXU^c&>3!JwerG%gN4?I7GQ&A^zOUf8?u?vaIDU}n zZ!*s5J=y1vqBQg!ChMD=@TwZ?@|3K$ZP|;d^bM*uk>3FN<0#BK(*Cl2l{i>RYTp(Z j<=bMx$uu|18#(YS8ej!|B`_%H;6XZ6-|Wtk3N`S}%r`spy?IZcKHtBhM4=Ia14e;Z7%m0C=7A=E_`@Eh zzQi-IfJ2iQtjDIcWz;M`_jxXx&;9ZsGbCX>p8b#ravAh+)cWwus+P?oDQZ2a7wE`Z z)Cv;mAEK;xa(sGlXldI#FPjCeH#el!3nd{biERk*nX$3wBcxT1ODFU$ZpOIHqHtJo9x5hB=nuc@hUFF(6-NImD$_DW$n3vxW5?GZ6I8r$qDIZ<70QC?4XcD^7kIcntVwX)zH7$mmeYA3;z2 z7@lJ2#XF$aNUPABzYkwB-2aAirn^PYwcAdyEwtJYgv}pVj7-Wi=0HkXnI25F*fwe} z55ej*$0;D1Wh_q7gYGF?!& zaS;0QUWE4bkUkuVenZs+^3Q;i4$g+DcPCzt>R$)mjQDRC`wal)@hbZ@_8;K!-5$~H m(f$m_a1@85@EV9RqCFx0SbK$>WeSX-M;-kGLInkf4#h$JF1=_K9Q??a@4kEQ?p^Zk-d^70M3Di)3mgP5IWRzA8eC%k z2QDQ4AbUcOp2Xz746SXmY4_ru&t!*H8a8hT+8H||6)sdkE-=-D9`PBPN(H|D0wo3E>H7# z`EEz~PFMNauIIig?^bzEyUl0#u)fn)-c?{#>&Do*<^_S=kNm0;r;ehTv6$3lp!m-8A{1q5PD5i8&}83f9QIjC{PLtrw%)hv WyJn4aqh7JiAY(Z;lDbsHcKQT3j9ec8 literal 0 HcmV?d00001 diff --git a/Libft/ft_split.o b/Libft/ft_split.o new file mode 100644 index 0000000000000000000000000000000000000000..34c727b49092ba2f6d31d2490e2121323eb1eec3 GIT binary patch literal 2048 zcmb7FPiP!v6#u5C=~mm!T3d}EGzAYuTusD-#fT9*@PRG{=|T?;({(zrk?l67I~at4 zg-ImSp^$^3C-vBio;}Fg8gb*v2CD4QLnJejvU6D4q13Fu_syGaT(busyzhPQz2Eo# zeY4;GdjHPO0U@+U1QzfRIJXbW7#Q?4c!eATXr2y$PSP1rrX!{xX16fSn!Q*fL`tT4 z#yEQ>(;mvdI1a_5vtJAg@ff*>M4d!NrfFTNEzDKlXG4FyEKXMXk^R}pRC1c05%Dfx znlD>5)2V(mSG{1GZ=dctv5EP>*K8a`JepaI`Z)BzLYk(1(VSfm$|`-MB|Wz#^yR~_$)=GIIGV%a zxtlOk;quyRSJ6azA}F?`uSKuJ-Za?cwq)QSSE((p6+>n8lCHjdj1C8GD{xXH(j^fk ziooz7IV_Ng^nMzjS(|-9KfXjRp&y?T+|L;LNqnc%G-C1)y8epLm*~qRMQ`L@Eq3(f zCs>#JX^1M-^UCBVfzi<$v8u~AwgV%^9DE}VjBObd6KUO&+J^LtN%U2>+l3p|jLod= zo~QJkaHX^b5Lz`_O$1iiLsiP>te_MOVe8aJubQw|O&C=a$_;TRTdJ0cyS{N7^9iL@ zy3M03#xf|iq;*94LmNm16)CNQ(wkhzbsR#Brttt}cB7Nn2Na-)0Ng@I@Ia&fwCEgA z00RcxgZ>e(a({WAFNWmb^loc_&8pETyMDdPVKB1ZGGvfhr!`Gn)B|9DgCpb>9f6Rw6AOW zGW`mo5mh>0SM)7%V zLi_k#p)KaM{GkK6RpfjY_GiG;>KeOUu3v~ZM)IHRd-E`!D@BAm4Ne$WS5_>0;ON_$ z{u}cFaX)+FJ_Rnflj69qJ#pUyH_kZj??1Q?(LZjfaGvE4=q(5R8%R8zg%d2lL@YoG zJ|s+qG9;eB!nxFb>_tfQT%i9kP@#?mxZ(3Gr&x}$gi!tykRt$Q_e}38>Dj$L$9i^; zldNa=2B^?!VKN|hsp73ZeWFjNAINUJFlTG#mHEnCO_=tgoo&hJyoY~6VOmw})uv*X cp_8k&aKV{RT@||u+k$N?k5#TzE?da)55k_hwg3PC literal 0 HcmV?d00001 diff --git a/Libft/ft_strchr.o b/Libft/ft_strchr.o new file mode 100644 index 0000000000000000000000000000000000000000..0f0c202426d5830381eab492ee1bd9626e5043fb GIT binary patch literal 732 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%cmNf@0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8zY1fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1z8@Z zSOF>+!31&34j>J6Dv*T$@$sn{@o7bgxv3Db_;^(JEr2R@fYKFE^PpS?ZU%-77#lYqto@rOKTX16=XM1=)=nc z|NsBTr-cKg@VM&_AO$k|N9{=4FHG15rTbY#@XAkxh?JD~T^IDN4>LVgLYE|79!y literal 0 HcmV?d00001 diff --git a/Libft/ft_strdup.o b/Libft/ft_strdup.o new file mode 100644 index 0000000000000000000000000000000000000000..d96ab0ed5ffbdd7eee8fec0146c58f826f641262 GIT binary patch literal 828 zcmah{J4?e*6h6_~idq}NLBS!Yn|5(>RJ3ph3q>lp$R(sH719SarBw(BMImHy^k+D_ z`hdFW*fEPxL7`)DP|r#3wNVfceEGif%*nlZe1H2$04Sq?4@3-cO+rJU%_G*y|HHZ> z-W4^{$C*H&xn!K%X3GwB=;t&0`JpdWQwW+zyIhTk88JAOHN>17)pAWYY~H9e4=V-E zcebPXmT)w|IWgw}S*(g`Xq=lRUaae7GmLTmbH7Vbx*@nG_Y(djKuO4e*6=xp2;P;N zfH;DTUP|#N6!d*69?&W>_CpR4HR>hEGmPf`(|gQ)X6;vvxlW&XPQOPD%+2(ehZv)= z?8e7PM`nE1c6>;kB`MX(45;B{ksQzQnb*KE-<|Gl*yUw?=4J<&8L;-fc5p{cfr)zz zK3~R&XN9Aj?1Iu#6?G~xet}iX7+*lJ&(P$50Gre5`N&o>F8Xw2EKjc>O!L?rDaxtmvzgk8USA=scVb? literal 0 HcmV?d00001 diff --git a/Libft/ft_striteri.o b/Libft/ft_striteri.o new file mode 100644 index 0000000000000000000000000000000000000000..b14ffbd07af69e702ca1c6ba0618d99d4bb81546 GIT binary patch literal 696 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%*Z~#40aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj0F<{nFn$U9I!Anz}Y}Xe0*|#Zb4#lNqlKud1hWpe7uhfvU~)T zqX4B1m>_PM0HmQ#1+owzK0Y-gKCLJ*Hx(ilACKz33aC;CC>;Pb56WfWW?;yGu|c#E z5K90t*e-r91~woD0g$C2@flEetN_viKt51ELjVvX1CU;*Takr{VuyNkKJ{pRqu|k5 z`@^HN^uux2Hz0i;-L5}8l6~Ja*l;lLx2QryK6KZ<@#yviN`$`gV7%zjdG7xOpiuL1 z#?IO|FHipe|KFqeh(hdPWQ(EkgyB39s3OLyAO^+?0Y(8Hc8&=^RVqMn86eI8ng#-} ncxG_q6KG>{=4C@N9H^WPWH3Ln>G5eL@x>)YnI)-3nLs%J-wawt literal 0 HcmV?d00001 diff --git a/Libft/ft_strjoin.o b/Libft/ft_strjoin.o new file mode 100644 index 0000000000000000000000000000000000000000..0e88db478a65639c179019944de738852d5e1711 GIT binary patch literal 936 zcmaJ<&r2IY6rR-(Lv5NIB3SScO0O2_DF+WqyD$d>K@_}{Y1l?g$q&&D1|blMO2%Az z>fhqg&>y)qIqp?RVFNAXW{_g~z3kg&bEpr#c|YcT-@MtK?)~qF1tE-ifdvQw*AyfH z*mEF7`G4#^?>X%K9GZeax@1b(xvK5OUcO`Q?M!n&`ojU~(JUzlOf*8G?)Q*a$|@HR zvzDzYrIUQ=gHl^>gZq=qppfLEGw11KAjYGjGBu@g2WtN)Tg-VirDo?#GHHV;Bi8d3 z7KJ$QWAd+oWne;!JrQAmj1Hyx9^b18pF|G6$N)hjE@5WSV8bKvuGBwe^vQ_|_-RU8dYtJ2qZjgFyfeQEt@CL)7xk%rwfr!=z59z3UKp)F=76D6r0cD zmve8TVdkyF=t&Z)ZkL7$xa9qeCEM^OZ HvL*fkEIy)# literal 0 HcmV?d00001 diff --git a/Libft/ft_strlcat.o b/Libft/ft_strlcat.o new file mode 100644 index 0000000000000000000000000000000000000000..1a44b8f2d409487dbcfa82492673fcda67ba14d7 GIT binary patch literal 888 zcma)5ze^)Q6rS}*6i?k1EEFs(J5G3iWsMT#^B8&F6YER5gF&S)$IKlt{&_q}=FyujrC>G8RPF{_o~1Ga$| zlnjHwAUH|&2bj^le>$2Po{UJo1S#G0o*U+2J;&$g-fELQ>V*7gmr)qBkk-b2QZSG* zwXwdLOu2F=v%8vEl5+Zo=~1leVpzulOlX%$eDtafTiwQf=@q%Wm0VAUij?p7bM#P5 z4+PrJ%zt5Q#pDzxzyYu^W_Pg&NT5qekLlmFh)6Z&*$mhWnl)_JKa(ef`Y*hPm{12* zp>_hH5@q2ZR0A3oiWgA?rYHy>!W1vtzx$}|^MYvQWgM$j{)R#k0*pW(jWHaL(rSvA z#;=4Q5A4f6?}=r3-ahPy?(>q$dAYiZm%JLY|6FGi`4gT$x9p>Kv@6lj6>H_huN*lE z6%S4vxZ{>4t(tWzXZ3oW8h4G=Xp;i12B{{z+t|Vl#troQA;)*1r3lvkEVK3;%jxdu zJjJOIXhUG}8J7U&{jqPo&T-54o(K&AUqKv?(*J=XX^0V!+4RxqL2N4V@Rwb=?QX55 KlJ0As&af9Gnwnhz literal 0 HcmV?d00001 diff --git a/Libft/ft_strlcpy.o b/Libft/ft_strlcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..98c68f0743316b5bc1f76fa4c587c67bf9078b5f GIT binary patch literal 840 zcma)4Jxjw-6uqh17QYg~LBXMegNsm|1Q$gEZ?GUz!9^aWRur^~ruYFxr7EUfT*TGU zpWr0*195ZIv5Sy`f@5*8o}0YbI0#-ix%ZrR-?=v-PoM8!5hAUL@Bo^DD=uOHq8Aup z{znX`vlo?p4o_mRFNc&?X4~>=k0;H!WP|(Ftt!}$cVPq9x|#OXk(;DUudS}9(w59+ zx0bUDQcg_<&mR?useBRgc8U6aL{J(bWoAh(ZlqQ-o+jn*{T$UgrgB;NDN1cbOMcCH z80Z1q-St)q0~|b*bpv~F9Yi?-{h5afDZ*gJgKZKogggsjkrM%<5 zhp^2TQOH+FKk9&)D1q8$t-1$NW%r@7C?y>Ix~uR>C+4$$$m{V9O+PO~D4Nfgnts&6 z{iA$TGBM#s9Nh4}!cI6v0~#g=w2u?kDx#&1z`RQJj0?0qG3iNbw+{tiZgxb>DQ{*rY(D|W) XzfXYTM_#n#rnRw>Uf=ntGg(}!*iUF| z3>q9;gXZ8l1dh^>eaCm78WHrtchC2od+xd4%jd^eoXD6W9AFfD6p;pjB`_oY4?OAq ztDXrxc9Kx`3Ya~&<^?+NSv!{<`%pPr$Uez3LX;XK4Z&PEDWB#G9-mh(jw*-D+gp?O zjy7psGm#+69jcBBH3qX=;$k&lc7q=C&wLF%x~^+Z@6(oMiAtfCx(Y6W!@tZKih%<8 zRQmTi#{+5-9`9)voP@m9Str~7()+6Qu3Gh;>e#+KP|bRe%SvQf*R4nwU7>`K=Q;rZ^^!UuH9=jF#27dWeJ^%m! literal 0 HcmV?d00001 diff --git a/Libft/ft_strmapi.o b/Libft/ft_strmapi.o new file mode 100644 index 0000000000000000000000000000000000000000..42f0f023a9174375d2eec7f7338b8d8a2a5b0db6 GIT binary patch literal 848 zcmaJ-#ROosO5p6_{|_t*DwcfaoM9)?7$LBRo}fD1ZV z0QLs>K>ZJMOfEE>Xv`FXb7@+8rCl%fW4-KtUVhezcV-;U<1VcM5j+(8q{Or?ZdSGm zMNikNI~&zit(O*)9QoXctl?t};VvDpS@mhGNn^j#x?bBZR7!C~>;C<2OyQj2Q!~#< zc_p%*_~duM1n_j1{Zi5Zjh8acWw=icM;45J`3UqHdx^e9dkg;KuPFbIYW&S9zus1U zt)+r`yTy9-f+N+{Z&7|Tj`(h<8ud`@!x5&MZij`pUvMNqtT)S||<<=3Ly@7-<}{Yd1a>r{rbLgl+1a7Q(M=Dz;m z4T+iW&mH@0%qVN`lUTcskf})~Od)z|~UJ6NxkmKUP_`TUTO+2&@zIngq`{wP=?(M_<NhJojSuHixDlkS>|lUU|n$<1}BCUlzN$js9>zdNj*81p25pAoj>v)7srw z-z>SF_N&`pt1DW6p0z#lZBEA6UqOUsnZm-O8d+{*zVe!0-72k@(~8#5=gTvx$b<&# zS^kg^Yc?kT4j2IpE%!oX05Uq1>P5^!^K4>y0}sBK2YQXTglB{HZun2Uq{81SXiciH zmZ;Eghf6IL)shBLlsnf_&Q&NIk!%E~j&hS9bWYj~<=v&Mn|(no5xMV0#7&b&G6A=~ z_c4nyO|7_cSjZy0qvk;&8~OF%!U_F)^SaaN80w{rjY3dsgF0;$BN=~?t=!SuRI3ev zn6)6%@5jphX#`^<7&mXMpgAr$pIkm8-LCQXV_ti=Dnx-3XLmt3J9#Jnaxi<0UGx;M zfnSeMhS~2=e0r7N@0%IUFz-D)wolOA;XWp)j66dJY5Z#L!#jm@{s&93 z5KGZQut?6zlxYN02$m`#@l9?niHP99%e;9zGy67N?(41GDumG_@B=ghH$*}Jq7N9O z`j7C>^4#Os*eM9KmqKehnzTLc)r)dzv0nS^nF;M9FSTeE2Q?0&bz~#Hxe~GUPGWaG zv8wgVbmMuRixB6_fak@6A+`#o9$H6ZdTnbZ9`!V>fBO62)(Oro@8eQ*2odu+du^2e#ly;ZQO^Fma&}&o6E3KX1ebYa)Y2Wf zRhij>avs&;T?J9?Ir}V%v~5} zx&;lzx%#NrY>hveDS9z4WOeAtnJpCuSywIePWI>4Dz_MhwFguq~0 J5s7b7&o}l;ioyT@ literal 0 HcmV?d00001 diff --git a/Libft/ft_strnstr.o b/Libft/ft_strnstr.o new file mode 100644 index 0000000000000000000000000000000000000000..10bba56b90c572c309b9a3fe5211716834ae6601 GIT binary patch literal 988 zcmaJ=&r2IY6rS}*47R#Cc&OmPg9qCpR8JN!5j!vk3!*M~DN{)!7EBboK`EpJ7d3GY z_2U2FpWsPEh0RUdQ!a&E3Q1`p$Fv92@6FD%&JPFm-))_Uu?1`mLAQr4gsan!%C)y zqLi7<+}3KwmxcV!+x#0T=U>?MXIf`eFDA842~n52?0zY;>vC;-HJ6Q7rMy4if+nRk zY23`E@dJ#iQx&H0d<0iCx1S~8WV9)*mo@(kaSRxIwg9({xa9W+wHyAEd!q7H1mDx5 zQf!Gzp&=?>T|~S_6cO@9X_~qF12I4YZ#TaY2#R&H9`QCcH$SVUVyi(2owp(^HVmjj zt1f1E)!iFZeJB$Ol(dofh*Fd2lNTaca5!B6I%T$a7) zh)1W6yWdMpq3SqCh;xKqRc#)$&7dKV5AZmasfk{CX_yonp=402`JvP4;2o%Aq0|<^ zb^6s6dM(r6pSm_{nGI>+ykBI_ZpukL>`T(OPIor~KfZ%F%zVFWb})6&H8+sZyf28j u$BEa7piM04h(I_&8@lw+M*p1!8NE*%Gr8u=cm8%B{wL4mwoJZ}&9mP%!lxww literal 0 HcmV?d00001 diff --git a/Libft/ft_strrchr.o b/Libft/ft_strrchr.o new file mode 100644 index 0000000000000000000000000000000000000000..5df8815da6375cb5853e5789029454873c59165c GIT binary patch literal 728 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%xB(Tv0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8zI{fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zElV z%29yQ0Zb6LYyi?wrvh0B5FekK5ua9+n41a_i;qWj-wdcy2PjkE*cZr3jzuFpNXU4JxKFz~nN0fj&u{(T($+d`jPUgU4(fC_nZy1oEOd9Z@4 z2l9TrJo^9tfBdRn#2yAJh5=|iVmMy}s(`U7h=H*}fKh;lonrz}l?qT?28ca?_J9B^ o9WXfZ3A8ae^RmGV2GT&~Y#@XAkxh?JD~T^IDJn|NC;}-30DQw^DF6Tf literal 0 HcmV?d00001 diff --git a/Libft/ft_strtrim.o b/Libft/ft_strtrim.o new file mode 100644 index 0000000000000000000000000000000000000000..4a891a2cb4a204f63ecbe7a9aa3da2d1bf9add5c GIT binary patch literal 1408 zcmb_cL2DCH5PnWe}=m{WITHzdy!8SG#Xnq>ogawa)>k|0F6Dk`m#RaW@; zd}*1zF8RJnJ_*@5#;VFEdkcCQ8jqo$Whp2L(NKI-?v)>7>>)7fV+#}KP#)FNtVsQ5 zDRTEacYfr#+a7RtxyQZsphqmO(IuaIh`lLx;}~}h1fZ_rdxfsk*MNL(e&L!=F{j;S z`q~9lqtriE>KR>UQ{(0?-}=V5yQla9?z97@znY+;&qheC`_~eN01N|F=qD9kA>eKy zMBk7*JNbp}$_;&LjjEVFHOH9TCyRYT?1NE@*vSYxGnnj7!b>}Z`lo!t=!9sG*Hvvn zJVq~yg{V!>OJh$r-Tx3pk!+h?*j7#dPd`vcr}lGp&3bx6rwhlS)W;lPiWn}tO@m6aAI#`Jwn z;zGUCZHd*p+yvHfuY~^3j=wwsMzAU-Kv?*RrsxjMMvFMakJV|ZmnEb WuH9O)WcJgN`HTsxRI4>iaQ_D40uwU; literal 0 HcmV?d00001 diff --git a/Libft/ft_substr.o b/Libft/ft_substr.o new file mode 100644 index 0000000000000000000000000000000000000000..db439e35cfcacbe79efe23715dd4f782507200ea GIT binary patch literal 1056 zcmaJot5L8fz;I&Xah++>Beeeoh2-=_*dBm6!AxTTR!Jq_`wI#26 z(2IXSJoFzVCrMPA=)vwua?C|AutK~=4~;X~_vl8@fqCD2GxN=xUEaa(ABXb*#xcMH zeHOh*K>{7^Ec#XA|1eM0dI~kinLti+$%L?TRXd0SzQ*pY9dR9PhUU>OdpLj)k7oqh zgvf3bH#1pVR7#H@l^zPQdP~;`^_+xCa-2iEbn#GE%&5`?gvjN^dO1_f1z91c_j{#8 zNhQjwd5XdbfV_?gFQcD9pUBMP5J4xSODXSZJ$_sQIqD&W9yZdFPc0g5_)nbX@*8*j z6qmK3toU4}`!4fko4d6kmsaaLX}N2)__emVvp}T7x|AH;nN(OGt3x;K%dgz{$>jl; ztf^JaiRygNICL#ve&&Y9WhZEmtUHM6DMT>F%UGAs(f9CnA40u7?$ml E0X|8}Jpcdz literal 0 HcmV?d00001 diff --git a/Libft/ft_tolower.o b/Libft/ft_tolower.o new file mode 100644 index 0000000000000000000000000000000000000000..940856f607c9a3610ea6a8646714448622eb4e2a GIT binary patch literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAa64fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z9Qk`d76MsO{QZ1DR=4Yq<^u|yu76&#L3luBx9gwS!^j3h;{n5Z5vU@@svri&3IRp| z9(IliKvgP0aTy@)_zwZFcw}(o6KG>{<^@>=13=|$AcOglO^;72i7&~|$uCbW0;vN4 Db)`kr literal 0 HcmV?d00001 diff --git a/Libft/ft_toupper.o b/Libft/ft_toupper.o new file mode 100644 index 0000000000000000000000000000000000000000..137ae034299c5876940f6875451f8bafc47236ea GIT binary patch literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAa64fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z68U>T76MsS{QZ1DR=4Yq<`)W`u76&#L3luBx9gwS!^j3h;{n5Z5vU@@svri&3IRp| z9(IliKvgP0aTy@)_zwZFcw}(o6KG>{<^@>=13=|$AcOglO^;72i7&}7EhtDW0;vN4 DyER5X literal 0 HcmV?d00001 diff --git a/Libft/get_next_line.o b/Libft/get_next_line.o new file mode 100644 index 0000000000000000000000000000000000000000..3fe2879730db3b1523d6228938a97ac898c702c9 GIT binary patch literal 2808 zcmb7GTWDKl9RIS_?pU{;4C-a*SV14Ea&(RggCQi?14l3*(#jafX-!UTHBB^4Seb-H zPAfS*6ec*lqJ8Y}#U~#`)`_L*TlGO&e99n$1dh^&3bB^P-~YQTm!^UreBb|m`!4@; zHuwHGIKf!xIKzV3gQ*?EGKh(B2D3Ck@CSp(`3=kCL#56$q$d+i%UzDgw~9N1~(ACPU=`^ZSEpRHL&b+m5Ga-kXSL z?Of{WbSh!nuZ}2P4j&NIvSbdSIPy3CAY)P_cR(oEwlifMy zNwS9+n^HKz3z&~#^1Ssv){9Alf)c-oJWc^#274J0_UtuG8Wf5q+0yaQx%}TTW_kB4 zHyHHtyKa7$=}Q#MDw%b1R9nO1=XR~7mx!#=VtHoOa`RQDFSMzC4w;|dwftO_>$&xY zK7X1Fd>HrDZrgKz$< z>b1Q5j+YA{*s**nN(Fo#Zv1?pYE|sETE7&r%a$M8vAj?XB$Wx>xiHh`4N3airC1=h zNhVSoSE_y_Oi^oVjYflPh4TDG$nS^uW5_-lZn|#Y@_`OtT(7O#$s4L(FJHI3+|KH= zu<5MrBzPrrABi+-KXN>vE9K?`6!R4@AI5&J{KGTAxv^&kkm7*pvU0rzx`?$j7M?{s z7OeMZgkyW>G_n>^`Hn@wfWV#8aKaCBo4k;#G+q>rxbbZYBCOpyGUAc=a)s}mH1*BE zGxvRSUmUc4t^hM8>pxHDT{0`gdf^T~H~$sQijP(F+ry{bgTA79!j7=?i$hO|@3nR%pZWN^&!+ z!jl!>uztFW%eX13^~`O&g6+ZN%z%yyHS-LDOJ+r1I@g|lusA^byp2kN;(%7$ zgu!9Es=h?Ws&eyV!SPtdivJo}9HxsWOBxFz#o@5JtmLxNJYQaORnprn@9li^y`jIX z(xps`$g)>db;X;0=*U9E*g!3 zs;Em`>Lu(z#Fh0O^7lRJ$9K#48W7($<9!J~#YdRv>wtLw#ya+q^lkxafWD;P1;isW zE&!sB8Gj)kvil4Wu8cDh{*F|zC&q7-6Juw;!$S18oMdM|21F?1y5wJz{4qedHmIk= zl`$mw1wr?YOBj)GP(lFG@BI+49}d)i3w6kT2-JB+C9Uoe{ST153>zA6U=pqF$&;XU z&}zhiw2=JYpp_=Pm8M?bO4BoIrEhl7A9T>np3K^_*-U&YqtJKK(!PRhAzr_u>#C!C~{bp%enCKCcDs}AqaO>y4LL^7GC HtziEGhP9L- literal 0 HcmV?d00001 diff --git a/Libft/get_next_line_utils.o b/Libft/get_next_line_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..d4ef3003edb8ea27560f9b335abdf86315d80376 GIT binary patch literal 884 zcma)4&r1S96rQzE>DO-1!Jxw)x_0R#bWv(y4h0bgb%;@P#UM3gB?*GS43@q0=XmN; zAav>KCD==#P~cHIXy4nN!6k_L;LZ2FH#6UR`{VWNbCO_8n`2lI^N21969KFv(v<&# zjNI!>RyjNw1^E($aO{>7>M+k)C%IX!lrIJO(JUz#5M#L|QV^n8uU;04j%e1d&TAzh z_V?5tu`d%-ayJ&vl7^og6_pu;uq&e6C{*pRCd7~V)bq(Jed(th78$E3O}vdrA%biA z0*fOE)RgKO%t1O2UIXJkJ48f5cU45||Ix?Xedp~Dle;$~?luS9vqs!w+_ij2pYK=$ zy+iLm$l5J~=^Z0XN4ytw80u=<%NX1{fRBdLuxcd-bRtOHUZ{K4m}Kc74ROmZ2F-iR1%b z<|b+z2!De9fDauYyJFnOc9-KaeF5Y6)}!PL$$7~j+KLtd$0l)%@iU0rr literal 0 HcmV?d00001 diff --git a/Libft/libft.a b/Libft/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..5b90389eaea74bfd87adb275e463124548a74654 GIT binary patch literal 37376 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≪8THVZp% zmuQVmn=rUm%_U~d3XrMf3X}%kjSg)wMw4FDiX{aE!(DpB1>oI%W8|6x=CUK#?7+Lv z?fWZT=rOY%MPEu_6wmuCUtR-73o(05CO~giaN5%%-mVLv7f^66*Np4THWwa~aSx*L zc(O)MdST87)?5i%dA_ozcpT@n?O~Bxo8hlyFx)sp8E6(9MJp3)w;~~=RpwIboc~6^Hj{_Oq<=RW+ z^=JGSYT@}~;`g)vO!$x=>mEfXQ`aFgPNE5Z9PVEKz}>Q={C(=m zN1Og;BHNebG^IVY{KBGCI3_jLf**Bl5$zM!0hYD=!XvDVlsCV4C%*8LY-szi7B~Dd zR6Y*66Vz`Xcpv%Cd%?DHJ8bgX2Mowwq)mvN8hO#^PS^-l&kLuT!P@MFBC9$i>_-7( zA?(xrhu?Pych1(xwL_~n6}VncpIZ_2A34?eV)AgiU9X>BSd1LBajY?TdZk7D3kAYk zokai0uFOEh1NH&$tU;U%HR+n#MHzQU20^o%+s{P~R*8RcRttAwf#Ic7cD6a2z@n%k z>>FZS7^R!gR1X~GvouwOuR(3nXc}Gazn_emXF8upAy~S^%p_aFrdTicQOR({$Ei-U zK15nmnypIA6{t(m8a$&g^1Qj1t-s19e#kw^p3WcY-G#;L#2UvpC$p>0;snUzls%Uv z)7vmGKgcmAg5Ol{=8aW3GH3?_xdhCuwa?_5czsQUkE4_qDYr`_JsW&PuCImm7xx!8 zN!D4Pqn$m#uLJOAV*%#5WNw?CA}{cHw!WH4ycjvav9U16p{ttl(1yej0x?Z404Q}=;oCSja$W=gN0H80qH4tE z@T>M?e2L>7QsYNU9FK{%;QR$r1^;n5{>ded*Rsv&xI4VwW!B7r>jY5E{G{CRwiCy*yV{Ku`6U_TAhJKCG_z7nIKl<65T58^nf zo;|(YC8xs7?edTr6z<;F8~7Yfcz>d`RX+$|zxRSq)cDHr(2IQ|`bmwt7DKrGH$*&6i%r zJaf$K9GQWuvOT-7Jw36w11G$#=b1mwTy+J;l!$2;lV4(4K798bYkXi2+vlsthdlGP zTkTPCGBJ;{u(^C)kyudP;KHAlb|0pz!V9KjFrVyiFWT#9FX|=mAq6*3h{oBw7Bsu? zBUEDOzsgI6QFE2;)QYZckv$Kh3{u7MT6RSBx$v*h)9b)=2mXtq&*eN7<=7Y0(~Mss zMP2-$F;LBxvSHMp+FrKHKMv!aWtmb+QK`vi8hr1G=;t@Hkiy2j+H{yyT1Un&Zh5M$ z(RjCBm*QUY_3E{6$&FCGHiw&Ak6t?=d|aU!Frgk{oLcU;VJnBBcbEUpiTXuxsc>BQ zX?^G=Re5Gtt@$-JhV6;r#|8E4HNyZuY$yK%4b_7+sOq)Kc()DyoX#V(U0Op{bv*Mi zoWd8{hW?nfPb_JCI)@lG=HTF|&eBs|L_~~kcjs(o)s=`-n@5di^BVX6GP6kY z=0#+7?Cn3l^iyaY^;sA#YCo6bi01&)iuoK3_StVZE^Vjynu@C5DGlPl`v9aMp-~(h zm7AkD(0si(*yQ6!91MxPREg&;>wmWiA6ICL$nB`|D^vfqaIjPO#D&I$pJYShU>x=F zXWoOh7IZlrR0x}%bQ!Aglz3)rF+0NVE;^CJm!d*}(<}%>B@d4*K0(gLCAU!%A3y1b zic{CJ7a5Ur?Z5$Un_n2R1HF-I8eVx zaiIBnanLS(q5c~EEXqq*9CQdDSLk{$p*>JNj7`H<4%hV8hNNIzXj1rTeaLYrf9;sm zp9baFU^yHF8mcF(LH+gsamDo5ImN;CsF}m)G&jQOvjy`$y-9{v4IsE&ic^@nvcG&n zP5LJ^KJ>j_+P~%axCO1kbw)RW`fP#4plv>k5~$C-^G1 zo$fE;NWK}oj6G>)$GJSC{eJIq^Fvd%SZRJp^NJ(&jaK@8uwEZO)-9qfhDW7ewe0+m z@=+N)tQ*3=EDIbh|2<#@i7WMwfB|vYf*3b}-|I6{p!5nUNlz0Zc z`r_kPztLSEe)0W!dEmyxV_^sFN4}S{gJJL+mpe>5!=(9o@q5;?G5UbG<@#F_1PX~? z<-pdhn~2;=*se@RMw4{2oJnUg8Ak#q=+; zW9NhJ<+pKCM10RDxoBoQa*z`##@*b+SD8OSJz@}AIEbzE*m;=ax0Q;dS%kOG6uGDU zJYKYP9);FK4qwAUiSy|REcbuO`mZl}MGIT(VH*N{>17yoL}5MxXB2gGXZlPm(^*;9 z`o7T(tsA#&Y`bam#y0Dnf+3Q~O=!K5m-wd2UAf+v1aB~n=7e?$WfYitgm;g}Z<0I+ z^Q)Udm-7S4{ACMn)LANivXq_Q(B`e{ySsNdHPAbXIidameHDB)e>sev$QTfN>p;dO zU$35c#Ta$VkDJGFqd2cy=`Y{4e?Rw2N~Lyezhk@RAhFU8-e*mKP${7g0;!gsFbgP9 znP#aCw+krqJ=XW>^)f!p=Px)flS4=t(_i+5 zk(^*gkjW@G-|oO|`Ad85yomy1?F6!H3s{V{VCE+(*&NoI%$MGBfY~X$B%n)+=HggO zfoZBIp#xdh7CykZNa^(Ez2DngJl4UFX3#e>$Ap*J_FhnjtCe}J^t>y}Cck?F>Xcs_ z$0oW?gmd|b$x)=zWAnI}uV9Pn9Mfx0ya(H+GN!$7bTM*(9-Jw6kb+nk#E)r(H|K`i zJKD_J_NAIj8`&)wgW}OL|b!)Rm@YAoZF>e8-p|fX=<5)YQ`~JlyfwzL%#U`_63UIdY z4cm!e>aVyaauDc+Rg_|W)_8xK&O?~@sIf@0XGN=MzXqP@BAk-*hjtS3=ESTu!M=0M z>z5nQ8T@j?GpJBmZ!U6}-KzEQ%+Mw6SfYP6erO{FPcEr*KAzdwqQdH*)6i?4t3Jo7 zc!Pf7k`L*}C3Hy2HiWP0{w|%OazVALj8sYJBT1en;Ah9SH|IJLG)UyLY<@mD8K+{f zQW?Mo_j;*lH_Oe3Bm12fmN=f58ZR$(T>RK^TdsnCm)J!*Uq}_lYmI;6uTTya7qy+` ze#|;B-GTq+|FPxdIx6OKS#A&hr=^@+Pt|f?M7iU-&PZEa_P%HGqb_m8&ywq_;P==n zyT0eEps;PxdxbsKvcD4)tfSQFU=>|2`^Rm5b(he% zP**4j%ddVA^a?Ogzl9o-^WxfH+a;gJJ|@ne@^~I~nCNdZuX1u7@_zra2YIQAE&D8i zKhJG{zB~>^nE8)CQkMU8SzhNmeCwPm9#skWqfUz1U4sL?#yz#!eZAegBx{#2*(&#? z1_pOIsa?H$dWU=MHV^FHWw%+&*7v;KKC@5XaAEyuSs-oVV6B@G5sPgxuL-X<|KfkH zKG5#e$Z-Fj{W|P!d>xeBWQ{+^B~PD?|ByYCRvI_UOL>hyGadwaui{THALmj&F6$zl zgxs+$ZTOKUiX@uDHRI1(DQ=59Gr~`@#Acsvlh#@<5Jx-MfG$w#LeyXKd0f97qu7d) z+9z+lfaeg>eB7LviyXWItc)=+{++(b0`KBCrzk}9F#Ry&;PCkwc&4Mx)`Bskiw@Lk zeH4{E$B{L8D)pH2@Fc8%_*3X@%gr#Sg`;6xo;wPNziV2EpS<0uxJ9+>i;k0}eue)2 n0r-Mx^psHA5azptf-t|DGVa$~YzY5L36D{5Eu# +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:05:33 by eunwolee #+# #+# */ -/* Updated: 2023/07/22 08:27:15 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 14:49:27 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,13 +18,12 @@ # include # include # include +# include # include # include # include "init.h" # include "exec.h" # include "pipe.h" -# include -# include # include "parse.h" # include "utils.h" # include "struct.h" diff --git a/incs/struct.h b/incs/struct.h index a75ee52..7e1240b 100644 --- a/incs/struct.h +++ b/incs/struct.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:24:15 by eunwolee #+# #+# */ -/* Updated: 2023/07/22 13:25:48 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 14:55:27 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -67,9 +67,9 @@ typedef struct s_cmd { pid_t pid; int fd[2]; - char **cmd_path;//명령어 +옵션 - char *command; - char **cmd_abs; // 절대경로 + char *cmd_path; //명령어 경로 + char **cmd_list; //명령어 + 옵션 + char **cmd_abs; // 절대경로, 파이프마다 갱신해줘야 함 int infile_fd; int outfile_fd; } t_cmd; diff --git a/libft.a b/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..5b90389eaea74bfd87adb275e463124548a74654 GIT binary patch literal 37376 zcmeHQe{ft^b$%j_QCyN$AZbnckr!fGhjhcr@eg@o+I8cF%@7q0iHZp@D@B$g5nEDh zsS#mB6xOD@-Z+>U(iqBs+o3b2Q0nqW;$}KVHfbd2Od@xHXiAuFXVi%nM6w-RqNFD3 z_uYHWzV~)lTD@JnlPS3)?RodTd(XS?-SeGu?z#89ckQHBk4ar?QmGqn|7iP;#QWXbKlI@{ z5<48E^-YfRP5j3mcAPb!Gk@YZk79rR2FG~_G_&4u)`Gg1;Rh*xiQ}vT?R%5s;LmAW zjk=&65ga3*e#iMF@?GzAoI609QF#RP$hD3$4w^^h6lllW9Oo{SKQZh$4}dzKcASSn zCqCmi_ky0h&v7<`=DQqc8i(87=QzIvo%n#`bYlPUdmZPUpld&Zve=*59?fpId{jxo@uYbUn z86F%N8tUC=_74y48N5%n_xA4X**j!*V{?D6EzP}swlFt`KBWcr4*prM+3xAyvuCi! zY~FQ$@4i8^wSRcup5B4drq<)`o^Hz-+XKFBJqvb2%U(rtv_Lt5+yszKhk^Mt^^gay_+M9Q@c?tQ7A38lkusVGPlx~H%alqD zhs+95Q5Ty8pvY(`ZXm%bVWVd<3P| zVc*;FKe}j>_N%k~ik8p4;g-vxZc7QpSCetX&)u(}aBNAr-&$SnH@A8A!pOZ*Zx>GP zk4o!R?lsRF$p5f%f0K`2BXZv+d|aU|BBw(lZ`h43FV&L!ol-O|G$#C%Ls+>Vm3C16 zFRt9jN;1B6g)+`-l78?@qPf&sa-I=6*M1Bs=hpb*Okw4GOIwA0hv~j>a(=>GJ^U%T zBbu*Q&TsYcqnuL?@JD4oPNJ!nepg-TN`>`cLd;R0N>dG6kKgk8eMkz%g(iic)(Lso#_7`4;H-+}Oe#OQ#o{$ia7DBd|lXI}50G=ly|pPo|%2 z@o9LLfUjvuX!#!!`Pcp}mwy+0ah*}P*X*AtPXoI8a!|kCr@!GpIk)|J<45)HU(#7M z4lU}0#ZiU5=%(9y;c%q(L2;z{dU2$BhWuW)7iBVn{$FYG{3NGjFCKX9+Y2L|yvBy* z+zjbnmvh|8fExb)>le8tIseRSU(Rj7p>a8vaK&p^&NmXwNU!U2tIGp6-`<)P{d)Qw zW8Af+4g*r%>~5Kgj~PkNb~jL2-8_6HHxDy;o}Nz6S=Q9UNkOz z;zD;eh$F^}C`2bNE{+zmBj*64ISBg##5|vCKbL9$cjN#jABg5Gh#0^>l)z!2D*J=v zgJ&!{I`f&P!W7{KE@crU>95du=n_0=e}}~bXBz9m!=}xpd1cHK5LtcuE+8KAA|Hwe z&DV>E`+fWxiTjKTA6KZ#?@5tE?8cUtYK@1FNzu5_QPkEs5bg>aKb??v(9T^pOEf!X^O0sVz(^7ccnjJD;sD>x$Z`KH;TK6da>8^x1Rh~VW4Kk9kPe+)m;WbE-$Ej+E2 zN^z+|95jNbHfcu^v;{mb`nYC!JUxLXRKe3s@@9-}KDQl53%qa?scN{yFk!URoqS_8ryDDEu2ohYJsY97#62y!5K~!dfc=% zfK$6%&4X#f@rNn7e#NQg>&5AAA3yqu$AAX|sF3sQeZt2T8W&uh0Idh78Ra9iOZZ7P zw4ZoV>NEb}g2{3?MUl`+=Gon(#vnLUiu^q-+vFU%aTJwIkLAlP;59hb`m1DaEDyA4 zl{2=A8Betv`-Mq(*FS`kehZC@onpVV-^+2q^%7tj<@x~J2jZFe)x?`W9?cW`PflOL zpEvPp8#QoJd%Z=QvVJo>u3`ay(yaaT!Kz_gok07U6jz$B7gx7gb`ATJ><=c_{9=uW z$Z-Z#?sq_3YuUdc;S(2{6n>HojjJQlj$@z~(Vs*RVx$OwFc`t01YqS0LlkWo;&*Wo z21MoH6F*sZV~5#2=K8EBx9-UO5hu&cl|MYRUh& z6pahrDf}cGTK*~bYzOV!MU?*{VguGDSpP3Dh~gSz&yUKr&y8lkJxNhej(!vMyOCfF8n5hpJYShp#|*#3o}0Bpno|( zt3ufHq{~q8vtlJb%gptR%~^18!pG-hX}s+LFf;&ZoxpHrE^_M1^eav#@oeM(o5vbW zkw+)6<51$+<4uu+m$LlLJX8vJv#qoyCfp#_NA?vn3_;|Rm(sPOn`dT$u&W5u17c!+ zpbPNfVnHk9IA_2Ysp3}D!rg+5Z=}9cZii%jWXXTy3H<&W6-eNuTt_b`GQOK&Gwk?h zYtT^DBEMmAS+r~%SLl@BNaF+8O<0stEj!gB z*BO@@bHYy|ApN#jU9j){t2xcP&~>zl1)4p#PDR~0HKmgJeNJ4KE0T2e~#0-kDSSLP9923 zmcUFLfRoH#k<-#(E_~TqNr5k0GR3B$J|P?rKv?8QdJB9d)xz(z;8*3Z9KXK@K42QH zAIIK$ix+gCn5cj4@-;`Tz}_-At8e-m&F2s=agSqHkDeGMoaxj(gt&%T;5 zSGIE=$h8j+BzxNDlTA|?fdNVBiKb-F!YK;AVmv>Yc#iyGP`R`sj!kt-7f|;(>z1n*P$7|aMS zFu7!8CfW0}VK`$L&J_Lykk+>3tJz_ZpSp3Z@>h;yJf>@KOr4AVpdMnrVtmNs{*zx` zmRFnXe~49|dDWOoJ@X1%g7ez2*RSn)ZMt$yigTO8Z^(G%xKwn7>NxNuI!XE=0H0d+ z`k3&E3mrvm;#5;udrd!_?U)9=nBz*!Yv&U4nZ(Zl$>Mk$Kz0+(%1q=GC$E3*o4lqy zUQoZdSX%W|EKG>OT&hYlSyrFimj3jMzPV+!?5ECat2~tBj!eL`0%wY&y63ew2I7#w zOAs)P`nN{iq3voHHD9lP%XbklHHw!}%f@kqc8Gj4?jfCrEicu=%TXyB7dj;TltWm& zC~oO@w}8oVc2Um}hRXUvvo1f$GJxEz0T6OLITcCMZ&FiJ z_&hSk>oa3UOl4zT@C}_)$*pHIiOI;HQ%{JcOTS!Y(3mvGv8FhOHO0BkDdXpwr)SMs z%q#>9qBx zfk>(^Xa@~0L+XpA>?-Y8J^JE8+tq2bgY!3x>;3`ga(2~RKW|Ei6qq;np`DX_b7C(~ z=Mk-0eir>*IHjFKH`9b#Gh1^aUHUOJ?$oZT9F*g(8x11fZUDu7i89WGTNwp0xFfFo z@mMy%--xwk`RmH^iapMH=(g{TMP_Iy)9&@*kuTFSsbs%_au1M=`nhd#v5H5{*Newz zaetT;k2Z(jka$$R;0go9HRWHLjBfN&EkAcbipGT!Pkx+)wcl%{9rOb(qMr-XT>Uv3 zV@VOIitY;?iOymHC9k}JXXYBe;Q>OFj$U(8Pc(jH)O=$M%Ly4zR;ZWk4 zQh@dXKZnzard53oN94p0HPbV-?ChM_S(USLypsu-E;-&bHWFpR`q5ik1MA870x}PT z;MXV)$IEc2`Fe5qb{{|5jZzAULs$5?!eBvgv$IYd#)V&8_z_3=E2XeF?2>jc4to*f zGYgZ6b8O>eqR0!N_lOZ=`sK?a4_)ogUrw;S7D>yT+Zy>QTJ*x9 z#0#YsaiZg%#JM$?m_@+Z_wW#yw5DH(H5IdobA`V_BQf6Qg1W%4*b#Y?-en7Hs)grc zf@hW2Ptz9+m5%eLtQ9Mt}olv`~`Fim@`c zpWDItQF)dKaaSx?9CJdPG~o%7irC!78& znSBPq*ppi8q^ZRokgD~BRDV+(Ks_I~K3B`<#(seZc*Q`F7 zmh2n|FBWb#>rDjAk zgsG~(*uD%V=@WwOSVujB`6KMNUrhWRURn0t|f0adt zrz1q}L|VW|QZ4<^A^Jh(wp>4a9ef}M(NRz^kA6hxwL(F-zrr7&t?)PIcgphCmk+#M zG~mmJ)i+x!=6CqAQcvMDs&BgFVpQK~zFvJ}UMY!tqJDgvhs$y7E~Q%UebbxlN{tzG z7FanQ_>m?DU|h?OccoHX_^Cf4+0goiehk}_!H)}ik@QWhv>u~0w#GUP=zwWe9n;CC z(xX$S{{sW5Y++J7@*&snPw7ppx|Gbqw!+m9QW9VR7HO5wFG$jNkcU;tPlSqk>0(`^alzSf@FU)kLgBtyN*}RxoxJdqY-rq1$aTfA#;^lS{J7_- z_|HpVTTwK05t6YoARQnvk1L_MA1≪8THVZp% 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 aSyQ&ZXou2>%pWTkD*=YFmNKIJ_rCza^JD-3 literal 0 HcmV?d00001 diff --git a/srcs/builtin/builtin.c b/srcs/builtin/builtin.c index f506b05..f73f677 100644 --- a/srcs/builtin/builtin.c +++ b/srcs/builtin/builtin.c @@ -6,13 +6,13 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/21 17:42:18 by eunwolee #+# #+# */ -/* Updated: 2023/07/22 11:57:28 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 15:05:53 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -char *(*get_builtin_func(char *name))(t_data *, t_leaf *) +t_bool (*get_builtin_func(char *name))(t_data *, t_leaf *) { if (!ft_strncmp(name, "cd", 3)) return (ft_cd); diff --git a/srcs/builtin/builtin.o b/srcs/builtin/builtin.o new file mode 100644 index 0000000000000000000000000000000000000000..bc031d86c6e18fd371cef167cd72bbfaea90d878 GIT binary patch literal 1380 zcma)6&ubG=5T2wpjatppT2TDeg9k75P|!nR!BPVY_E1U%QRERfn`FUkmgFssf*=IN zPz3ShMXz4H2{{Q0J$UdW_zx5mRCrp;XFgs9L+ybfSjre7-bY6~33kCm|gLb?md9hn|FnZKWerfU@vQ8TT>A zVFnHnRbkLiD;%eUds&Mq?4a%qtG{LSei&B&;kLB_eRlaYxCVR%-epP21K5X~&qU_tTR14}TYV*|Ugm1P$)o4y z^Rzb0Lm0fHJhXZrjXNLgDmiweMNZe%H4Kid?^#pWa9HtoafsTimGWPJBeIui=Aj&s*a?qRYzBJ& +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/22 13:20:41 by eunwolee #+# #+# */ -/* Updated: 2023/07/22 13:28:22 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 15:40:14 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -56,15 +56,57 @@ char **join_cmd(t_leaf * com_leaf) return str; } +t_list *create_env_node(char *key, char *value) +{ + printf("\ncreate env_node start!\n"); + t_list *new_node = (t_list *)malloc(sizeof(t_list)); + char *key_equal; + + if (!new_node) + return NULL; + + new_node->pre = NULL; + new_node->next = NULL; + new_node->token = (t_token *)malloc(sizeof(t_token)); + if (!new_node->token) + { + free(new_node); + return NULL; + } + new_node->token->type = T_CMD; // 환경 변수는 T_CMD로 설정 + new_node->token->redirect_type = 0; // 환경 변수의 리다이렉션 타입은 0으로 설정 + new_node->token->str = key; // key 값을 환경 변수 노드의 token의 str에 할당 + key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key) + 2); + key_equal = ft_strdup(key); + key_equal[ft_strlen(key)] = '='; + key_equal[ft_strlen(key) + 1] = '\0'; + printf("\n===========keyequl=======%s\n", key_equal); + new_node->env = ft_strjoin(key_equal, value); + + return new_node; +} + +void add_env_back(t_data *head, char *key, char *value) +{ + if (head->input->envs == NULL) + { + printf("\nenv dose not exit!\n"); + head->input->envs = create_env_node(key, value); + } + else + { + printf("\nenv exit!\n"); + ft_lstadd_back(&(head->input->envs), create_env_node(key, value)); + } +} + void update_env(t_data *data, char *key, char *value) { t_list *tmp; char *key_equal; tmp = env_search(data->input, key); if (!tmp) - { add_env_back(data, key, value); - } else { free(tmp->env); diff --git a/srcs/builtin/builtin_utils.o b/srcs/builtin/builtin_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..e3f8f2afabaab9b35e48835dac6069a6f553edbc GIT binary patch literal 2832 zcmbVOU1%It6uuMFG)CLqf{`d{HlR?1)u+IymZg$t*8C|P^ zw3|q#Lm{9df`TGS9|J!4U}+LkvV{bUT45i2*aw9yM9f3LrB>s2?oYDWBnTe%&bjBD z@0@$ix%bZO_qTul=P+Z&T?`M5R*d!*JYpE22Qa3|Z~*nTNyBmS0cjaA84Zd@#JT4d zJvo>18SCts9a+y#D+h{4)3fc2JwnD-HbG1i=T5=Pk7kCIg7e++beyxwenI7_{Z+bJ zM1D?oESGdV?q}W}&7?Sg<>a;zlUbG5=So>YJnET!H)DsSZdXXo-4Q;NPma0L*qmR# za;i!*E23ExPt!e&jp#Y?r!l%P#8yN)SQ`crElT z-}3=G_{|Q+>t$<`z;>yFE{k*lc1>@l2 zjPNh5n~1Sdw$`Z(#MrO{tEzbAsd>9JUS-qPa%7T9fxc>&icuE%Xkj|BeA!yQYDA`} zfZBuF9GX!I5hm743r3JwuYD_4Tt_;#Q@>7$tYIJe_pFl&uw& zPQ?z*7)CqlShWKK9u<`MDtUxfMJ6-(tQKkUMh9nL#SU735Kx&|CG=NHOGekID1xGm;~O%>Av&jXqRqjQR0U}0wp|EPfwtV#soh*^HTn=$AYqu-hWVwF zhJh^o3N;3CRbvnlSbr_Bu4yQh*Cp%O?sxw|{qChRj((%(18Z=qV}rZozE3?# +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:31:18 by kichan #+# #+# */ -/* Updated: 2023/07/22 13:18:56 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 15:08:48 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,11 +21,11 @@ t_bool ft_cd(t_data *data, t_leaf *cur_root) char pwd[1024]; option = NULL; - if(!(data->input->root->left_child->right_child->right_child)) + if(!(cur_root->left_child->right_child->right_child)) change_directory(data, "~"); - else if(change_directory(data,data->input->root->left_child->right_child->right_child->token->str) != 0) + else if(change_directory(data,cur_root->left_child->right_child->right_child->token->str) != 0) { - option = data->input->root->left_child->right_child->right_child->token->str; + option = cur_root->left_child->right_child->right_child->token->str; printf("bash: %s: No such file or directory\n", option); } else @@ -35,6 +35,7 @@ t_bool ft_cd(t_data *data, t_leaf *cur_root) update_env(data, "OLDPWD", env_search(data->input, "PWD")->env); update_env(data, "PWD", pwd); } + return (TRUE); } static int change_directory(t_data *data, char *path) diff --git a/srcs/builtin/ft_cd.o b/srcs/builtin/ft_cd.o new file mode 100644 index 0000000000000000000000000000000000000000..82288e26b59fb2e8bbac79a7d6f7105e8d13c941 GIT binary patch literal 2408 zcmb7GL1-LR7=9bmbep!B1zlO8&;c#h!(56%S{qq4ktZ}Zw2dvOJf^d=*(J$jnVn6y z3Z*4Z>M#z}g9k6-!ILL1fgr|4T1XCsS`f)a@SPw!#=>0~jQ{%it+gnZIL_WOwZpEAj# z@A;LV%IFD?B1t-?>BA5IaUP4<0X3Iy@P94?BIT_j;Fn zla*hv@&)xlM&-#85ipHm3jeR5X^%AFIFY5sFPBjDI$1}zc`|$v4pDd$x{4G}l;9!P zli|sonzYfUqSWCCgUi))$NqJ1X1`k zn18wom*I`8u!`kukk8W~vGnHge%PXmdw4vF_T7oXWmp)Y0XCNJ=pwbN+r>-lyxpuF zGY>V7nXk;5&6ZO$tMwVzob$~}-FKZ}&c8UwoR;sqUeKdVav5YNPmE5S9c45I8+K6B zG(R~$#w>QeRW;}B8BJ1ZN)kFF{TWe=ny)FI-FU$IBicCk<|&qI7jlJtyYuAp1o#6O z)N~RZpRwnM3X6R&?#E|M3fYZf@O#Qm@AEgiaeM^vyRaSy;u(1q6K;jo55#xN`VEVC ziXBY&##wiOI8^I8kk*%hc#5B3!rs;*Fc0)Jz7E9Qwax$UA zGWx-c-p=UHX7rab`XQzFp_fuFDP3!fH8MJV6}IQggj2J&-La zw(9{CQxZipu!B~UTwu*aH2~vRT8;G8b7t`_$j+ID)wHPE^%(^5=0(%BeW%7m1Ajh( ZDm;AGMPN5@E>w2 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:30:59 by kichan #+# #+# */ -/* Updated: 2023/07/22 13:21:19 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 15:09:33 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,12 +17,14 @@ static void check_echo_flag(char **av, int *i, int *flag); t_bool ft_echo(t_data *data, t_leaf *cur_root) { + (void)data; + char **cmd; int cnt; int flag = 0; // int i = 0; int blank = 0; - cmd = join_cmd(data->input->root->left_child->right_child); + cmd = join_cmd(cur_root->left_child->right_child); int k = 1; check_echo_flag(cmd, &cnt, &flag); blank = count_args(cmd); @@ -37,6 +39,7 @@ t_bool ft_echo(t_data *data, t_leaf *cur_root) } if(flag == 0) printf("\n"); + return (TRUE); } static void check_echo_flag(char **av, int *i, int *flag) diff --git a/srcs/builtin/ft_echo.o b/srcs/builtin/ft_echo.o new file mode 100644 index 0000000000000000000000000000000000000000..ea867e6c040094f09479828eedacc2e1a2a1bd0e GIT binary patch literal 1512 zcmah}Ur1A76#uT7&NS}`1EVM(5`-FP{~*YiIp;g){JwL(`{!$AeY24< z?Eu39sfYOLuyjCxV~{xt?1M$h1-g{>d~h-n;v)!QMN*b)yZ(?dJhbC`R&x~})fTZd zQLvuPkn$jenXsl}@lmxQ#BM&1hk78K_Zo3srjAh_^=D3uPlioPB;$`_@ev_z_HPGa zw5x)k+6;n^?yUPD^SE|V3K1C-(W&rw#4V`pZ&+oIDZUxSr(D*|m=}^;=diXz9dPk|K(45ww1E8y?3fIjJ&<5WsH33 z_14xFj%0dTWnJ9KnwQPmpS$lZ>8F^SSIx>Zp(0I~leY+KgWD+|8Y{bvZE$Cx%*`h5 z)GzA`e!CLT)8GFU8r1AcTu;A8OwQS}h)Pt4P<@0uE#LHo9(yw|XRPVzllu|`^%q}) zbIG-*#@ZWP9v(O=-NlkK3UUPMkDi4&P|z3Je0Bw$p511v4#f3YS>1)GV-(~i6-pm) zNi?qGvp;GXU+K2%7v1siEp;YX2Xo&()G4gHni|*zx+21HH?k+*=7yQ}_!iSre$C&~ z=zET=)7U=&nfrs&0maW)U#tH~-L=E?t`jJ)A2PV<=Bab`jUit5o z|5EwSluzFd@&ebPfxsCo_-+Cn&}dH{Pr4I+D-3T=>RE^H!4IR#^}fS8a7kRPiC?Pm znHUw3RLl|yD{Lhb48N&l+!EobQP@#SM9i@XY>q|D2htYNhv88sCh=>uqD +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:23:29 by kichan #+# #+# */ -/* Updated: 2023/07/22 13:24:11 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 15:11:22 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" static int is_num_str(char *str); -static void exit_not_num(t_data *data); +static void exit_not_num(t_data *data, t_leaf *cur_root); t_bool ft_exit(t_data *data, t_leaf *cur_root) { @@ -21,7 +21,7 @@ t_bool ft_exit(t_data *data, t_leaf *cur_root) char **cmd; int count; - cmd = join_cmd(data->input->root->left_child->right_child); + cmd = join_cmd(cur_root->left_child->right_child); count = count_args(cmd); status = 0; if (count == 1) @@ -38,13 +38,14 @@ t_bool ft_exit(t_data *data, t_leaf *cur_root) exit(status); } else - exit_not_num(data); + exit_not_num(data, cur_root); } else { printf("bash: exit: too many arguments\n"); status = 1; } + return (TRUE); } static int is_num_str(char *str) @@ -63,9 +64,11 @@ static int is_num_str(char *str) return (1); } -static void exit_not_num(t_data *data) +static void exit_not_num(t_data *data, t_leaf *cur_root) { + (void)data; + printf("exit\n"); - printf("bash: exit: %s: numeric argument required\n", data->input->root->left_child->right_child->token->str); + printf("bash: exit: %s: numeric argument required\n", cur_root->left_child->right_child->token->str); exit(255); } diff --git a/srcs/builtin/ft_exit.o b/srcs/builtin/ft_exit.o new file mode 100644 index 0000000000000000000000000000000000000000..541740261d373124f3200d89e0de279632cfc147 GIT binary patch literal 1764 zcmb7FO-NKx6h32SFEif|3I&C4kzmD?wn|Ad>cJBfEbM2I+@^8ViRO*YyrC%=2u5RG zgXSh^69huLpk-}rpul#us0eB?L`A}cE-gy?&VBcpqqXS3x!*nKeCOQr?$6B2AK#X@ z5Ct|7252=@tHNMFA-kY?4*Ww}I1$pqIgH9iO=9JGEJ8TZjN{EcyWc$D|Ht-cU({M$ zk8}Gr6Ybz&HQiwFMTkhsNyhA9o?qvbir4#%C|kAbmqUM%M0_+HaYWj_8nXw5 z=sCF>#N>!dxTu^LQI9{hg#OegSCkYYIwFRW;dsqO z5zWM$TDlZYjdU11?=YN1!ib0MYeqOZoQ_9rCsi45PIVYI0?Alpm0~2LW9e8jI_O$Yf|vlsr|Q0o_V5u(;7 zI$j^VS#@H&{|12v1Jr;ofOvb250yQm>>_G$ z{0UITfe3}}13CW=kmFN8j*kQJ#6va^5;}*0c|AbpnLy_42jY!~_5ktw8|nh0ZjGT3 zAnj&gJpv_mK-!>e`}>V4={zXm7re&gwJU7Cd~4%;^suX#$HKowYva~Bo5YYK_{xzO zmMBtA*h!}dzsqUc5x9Ps$5H~94WT4?Bs<}-M`nkeM2y5J{uG=c5|+)@ literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_export.c b/srcs/builtin/ft_export.c index 042335f..873385d 100644 --- a/srcs/builtin/ft_export.c +++ b/srcs/builtin/ft_export.c @@ -6,12 +6,18 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:25:07 by kichan #+# #+# */ -/* Updated: 2023/07/22 13:28:14 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 15:15:15 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" +t_bool ft_export(t_data *data, t_leaf *cur_root); +static int check_underbar(char ch); +static int check_name(char *str); +static char **sort_bubble(char **str, int size); +static void print_export_order(t_data *data); + t_bool ft_export(t_data *data, t_leaf *cur_root) { char **cmd; @@ -20,7 +26,7 @@ t_bool ft_export(t_data *data, t_leaf *cur_root) int i; i = 1; - cmd = join_cmd(data->input->root->left_child->right_child); + cmd = join_cmd(cur_root->left_child->right_child); arg_count = count_args(cmd); printf("arg_count : %d\n", arg_count); @@ -47,50 +53,7 @@ t_bool ft_export(t_data *data, t_leaf *cur_root) ++i; } } -} - -t_list *create_env_node(char *key, char *value) -{ - printf("\ncreate env_node start!\n"); - t_list *new_node = (t_list *)malloc(sizeof(t_list)); - char *key_equal; - - if (!new_node) - return NULL; - - new_node->pre = NULL; - new_node->next = NULL; - new_node->token = (t_token *)malloc(sizeof(t_token)); - if (!new_node->token) - { - free(new_node); - return NULL; - } - new_node->token->type = T_CMD; // 환경 변수는 T_CMD로 설정 - new_node->token->redirect_type = 0; // 환경 변수의 리다이렉션 타입은 0으로 설정 - new_node->token->str = key; // key 값을 환경 변수 노드의 token의 str에 할당 - key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key) + 2); - key_equal = ft_strdup(key); - key_equal[ft_strlen(key)] = '='; - key_equal[ft_strlen(key) + 1] = '\0'; - printf("\n===========keyequl=======%s\n", key_equal); - new_node->env = ft_strjoin(key_equal, value); - - return new_node; -} - -void add_env_back(t_data *head, char *key, char *value) -{ - if (head->input->envs == NULL) - { - printf("\nenv dose not exit!\n"); - head->input->envs = create_env_node(key, value); - } - else - { - printf("\nenv exit!\n"); - ft_lstadd_back(&(head->input->envs), create_env_node(key, value)); - } + return (TRUE); } int check_underbar(char ch) @@ -149,7 +112,7 @@ int check_name(char *str) // return (0); // } -char **sort_bubble(char **str, int size) +char **sort_bubble(char **str, int size) { char **res = (char **)ft_calloc(sizeof(char *), (size + 1)); int sorted = 0; diff --git a/srcs/builtin/ft_export.o b/srcs/builtin/ft_export.o new file mode 100644 index 0000000000000000000000000000000000000000..29dc6b07cda7b0e217be4064da2ae2805f085b31 GIT binary patch literal 3276 zcmb7GUu+ab7@xxmM+LShU`)m;`3zc}W z$+o8F2E{}YB_{F+CMG=i;Daf(AibCvi>XNys<{|QdZ8xO^r6s7{e3gDch{plILYj9 zzCZKL_kHut%>MG=uZOD`3q8T`L2p10ufRt|M|%!^kOYru&6rGWJIz50Xkt?*d(=$R zv3ngc7W5JQ*pVt7j9z$BjL06%jjU#D3$YqlA3@Me)5#@az zdjIyU6#S9^b|Nh7Ns>LqSa&ccdxW>%a3QGFIZQ0`$o(p<@Xf%YN_UORa0O-3O)f$f1^!s zOu$03^eb92td3cu&~OXpA;8umOy8aLZiWi(Y@xd=%-$iBqk4(Jz@g*l<)=`Hblg$9zau4lE3Q#)_=wjJFAod* zDYk>|+6pT;5ByYF9jHaV-?Ud!Kd}D6qt;QoJhoE#i)!(gjM0W7Ip^i?Fy+GV?!`(f zsW=b_c^3qN1LH?a-VdnETkvlT8N329{1Yy~KN|ZTB@~Ha{bW%6RD=yhWNi%R2N#hz z*EnZmhVOzu!V^Gy^0C}PX^|#TK`*fiCfzHROBwhZLMTKl%l<=5xdqjr-$c;mO+n<| zjmYuqvFu4aA8yJ~ThwjwM%LKnn09X_opsbR-HD{FCe!JRnsZ`VXG$C8P-nuyyeC()I#vyE(9u8~FUo^0bikt=EnMaV=^GfVhCP9Y9=4 z8a?`Jfp-xL+4}=X_C^G1mw`~xJ^|tvLVF)bdajUfJO)J5bbN^a29W0O0^*|7wgR69 z_5opM7b()!#dx+saN;sU6%Oq)Zl5iz)hPHgmW=%}%$oGYO(AYvX$=ok*EhPn=J(_ +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:24:31 by kichan #+# #+# */ -/* Updated: 2023/07/22 13:26:10 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 15:12:15 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,8 @@ t_bool ft_pwd(t_data *data, t_leaf *cur_root); t_bool ft_pwd(t_data *data, t_leaf *cur_root) { + (void)data; + (void)cur_root; char *buf; size_t buf_size; @@ -34,7 +36,7 @@ t_bool ft_pwd(t_data *data, t_leaf *cur_root) { printf("%s\n", buf); free(buf); - return ; + return (FALSE); } free(buf); if (errno != ERANGE) @@ -44,4 +46,5 @@ t_bool ft_pwd(t_data *data, t_leaf *cur_root) } buf_size *= 2; } + return (TRUE); } diff --git a/srcs/builtin/ft_pwd.o b/srcs/builtin/ft_pwd.o new file mode 100644 index 0000000000000000000000000000000000000000..d566370ccee0062c282e41cc4d128fc8e8f7472e GIT binary patch literal 1224 zcma)5O=}ZD7=9B=8ml!q7^xtV7QYY{t0?qRsOZ8R1WT#lK^ekklLpcxCKIv<0U=Rb zgW$!BKf#M$z4(EGH}wa2*o&}&LQhgWG(PXnY?}lHUwG%4=lytQc4p`E@1HxWn%o)gfyEq}#LjwbQYzO|dan7peRF+}$Fomn!g}26VPmr# zo1%LRu}SH)RI^emn}C$#da=%e$^SC@i~A=i_UF_$8wE$ncCAyX6{Wm(HLhjcG9+(s z4*TLW3ow`?7?YIJ-H@ebVbj$Oll#k>rWK>NWb_QB14J9~obdvD4j#2-W+(+`<3%|h zqJKZo!=bGL(H|jT*SMEGy&L)e$qnIu6TKgc!tZVizr7_s+97uX1HLFR=mxJ@Tt|I7 z6uoXpnfph$=<)KSIQ3?)XwVJCpdILr-Zo|Wr?_~~4$)A-^rcZlp>KbU>dwCvy$_4G z-($Tn3PeM1X(7`$D_#8CN_HUL1qtEX!S}V{a9C2(DO9U#DrzCjO|2EPMDU+xwVTGn;VEgQ%>E1Kud0&y)Cfb~+B zfSHl6IIiQIj*L?yX*xH-S${OoZyP*`H6mNq+%O`(jM4hj6P%>$RTRl`gtDays@)>l gh>jnxQJP5uZ(NlKPsw#LD%t21(G}fQ#PvPW9~*|K-v9sr literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_unset.c b/srcs/builtin/ft_unset.c index ad80fa4..e9973e0 100644 --- a/srcs/builtin/ft_unset.c +++ b/srcs/builtin/ft_unset.c @@ -6,19 +6,22 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 22:51:02 by kichan #+# #+# */ -/* Updated: 2023/07/22 13:27:04 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 15:13:08 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -t_bool ft_unset(t_data *data, t_leaf *cur_root) +t_bool ft_unset(t_data *data, t_leaf *cur_root); +static void env_clear(t_data *data); + +t_bool ft_unset(t_data *data, t_leaf *cur_root) { char **cmd; int arg_cnt; int i; - cmd = join_cmd(data->input->root->left_child->right_child); + cmd = join_cmd(cur_root->left_child->right_child); arg_cnt = count_args(cmd) - 1; i = 1; printf("\n=====arg_Cnt : %d\n========", arg_cnt); @@ -36,9 +39,10 @@ t_bool ft_unset(t_data *data, t_leaf *cur_root) ++i; } } + return (TRUE); } -void env_clear(t_data *data) +static void env_clear(t_data *data) { printf("env clear start!\n"); t_list *current = data->input->envs; diff --git a/srcs/builtin/ft_unset.o b/srcs/builtin/ft_unset.o new file mode 100644 index 0000000000000000000000000000000000000000..876506cf9f881caee6ea47567bf74fb4b08c5666 GIT binary patch literal 1456 zcmb7EO=}Zj5T4X(L$yr~Dp8cK;uk`siWikYO1ttFEEH{_9?IL0Y}!b&Daob=AtC7-ScgzJr@*TTk$DKM~VE9>$-t60(Hwm{d5G%!cEz~ zi8+F>lZT1sU{Oz#P!_K7mGh6V^FL);*xy9;=diFV9buQ+!qK7epm56JCUXf}ZwjZ< zbV0Qlu=U2eUgx$>sUd2y4sI*tMJo*oJs;wtTI|oRALSie|KjGf?t0-LyJ1JK-_aYP z+GUP7dIzl|uuYMis0-)jhFj-M*Q@UW_H@1VaeI5ag;aXWLx}48;n}tHwb0Nq`$+Ah zx%<>&ui#SC31$SMk7;`xGdL1L0$R!Pm&T0RI_iWD8qB6hG0(VE9GP=z#yuaNZbnRpqHZ z2l7sWvzI9P9l7`pM8Cq~-8=CH7O#5rsq&YVKMMVUe7d zMmb|iJYK6*Bz#~>rX}$f;BJ^p(tW-p7x5Ld(w?he +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/22 12:06:55 by eunwolee #+# #+# */ -/* Updated: 2023/07/22 13:30:29 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 15:59:24 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" +t_bool execute(t_data *data); +static t_bool command(t_data *data, t_leaf *cur_root); +static void exec_cmd(t_data *data, t_leaf *cur_root); +static void exec_fork(t_data *data, t_leaf *cur_root, t_cmd *cmd); +static void wait_child_processes(t_data *data); + t_bool execute(t_data *data) { t_leaf *cur_root; + cur_root = data->input->root; data->cmd_idx = 0; while (cur_root) { if (cur_root->left_child->left_child) { heredoc(data, cur_root); - redirect(data, cur_root); + input_redirect(data, cur_root->left_child->left_child); + output_redirect(data, cur_root->left_child->left_child); } command(data, cur_root); - cur_root = data->input->root; data->cmd_idx++; + cur_root = cur_root->right_child; } + wait_child_processes(data); + return (TRUE); } -t_bool command(t_data *data, t_leaf *cur_root) +static t_bool command(t_data *data, t_leaf *cur_root) { - char *(*func)(t_data *, t_leaf *); + t_bool (*func)(t_data *, t_leaf *); if (!cur_root->left_child->right_child) //cmd 없을 때 { // 다시 돌려놔줘야함 안그러면 redirect로 바꾼곳으로 계속출력됨 recover_std(data); - return ; + return (FALSE); } - func = get_builtin_func(cur_root->left_child->right_child); + func = get_builtin_func(cur_root->left_child->right_child->token->str); if (!func) // execve - exec_cmd(data); + exec_cmd(data, cur_root); if (func(data, cur_root) == FALSE) return (FALSE); return (TRUE); } -// 부모에서 exit 하면 return 자식에서 하면 exit (??) -void exec_cmd(t_data *data, t_leaf *cur_root) +static void exec_cmd(t_data *data, t_leaf *cur_root) { - t_cmd *cmd; - t_cmd *pre; + t_cmd *cur_cmd; + t_cmd *pre_cmd; - cmd = &data->cmd[data->cmd_idx]; //왜 &? - pre = &data->cmd[data->cmd_idx - 1]; + cur_cmd = &data->cmd[data->cmd_idx]; //왜 &? + pre_cmd = &data->cmd[data->cmd_idx - 1]; signal(SIGQUIT, SIG_DFL); - if (pipe(cmd->fd) < 0) + if (pipe(cur_cmd->fd) < 0) // exit(1); 에러처리 - cmd->pid = fork(); + cur_cmd->pid = fork(); // if (cmd->pid == -1) 에러처리 - // return; - if (cmd->pid == CHILD) + // return; + if (cur_cmd->pid == CHILD) { // data->parent =1; 무슨 용도? - link_pipe(data, cmd, pre); - exec_fork(data, cur_root); + link_pipe(data, cur_cmd, pre_cmd); + exec_fork(data, cur_root, cur_cmd); } - close_pipe(data, cur, pre); + printf("a\n"); + close_pipe(data, cur_cmd, pre_cmd); signal(SIGQUIT, SIG_IGN); - wait_child_processes(data); - - // free_cmd(base); } -void exec_fork(t_data *data, t_leaf *cur_root) // 이제경로 찾고 하던 대로해주면됨 +static void exec_fork(t_data *data, t_leaf *cur_root, t_cmd *cmd) // 이제경로 찾고 하던 대로해주면됨 { - t_cmd *base = data->cmd; - - if(!data->input->root->left_child->right_child) - return ; - data->input->env_array = env_to_array(data); - abs_path(data); - base->command = set_path(data ,data->input->root->left_child->right_child); - if (!base->command) - exit(1); - if (execve(base->command, base->cmd_path, data->input->env_array) == -1) - exit(1); + data->input->env_array = env_to_array(data->input); + abs_path(data, cmd); + set_path(cur_root, cmd); + // if (!cmd->cmd_path) + // exit(1); + execve(cmd->cmd_path, cmd->cmd_list, data->input->env_array); + // if (execve(cmd->cmd_path, cmd->cmd_list, data->input->env_array) == -1) + // exit(1); } -// 정상 종료 확인해주고 수정; -void wait_child_processes(t_data *data) +static void wait_child_processes(t_data *data) { - int i; - int status; + int i; + int status; i = 0; while (i < data->input->pipe_num) diff --git a/srcs/execute/execute.o b/srcs/execute/execute.o new file mode 100644 index 0000000000000000000000000000000000000000..64197cf4b690597379c3bc9c28721beae88d330d GIT binary patch literal 2552 zcmb7GU1%It6uui{I%<+#Ybz^A8`OsgjwC*bA|}`^x9CbLUGOE`PA0S2p}Vu|?o7J= z1R_%Pq)pmDe9*Rtg+57Mlnqo^HAs-y^*eX&#LYB$@Q^d#J->6# znX{MN`1`lJhZsxU$M696g0&tzhQOf5zzbwJfG$x0XqaL^v5cIISecm+uGMtOBO)Qr z)em(3HzB!t;;>$Wqa6v=#X9+i%ryg!bNP?fu@M80aJ zW|*$$23aG{kb+vUue=XB+Hn_{iX)h3sObFUb`h-LlW}vIi>ON zEiK61*;n7C+>Oj{ho?3FYAQI5P?;jbgM52)uG8sot$D4^ zO@A9c{qTwN((eLiDlg3KL=~#~(8k>MdTt9Q*tXCdW^^k1;`lS^#beNo{&)o~cKD(i zMVR06S5rZLYx6p({k6>Gwe)dpuF5wux)Q9)Zx(ncr+{pSQPnm#XEkpBHG-5p^#>0M z7{;zKJgNDu6gS&@JT|V-%JSg4YBAs9@2}EY@!$rw;I>p#uZy&MyG}uhM(sb389YJG z@~hMQ3meKO+6gGs@D^YC5{}Dp3Tc-9LGC9RA`7`p22G4l)CsZ1_UqV6UtBZwXff|l<#hoPxW_? z-w`aS#+d#m=I{vcS0L^@{Rbd^clu{Q%s^iNq9@%2;y%Qso;(-);0XPU81>#E8 zp9E%r{XmNU7&F7Ap+60TN*@4X?{(Um!@#eAQ0WUmkp3%`6`|+iP_~_OqGs1{G|Sb7rOv3RI&0PO q@@W{Vm5SluAYWouaH3*rHV!2V4OC4gX7JW2&n~;RBZ{75vVQ>=aR}%D literal 0 HcmV?d00001 diff --git a/srcs/execute/get_input.o b/srcs/execute/get_input.o new file mode 100644 index 0000000000000000000000000000000000000000..1656449d3925d29b2215625a914c4d6dac8b2500 GIT binary patch literal 1040 zcma)4O=}ZT6ulEQty;|#6h?57MHk&<H4$_%XF&?Iru6JxeIwRxQLoyOyxQ(i*Hdg19B)(7;`hR zCW>1w!91&1=q$VXTX(-=evaaP&0e=3HZ2e0mr=aSeD8MAD|qZk)!};x$j%f#Zap)S z%(~6bP1x1>!2JE*Ih_rMU!0z!bdjiC#DX{A0X#daa)HWlF*#K7+ip)EfZO1h&k!&% znH4WjGXEbuRHLtI_}y2dgA?_7?I|X+U#-UXPtGmVUL1b%pM2~_ag?-mr?XO}XJIn43~0Llo2>(MVpm+`?LQzd^*w)S zVet*RR*=6Aum8!dcptQR**_}Xx>W2$-V;_>djv$Tb{B{p*Vce|kF|QvugW>+z$=ae zWVhw>z{=FER`Yxbvzgt@xno4@b6j+%#_7%+m)dllIN6JBm=d?NM?m;ch32HT?xD*? +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/22 14:50:41 by eunwolee #+# #+# */ +/* Updated: 2023/07/22 15:40:08 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +void abs_path(t_data *data, t_cmd *cmd); +void set_path(t_leaf *cur_root, t_cmd *cmd); +static char **get_path_envp(char **env); +static t_bool check_path(char *str); +static char *search_path(t_cmd *cmd); + +void abs_path(t_data *data, t_cmd *cmd) +{ + int i; + char *tmp; + + i = 0; + data->input->env_array = env_to_array(data->input); // 환경 변수 array에 담아주기 + cmd->cmd_abs = get_path_envp(data->input->env_array); + if (!cmd->cmd_abs) + exit(1); + while (cmd->cmd_abs[i]) + { + tmp = cmd->cmd_abs[i]; + cmd->cmd_abs[i] = ft_strjoin(tmp, "/");// 절대 경로 만들어주기 + free(tmp); + i++; + } +} + +void set_path(t_leaf *cur_root, t_cmd *cmd) +{ + char *tmp; + + cmd->cmd_list = join_cmd(cur_root->left_child->right_child); //ls - l - y -t + if (!cmd->cmd_list[0][0]) + exit(1); + if (check_path(cmd->cmd_list[0]) == TRUE) + { + tmp = ft_strdup(cmd->cmd_list[0]); + if (access(tmp, X_OK) == 0) + { + cmd->cmd_path = tmp; + return ; + } + free(tmp); + } + else + cmd->cmd_path = search_path(cmd); +} + +static char **get_path_envp(char **env) +{ + char *path; + int i; + + path = NULL; + i = 0; + if (*env == NULL) + return (NULL); + while (env[i]) + { + if (ft_strncmp("PATH=", env[i], 5) == 0) + path = env[i]; + i++; + } + if (path == NULL) + return (NULL); + return (ft_split(path, ':')); +} + +static t_bool check_path(char *str) +{ + if (!ft_strncmp("./", str, 2) || \ + !ft_strncmp("../", str, 3) || \ + !ft_strncmp("/", str, 1)) + return (TRUE); + return (FALSE); +} + +static char *search_path(t_cmd *cmd) +{ + char *tmp; + int k; + + k = 0; + while (cmd->cmd_abs[k]) + { + tmp = ft_strjoin(cmd->cmd_abs[k], cmd->cmd_list[0]); + if (access(tmp, X_OK) == 0) + return (tmp); + free(tmp); + k++; + } + return (NULL); +} diff --git a/srcs/execute/path.o b/srcs/execute/path.o new file mode 100644 index 0000000000000000000000000000000000000000..9b2324febc53e6053d2ae8d92f2eff919e5332a4 GIT binary patch literal 2544 zcmb7FPiP}$6#vq#-Ke|GC>AOdn}Y{0lU+omNDC=;@LRF6N>}!vejBILrrM?@nP?OP z!R)S$!-C*?kVWyRc+rzkWnEEBFS4i?z2y)gfd~OFMXUAqzVA&kNxOoNzWIIc@4WZE z*U8O4fB)yW5V2zd5AY~BK7vOQ47wM*O@>=g`Zi;DfMP(QjGTg)@)0TJdnMnTjlATX zU+T-@=~F5MMENK-izHM7gbG1OO1T9;zm{8Ng;In0!aNDK|IBrU@my{wqCR(XV=LqO zs+fCqEw`-HlM6i~4mY^2k6774K2n{I3&E)eQYz(T)k;3I;hBKp`Y!Nb8k}!?%;aNH z+==)oLPf_#bpm)_#-K zPEyv&d$LyS)}0PT%fQ)_L20sOghdEvCS`4Y(iqafzOf5K5{9m88q(2i zlLFQtos{lkM^9mOS*Ohfg2iBb?nN7trDEK5vb!U&X z?aTC_leW8yO|F;Lrl$%X+Lc%4)-m}Vn!HY1-9svCz)N@33Y;d&tU1m0C%VdVYxtda z>!@<;`lDeoOae0p5A_u3N8gwB3DR-ght(gKxhR@AE=p9W$H7a{jcDr(*B(n;dLpbn zVn7`&OuTiycb~e=yNoMLi*)-|dzw4Y+1kcj?nW!JhFeKYW2D@Vh5bXh#V)2gg;(v+ zPIG10m06u#TVrIUt?yg!>sx=pac8j96HwKieNwjR%Y`$ZB5?Lmko8~t65SKCq~R_o zB;XO!N;hRNyW1b>Y18)6lheBvV5qp@!KwAvFJiAhBVr{hW}P@5e+ORo zLq7$s{DodYT)zmaZtF4TmrRXi=@8_3`y<^VZ=$&8MT+0bn;0WY+v7lpx cacmd = (t_cmd *)ft_calloc(data->input->pipe_num + 2, sizeof(t_cmd));// herdoc 때문에 하나를 여유롭게생성(ㅇㅗㅐ +2??) + data->cmd = (t_cmd *)ft_calloc(data->input->pipe_num + 1, sizeof(t_cmd));// heredoc 때문에 하나를 여유롭게생성 if(!data->cmd) program_error_exit("bash"); } diff --git a/srcs/execute/pipe.o b/srcs/execute/pipe.o new file mode 100644 index 0000000000000000000000000000000000000000..60b8a09b1f1762646dd87ec3e688436e88b8dac1 GIT binary patch literal 2028 zcmbVNOK1~O6n#x&8*4NXTBsjrpcVYI{y-3<7_os7>W9*Z3i6D}v<;?7NT!+!LN%>4 z3_>g7+Pxc>;-XYq#GP&gajlR-g)Bs(Nb9-p-I*r+EcC*i^X~7w`|g`bKK%Z^(kw(n zqrd~|h59^rgrJZ;&}j;6A)l!ba*%2ujtx#hN_-?zT4ur0Yi$okt_`l)&gv=i5TB}T z5@Ig}y<)=2A(S$nw{pq!FgvBJ=W}>kIR3_Igl*o2Eyb4^&Bo%E982FzrV~>3_qjnV zUU0z#JKuwkj{Xt-F?AiKl;(&W%Ed-aU9i5t5YO#3^BLPTADd!_5F^f-@FcVys;(l? zBATEiv?=*3=wmx@0z*#$Q7^7QYlZqG#a90;QKR(DC@u$$(u1mDN1)+$+vqO7^%(JA zbH~9~CQieSR*jNJWfV_~z?7eyPkJw-Pn}R)4BlKAnqj_>;wz0+j8e4h@D>Z*sH85J z4&l7yE*5-nMb!?Gie2z3vSM{LFnP>%`sQdlYmv6Ki0gD3T0p9DF1^!PRon164V*E$ z15>^5pZEz^xo$fqt#dl0X_u6)V3XoLy;oiFe;&Z&?gdVC;2FpdA~Az=>|dOZ#-9>oDw#6?@!QihR{X2s?co4RlPBDFPi~w;v3J-ypl- zS0!Mm+T;FGX5S20y5Qdro&U3{g!>cX+^*nb&-tDBY?V+R zu1%CVkNey-k6y0Oiss{fH_dy7ylKwkzBlAe<6K@Ldd7kH;(AQBud?0Ab}M5e;}@Kb z>Yf9Az*!(dZ4cR>0utW<+r4Zb22%b3Amz7loPO9S{}Xzq_(vec=Yh1(OCZH(*``@h z-dP~!bpkQVo?AdrHH8^Ni~!dkK!S7Mr{E{sc|ZEu4uh2B2$bTEbYW3rio`nm`Z}9_ zE|Bl>0!gU0wqD3=E;Ee(32EkXnVd8WNlVCKg)(o&tg*b1@l+;n3Yj-8sa|-QN~Z7d gQpI?kGvk@NW)5`;A%`p(kEK$XxR8mlEd77{1)TzH%K!iX literal 0 HcmV?d00001 diff --git a/srcs/execute/set_path.c b/srcs/execute/set_path.c deleted file mode 100644 index 885e66a..0000000 --- a/srcs/execute/set_path.c +++ /dev/null @@ -1,89 +0,0 @@ -#include "../../incs/minishell.h" - -static char **get_path_envp(char **env) -{ - char *path; - int i; - - path = NULL; - i = 0; - if (*env == NULL) - return (NULL); - while (env[i]) - { - if (ft_strncmp("PATH=", env[i], 5) == 0) - path = env[i]; - i++; - } - if (path == NULL) - return (NULL); - return (ft_split(path, ':')); -} - -void abs_path(t_data *data) -{ - int i; - t_pipe *pipe = data->pipe; - char *temp; - - i = 0; - data->env_array = env_to_array(data); // 환경 변수 array에 댐아주기 ! 1 - pipe->cmd_abs = get_path_envp(data->env_array); - if (!pipe->cmd_abs) - exit(1); - while (pipe->cmd_abs[i]) - { - temp = pipe->cmd_abs[i]; - pipe->cmd_abs[i] = ft_strjoin(temp, "/");// 절대 경로 만들어주기 - free(temp); - i++; - } -} - - -static int check_path(char *str) -{ - if (!ft_strncmp("./", str, 2) || \ - !ft_strncmp("../", str, 3) || \ - !ft_strncmp("/", str, 1)) - return (1); - return (0); -} - -char *set_path(t_data *data, t_leaf *leaf) -{ - char *tmp; - t_pipe *base; - - base= data->pipe; - base->cmd_path=join_cmd(leaf); //ls - l - y -t - if (!base->cmd_path[0][0]) - exit(1); - if (check_path(base->cmd_path[0]) == 1) - { - tmp = ft_strdup(base->cmd_path[0]); - if (access(tmp, X_OK) == 0) - return (tmp); - free(tmp); - return (NULL); - } - else - return (search_path(base)); -} - -char *search_path(t_pipe *base) -{ - char *tmp; - int k; - - k = 0; - while (base->cmd_abs[k]) - { - tmp = ft_strjoin(base->cmd_abs[k], base->cmd_path[0]); - if (access(tmp, X_OK) == 0) - return (tmp); - free(tmp); - k++; - } - return (NULL); -} diff --git a/srcs/execute/sig.c b/srcs/execute/sig.c index aaf8f89..21bb05f 100644 --- a/srcs/execute/sig.c +++ b/srcs/execute/sig.c @@ -6,16 +6,12 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/15 18:40:34 by kichlee #+# #+# */ -/* Updated: 2023/07/21 20:44:56 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 14:49:38 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" - -#include -#include - // void set_terminal_print_off() { // struct termios old_term, new_term; // tcgetattr(fileno(stdin), &old_term); // 기존의 터미널 설정 가져오기 @@ -36,7 +32,6 @@ // tcsetattr(1, 0, &term); // 변경한 term 설정을 현재 터미널에 적용 // } - void handle_sigint(int sig) { printf("\n"); diff --git a/srcs/execute/sig.o b/srcs/execute/sig.o new file mode 100644 index 0000000000000000000000000000000000000000..4329b6fdc38df453cd976c99aa35d58179714cfe GIT binary patch literal 996 zcmb7DO-ox*5S^q^L+i&|C{$=^76n}>lwy}cq!r%6g-8n7l<6aRCJ*!}=1PMg2!fb} z;Ico%U(giVeSd}EqTP#>w&%P%kH&}#56ql9cV^C=dz1I$=GUJwk-{T^gOyamQ%2p-D)kM>R%;3dT9mvz`6SWDyF z55@bicNrf440?yZ!?Wco+ArjaBH{7(;KR4`Jm2R5;n^FevV5PXec{+)Z}obh#m~<= z;)N&s_xOOmVoTm1xRamu`%*aAkU}>o1mk1nb5y;={xewk*TeKhRwjd!;@gQ)>th{% z=&IG(Id|$p)RaUPc`@=UFz|c^4mVt!1mo&66)=v^q>c_(0sI`~#^mXyX6? literal 0 HcmV?d00001 diff --git a/srcs/init/init.o b/srcs/init/init.o new file mode 100644 index 0000000000000000000000000000000000000000..7ee3a8ef2d4b25143f057d35970d427d1d2b078f GIT binary patch literal 1484 zcmb7E&ubG=5PpgMk!Wo8pb}AN4k983suw-9*k}U}wJ1`d2<5rmY|>zwgk;l3r66n- zmqqH)|G<;r&6`$QXm8e=$6f@52n9V94~^gK&Ne@!2M6YTZ@!uN-n`~@KmYl;Hz-8t zkiY`(gGa(xl5p5b_zOxLUx^EPKYdUj<$y=Tmc;tj9y#{x}auP0~LX7$<}vTb|s zZ~3*f`BmP&IUs+G^P$IgMW~^LwAf(e6;#fEKMfz*qwBX?tS>}*NP8Z>esqBQsBQwj z$#s0rKXud4>=Pn&4HyBA0rAF;4+Ei<8e%@m{4Z$YiKgBHL8VrJs82m%q)!Ct&@Vtb zH-Y%qNR2XonfX)9CxQM^KAuM$2N4*(LyA|KxB=`)3)K_f?un_kv;JyNOfMSwF#ZOf zo$zCh04isxV$CXW literal 0 HcmV?d00001 diff --git a/srcs/lexer/expand.o b/srcs/lexer/expand.o new file mode 100644 index 0000000000000000000000000000000000000000..8bae0c4b028a8649048cdf2c1b9aa35bbf91fa3d GIT binary patch literal 3508 zcma)9U1(fI6rQayz1yGMZK)W4z*vL?VWo=IJT$P;u8inHs11l%ZnihKNz7&w_eYmv zFmRKSn@hA{s}H{PMX9JzkU}XM)21}Rmu#Pm5Fu!kEGk4_tg$A3=gv%W@BYvXnK^Uj z`{vAj!qG->F996SVj6f?Gmv3tc>z@%YVy~e3ba=;Q` zxqla>y(Iy&qOvFT-Hi3ht|y*C+lcBNg}#f`qf((oX}kq~G(c*58T$ef^H~Qf6^bKO znoGWxg#sgYFP+@^h1`N{eXyEH|-Oo%q#ui4!1}XssuwxtqZ9VOpJ=`}L`(_u1>sPipofpt#G5?4t0o@y@K{Zpd3Y0W#0%a*B;Z|GpE{z+oiqLX_3_U6iTM0QM2k+T zl<@e&#o!zsn&ZyRtJpB}rgA4<!>uvGfdddw3CUGz%o)@d3?VI~Y7qI$JOLIAC;{8^6Qt8?h5Jr=HLs8Kn_+R^FdO z{`(^~RuCb;J{GW#1*VVElL5BC-B`pf)a}&AUJ)a>Qw5Dr9!}#n`y${ba2?wP{cls1vRCyKTIhVc>-169c8Z_ZOOq$)S zkJX4a{g4Hp<>q=^KbIu1|Ljhi$Zw{kIhTucvlYckTZ*w=7e>Z@=|`zxh_>C z-KrL+u(n4jeS+R>d>O5J+>P8!EQ`Rk>7(@P<;Iuo>5vm&F8#1U`ARwA<$^{xv5a3D zZr@d+hv*a&j6@UfFb#!t?^=iL!0eM~-k(csDFVXy52K zF>^AR?PZS<;4g>8uRY=wEHN?8XtyX8_^QNP1X6)FA!Sh+tbw0Ja;Ne}4g7$BS?KgJ z7AizSkv%)Lv*6MO9!71wjliNv{~2p>vjN%Q9*!_a4>{v{;-q81wBb;Q_Ogd6yw+-bZL?-lWt|Kx)u$;cPJ_dI^&FpF)@+WK*y)D(K6jA(~0ZnzgVWzzY>1@(K0GMT}QVHNr?1|0u!q|GGyJ>D4fWGFLhYA+a|P4O1i~REEJN6 z%Mz#_#EW?J>cNwTq9|4mB6{}VMMy!Rha6&2>-#&iZIYTpKl$_L{XhTxKeMx&PwPMb z?q)2oi(!BUp;`-u2o!P%dY=MKBuR;oUdn;^7@Ulh_(+7Xt(-0A5|6}gj%;Cn_CoOx zALTB!GS)%CAX_BkixB3lolT`DltYMmKA#8ao_zHiQCO8xi25@#(=&!?i@EfjRC-K^ zt3#VXOkSyk0p%=%kG5V#0TrsF6v9f1@vJdz$%MxKykvxuimw+u>L@+W-mQ>_Ph&g? z^&W-3hqXaTs3`fhHpW7*k74PUkxV_Lytg->&Zmh~(=Ef`e*8wM9;pXSX{xH)E2WY*!Q01k$GA|`6UefAE znF7+BhD9g6MX2EpX!^32{{ab$t>r|a>>mH##J_XSSu=wqt#(?ia^rFPk5G**OPf=Tg zy{_yfSn@wX4YH$NRTk}qCB9>@#7Ey!y#LV%tW1%17`PJ-{~WFW>%hKDVNwIx@dn%{ zaZ6Ao>}!ZqZf*Xp20YM!nXogHR$3TiV`3^bYcnyE%}n5XDy(calNDAj1>d+W@Gp=y s4a_GzAFyH1&8qa&yp?5Q%F2;3la@J&(ZF1in_0`SEr!GyBR$6c0jRoQI{*Lx literal 0 HcmV?d00001 diff --git a/srcs/lexer/quote.o b/srcs/lexer/quote.o new file mode 100644 index 0000000000000000000000000000000000000000..072c3049740e7a15308c23ea12c1db7565b9cabb GIT binary patch literal 2820 zcmcImUuauZ7(c07m(JRg$%b<%#!^>B0-b*zhA1ia;uRJdvcQm*(=1J!vMs6kgHZ_t zZlk%q3?@u`w2wZC;M2wk)5$Eph|kSK+GLo3LVfFMZT)@soO^S#v~vo6^xW@!f6kZR z_nq(Sy+3dLzH^8%-y;kUtOHp7K0Jb0peL~^WY~v-I85|BodG#AscBI>A|Y~#LQd|b zd`>%mt|L3UYX{|y;?Y@sfUy9n4zLn2hlGe{bD8OtpJ}gb%hinkrcC;*yV&ga6i6qztqpR~mIJ5#>F(}sZ){$svMAVXf^GZ|oVv}Q2{TWA$SvP8qs>aB!K+%s*c|5NF9-$} zv$NUI79zU&KIAMkztC!L6tE`FW7EHK&Cm4wywK(+nF-~AGo!#gBf_kZp>|;MF<1*hz?=oK@;0p{M@?VAT2=q^3E#E_TfE0el#)kr* z^u76*dQIAX6Yx8~CH+($d-`31-#33sKb6m(e%IiqZ%aRw*Pebi;kWRY^i%ou_?7UY z@-r6t7#yWMHU$psp<%_3EB$k*6YQaTs3%mR_hel|hr#LmL2x?%D;{({3{Lvjz)AnK z(tid_C|`(%3=}Hi0l9x#@v!1S#ldX*8So)E)=2>x!yoI BvZnw5 literal 0 HcmV?d00001 diff --git a/srcs/lexer/tokenizer.o b/srcs/lexer/tokenizer.o new file mode 100644 index 0000000000000000000000000000000000000000..f0849c8da851a8b86a8720e147696bc8b9003a04 GIT binary patch literal 2420 zcma)8-)kII6uz5o(n;DnE3IJtK^L)DFatqE3jINX30$zjAPp2T+-_zk$ zaiuWX(s3xwLqYrtd=(KCA7V6>1qIuOzWEY_LLytbk4we2-?{hB&SaYn9=LPnobQ}( z&bjx@?B0F+@X3D0Qu`P#SZOR{0GBKlf$q{m-*)>v;2w_(|w@_Nt4k32(MLZ)Kf2iw>@^!h9iTdpF z<>j31iE8Oep_CWm++-KT%{^V$HSO$xk6iaqpYCx7r4Y`NSa5Tf9hJ~q-;7TBQS;S? z6rVQP0mhc1d(!V~kSS0jN^0!gPA?S63vG1Xg&t|ZaLXV_1oOJ%r`&k}5 z;C?I1gL;Pt)iw`iw|F?!;UVMU^cJ^=C(X6AG2wSUHyiJQ6kr=*Q}R<}$VdHOQUM>8 z#_}k?d8UXR{FZG|$o3y9CqZbg9WngJZ|#69PMa&Q_JPit4H`xsViRP4vJyoHKilqJsL6P5qI&ugqe~i;L{|8s|7(id zzpK=&xiYmEK5VWW-wS8v${_IVZexRn45x!^{zOA1o8bPP?A(TVY@EsS-g(yTrktKc zjfqn~Z8kpGs{r8o+3n_d8pBGxZiNPogt1N23Y#EV=AKkIgano9V^=D?QtCwJHdcG* zH<)dyj)SR9?$nrFq^e52xC9r0pDeodQLWjn+ z&T0)M{WRnz0@e{s@--IO(Rqz&J34>*ND>}Nh?|7TzUi@@9-Cs5@gMit*Ncr zW5ZsQeo^sqUbUj(!d1tW#Q2MmuP#T=AmaI)eTj$*C2xU=3jTl;9r0^V&2%hmbV UQV+6SCr22nv~$H`*+%`(0Q>axg8%>k literal 0 HcmV?d00001 diff --git a/srcs/minishell.c b/srcs/minishell.c index faa26d2..ec7883c 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/07/22 10:16:24 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 15:41:20 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,13 +23,9 @@ int main(int argc, char **argv, char **envp) { get_input(data); sig(); - set_pipe(data); - builtin(data); execute(data); - free_input(data->input); } - return (0); } diff --git a/srcs/minishell.o b/srcs/minishell.o new file mode 100644 index 0000000000000000000000000000000000000000..e08fc3ae9aefee8d426dcb1553ef6d4b50c239e4 GIT binary patch literal 924 zcmb7COG_J36h4z`46TnWT%;gHXqO%Eu?emWY2Yp_h!1d4I1cGG&LU$lcQ7pk0zzR3 zg)aM3y6mn67wyu83pa%n6uK-$OusX8uSTJZe(=qA-gCJ3e*1HIJwfC>Abh|v@RJzx zAn+J0i~kRNw((P2<9y5{q0AL98{ILPo%vg}ovmBnS+A@i^JJHgIikG8#;7Oaz+69Q zwt~9hI64ZW*UW1#TuyY?I`dY`m?OJWemqd`yXOOmtG+evdN*O!e|fI@Z%Rq+EUox?G8_)2(ZSxAJyI7Xnzg3) zc7wc5(JM|)6h5Hp8RB!`F6Ic_eN$z+_%2tSO79x^O%O-qSD|S0SD?uGi%^`0{~U_< z;Xj3rLm^U^7h`5*n{pPHbc#uQN7D2p^K+P$LUN<|n>)1m%Dw#ZJ)gLt4Tn)HHiY-2 nwX?%0M5MvG6B=%tz{G9hW)Mci?XW?J>w0W7JoLB17T)1spLBBF literal 0 HcmV?d00001 diff --git a/srcs/parser/parser.o b/srcs/parser/parser.o new file mode 100644 index 0000000000000000000000000000000000000000..3b8393c08cf7aa1f0c549d99ba6866aac181ee3c GIT binary patch literal 1692 zcmb7EO-NKx6uvW>f0geA5k*mtXc5Fv7SSwPjOf4<5<(PgA-Bi)#u*&PVSIyAFd&Q* zj)UZ;b*;i}yJ#UJ3b}LJwji8=g0~6@)4p?m9A~se2hW^)&iU?lzx(st`Tg^tld(V> z!wK{+Nq(lUOA zu^uY5vjqy;IFHTFWSp4CbLshHdXn=egStm?Rq;Gm#RSMm%NqEUCWVjy&fNr$XPp^W z=gs?~smJ*Idcei<%~#pq!ja5AEydKEh8eC~BHmO{jQ_7qM=7;>6R zTCvoB+n8PcZWn)8ebw?t-!Hpd*t08R@R2UNJm%Zwof=WvmEk?R+;7>HD0+EootABM zDnk~!U9uYiDuUV3nq4gT%vgL4Y@Jy8s-m(K-8B|3AP3$D)+~mZ@n&Obcy~FvyB07? z*fOhM7l1;|uH<~Rl0Xx)U;l7;cqr*5`c4a7shbKbh1$ufaWQqvn%FdMM3~yYDRy4Y zL66qdZj`P{4cIajGv+5cVZm5mZ(1;T3ijxT>MKpyHls9uRKOX~{!d$rZd9%{&~Srq*Yyzt?;f95|29PZ;3_;oE;C?nuumIQm}S9Y~zg zbAm4hz2FW#RPh_M;Qfc*BI31$xXK@>{3|#y482E$g&yOF=HFB?f{1>Hr6PjJpCR_5 zq4f^wT%Ffl)Py*JEulKAt~n=`-$SU6(tPlRTT8N_fZelp9An#oc_; z<8z+l<>naAIN3Qjt5C75>v%3txlWw%R5CryGs%q3V+l7l&Ar)aH_g2l8T=pq3#0B= A;Q#;t literal 0 HcmV?d00001 diff --git a/srcs/parser/syntax.o b/srcs/parser/syntax.o new file mode 100644 index 0000000000000000000000000000000000000000..9d57e733a1b49ce97b83836e5693a417becddafc GIT binary patch literal 2720 zcmb7FOK1~e5dM>H0p`FU1z?`OGBKc3t5RrHt1UoNCGt}NLjIXf%m(ZdZV zZc^<^d&I^9hNGQ5>JoxoT1qLcVL9leFIy^Let$I%`po%an3MAP)GfrYe@}8Jcn#Pa z$5{IB2_ML#40ue8cgNbO5#1uKWX&g$O{Pi$Gi~q;Sl->;A8{Zr!l>abv6`Hz(+<71=GPuH`o`en`qj~ClmVk! zKT5Y5JHC#Ua@o}AvQz%krw zeg1RhUo~37YRi#!?Z8(A8hWe4J2ZHA0RB*icWUsi0DMS?M>Tjf08aq!J$>FY99U6% zAfVNXE~JaYd(Gli+fA2E%W?9KXEZJ7MU}an@Yr6T1mTeB)*en(g-nSI+fu(@= zEiLtua@*F(rJQZiJHkX~3Q||Lk%+NnMA-uVdu*9pz(2qr_h$?EWBilZsPY8z)7wrI zx^_Z@%CS&vd1sVrZh~z+c={KA?h=V<`Tj4`1{NF3#4ue1cRydxcCGHY%i9ZU* z^R&d>r+kd#xmx000yjLP^6`8DTyMnt2gbW0v8vuL*a!ZJ@lTMXKWF_Z>$h0H!TM>| zkFov}K@?wur1*ENzhwOZ>l3UGVwZ$J2MJT}YxIm%@jH;vTqddC3E zewHRn2+zLy>y1*VD#fcCq47xBKf^1U7I;DrPHbqjs+JdEY ztZdG~doARUw8}YG7TvU4DmMIuT)}E6cHV~KeHG+|bmk(W(^+~$8ileft_child->left_child); + heredoc = find_heredoc(cur_root->left_child->left_child); // data->cmd[i].heredoc_file = (char **)ft_calloc(data->input->pipe_num + 1, sizeof(char *)); // if (!data->cmd[i].heredoc_file) // program_error_exit("bash"); @@ -25,7 +25,7 @@ t_bool heredoc(t_data *data, t_leaf *cur_root) return (TRUE); } -static t_leaf *find_heredoc(t_data *data, t_leaf *cur_leaf) +static t_leaf *find_heredoc(t_leaf *cur_leaf) { t_leaf *heredoc; @@ -50,8 +50,7 @@ static int fork_heredoc(t_data *data, t_leaf *heredoc) { data->parent = 1; make_heredoc(data, heredoc); - execute_cmd(data, CHILD); // heredoc 실행후 다시 커맨드 확인해주러가기 - exit (g_exit_status);// 전역변수 + // exit (g_exit_status);// 전역변수 } else { diff --git a/srcs/redirect/heredoc.o b/srcs/redirect/heredoc.o new file mode 100644 index 0000000000000000000000000000000000000000..12a585f2165420a739f34d14c3caef662f50ff79 GIT binary patch literal 1640 zcmb7E&1(}u6rZiJ*=lPd)Dl5y4x)lhsh%uaNwo`8u_&d5UStgUXkyzmrW+fC5@k~{ zEQNx1@#5XTKorHO2S0l97)!(i6yhzE+W33Bvu)GbgAd-muiyOMo0;AHwDxPm&6u)} z;Q@6))fPPbP{>i}BP#46DlLSZrZo^J1}7sWJ`y4HXjZpykXgM{E1` zGuB2$7rRf!5h22JdODGulnEi4`5Yc+^h?el5-;00beJzZJCh29b&*NVCz25%t_^J# z;rQf&TQV60A8kF0`Q#BaQ3?@_i|6SWuYoG&ZU%aZS@u6DdEq-Ze)@S~p~efD3O6-qP~~P; ztq>b8XeDkel$a-fib4}OGgGo^MjhF9WQ*E5VXNd<$wPvsGPQMXyz$?B9rJYODbK8a z)T^l3^u|IBBxg`UYfuOMM%Lx_EYhZ}Oo0ZnDk^5FRX;Qu4LgClMCUsQUDWC@tSXmQ z0IvgCNBiEU{@eCz4`Gg=a~n6uVMcvJ=H;G2&3AeMGH%DJZ-d1rRWNJI3f| zp2g#Y$H2v4Cmn%2u!_~F`WTtBE1Tm}+hL!1r^k2;rjI=F-tP9!JkOUhWjP#ej+x`- zS8M8n)du{+VMNAi&RENN@)xM6m5ox)x{e-%+_YW=bEIs1%N10h{iI#lRqvE_<=!Y$vR=j8?pBw9I)VH#X#5YZ8RGm0 z*x(`W!zi`vQsT($*oM#vAH+s7m3;ck^IUV^5i$ffEChZeg zH|n=xF+)Is#Wxq|2RGaR-8v)?#DgGyX<@ARD(oQ?oOA1yv2#w>5qnT~#0zIz$hvpL zRD-r)W=k&Gv5Xk&+7UA`DWchgF6Q)*o|$7JHk+PeVm_46Q;7&dU8FL4G#Qx|F$z%? W@n||4nGG{B6Pk){MKSt~I<>!D5-BJE literal 0 HcmV?d00001 diff --git a/srcs/execute/heredoc_utils.c b/srcs/redirect/heredoc_utils.c similarity index 88% rename from srcs/execute/heredoc_utils.c rename to srcs/redirect/heredoc_utils.c index 946910d..9124e61 100644 --- a/srcs/execute/heredoc_utils.c +++ b/srcs/redirect/heredoc_utils.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/22 10:08:39 by eunwolee #+# #+# */ -/* Updated: 2023/07/22 12:30:51 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 15:30:02 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,14 +19,13 @@ void read_heredoc(t_data *data, char *content, int fd); void make_heredoc(t_data *data, t_leaf *heredoc) { - int fd; char *name; // herdoc_signal(); name = make_filename(); data->cmd[data->cmd_idx].infile_fd = open(name, O_WRONLY | O_CREAT | O_TRUNC, 0644); - // if (data->cmd[data->cmd_idx].heredoc_fd < 0) //open 실패 시 에러처리 해야함 - read_heredoc(data, heredoc->left_child->token->str, data->cmd[data->cmd_idx].heredoc_fd); + // if (data->cmd[data->cmd_idx].infile_fd < 0) //open 실패 시 에러처리 해야함 + read_heredoc(data, heredoc->left_child->token->str, data->cmd[data->cmd_idx].infile_fd); } // 유니크한 파일명 생성 @@ -70,7 +69,7 @@ void make_unique_num(char *str, int num) void read_heredoc(t_data *data, char *content, int fd) { char *str; - data->input->env_array = env_to_array(data);//환경변수 가져오기 추후에 필요할 수있음 + data->input->env_array = env_to_array(data->input); //환경변수 가져오기 추후에 필요할 수있음 while (TRUE) { diff --git a/srcs/redirect/heredoc_utils.o b/srcs/redirect/heredoc_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..c287f1716dfb5f5d5c874c0a972e85d22de78088 GIT binary patch literal 2272 zcma)7UuauZ7(eN{Evsv96z3|a&4Wl4;xhk$;wFvDl{;v(N+Z6MW4O6(Lz=Wp6IYc> zhj*17E|osGhvJKfpif%xrS?HmTdWU*^+gymBo7lBh!9w`skp`8ch9+9m#yFj-~D}m ze&2V#b58Ef)qnoHeVDPp0fq;(6B_KmBMgN+3cW;$eZ-&wNI%s;d>=g-sY)}>i`Gn$ z7*aSN*54iWy*v1q>O=jgcIpsg4^z66T_EsbES@Y+3bFE_;Bnao;9<4%!R#u0rc#hoB_1D8-|gBSaWvYzc^ZHU!-(G$-lNy}|!! zCk^q3;nc#0u$zV`)wih55c-zk+FL&ca7!y+VYVeE6KD`)d|c(&INv0lvlJX6VPBE0%c|rGGG)If5$9ig2+OU|lCqm?Vb)+hIm z--akPcCVmD#g1J+pv^By3!^?ygXoRLAJQq%c9uv)&Qx3$1UUxRS2hFRm zUFz&1=Jt+AHeh5EwXPMa!mmzjisTJs+{6|RQ2erpGuyuHHM5&>T&^xwW4PWp?iXFV z6Xqt`9gk=AT9>QeSd48Gt0DC3aZz4`c^wfflTFsTaCOz!vA>bE6UE%riE*o7@${q_ zjYiq4VJ2TYOd(}X0`2rJSy0}`67R`}RpjP=dG$5o6UKIu5qjThAu;>DrMil^qhFK+_8@GaR-&3j+oXW%szPtAP~ zuM7Larz&y_vuePbK!lD}mH!(MZ(Za&AYRzW*FfT52IA-=vnoFf?1uj)km^qXvA0MI zGxPwfz)s-rK;$D|0E58KrGM-rAU?s7XMp$~Mjix0BJbfrtp*f^6#~5YEKmc%zhBxj z`M$iN{4f?J`4UR`u;M%ce-EAI+kDFH&41eFKh@@+Y4cCE`8Z?h*MYO}CJ@q8)AU{7T7S;o&7GDVAVb7FEDP_R;I#9?^_qZt&_Un~A$Ek8)_ LDPB`a=DznI3_s!o literal 0 HcmV?d00001 diff --git a/srcs/execute/redirect.c b/srcs/redirect/redirect.c similarity index 80% rename from srcs/execute/redirect.c rename to srcs/redirect/redirect.c index d4b00da..6e18517 100644 --- a/srcs/execute/redirect.c +++ b/srcs/redirect/redirect.c @@ -1,10 +1,8 @@ #include "../../incs/minishell.h" -void redirect(t_data *data, t_leaf *cur_leaf) -{ - input_redirect(cur_leaf, data); - output_redirect(cur_leaf, data); -} +void input_redirect(t_data *data, t_leaf *cur_leaf); +void output_redirect(t_data *data, t_leaf *cur_leaf); +static void check_file(t_data *data, int fd); void input_redirect(t_data *data, t_leaf *cur_leaf) { @@ -22,7 +20,7 @@ void input_redirect(t_data *data, t_leaf *cur_leaf) cur_leaf = cur_leaf->left_child; } data->cmd[data->cmd_idx].infile_fd = open(input->left_child->token->str, O_RDONLY); - check_file(data->cmd[data->cmd_idx].infile_fd, data); + check_file(data, data->cmd[data->cmd_idx].infile_fd); dup2(data->cmd[data->cmd_idx].infile_fd, STDIN_FILENO); } @@ -41,11 +39,11 @@ void output_redirect(t_data *data, t_leaf *cur_leaf) data->cmd[data->cmd_idx].outfile_fd = open (cur_leaf->left_child->token->str, O_WRONLY | O_TRUNC | O_CREAT, 0644); else if (cur_leaf->token->redirect_type == T_APPEND) data->cmd[data->cmd_idx].outfile_fd = open (cur_leaf->left_child->token->str, O_WRONLY | O_APPEND | O_CREAT, 0644); - check_file(data->cmd[data->cmd_idx].outfile_fd, data); + check_file(data, data->cmd[data->cmd_idx].outfile_fd); dup2(data->cmd[data->cmd_idx].outfile_fd, STDOUT_FILENO); } -void check_file(int fd,t_data *data) +static void check_file(t_data *data, int fd) { if (fd < 0) { diff --git a/srcs/redirect/redirect.o b/srcs/redirect/redirect.o new file mode 100644 index 0000000000000000000000000000000000000000..b440bc16eb06dbedfd56e0abccf1105ba9531053 GIT binary patch literal 1768 zcmb7EQA-q26h33Cu9eObJ|qP0Lk|nNQN84gpyk313Q81&keiKTF6p}IERDg^!fG%K zg+IZdhoBc9r3ZUZ(0U1b@(%7Irp1$XYR-EUw$f~| zH4>fTP=pF>LXpy%p306|j?85qr!!+x-s}%^Y`1lvdpfv`X3V98ewvd;D1emqgdCq4 zow7r}mS49nTGahwl|DfP94B-tFjw$A3k}9%o}?xy3vbHtSQAkcb`f?Mmf!I{cZDCk62<&Jne!KT>8H@XH(qojjphQsR1on}J312;UTS~$L%CcIwm`Ty$_2uA zqstUD4tV)3!XE;?0nq!T=xup@3E|@vnD=pc|B+(Go$Ep76hsu)<0ETkX8{aJ&nL$7 z@p1>n`~jKI`Oy6Qfo9aoxDA6(f_oR|+R0qtQ+&rEH4iK>iuKsY+W1AYbDmu?JMks{ zF@H6$9>!PZ)nv|}sf|ScGQky0u%>w7TBZ1KqN@fzskg7d@#t(ZM(ZhNTUN9E=Jj>$ z@-JA`6Wdo&tn_TbxA@OJ(GorR(CU11ezr@`xE{dmT0I=HIyY`wB^{jBzgJb5;wnye zR8V^rL?O)Asc+X%hD037!gm$-3We`<_6s`3UrSXwxWlS_URV1Gkr51vFsM6J-Cd|V`l9C8t|pb&3Cs`2}0W^EcRI57Lq|N7?p|C!zW@Z;OB zjf_RsF+4CkF{2%L^kQP{!ki<=8sjx3VjQ9zj8F$Aqe*x)gmCPlqt;5lU|znkqKB)S z8i(*Gx3-?KP2}uk(EHi`}9IA-D|Ujeu^pRQv?UndRUCky|tyu#=+!qKTn}*xqR}XuiEId{I`Rw!+gb zRk6ip#4ei4loFi6LvnMEf%T41qy4BU-atIqw%S-;3kvXT|<_AjC8euM>>AX@R>xNn+XvO*o7*{Sl8hgiQ~ zolWq$rPJX#&=zzKwO~py!jaN7ljqPkw6H(l%}&r3YUsNyUx&~}GQ9JTmGLjXdVv_b zy@vm;&iKBDf4j1?$kcfjDaIr5%^RbXvk&$?nB`?^XtNpeU;|s@vmGb5gx?{G8zhXM zDo*oc|B6c^Y);2%zW zhlvqK;FpxKQdo})yEsmI$|>YmToaSwI&EiEa^6nmtT84e$cS{O^G<$z%2xiIJ(0bJ XHPB(dVyCki(sH)4S*dh7Yccj4gp`;> literal 0 HcmV?d00001 diff --git a/srcs/utils/list.o b/srcs/utils/list.o new file mode 100644 index 0000000000000000000000000000000000000000..34d4f239cdc64565d9bc95294badb241baad5146 GIT binary patch literal 1376 zcmaJ=L2DC16rPPS4ceL&Jya2zgW#zmUW~Vvc3}krq7}T9aZNThn5MyOY$yZ*slu|C z9Q*^`di27giPVPn1K6$06)ZkDS>Deo?i*K5qv=1mtuNJ|%d_#azI6dMXwDIC*AHFn_%73>A~U-eu&G zGwgh@LT9LM5#0e@KJI@59V)AP)IDbO05JYqG@zA!W3m@I9IJoP`{Ka~^&32K`-J*M zp0~E{3#(~c_ViS`i=-c5w)_tt+4SFDR{sLkW@v+9K1&&#c2-KINPbh=LyyrAy^L{9)I)buWSgGH< z-x4tO7~}uZ1kTnbOM$G^gQ~wNIIVc~K**=kZUNN>_h>7mC+4J_zEqy<6B5Yp`rnx>L$=pqD!twLCY z{s}#L^ys~X9xe3ZKOm%_uoofp(DZvVZ?dta&V}j^Zf6{BvI}TVS$gq ze{fKO!ydsGnBQOrQu`(7IC>I0_hr*M45HA+mM>M_EoIzA|0LjkJWGTIY^Y7m)7xNhfu^d#pP<9SjC$@MB0ZUwl+r zIW(bNzFLr1nHBaWl;3=<{!r?* m#`L-lqRmjZ!fM!VkzNaRy%pB#LAB|~YEa*41Ypg;jDHD6d8gU{ literal 0 HcmV?d00001 diff --git a/srcs/utils/temp.o b/srcs/utils/temp.o new file mode 100644 index 0000000000000000000000000000000000000000..a6a8d465e7054628bed02116eb5ee3bcfcc4c65f GIT binary patch literal 2948 zcma)8QD_`h6n&ed$+FeXTCG$OGD-sxceS+IBS zgg{^uZ5$%~i1g12eh7Xg_#^hG7^U^2^urGeA_h^&!U_>YqSeN8=iRqEvq`~A-rRTY zJ@3Bz?tMFx+kgLduSJMRqrd~B2_xEohlv4s4C4|x?jzTmm7|^3Kr}{7L4)FvNa@-| zSIre3O}#!^!+Q26FQ9ld-Hr-znw(8yk(3rGGX>Yl<|f%7WjLOW)5^KO&w1+goUVq* zFEclrPiI_tA$KvG8<+BIf7OY}r9%oWvT+@Uqna(os%H#^l+vD(6Ha>8RtxI$i*i0+ zaJ-W^C&klpScoY-C;dFeaSZ=BMoctgkkF=N{}>PjZav((XG zEVpVu43?LVV&#e2%JM$}cd4WCKz>7jeUu-aWgU8~s)?ONWTS(+r@8bmyQ7RrsZ69ak<=b&6 zD-eaNJ`gZbOuzJAF}mGzZ*Px5eET$k(%12^&537?)+Hheqg8N!O~1d?Pp>Cxt)zCa z)gQQHx_+gF9dz?k^vHT zLz8OVcql;PZfH`i8-F5AK3shxZmAloH60OS`6L-uy91kBd;-gRi*E0e*l{IQ(ed63 z1;B;p0FAZ8>H=&bo0ZhI4$vD4fM38fDudg#r0W7)^#lB(1AtzCzi<)gM1FJ233VCF zvCVM*7k1T;7Z>10szOoxWtpLhRqDEl8_*s!d1r3o@B_7^yi}!hJ%UPYIGjqDb}?IU5pdiO4|9D&bJKRtoB^pm8<#wt zWuXlsz*;JqXHo zC>%sR0}i@DzTl2QH1YvGw(yc5Nh`I_Ka3YD$x)^D`5#es5qW1sM2hi9{DGF}Ww1`b z{shLIztC|A=O;w(k@&j}eGlr-FY(ZRarv&|`5!RggLri4secuZ^F5Ha2HraJIPZPD z^Eeki*~!|8b#tn?`q9^4444U@)gz*)|)HCwG z!uTb|3C3-VTNu+#BL2^)HO2b@n($YQuQC3J@fF57#*>WCFitXl1DdwzVQsR8^6m6L zi~)kamj+{fkLepp{w)j=6N9i8ng*aqC`|u1_;OxhMtINFVIl3@+tQtrX~#*=E96gQ w9{+v1LegtW&nG3`A+9XAY4<`wC@a?Dx1cIr; zvX>$rJo*=SwI?l9$kA(#K`LyZ!XAUv*5B-#wW+m5abVtj&-~u(OFn=9b}%SJ>YTs< z?gwv?Vu3+d!1u^Lg{G(w)Z(1PMo&S^VWE`gRz1qpq|~%MJDpfZGSjDZ>PJ{^oYxXY z{U}SIUw(CY&B=SJvhrkUWkIQj6TR`IPf`>C2w{;)KOuOMu2RY^szTXWb`$$JzBin` zrNd$k;F7zM>w*wP4#na&&I~wSi!meyz(mxB{6*lP{j?zGAyF@;z`aEGC+?lo8$U~* zk^WcN*t4Wxi~P#oN5b)83`a;+(zn~PQELn1#R!>AyG!oQ9UOtZCxgkhpUXf*GMH&g ze~3J?nM+d^>*g=rpX|!O?#jj|Yi`FFty6&KkI{VTS3-Yg7Xu?ZQaC#?yctb=rrAhcc)|L1j0&M+^BOAho2Qv!KHUYCo4oW4d%; z?*rJ_+)m-9F}gtmgfTk)|M<+~_{@LBXZ{sF`hHk!t&45prHIa59PzSwC9KnUYyls^ zZ|copOW}LHt}uK@O8j}~{zOl;h@Yoc^;u`*m6j*s7JE*MZ*zS1l={ouKlSX9NL9_0 zIXsx&M9p>huYu(cKm{>AA#xYZmwgXL2Dpy$Cctkwk8%7luY|nJf$n!!-fQG-avtM8 z(U0CzzYy8ykoY}jzo3TXRY-i8>^vkw1LG_$mJqR@p0a_2Iypd4W7{GHbPG)JZMN^T zO);WLFo$CM@o%=J?LJ`Cq`b20DraFqm6sNao;b2gZUN?^a;r<8TK62Uvd+F8xskEBMgrCTbM1KGP literal 0 HcmV?d00001 diff --git a/srcs/utils/utils.o b/srcs/utils/utils.o new file mode 100644 index 0000000000000000000000000000000000000000..f9ac99e1ceb7798ddaa362f31956a53d9294359c GIT binary patch literal 1576 zcma)6O=}Zj5T3*)jkPszwE}IPvLZA>4 z*C2TC2Z$$+9*ZZTh3ZLvf)}Akl^%nK>ND@o)^u&afq9?#d}j88_w%nGhr>j%Q-lLL z1Wm&}W<&ASTyBrUXMDoW#m}EJ}HH%M0wlUzmHa@YfHml+0p2?sagCaB_$? z8A4I2*znwHy&?gnj`M{);rwZSz&??6k0Rh(UvsRYr<(PRYQ3b?o!O%#3`6$Xlwb~g zO!)x=WX3T{rR-HzcC9r#Xo&9jQuwxnZ%g>Zr87jUq0M*$Iu6xs=@CjoS$HVNzha3| z;Ohjw7ZCk45A7G;lQq>J{7-w)^uL*%{fz0id#2w!@E7;ZZu7u=aqBx6-q9ZOT>sS7 z;hw)V<~Ghr}a{|t_XzV5r)2;RG%f#YUi z$kz;`M0qhM2jm^e7Y5|NNIo|pe@^nT$M-4LGGfN)aEkw_D~Ml)&L95PBKr}|oHd@t zZ;vIVkL&Q7X;tcE&lBrvsB@&Q09(rme6NsrD|NE>KYWL%!4BD@6_dxus**6k@ zF7ag`e&y^Ea0qx0cpAui;tOOi0`c#kF97k_$-H1j5TN5Lz%&X%X^S7eUrup8{2pWC z=YcHz9DVI{DdKNL{F#V98TfHLgO=&Q7mw&+#J?Ny373d%t7_e8dZZk8y@ESM*{-|p zD!WxhtfEmhJj-h~P@;3VZ-XNAd#cv(iZ$DENqI~rwu9@_E0d6|Sj9)mwXIUETDOC# KGP`7X7X1OyU+-K1 literal 0 HcmV?d00001 From 42be6f4b6de268104e5298182e8a895fc6544a36 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Sat, 22 Jul 2023 21:23:00 +0900 Subject: [PATCH 10/57] . --- .vscode/launch.json | 7 ++ .vscode/tasks.json | 28 +++++ Libft/libft.a | Bin 37376 -> 37376 bytes eunumini/Libft/Makefile | 78 ++++++++++++++ eunumini/Libft/ft_atoi.c | 31 ++++++ eunumini/Libft/ft_bzero.c | 22 ++++ eunumini/Libft/ft_calloc.c | 24 +++++ eunumini/Libft/ft_isalnum.c | 20 ++++ eunumini/Libft/ft_isalpha.c | 18 ++++ eunumini/Libft/ft_isascii.c | 18 ++++ eunumini/Libft/ft_isdigit.c | 18 ++++ eunumini/Libft/ft_isprint.c | 18 ++++ eunumini/Libft/ft_itoa.c | 62 +++++++++++ eunumini/Libft/ft_memchr.c | 29 ++++++ eunumini/Libft/ft_memcmp.c | 30 ++++++ eunumini/Libft/ft_memcpy.c | 27 +++++ eunumini/Libft/ft_memmove.c | 31 ++++++ eunumini/Libft/ft_memset.c | 25 +++++ eunumini/Libft/ft_putchar_fd.c | 20 ++++ eunumini/Libft/ft_putendl_fd.c | 21 ++++ eunumini/Libft/ft_putnbr_fd.c | 40 ++++++++ eunumini/Libft/ft_putstr_fd.c | 20 ++++ eunumini/Libft/ft_split.c | 100 ++++++++++++++++++ eunumini/Libft/ft_strchr.c | 27 +++++ eunumini/Libft/ft_strdup.c | 26 +++++ eunumini/Libft/ft_striteri.c | 23 +++++ eunumini/Libft/ft_strjoin.c | 30 ++++++ eunumini/Libft/ft_strlcat.c | 31 ++++++ eunumini/Libft/ft_strlcpy.c | 29 ++++++ eunumini/Libft/ft_strlen.c | 25 +++++ eunumini/Libft/ft_strmapi.c | 31 ++++++ eunumini/Libft/ft_strncat.c | 44 ++++++++ eunumini/Libft/ft_strncmp.c | 30 ++++++ eunumini/Libft/ft_strnstr.c | 38 +++++++ eunumini/Libft/ft_strrchr.c | 31 ++++++ eunumini/Libft/ft_strtrim.c | 55 ++++++++++ eunumini/Libft/ft_substr.c | 36 +++++++ eunumini/Libft/ft_tolower.c | 18 ++++ eunumini/Libft/ft_toupper.c | 18 ++++ eunumini/Libft/get_next_line.c | 138 +++++++++++++++++++++++++ eunumini/Libft/get_next_line_utils.c | 36 +++++++ eunumini/Libft/libft.h | 73 +++++++++++++ eunumini/Makefile | 59 +++++++++++ eunumini/incs/init.h | 21 ++++ eunumini/incs/message.h | 23 +++++ eunumini/incs/minishell.h | 28 +++++ eunumini/incs/parse.h | 34 +++++++ eunumini/incs/struct.h | 71 +++++++++++++ eunumini/incs/utils.h | 48 +++++++++ eunumini/srcs/init/init.c | 43 ++++++++ eunumini/srcs/lexer/expand.c | 147 +++++++++++++++++++++++++++ eunumini/srcs/lexer/lexer.c | 59 +++++++++++ eunumini/srcs/lexer/quote.c | 114 +++++++++++++++++++++ eunumini/srcs/lexer/tokenizer.c | 91 +++++++++++++++++ eunumini/srcs/minishell.c | 47 +++++++++ eunumini/srcs/parser/parser.c | 67 ++++++++++++ eunumini/srcs/parser/syntax.c | 97 ++++++++++++++++++ eunumini/srcs/utils/env.c | 90 ++++++++++++++++ eunumini/srcs/utils/list.c | 66 ++++++++++++ eunumini/srcs/utils/list_clear.c | 48 +++++++++ eunumini/srcs/utils/temp.c | 99 ++++++++++++++++++ eunumini/srcs/utils/tree.c | 70 +++++++++++++ eunumini/srcs/utils/utils.c | 51 ++++++++++ incs/exec.h | 5 +- incs/struct.h | 6 +- libft.a | Bin 37376 -> 37376 bytes minishell | Bin 71896 -> 71888 bytes srcs/execute/execute.c | 14 +-- srcs/execute/execute.o | Bin 2552 -> 2472 bytes srcs/execute/pipe.c | 33 +++--- srcs/execute/pipe.o | Bin 2028 -> 2172 bytes srcs/redirect/heredoc.c | 46 ++------- srcs/redirect/heredoc.o | Bin 1640 -> 1460 bytes srcs/redirect/heredoc_utils.c | 27 +++-- srcs/redirect/heredoc_utils.o | Bin 2272 -> 2520 bytes srcs/redirect/redirect.c | 49 +++++---- srcs/redirect/redirect.o | Bin 1768 -> 1884 bytes 77 files changed, 2879 insertions(+), 100 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 .vscode/tasks.json create mode 100644 eunumini/Libft/Makefile create mode 100644 eunumini/Libft/ft_atoi.c create mode 100644 eunumini/Libft/ft_bzero.c create mode 100644 eunumini/Libft/ft_calloc.c create mode 100644 eunumini/Libft/ft_isalnum.c create mode 100644 eunumini/Libft/ft_isalpha.c create mode 100644 eunumini/Libft/ft_isascii.c create mode 100644 eunumini/Libft/ft_isdigit.c create mode 100644 eunumini/Libft/ft_isprint.c create mode 100644 eunumini/Libft/ft_itoa.c create mode 100644 eunumini/Libft/ft_memchr.c create mode 100644 eunumini/Libft/ft_memcmp.c create mode 100644 eunumini/Libft/ft_memcpy.c create mode 100644 eunumini/Libft/ft_memmove.c create mode 100644 eunumini/Libft/ft_memset.c create mode 100644 eunumini/Libft/ft_putchar_fd.c create mode 100644 eunumini/Libft/ft_putendl_fd.c create mode 100644 eunumini/Libft/ft_putnbr_fd.c create mode 100644 eunumini/Libft/ft_putstr_fd.c create mode 100644 eunumini/Libft/ft_split.c create mode 100644 eunumini/Libft/ft_strchr.c create mode 100644 eunumini/Libft/ft_strdup.c create mode 100644 eunumini/Libft/ft_striteri.c create mode 100644 eunumini/Libft/ft_strjoin.c create mode 100644 eunumini/Libft/ft_strlcat.c create mode 100644 eunumini/Libft/ft_strlcpy.c create mode 100644 eunumini/Libft/ft_strlen.c create mode 100644 eunumini/Libft/ft_strmapi.c create mode 100644 eunumini/Libft/ft_strncat.c create mode 100644 eunumini/Libft/ft_strncmp.c create mode 100644 eunumini/Libft/ft_strnstr.c create mode 100644 eunumini/Libft/ft_strrchr.c create mode 100644 eunumini/Libft/ft_strtrim.c create mode 100644 eunumini/Libft/ft_substr.c create mode 100644 eunumini/Libft/ft_tolower.c create mode 100644 eunumini/Libft/ft_toupper.c create mode 100644 eunumini/Libft/get_next_line.c create mode 100644 eunumini/Libft/get_next_line_utils.c create mode 100644 eunumini/Libft/libft.h create mode 100644 eunumini/Makefile create mode 100644 eunumini/incs/init.h create mode 100644 eunumini/incs/message.h create mode 100644 eunumini/incs/minishell.h create mode 100644 eunumini/incs/parse.h create mode 100644 eunumini/incs/struct.h create mode 100644 eunumini/incs/utils.h create mode 100644 eunumini/srcs/init/init.c create mode 100644 eunumini/srcs/lexer/expand.c create mode 100644 eunumini/srcs/lexer/lexer.c create mode 100644 eunumini/srcs/lexer/quote.c create mode 100644 eunumini/srcs/lexer/tokenizer.c create mode 100644 eunumini/srcs/minishell.c create mode 100644 eunumini/srcs/parser/parser.c create mode 100644 eunumini/srcs/parser/syntax.c create mode 100644 eunumini/srcs/utils/env.c create mode 100644 eunumini/srcs/utils/list.c create mode 100644 eunumini/srcs/utils/list_clear.c create mode 100644 eunumini/srcs/utils/temp.c create mode 100644 eunumini/srcs/utils/tree.c create mode 100644 eunumini/srcs/utils/utils.c diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..91b425d --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,7 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..08d9005 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,28 @@ +{ + "tasks": [ + { + "type": "cppbuild", + "label": "C/C++: gcc build active file", + "command": "/usr/bin/gcc", + "args": [ + "-fdiagnostics-color=always", + "-g", + "${file}", + "-o", + "${fileDirname}/${fileBasenameNoExtension}" + ], + "options": { + "cwd": "${fileDirname}" + }, + "problemMatcher": [ + "$gcc" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "detail": "Task generated by Debugger." + } + ], + "version": "2.0.0" +} \ No newline at end of file diff --git a/Libft/libft.a b/Libft/libft.a index 5b90389eaea74bfd87adb275e463124548a74654..fc303919b57ed5b4ff209fbbf756378d75592c1b 100644 GIT binary patch delta 499 zcmZoz!ql*YX@V@Pp{2Qn;YKB6W)REVWOEerXC?@9au&b(=1R6bQ0`_cPG_hhu*^yx zxJ(xRW0)Q*QJ@|nxQvx3LWWayv%7>G%$_W1ZWyylP8-HtrRWV~{!&@Y%mQ-LL`8|s zJ2h+&96_BYOmG=N{Vy<%_+|y8T9`8N%{xrjA~+3}XJH(P&6&0$2+m9g9vDY_^8sg3 z7O2tUn?JahB4ir8bK#uH34J`9Mf_L71vcLZ3PtGi2)~Pvafsf^3O7+8(Ub$uNyyxb z&|{I;3ezL8`DWo8n4csj-z?YFRs_CUFttvH<_ ziXbv8dEhcx{EuOJtVDr&gy1q(q6isI)y?h_a!?~SXGwFzm{oGxFy<;nZy58J%3>IE zkw!3#`AhpZ%ss#K;3jYxO@=90WO^9J%(8q8WlpY=Q{7x{%LbEaa!`gbS2=65K>WM; zmU}l$G|Rggrq!!YX|ss`N|?-{plq0Wqwvo#QLX6HtWZ;aC3tf{nO>QfVQQ7~X2T3T zRie82dEq^Opvn* +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2022/11/17 12:21:51 by eunwolee #+# #+# # +# Updated: 2023/07/10 19:30:40 by eunwolee ### ########.fr # +# # +# **************************************************************************** # + +NAME = libft.a + +CC = cc +CFLAGS = -Wall -Wextra -Werror +AR = ar rcs +RM = rm -f + +SRCS = ft_isalpha.c \ + ft_isdigit.c \ + ft_isalnum.c \ + ft_isascii.c \ + ft_isprint.c \ + ft_toupper.c \ + ft_tolower.c \ + ft_memcmp.c \ + ft_memset.c \ + ft_memchr.c \ + ft_memcpy.c \ + ft_memmove.c \ + ft_calloc.c \ + ft_bzero.c \ + ft_strlen.c \ + ft_strlcpy.c \ + ft_strlcat.c \ + ft_strncat.c \ + ft_strchr.c \ + ft_strrchr.c \ + ft_strnstr.c \ + ft_strdup.c \ + ft_strncmp.c \ + ft_atoi.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 \ + get_next_line.c \ + get_next_line_utils.c + +OBJS = $(SRCS:%.c=%.o) + +all: $(NAME) + +$(NAME): $(OBJS) + $(AR) $@ $^ + +%.o: %.c + $(CC) $(CFLAGS) -c $^ -I . + +clean: + $(RM) $(OBJS) + +fclean: clean + $(RM) $(NAME) + +re: + $(MAKE) fclean + $(MAKE) all + +.PHONY: all clean fclean re diff --git a/eunumini/Libft/ft_atoi.c b/eunumini/Libft/ft_atoi.c new file mode 100644 index 0000000..3e0ce61 --- /dev/null +++ b/eunumini/Libft/ft_atoi.c @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_atoi.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/12 17:50:40 by eunwolee #+# #+# */ +/* Updated: 2022/11/22 16:00:54 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_atoi(const char *str) +{ + int res; + int sign; + + res = 0; + sign = 1; + while ((*str >= 9 && *str <= 13) || *str == 32) + str++; + if (*str == '+' || *str == '-') + { + if (*str == '-') + sign *= -1; + str++; + } + while (*str >= '0' && *str <= '9') + res = (res * 10) + (*str++ - '0'); + return (res * sign); +} diff --git a/eunumini/Libft/ft_bzero.c b/eunumini/Libft/ft_bzero.c new file mode 100644 index 0000000..2df6ce3 --- /dev/null +++ b/eunumini/Libft/ft_bzero.c @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_bzero.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/12 15:33:02 by eunwolee #+# #+# */ +/* Updated: 2022/11/26 16:38:32 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_bzero(void *s, size_t n) +{ + unsigned char *str; + + str = (unsigned char *)s; + while (n--) + *str++ = 0; +} diff --git a/eunumini/Libft/ft_calloc.c b/eunumini/Libft/ft_calloc.c new file mode 100644 index 0000000..4ab8b68 --- /dev/null +++ b/eunumini/Libft/ft_calloc.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_calloc.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/12 18:35:23 by eunwolee #+# #+# */ +/* Updated: 2022/11/15 20:29:04 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_calloc(size_t count, size_t size) +{ + void *tmp; + + tmp = malloc(size * count); + if (!tmp) + return (0); + ft_memset(tmp, 0, size * count); + return (tmp); +} diff --git a/eunumini/Libft/ft_isalnum.c b/eunumini/Libft/ft_isalnum.c new file mode 100644 index 0000000..f0103f4 --- /dev/null +++ b/eunumini/Libft/ft_isalnum.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isalnum.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/09 16:51:21 by eunwolee #+# #+# */ +/* Updated: 2022/11/14 18:26:47 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_isalnum(int c) +{ + if (!ft_isalpha(c) && !ft_isdigit(c)) + return (0); + return (1); +} diff --git a/eunumini/Libft/ft_isalpha.c b/eunumini/Libft/ft_isalpha.c new file mode 100644 index 0000000..67b66d4 --- /dev/null +++ b/eunumini/Libft/ft_isalpha.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isalpha.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/07 21:14:52 by eunwolee #+# #+# */ +/* Updated: 2022/11/14 18:26:58 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_isalpha(int c) +{ + if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) + return (1); + return (0); +} diff --git a/eunumini/Libft/ft_isascii.c b/eunumini/Libft/ft_isascii.c new file mode 100644 index 0000000..5fd8dd2 --- /dev/null +++ b/eunumini/Libft/ft_isascii.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isascii.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/09 18:26:14 by eunwolee #+# #+# */ +/* Updated: 2022/11/14 18:22:39 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_isascii(int c) +{ + if (c >= 0 && c <= 127) + return (1); + return (0); +} diff --git a/eunumini/Libft/ft_isdigit.c b/eunumini/Libft/ft_isdigit.c new file mode 100644 index 0000000..0e510ac --- /dev/null +++ b/eunumini/Libft/ft_isdigit.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isdigit.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/08 15:21:30 by eunwolee #+# #+# */ +/* Updated: 2022/11/14 18:24:41 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_isdigit(int c) +{ + if (c >= '0' && c <= '9') + return (1); + return (0); +} diff --git a/eunumini/Libft/ft_isprint.c b/eunumini/Libft/ft_isprint.c new file mode 100644 index 0000000..ca57df1 --- /dev/null +++ b/eunumini/Libft/ft_isprint.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isprint.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/09 18:35:25 by eunwolee #+# #+# */ +/* Updated: 2022/11/14 20:25:14 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_isprint(int c) +{ + if (c >= 32 && c <= 126) + return (1); + return (0); +} diff --git a/eunumini/Libft/ft_itoa.c b/eunumini/Libft/ft_itoa.c new file mode 100644 index 0000000..569aa48 --- /dev/null +++ b/eunumini/Libft/ft_itoa.c @@ -0,0 +1,62 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_itoa.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/15 12:28:06 by eunwolee #+# #+# */ +/* Updated: 2022/11/17 13:30:13 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +static int cnt_digit(long n) +{ + int cnt; + + cnt = 0; + if (!n) + return (1); + if (n < 0) + { + cnt++; + n *= -1; + } + while (n) + { + cnt++; + n /= 10; + } + return (cnt); +} + +char *ft_itoa(int n) +{ + int idx; + int size; + long num; + char *dest; + + num = (long)n; + size = cnt_digit(num); + dest = (char *)malloc(sizeof(char) * (size + 1)); + if (!dest) + return (0); + idx = size - 1; + if (!num) + dest[0] = '0'; + else if (num < 0) + { + dest[0] = '-'; + num *= -1; + } + while (num) + { + dest[idx--] = (num % 10) + '0'; + num /= 10; + } + dest[size] = '\0'; + return (dest); +} diff --git a/eunumini/Libft/ft_memchr.c b/eunumini/Libft/ft_memchr.c new file mode 100644 index 0000000..ed5928a --- /dev/null +++ b/eunumini/Libft/ft_memchr.c @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memchr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/11 15:44:27 by eunwolee #+# #+# */ +/* Updated: 2022/11/14 20:26:04 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memchr(const void *s, int c, size_t n) +{ + const unsigned char *str; + unsigned char ch; + + str = (const unsigned char *)s; + ch = (unsigned char)c; + while (n--) + { + if (*str == ch) + return ((void *)str); + str++; + } + return (0); +} diff --git a/eunumini/Libft/ft_memcmp.c b/eunumini/Libft/ft_memcmp.c new file mode 100644 index 0000000..e5b430e --- /dev/null +++ b/eunumini/Libft/ft_memcmp.c @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memcmp.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/09 21:07:36 by eunwolee #+# #+# */ +/* Updated: 2022/11/26 17:20:33 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_memcmp(const void *s1, const void *s2, size_t n) +{ + const unsigned char *str1; + const unsigned char *str2; + + str1 = (const unsigned char *)s1; + str2 = (const unsigned char *)s2; + while (n--) + { + if (*str1 != *str2) + return (*str1 - *str2); + str1++; + str2++; + } + return (0); +} diff --git a/eunumini/Libft/ft_memcpy.c b/eunumini/Libft/ft_memcpy.c new file mode 100644 index 0000000..dc64629 --- /dev/null +++ b/eunumini/Libft/ft_memcpy.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memcpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/11 14:09:56 by eunwolee #+# #+# */ +/* Updated: 2022/11/23 22:50:36 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memcpy(void *dst, const void *src, size_t n) +{ + unsigned char *dest; + const unsigned char *source; + + if (!dst && !src) + return (0); + dest = (unsigned char *)dst; + source = (const unsigned char *)src; + while (n--) + *dest++ = *source++; + return (dst); +} diff --git a/eunumini/Libft/ft_memmove.c b/eunumini/Libft/ft_memmove.c new file mode 100644 index 0000000..1f9c422 --- /dev/null +++ b/eunumini/Libft/ft_memmove.c @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memmove.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/11 17:43:24 by eunwolee #+# #+# */ +/* Updated: 2022/11/23 22:52:37 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memmove(void *dst, const void *src, size_t len) +{ + unsigned char *dest; + const unsigned char *source; + + if (!dst && !src) + return (0); + dest = (unsigned char *)dst; + source = (const unsigned char *)src; + if (dest > source) + while (len--) + *(dest + len) = *(source + len); + else + while (len--) + *dest++ = *source++; + return (dst); +} diff --git a/eunumini/Libft/ft_memset.c b/eunumini/Libft/ft_memset.c new file mode 100644 index 0000000..0959e11 --- /dev/null +++ b/eunumini/Libft/ft_memset.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memset.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/10 12:33:34 by eunwolee #+# #+# */ +/* Updated: 2022/11/14 20:27:03 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memset(void *b, int c, size_t len) +{ + unsigned char *str; + unsigned char tmp; + + str = (unsigned char *)b; + tmp = (unsigned char)c; + while (len--) + *str++ = tmp; + return (b); +} diff --git a/eunumini/Libft/ft_putchar_fd.c b/eunumini/Libft/ft_putchar_fd.c new file mode 100644 index 0000000..7fb1548 --- /dev/null +++ b/eunumini/Libft/ft_putchar_fd.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putchar_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/15 15:41:40 by eunwolee #+# #+# */ +/* Updated: 2022/11/17 12:34:30 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putchar_fd(char c, int fd) +{ + if (fd < 0) + return ; + write (fd, &c, 1); +} diff --git a/eunumini/Libft/ft_putendl_fd.c b/eunumini/Libft/ft_putendl_fd.c new file mode 100644 index 0000000..88597d8 --- /dev/null +++ b/eunumini/Libft/ft_putendl_fd.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putendl_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/16 21:45:36 by eunwolee #+# #+# */ +/* Updated: 2022/11/17 12:34:37 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putendl_fd(char *s, int fd) +{ + if (fd < 0) + return ; + write(fd, s, ft_strlen(s)); + write(fd, "\n", 1); +} diff --git a/eunumini/Libft/ft_putnbr_fd.c b/eunumini/Libft/ft_putnbr_fd.c new file mode 100644 index 0000000..d3e5e80 --- /dev/null +++ b/eunumini/Libft/ft_putnbr_fd.c @@ -0,0 +1,40 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putnbr_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/16 21:49:13 by eunwolee #+# #+# */ +/* Updated: 2022/11/17 14:47:44 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putnbr_fd(int n, int fd) +{ + char num; + + if (fd < 0) + return ; + if (n == -2147483648) + { + write(fd, "-2147483648", 11); + return ; + } + if (n < 0) + { + write (fd, "-", 1); + n *= -1; + } + if (n < 10) + { + num = n + '0'; + write (fd, &num, 1); + return ; + } + ft_putnbr_fd(n / 10, fd); + num = n % 10 + '0'; + write(fd, &num, 1); +} diff --git a/eunumini/Libft/ft_putstr_fd.c b/eunumini/Libft/ft_putstr_fd.c new file mode 100644 index 0000000..d3be0c6 --- /dev/null +++ b/eunumini/Libft/ft_putstr_fd.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putstr_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/15 16:25:54 by eunwolee #+# #+# */ +/* Updated: 2022/11/17 14:45:35 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putstr_fd(char *s, int fd) +{ + if (fd < 0) + return ; + write(fd, s, ft_strlen(s)); +} diff --git a/eunumini/Libft/ft_split.c b/eunumini/Libft/ft_split.c new file mode 100644 index 0000000..2c4a6c4 --- /dev/null +++ b/eunumini/Libft/ft_split.c @@ -0,0 +1,100 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_split.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/14 21:52:44 by eunwolee #+# #+# */ +/* Updated: 2023/04/22 14:58:31 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char **ft_split(char const *s, char c); +static int cnt_str(char const *s, int c); +static int exe_split(char **dest, const char *s, char c, int *idx); +static int cnt_len(char const *s, char c); +static char **clear(char **dest, int idx); + +char **ft_split(char const *s, char c) +{ + int idx; + int cnt; + char **dest; + + cnt = cnt_str(s, c); + dest = (char **)ft_calloc(cnt + 1, sizeof(char *)); + if (!dest) + return (0); + if (!cnt) + dest[0] = ft_strdup(""); + else + { + idx = 0; + if (exe_split(dest, s, c, &idx) == -1) + return (clear(dest, idx)); + } + return (dest); +} + +static int cnt_str(char const *s, int c) +{ + int cnt; + int len; + + cnt = 0; + while (*s) + { + if (*s == c) + s++; + else + { + len = cnt_len(s, c); + cnt++; + s += len; + } + } + return (cnt); +} + +static int exe_split(char **dest, const char *s, char c, int *idx) +{ + int size; + + *idx = 0; + while (*s) + { + if (*s == c) + s++; + else + { + size = cnt_len(s, c); + dest[*idx] = ft_substr(s, 0, size); + if (!dest[*idx]) + return (-1); + s += size; + *idx += 1; + } + } + return (0); +} + +static int cnt_len(char const *s, char c) +{ + int len; + + len = 0; + while (s[len] != c && s[len]) + len++; + return (len); +} + +static char **clear(char **dest, int idx) +{ + while (idx--) + free (dest[idx]); + free (dest); + return (0); +} diff --git a/eunumini/Libft/ft_strchr.c b/eunumini/Libft/ft_strchr.c new file mode 100644 index 0000000..5200892 --- /dev/null +++ b/eunumini/Libft/ft_strchr.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strchr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/12 17:03:53 by eunwolee #+# #+# */ +/* Updated: 2022/11/23 20:24:50 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +char *ft_strchr(const char *s, int c) +{ + unsigned char ch; + + ch = (unsigned char) c; + while (*s) + { + if (*s == ch) + return ((char *)s); + s++; + } + if (*s == ch) + return ((char *)s); + return (0); +} diff --git a/eunumini/Libft/ft_strdup.c b/eunumini/Libft/ft_strdup.c new file mode 100644 index 0000000..5a58a49 --- /dev/null +++ b/eunumini/Libft/ft_strdup.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strdup.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/12 18:07:32 by eunwolee #+# #+# */ +/* Updated: 2022/12/02 15:48:12 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strdup(const char *s1) +{ + size_t len; + char *dest; + + len = ft_strlen(s1); + dest = (char *)malloc(sizeof(char) * (len + 1)); + if (!dest) + return (0); + ft_strlcpy(dest, s1, len + 1); + return (dest); +} diff --git a/eunumini/Libft/ft_striteri.c b/eunumini/Libft/ft_striteri.c new file mode 100644 index 0000000..60e94c4 --- /dev/null +++ b/eunumini/Libft/ft_striteri.c @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_striteri.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/15 15:01:23 by eunwolee #+# #+# */ +/* Updated: 2022/11/17 14:44:32 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +void ft_striteri(char *s, void (*f)(unsigned int, char*)) +{ + int idx; + + idx = 0; + while (s[idx]) + { + f(idx, &s[idx]); + idx++; + } +} diff --git a/eunumini/Libft/ft_strjoin.c b/eunumini/Libft/ft_strjoin.c new file mode 100644 index 0000000..1962922 --- /dev/null +++ b/eunumini/Libft/ft_strjoin.c @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strjoin.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/14 20:57:36 by eunwolee #+# #+# */ +/* Updated: 2022/11/15 15:18:15 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strjoin(char const *s1, char const *s2) +{ + int idx; + char *str; + + str = (char *)malloc(sizeof(char) * (ft_strlen(s1) + ft_strlen(s2) + 1)); + if (!str) + return (0); + idx = 0; + while (*s1) + str[idx++] = *s1++; + while (*s2) + str[idx++] = *s2++; + str[idx] = '\0'; + return (str); +} diff --git a/eunumini/Libft/ft_strlcat.c b/eunumini/Libft/ft_strlcat.c new file mode 100644 index 0000000..54737c8 --- /dev/null +++ b/eunumini/Libft/ft_strlcat.c @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlcat.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/12 16:27:27 by eunwolee #+# #+# */ +/* Updated: 2022/11/14 20:29:15 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +size_t ft_strlcat(char *dst, const char *src, size_t dstsize) +{ + int cnt; + size_t dst_len; + size_t src_len; + + dst_len = ft_strlen(dst); + src_len = ft_strlen(src); + if (dst_len >= dstsize) + return (src_len + dstsize); + dst += dst_len; + cnt = dstsize - dst_len - 1; + while (*src && cnt--) + *dst++ = *src++; + *dst = '\0'; + return (dst_len + src_len); +} diff --git a/eunumini/Libft/ft_strlcpy.c b/eunumini/Libft/ft_strlcpy.c new file mode 100644 index 0000000..4f7b7ad --- /dev/null +++ b/eunumini/Libft/ft_strlcpy.c @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlcpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/12 16:08:41 by eunwolee #+# #+# */ +/* Updated: 2022/11/17 15:37:54 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +size_t ft_strlcpy(char *dst, const char *src, size_t dstsize) +{ + size_t len; + + len = ft_strlen(src); + if (!dstsize) + return (len); + while (*src && dstsize > 1) + { + *dst++ = *src++; + dstsize--; + } + *dst = '\0'; + return (len); +} diff --git a/eunumini/Libft/ft_strlen.c b/eunumini/Libft/ft_strlen.c new file mode 100644 index 0000000..cc14ae3 --- /dev/null +++ b/eunumini/Libft/ft_strlen.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlen.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/12 15:48:24 by eunwolee #+# #+# */ +/* Updated: 2023/07/03 08:52:25 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +size_t ft_strlen(const char *s) +{ + size_t len; + + len = 0; + if (!s) + return (0); + while (s[len]) + len++; + return (len); +} diff --git a/eunumini/Libft/ft_strmapi.c b/eunumini/Libft/ft_strmapi.c new file mode 100644 index 0000000..5b493b0 --- /dev/null +++ b/eunumini/Libft/ft_strmapi.c @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strmapi.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/15 12:58:33 by eunwolee #+# #+# */ +/* Updated: 2022/11/26 17:05:28 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strmapi(char const *s, char (*f)(unsigned int, char)) +{ + int idx; + char *dest; + + dest = (char *)malloc(sizeof(char) * (ft_strlen(s) + 1)); + if (!dest) + return (0); + idx = 0; + while (s[idx]) + { + dest[idx] = f(idx, s[idx]); + idx++; + } + dest[idx] = '\0'; + return (dest); +} diff --git a/eunumini/Libft/ft_strncat.c b/eunumini/Libft/ft_strncat.c new file mode 100644 index 0000000..8087ffc --- /dev/null +++ b/eunumini/Libft/ft_strncat.c @@ -0,0 +1,44 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strncat.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/03 07:51:04 by eunwolee #+# #+# */ +/* Updated: 2023/07/21 16:19:01 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strncat(char *dest, char *src, int n) +{ + int size; + char *res; + int i; + int j; + + size = ft_strlen(dest) + n; + res = (char *)ft_calloc(size + 1, sizeof(char)); + i = 0; + if (dest) + { + while (dest[i]) + { + res[i] = dest[i]; + i++; + } + // free(dest); + } + j = 0; + if (src) + { + while (j < n) + { + res[i + j] = src[j]; + j++; + } + } + return (res); +} diff --git a/eunumini/Libft/ft_strncmp.c b/eunumini/Libft/ft_strncmp.c new file mode 100644 index 0000000..fedb6ba --- /dev/null +++ b/eunumini/Libft/ft_strncmp.c @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strncmp.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/12 17:23:49 by eunwolee #+# #+# */ +/* Updated: 2022/11/17 16:34:45 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_strncmp(const char *s1, const char *s2, size_t n) +{ + const unsigned char *str1; + const unsigned char *str2; + + str1 = (const unsigned char *)s1; + str2 = (const unsigned char *)s2; + while (n-- && (*str1 || *str2)) + { + if (*str1 != *str2) + return (*str1 - *str2); + str1++; + str2++; + } + return (0); +} diff --git a/eunumini/Libft/ft_strnstr.c b/eunumini/Libft/ft_strnstr.c new file mode 100644 index 0000000..d719a2b --- /dev/null +++ b/eunumini/Libft/ft_strnstr.c @@ -0,0 +1,38 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strnstr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/12 17:16:09 by eunwolee #+# #+# */ +/* Updated: 2023/04/06 19:28:36 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strnstr(const char *haystack, const char *needle, size_t len) +{ + size_t idx; + size_t h_len; + size_t n_len; + + idx = 0; + if (!*needle) + return ((char *)haystack); + if (!len) + return (0); + h_len = ft_strlen(haystack); + n_len = ft_strlen(needle); + if (len < n_len || h_len < n_len) + return (0); + while (idx <= len - n_len && *haystack) + { + if (!ft_strncmp(haystack, needle, n_len)) + return ((char *)haystack); + idx++; + haystack++; + } + return (0); +} diff --git a/eunumini/Libft/ft_strrchr.c b/eunumini/Libft/ft_strrchr.c new file mode 100644 index 0000000..c2cdf10 --- /dev/null +++ b/eunumini/Libft/ft_strrchr.c @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strrchr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/12 17:11:16 by eunwolee #+# #+# */ +/* Updated: 2022/11/23 20:46:02 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strrchr(const char *s, int c) +{ + const char *tmp; + unsigned char ch; + + tmp = 0; + ch = (unsigned char) c; + while (*s) + { + if (*s == ch) + tmp = s; + s++; + } + if (*s == ch) + tmp = s; + return ((char *)tmp); +} diff --git a/eunumini/Libft/ft_strtrim.c b/eunumini/Libft/ft_strtrim.c new file mode 100644 index 0000000..0bc375e --- /dev/null +++ b/eunumini/Libft/ft_strtrim.c @@ -0,0 +1,55 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strtrim.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/20 14:30:50 by eunwolee #+# #+# */ +/* Updated: 2022/12/02 15:49:00 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +static const char *from_front(char const *s1, char const *set, int *size) +{ + while (*s1) + { + if (!ft_strchr(set, *s1)) + break ; + s1++; + *size -= 1; + } + return (s1); +} + +static void from_back(char const *tmp, char const *set, int *size) +{ + while (*tmp) + { + if (!ft_strchr(set, *tmp)) + break ; + tmp--; + *size -= 1; + } +} + +char *ft_strtrim(char const *s1, char const *set) +{ + int size; + char *dest; + char const *tmp; + + size = ft_strlen(s1); + s1 = from_front(s1, set, &size); + tmp = s1; + tmp += size - 1; + if (size) + from_back(tmp, set, &size); + dest = (char *)malloc(sizeof(char) * (size + 1)); + if (!dest) + return (0); + ft_strlcpy(dest, s1, size + 1); + return (dest); +} diff --git a/eunumini/Libft/ft_substr.c b/eunumini/Libft/ft_substr.c new file mode 100644 index 0000000..fc44b76 --- /dev/null +++ b/eunumini/Libft/ft_substr.c @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_substr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/14 17:55:14 by eunwolee #+# #+# */ +/* Updated: 2022/11/25 16:48:59 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_substr(char const *s, unsigned int start, size_t len) +{ + char *tmp; + size_t idx; + size_t size; + + if (start > ft_strlen(s)) + size = 0; + else if (len > ft_strlen(s + start)) + size = ft_strlen(s + start); + else + size = len; + tmp = (char *)malloc(sizeof(char) * (size + 1)); + if (!tmp) + return (0); + idx = 0; + if (size) + while (idx < len && s[start]) + tmp[idx++] = s[start++]; + tmp[idx] = '\0'; + return (tmp); +} diff --git a/eunumini/Libft/ft_tolower.c b/eunumini/Libft/ft_tolower.c new file mode 100644 index 0000000..b5b54b4 --- /dev/null +++ b/eunumini/Libft/ft_tolower.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_tolower.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/09 18:50:14 by eunwolee #+# #+# */ +/* Updated: 2022/11/14 20:30:06 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_tolower(int c) +{ + if (c >= 'A' && c <= 'Z') + return (c + 32); + return (c); +} diff --git a/eunumini/Libft/ft_toupper.c b/eunumini/Libft/ft_toupper.c new file mode 100644 index 0000000..fc084ac --- /dev/null +++ b/eunumini/Libft/ft_toupper.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_toupper.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/09 18:47:05 by eunwolee #+# #+# */ +/* Updated: 2022/11/14 20:30:09 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_toupper(int c) +{ + if (c >= 'a' && c <= 'z') + return (c - 32); + return (c); +} diff --git a/eunumini/Libft/get_next_line.c b/eunumini/Libft/get_next_line.c new file mode 100644 index 0000000..6500a3a --- /dev/null +++ b/eunumini/Libft/get_next_line.c @@ -0,0 +1,138 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* get_next_line.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/26 16:01:43 by eunwolee #+# #+# */ +/* Updated: 2023/07/12 19:41:52 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +static t_g_list *get_new_nod(int fd) +{ + char *buff; + t_g_list *nod; + + buff = (char *)malloc(sizeof(char) * 1); + if (!buff) + return (0); + buff[0] = '\0'; + nod = (t_g_list *)malloc(sizeof(t_g_list) * 1); + if (!nod) + { + free(buff); + return (0); + } + nod->buff = buff; + nod->fd = fd; + nod->next = 0; + return (nod); +} + +static t_g_list *get_fd_nod(t_g_list **head, int fd) +{ + t_g_list *tmp; + + tmp = *head; + if (!tmp) + { + tmp = get_new_nod(fd); + if (!tmp) + return (0); + *head = tmp; + } + while (tmp->next) + { + if (tmp->fd == fd) + return (tmp); + tmp = tmp->next; + } + if (tmp->fd != fd) + { + tmp->next = get_new_nod(fd); + if (!tmp->next) + return (0); + tmp = tmp->next; + } + return (tmp); +} + +static char *get_done_line(t_g_list *nod) +{ + int idx; + int nod_cnt; + int line_cnt; + char *line; + + line_cnt = 0; + while (nod->buff[line_cnt] != '\n' && nod->buff[line_cnt]) + line_cnt++; + if (nod->buff[line_cnt] == '\n') + line_cnt++; + nod_cnt = ft_strlen(&nod->buff[line_cnt]); + line = (char *)malloc(sizeof(char) * (line_cnt + 1)); + if (!line) + return (0); + idx = -1; + while (++idx < line_cnt) + line[idx] = nod->buff[idx]; + idx = -1; + while (++idx < nod_cnt) + nod->buff[idx] = nod->buff[idx + line_cnt]; + line[line_cnt] = '\0'; + nod->buff[nod_cnt] = '\0'; + return (line); +} + +static int get_read_line(int fd, t_g_list *nod) +{ + int rd; + char *buff; + + buff = (char *)malloc(sizeof(char) * BUFFER_SIZE + 1); + if (!buff) + return (-1); + rd = 1; + while (rd) + { + rd = read(fd, buff, BUFFER_SIZE); + if (rd == -1 || !rd) + break ; + buff[rd] = '\0'; + nod->buff = ft_strjoin(nod->buff, buff); + if (!nod->buff) + { + free(buff); + return (-1); + } + if (ft_strchr(nod->buff, '\n')) + break ; + } + free(buff); + return (rd); +} + +char *get_next_line(int fd) +{ + t_g_list *nod; + char *line; + static t_g_list *head; + + if (fd < 0 || BUFFER_SIZE <= 0) + return (0); + nod = get_fd_nod(&head, fd); + if (!nod) + return (0); + if (get_read_line(fd, nod) == -1 || !*(nod->buff)) + return (delete_nod(&head, nod)); + line = get_done_line(nod); + if (!line) + return (delete_nod(&head, nod)); + if (!*(nod->buff)) + delete_nod(&head, nod); + return (line); +} diff --git a/eunumini/Libft/get_next_line_utils.c b/eunumini/Libft/get_next_line_utils.c new file mode 100644 index 0000000..ec97127 --- /dev/null +++ b/eunumini/Libft/get_next_line_utils.c @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* get_next_line_utils.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/26 16:01:47 by eunwolee #+# #+# */ +/* Updated: 2023/07/10 19:31:14 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *delete_nod(t_g_list **head, t_g_list *nod) +{ + t_g_list *tmp; + + tmp = *head; + if (tmp == nod) + { + if (!(tmp->next)) + *head = 0; + else + *head = tmp->next; + free(nod->buff); + free(nod); + return (0); + } + while (tmp->next != nod) + tmp = tmp->next; + tmp->next = nod->next; + free(nod->buff); + free(nod); + return (0); +} diff --git a/eunumini/Libft/libft.h b/eunumini/Libft/libft.h new file mode 100644 index 0000000..db6e378 --- /dev/null +++ b/eunumini/Libft/libft.h @@ -0,0 +1,73 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* libft.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/07 21:00:01 by eunwolee #+# #+# */ +/* Updated: 2023/07/12 19:42:12 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef LIBFT_H +# define LIBFT_H + +# include +# include +# include + +# ifndef BUFFER_SIZE +# define BUFFER_SIZE 42 +# endif + +typedef struct s_g_list +{ + int fd; + char *buff; + struct s_g_list *next; +} t_g_list; + +char *get_next_line(int fd); +char *delete_nod(t_g_list **head, t_g_list *nod); + +//Libc functions +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); +int ft_memcmp(const void *s1, const void *s2, size_t n); +void *ft_memset(void *b, int c, size_t len); +void *ft_memchr(const void *s, int c, size_t n); +void *ft_memcpy(void *dst, const void *src, size_t n); +void *ft_memmove(void *dst, const void *src, size_t len); +void *ft_calloc(size_t count, size_t size); +void ft_bzero(void *s, size_t n); +size_t ft_strlen(const char *s); +size_t ft_strlcpy(char *dst, const char *src, size_t dstsize); +size_t ft_strlcat(char *dst, const char *src, size_t dstsize); +char *ft_strncat(char *dest, char *src, int n); +char *ft_strchr(const char *s, int c); +char *ft_strrchr(const char *s, int c); +char *ft_strnstr(const char *haystack, const char *needle, size_t len); +char *ft_strdup(const char *s1); +int ft_strncmp(const char *s1, const char *s2, size_t n); +int ft_atoi(const char *str); + +//Additional functions +char *ft_substr(char const *s, unsigned int start, size_t len); +char *ft_strjoin(char const *s1, char const *s2); +char *ft_strtrim(char const *s1, char const *set); +char **ft_split(char const *s, char c); +char *ft_itoa(int n); +char *ft_strmapi(char const *s, char (*f)(unsigned int, char)); +void ft_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); + +#endif \ No newline at end of file diff --git a/eunumini/Makefile b/eunumini/Makefile new file mode 100644 index 0000000..efcae68 --- /dev/null +++ b/eunumini/Makefile @@ -0,0 +1,59 @@ +NAME = minishell + +L_DIR = Libft +L_NAME = libft.a + +INCS_DIR = incs +SRCS_DIR = srcs + +CC = cc +CFLAGS = -Wall -Wextra -Werror + +RM = rm -rf +MAKE = make + +SRCS = $(SRCS_DIR)/minishell.c \ + $(SRCS_DIR)/init/init.c \ + $(SRCS_DIR)/lexer/lexer.c \ + $(SRCS_DIR)/lexer/tokenizer.c \ + $(SRCS_DIR)/lexer/quote.c \ + $(SRCS_DIR)/lexer/expand.c \ + $(SRCS_DIR)/parser/syntax.c \ + $(SRCS_DIR)/parser/parser.c \ + $(SRCS_DIR)/utils/env.c \ + $(SRCS_DIR)/utils/list.c \ + $(SRCS_DIR)/utils/list_clear.c \ + $(SRCS_DIR)/utils/tree.c \ + $(SRCS_DIR)/utils/utils.c \ + $(SRCS_DIR)/utils/temp.c \ + +OBJS = $(SRCS:%.c=%.o) + +%.o: %.c + $(CC) $(CFLAGS) -c $^ -o $@ -I $(INCS_DIR) + +all: $(NAME) + +$(NAME): $(L_NAME) $(OBJS) + $(CC) $^ -o $@ -I $(INCS_DIR) + # $(CC) $^ -o $@ -I $(INCS_DIR) -fsanitize=address + +$(L_NAME): + $(MAKE) -C $(L_DIR) + cp ./$(L_DIR)/$(L_NAME) . + +clean: + $(MAKE) fclean -C $(L_DIR) + $(RM) $(OBJS) + $(RM) $(SRCS_DIR_M)/*.o $(SRCS_DIR_B)/*.o $(L_NAME) + +fclean: + $(MAKE) fclean -C $(L_DIR) + $(MAKE) clean + $(RM) $(NAME) + +re: + $(MAKE) fclean + $(MAKE) all + +.PHONY: all clean fclean re \ No newline at end of file diff --git a/eunumini/incs/init.h b/eunumini/incs/init.h new file mode 100644 index 0000000..b7cd230 --- /dev/null +++ b/eunumini/incs/init.h @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* init.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/11 10:29:44 by eunwolee #+# #+# */ +/* Updated: 2023/07/12 16:17:39 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef INIT_H +# define INIT_H + +# include "struct.h" + +void init(t_data **data, char **envp); +void env_init(t_data *data, char **envp); + +#endif \ No newline at end of file diff --git a/eunumini/incs/message.h b/eunumini/incs/message.h new file mode 100644 index 0000000..a6061ac --- /dev/null +++ b/eunumini/incs/message.h @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* message.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/12 18:39:04 by eunwolee #+# #+# */ +/* Updated: 2023/07/12 18:39:31 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef MESSAGE_H +# define MESSAGE_H + +# define E_SYNTAX_PIPE "bash: syntax error near unexpected token `|'" +# define E_SYNTAX_INPUT "bash: syntax error near unexpected token `<'" +# define E_SYNTAX_OUTPUT "bash: syntax error near unexpected token `>'" +# define E_SYNTAX_HEREDOC "bash: syntax error near unexpected token `<<'" +# define E_SYNTAX_APPEND "bash: syntax error near unexpected token `>>'" +# define E_SYNTAX_NEWLINE "bash: syntax error near unexpected token `newline'" + +#endif \ No newline at end of file diff --git a/eunumini/incs/minishell.h b/eunumini/incs/minishell.h new file mode 100644 index 0000000..a19a6b7 --- /dev/null +++ b/eunumini/incs/minishell.h @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* minishell.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/06/29 11:05:33 by eunwolee #+# #+# */ +/* Updated: 2023/07/12 18:39:51 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef MINISHELL_H +# define MINISHELL_H + +# include +# include +# include +# include "init.h" +# include "parse.h" +# include "struct.h" +# include "utils.h" +# include "message.h" +# include "../Libft/libft.h" +// #include +// #include + +#endif \ No newline at end of file diff --git a/eunumini/incs/parse.h b/eunumini/incs/parse.h new file mode 100644 index 0000000..e216be9 --- /dev/null +++ b/eunumini/incs/parse.h @@ -0,0 +1,34 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* parse.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/04 07:53:54 by eunwolee #+# #+# */ +/* Updated: 2023/07/17 07:09:31 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef PARSE_H +# define PARSE_H + +# include "struct.h" + +void tokenizer(t_data *data, t_token **token, int *i); +t_token *token_create(void); +void token_add_list(t_list **head, t_token **token, t_bool token_flag); +void token_redirect(t_data *data, t_token *token, int *i); + +void single_quote(char *input, t_token *token, int *i); +void double_quote(char *input, t_token *token, int *i, t_data *data); + +void lexer(t_data *data); + +t_bool syntax(t_data *data); + +void parser(t_data *data); + +t_bool expand(t_data *data, t_token *token, int *i, t_bool quote); + +#endif \ No newline at end of file diff --git a/eunumini/incs/struct.h b/eunumini/incs/struct.h new file mode 100644 index 0000000..d6b01ca --- /dev/null +++ b/eunumini/incs/struct.h @@ -0,0 +1,71 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* struct.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/11 10:24:15 by eunwolee #+# #+# */ +/* Updated: 2023/07/16 17:37:07 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef STRUCT_H +# define STRUCT_H + +typedef enum e_bool +{ + FALSE, + TRUE +}t_bool; + +typedef enum e_type +{ + T_PIPE, + T_WORD, + T_CMD, + T_ARG, + T_REDIRECT, + T_INPUT, + T_OUTPUT, + T_HEREDOC, + T_APPEND, +}t_type; + +typedef struct s_token +{ + int type; + int redirect_type; + char *str; +} t_token; + +//tokens와 envs에서 통용되는 리스트 구조체 +typedef struct s_list +{ + struct s_list *pre; + struct s_list *next; + t_token *token; + char *env; +}t_list; + +typedef struct s_leaf +{ + struct s_leaf *parent; + struct s_leaf *left_child; + struct s_leaf *right_child; + int leaf_type; + t_token *token; + t_bool exist; +}t_leaf; + +typedef struct s_data +{ + char *input; + t_list *tokens; + t_list *envs; + char **env_array; + t_leaf *root; + int error_code; +} t_data; + +#endif \ No newline at end of file diff --git a/eunumini/incs/utils.h b/eunumini/incs/utils.h new file mode 100644 index 0000000..0a48943 --- /dev/null +++ b/eunumini/incs/utils.h @@ -0,0 +1,48 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* utils.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/11 10:32:09 by eunwolee #+# #+# */ +/* Updated: 2023/07/21 08:38:22 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +//환경변수, 자료구조 및 기타 함수 + +#ifndef UTILS_H +# define UTILS_H + +# include "struct.h" + +void env_print(t_data *data); +t_list *env_search(t_data *data, char *key); +t_bool env_remove(t_data *data, char *key); +char **env_to_array(t_data *data); + +t_list *ft_lstnew(void); +void ft_lstadd_back(t_list **lst, t_list *new); +t_list *ft_lstlast(t_list *lst); +int ft_lstsize(t_list *lst); +void ft_lstdelone(t_list *lst); +void ft_lstclear(t_list **lst); + +t_leaf *tree_create_leaf(t_leaf *parent, int leaf_type); +t_bool tree_add_left(t_leaf *parent, t_token *new_token, int leaf_type); +t_bool tree_add_right(t_leaf *parent, t_token *new_token, int leaf_type); +void tree_clear(t_leaf *leaf); + +t_bool error_back_readline(t_data *data, char *str, int error_code); +void program_error_exit(char *str); +void input_free(t_data *data); +void data_free(t_data *data); + +/*temp.c 임시 함수*/ +void tree_print(t_leaf *leaf); +void print_token(t_data *data); +void env_array_print(t_data *data); +void check_leak(void); + +#endif \ No newline at end of file diff --git a/eunumini/srcs/init/init.c b/eunumini/srcs/init/init.c new file mode 100644 index 0000000..06a0839 --- /dev/null +++ b/eunumini/srcs/init/init.c @@ -0,0 +1,43 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* init.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/06/29 11:06:52 by eunwolee #+# #+# */ +/* Updated: 2023/07/21 08:50:37 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../incs/minishell.h" + +void init(t_data **data, char **envp); +void env_init(t_data *data, char **envp); + +//필요하신 초기화 내용 여기 넣어주시면 됩니당 +void init(t_data **data, char **envp) +{ + *data = (t_data *)ft_calloc(1, sizeof(t_data)); + if (!*data) + program_error_exit("bash"); + env_init(*data, envp); +} + +void env_init(t_data *data, char **envp) +{ + int i; + t_list *new; + + i = -1; + while (envp[++i]) + { + new = ft_lstnew(); + if (!new) + program_error_exit("bash"); + new->env = ft_strdup(envp[i]); + if (!new->env) + program_error_exit("bash"); + ft_lstadd_back(&data->envs, new); + } +} diff --git a/eunumini/srcs/lexer/expand.c b/eunumini/srcs/lexer/expand.c new file mode 100644 index 0000000..12280a8 --- /dev/null +++ b/eunumini/srcs/lexer/expand.c @@ -0,0 +1,147 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* expand.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/11 12:20:49 by eunwolee #+# #+# */ +/* Updated: 2023/07/21 16:19:42 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +t_bool expand(t_data *data, t_token *token, int *i, t_bool quote); +static t_bool check_heredoc(t_data *data, t_token *token, int *i); +static t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote); +static t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote); +static void replace(t_data *data, t_token *token, char *name); + +t_bool expand(t_data *data, t_token *token, int *i, t_bool quote) +{ + char *name; + + *i += 1; + name = NULL; + if (check_heredoc(data, token, i) == TRUE) + return (TRUE); + if (check_blank(data, token, i, quote) == TRUE) + return (TRUE); + if (check_other(data, token, i, quote) == TRUE) + return (TRUE); + while (data->input[*i] != '\'' && data->input[*i] != '\"' \ + && data->input[*i] != ' ' && data->input[*i] != '\t' \ + && data->input[*i] != '\0' && ft_isalnum(data->input[*i])) + { + name = ft_strncat(name, &data->input[*i], 1); + if (!name) + program_error_exit("bash"); + *i += 1; + } + replace(data, token, name); + if (quote == FALSE) + *i -= 1; + else if (quote == TRUE && data->input[*i] == '\"') + return (TRUE); + return (FALSE); +} + +static t_bool check_heredoc(t_data *data, t_token *token, int *i) +{ + t_list *tmp; + + tmp = ft_lstlast(data->tokens); + if (tmp && tmp->token->redirect_type == T_HEREDOC) + { + token->str = ft_strncat(token->str, "$", 1); + if (!token->str) + program_error_exit("bash"); + *i -= 1; + return (TRUE); + } + return (FALSE); +} + +static t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote) +{ + if (quote == FALSE && (data->input[*i] == ' ' || data->input[*i] == '\t')) + { + token->str = ft_strncat(token->str, "$", 1); + if (!token->str) + program_error_exit("bash"); + if (quote == FALSE) + { + *i -= 1; + return (TRUE); + } + token->str = ft_strncat(token->str, &data->input[*i], 1); + if (!token->str) + program_error_exit("bash"); + if (quote == TRUE) + return (TRUE); + } + return (FALSE); +} + +static t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote) +{ + if (data->input[*i] == '\"') + { + + if (quote == TRUE) + { + token->str = ft_strncat(token->str, "$", 1); + if (!token->str) + program_error_exit("bash"); + } + else + { + if (data->input[*i + 1] == '\0') + return (FALSE); + *i -= 1; + } + return (TRUE); + } + else if (data->input[*i] == '\'') + { + *i -= 1 ; + return (TRUE); + } + else if (data->input[*i] == '\0') + { + token->str = ft_strncat(token->str, "$", 1); + if (!token->str) + program_error_exit("bash"); + return (TRUE); + } + return (FALSE); +} + +static void replace(t_data *data, t_token *token, char *name) +{ + int j; + t_list *tmp; + + tmp = env_search(data, name); + if (!tmp) + { + token->str = ft_strdup("$"); + if (!token->str) + program_error_exit("bash"); + token->str = ft_strncat(token->str, name, ft_strlen(name)); + if (!token->str) + program_error_exit("bash"); + } + else + { + j = 0; + while (tmp->env[j] != '=') + j++; + token->str = ft_strncat(token->str, \ + &tmp->env[j + 1], ft_strlen(&tmp->env[j + 1])); + if (!token->str) + program_error_exit("bash"); + } + free(name); +} diff --git a/eunumini/srcs/lexer/lexer.c b/eunumini/srcs/lexer/lexer.c new file mode 100644 index 0000000..a21a25c --- /dev/null +++ b/eunumini/srcs/lexer/lexer.c @@ -0,0 +1,59 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lexer.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/06/29 16:24:37 by eunwolee #+# #+# */ +/* Updated: 2023/07/21 16:14:38 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +void lexer(t_data *data); +static void check_char(t_data *data, t_token **token, int *i); + +void lexer(t_data *data) +{ + int i; + t_token *token; + + token = token_create(); + if (!token) + program_error_exit("bash"); + i = -1; + while (data->input[++i]) + check_char(data, &token, &i); + if (token->str && *(token->str)) + token_add_list(&data->tokens, &token, FALSE); +} + +static void check_char(t_data *data, t_token **token, int *i) +{ + if (data->input[*i] == '|' \ + || data->input[*i] == '<' || data->input[*i] == '>') + { + if (*(*token)->str) + token_add_list(&data->tokens, token, TRUE); + tokenizer(data, token, i); + } + else if (data->input[*i] == '\'' || data->input[*i] == '\"') + { + tokenizer(data, token, i); + } + else if (data->input[*i] == ' ' || data->input[*i] == '\t') + { + if (*(*token)->str) + token_add_list(&data->tokens, token, TRUE); + } + else if (data->input[*i] == '$') + expand(data, *token, i, FALSE); + else + { + (*token)->str = ft_strncat((*token)->str, &data->input[*i], 1); + if (!(*token)->str) + program_error_exit("bash"); + } +} diff --git a/eunumini/srcs/lexer/quote.c b/eunumini/srcs/lexer/quote.c new file mode 100644 index 0000000..cce7479 --- /dev/null +++ b/eunumini/srcs/lexer/quote.c @@ -0,0 +1,114 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* quote.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/03 07:46:30 by eunwolee #+# #+# */ +/* Updated: 2023/07/16 20:16:29 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +void single_quote(char *input, t_token *token, int *i); +void double_quote(char *input, t_token *token, int *i, t_data *data); +static t_bool find_next_quote(char *input, t_token *token, int i, char quote); +static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next_quote); +static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next_quote); + +void single_quote(char *input, t_token *token, int *i) +{ + t_bool next_quote; + + *i += 1; + next_quote = find_next_quote(input, token, *i, '\''); + while (input[*i] != '\'' && input[*i] != '\0') + { + if (s_check_char(input, token, i, next_quote) == TRUE) + return ; + *i += 1; + } + if (input[*i] == '\0') + *i -= 1; +} + +void double_quote(char *input, t_token *token, int *i, t_data *data) +{ + t_bool next_quote; + + *i += 1; + next_quote = find_next_quote(input, token, *i, '\"'); + while (input[*i] != '\"' && input[*i] != '\0') + { + if (input[*i] == '$') + { + if (input[*i + 1] != '\'' && next_quote == TRUE) + if (expand(data, token, i, TRUE) == TRUE) + return ; + } + if (d_check_char(input, token, i, next_quote) == TRUE) + return ; + *i += 1; + } + if (input[*i] == '\0') + *i -= 1; +} + +static t_bool find_next_quote(char *input, t_token *token, int i, char quote) +{ + if (quote == '\"') + while (input[i] != quote && input[i] != '\0') + { + if (input[i] == '\\' && input[i + 1] == quote) + i++; + i++; + } + else + while (input[i] != quote && input[i] != '\0') + i++; + if (input[i] == '\0') + { + token->str = ft_strncat(token->str, "e, 1); + if (!token->str) + program_error_exit("bash"); + return (FALSE); + } + return (TRUE); +} + +static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next_quote) +{ + if (next_quote == FALSE \ + && (input[*i] != ' ' || input[*i] != '\t')) + { + *i -= 1; + return (TRUE); + } + else + token->str = ft_strncat(token->str, &input[*i], 1); + if (!token->str) + program_error_exit("bash"); + return (FALSE); +} + +static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next_quote) +{ + if (next_quote == FALSE \ + && (input[*i] != ' ' || input[*i] != '\t')) + { + *i -= 1; + return (TRUE); + } + if (input[*i] == '\\' && input[*i + 1] == '\"') + { + token->str = ft_strncat(token->str, "\\\"", 2); + *i += 1; + } + else + token->str = ft_strncat(token->str, &input[*i], 1); + if (!token->str) + program_error_exit("bash"); + return (FALSE); +} \ No newline at end of file diff --git a/eunumini/srcs/lexer/tokenizer.c b/eunumini/srcs/lexer/tokenizer.c new file mode 100644 index 0000000..5433ee4 --- /dev/null +++ b/eunumini/srcs/lexer/tokenizer.c @@ -0,0 +1,91 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* tokenizer.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/11 12:26:13 by eunwolee #+# #+# */ +/* Updated: 2023/07/21 09:06:12 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +void tokenizer(t_data *data, t_token **token, int *i); +t_token *token_create(void); +void token_redirect(t_data *data, t_token *token, int *i); +void token_add_list(t_list **head, t_token **token, t_bool token_flag); + +void tokenizer(t_data *data, t_token **token, int *i) +{ + if (data->input[*i] == '|') + (*token)->type = T_PIPE; + else if (data->input[*i] == '\"') + double_quote(data->input, *token, i, data); + else if (data->input[*i] == '\'') + single_quote(data->input, *token, i); + else if (data->input[*i] == '<' || data->input[*i] == '>') + token_redirect(data, *token, i); + if ((data->input[*i] == '\'' || data->input[*i] == '\"') \ + && (data->input[*i + 1] != ' ' && data->input[*i + 1] != '\t') \ + && (data->input[*i + 1] != '\0')) + return ; + token_add_list(&data->tokens, token, TRUE); +} + +t_token *token_create(void) +{ + t_token *token; + + token = (t_token *)ft_calloc(1, sizeof(t_token)); + if (!token) + program_error_exit("bash"); + token->type = T_WORD; + token->str = ft_strdup(""); + if (!token->str) + program_error_exit("bash"); + return (token); +} + +void token_redirect(t_data *data, t_token *token, int *i) +{ + token->type = T_REDIRECT; + if (data->input[*i] == '<') + { + if (data->input[*i + 1] == '<') + { + token->redirect_type = T_HEREDOC; + *i += 1; + } + else + token->redirect_type = T_INPUT; + } + else + { + if (data->input[*i + 1] == '>') + { + token->redirect_type = T_APPEND; + *i += 1; + } + else + token->redirect_type = T_OUTPUT; + } +} + +void token_add_list(t_list **head, t_token **token, t_bool token_flag) +{ + t_list *new; + + new = ft_lstnew(); + if (!new) + program_error_exit("bash"); + new->token = *token; + ft_lstadd_back(head, new); + if (token_flag == TRUE) + { + *token = token_create(); + if (!*token) + program_error_exit("bash"); + } +} diff --git a/eunumini/srcs/minishell.c b/eunumini/srcs/minishell.c new file mode 100644 index 0000000..4ac6e53 --- /dev/null +++ b/eunumini/srcs/minishell.c @@ -0,0 +1,47 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* minishell.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ +/* Updated: 2023/07/21 16:19:56 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../incs/minishell.h" + +int main(int argc, char **argv, char **envp) +{ + t_data *data; + + // atexit(check_leak); + + (void)argc; + (void)argv; + init(&data, envp); + + // while (TRUE) + for(int i=0; i<1; i++) + { + char *str = get_next_line(0); + data->input = ft_substr(str, 0, ft_strlen(str) - 1); //-1 개행 떼기 + if (*data->input) + { + lexer(data); + if (syntax(data) == FALSE) + return (0); //free하고 다시 input 받기 + parser(data); + + print_token(data); + printf("\n\n"); + tree_print(data->root); + printf("\n\n"); + + // input_free(data); + } + } + // data_free(data); + return (0); +} diff --git a/eunumini/srcs/parser/parser.c b/eunumini/srcs/parser/parser.c new file mode 100644 index 0000000..ba26787 --- /dev/null +++ b/eunumini/srcs/parser/parser.c @@ -0,0 +1,67 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* parser.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/03 18:35:07 by eunwolee #+# #+# */ +/* Updated: 2023/07/14 07:52:10 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +void parser(t_data *data); +static void link_pipe_leaf(t_leaf **cur_leaf); +static void check_token_type(t_leaf *cur_leaf, t_list *cur_token); + +void parser(t_data *data) +{ + t_list *cur_token; + t_leaf *cur_leaf; + + cur_token = data->tokens; + data->root = tree_create_leaf(NULL, T_PIPE); + data->root->left_child = tree_create_leaf(data->root, T_CMD); + cur_leaf = data->root->left_child; + while (cur_token) + { + while (cur_token && cur_token->token->type != T_PIPE) + { + check_token_type(cur_leaf, cur_token); + cur_token = cur_token->next; + } + if (!cur_token) + break ; + if (cur_token->token->type == T_PIPE) + link_pipe_leaf(&cur_leaf); + cur_token = cur_token->next; + } +} + +static void link_pipe_leaf(t_leaf **cur_leaf) +{ + *cur_leaf = (*cur_leaf)->parent; + (*cur_leaf)->exist = TRUE; + (*cur_leaf)->right_child = tree_create_leaf(*cur_leaf, T_PIPE); + *cur_leaf = (*cur_leaf)->right_child; + (*cur_leaf)->left_child = tree_create_leaf(*cur_leaf, T_CMD); + *cur_leaf = (*cur_leaf)->left_child; +} + +static void check_token_type(t_leaf *cur_leaf, t_list *cur_token) +{ + if (cur_token->token->type == T_REDIRECT) + tree_add_left(cur_leaf, cur_token->token, T_REDIRECT); + else if (cur_token->token->type == T_CMD) + tree_add_right(cur_leaf, cur_token->token, T_CMD); + else if (cur_token->token->type == T_ARG) + { + if (cur_token->pre->token->type == T_REDIRECT) + tree_add_left(cur_leaf, cur_token->token, T_ARG); + else if (cur_token->pre->token->type == T_CMD \ + || cur_token->pre->token->type == T_ARG) + tree_add_right(cur_leaf, cur_token->token, T_ARG); + } +} diff --git a/eunumini/srcs/parser/syntax.c b/eunumini/srcs/parser/syntax.c new file mode 100644 index 0000000..8e58659 --- /dev/null +++ b/eunumini/srcs/parser/syntax.c @@ -0,0 +1,97 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* syntax.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/07 22:24:38 by eunwolee #+# #+# */ +/* Updated: 2023/07/17 06:40:42 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +t_bool syntax(t_data *data); +static t_bool syntax_none(t_data *data, t_list *cur); +static void syntax_word(t_list *cur); +static t_bool syntax_redirect(t_data *data, t_list *cur); +static t_bool syntax_pipe(t_data *data, t_list *cur); + +t_bool syntax(t_data *data) +{ + t_list *cur; + + cur = data->tokens; + if (syntax_none(data, cur) == FALSE) + return (FALSE); + cur = cur->next; + while (cur) + { + if (cur->token->type == T_WORD) + syntax_word(cur); + else if (cur->token->type == T_PIPE) + { + if (syntax_pipe(data, cur) == FALSE) + return (FALSE); + } + else if (cur->token->type == T_REDIRECT) + { + if (syntax_redirect(data, cur) == FALSE) + return (FALSE); + } + cur = cur->next; + } + return (TRUE); +} + +static t_bool syntax_none(t_data *data, t_list *cur) +{ + if (cur->token->type == T_WORD) + cur->token->type = T_CMD; + else if (cur->token->type == T_PIPE) + return (error_back_readline(data, E_SYNTAX_PIPE, 258)); + return (TRUE); +} + +static void syntax_word(t_list *cur) +{ + if (cur->pre->token->type == T_ARG \ + && cur->pre->pre->token->type == T_REDIRECT) + cur->token->type = T_CMD; + else if (cur->pre->token->type == T_CMD \ + || cur->pre->token->type == T_ARG \ + || cur->pre->token->type == T_REDIRECT) + cur->token->type = T_ARG; + else if (cur->pre->token->type == T_PIPE) + cur->token->type = T_CMD; +} + +static t_bool syntax_redirect(t_data *data, t_list *cur) +{ + if (cur->pre->token->type == T_REDIRECT) + { + if (cur->token->redirect_type == T_INPUT) + return (error_back_readline(data, E_SYNTAX_INPUT, 258)); + if (cur->token->redirect_type == T_OUTPUT) + return (error_back_readline(data, E_SYNTAX_OUTPUT, 258)); + if (cur->token->redirect_type == T_HEREDOC) + return (error_back_readline(data, E_SYNTAX_HEREDOC, 258)); + if (cur->token->redirect_type == T_APPEND) + return (error_back_readline(data, E_SYNTAX_APPEND, 258)); + } + if (!cur->next) + return (error_back_readline(data, E_SYNTAX_NEWLINE, 258)); + return (TRUE); +} + +static t_bool syntax_pipe(t_data *data, t_list *cur) +{ + if (cur->pre->token->type == T_PIPE) + return (error_back_readline(data, E_SYNTAX_PIPE, 258)); + if (cur->pre->token->type == T_REDIRECT) + return (error_back_readline(data, E_SYNTAX_PIPE, 258)); + if (!cur->next) + return (error_back_readline(data, E_SYNTAX_NEWLINE, 258)); + return (TRUE); +} diff --git a/eunumini/srcs/utils/env.c b/eunumini/srcs/utils/env.c new file mode 100644 index 0000000..5f216a9 --- /dev/null +++ b/eunumini/srcs/utils/env.c @@ -0,0 +1,90 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* env.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/11 06:38:21 by eunwolee #+# #+# */ +/* Updated: 2023/07/21 08:49:50 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +void env_print(t_data *data); +t_list *env_search(t_data *data, char *key); +t_bool env_remove(t_data *data, char *key); +char **env_to_array(t_data *data); + +void env_print(t_data *data) +{ + t_list *cur; + + cur = data->envs; + while (cur) + { + printf("%s\n", cur->env); + cur = cur->next; + } +} + +//환경변수 이름에 해당하는 노드를 반환하는 함수입니다 +t_list *env_search(t_data *data, char *key) +{ + char *tmp; + t_list *cur; + + tmp = ft_strncat(key, "=", 1); + cur = data->envs; + while (cur) + { + if (!ft_strncmp(cur->env, tmp, ft_strlen(tmp))) + return (cur); + cur = cur->next; + } + return (NULL); +} + +t_bool env_remove(t_data *data, char *key) +{ + t_list *env; + + env = env_search(data, key); + if (!env) + return (FALSE); + if (env->pre) + data->envs = env->next; + else + env->pre->next = env->next; + ft_lstdelone(env); + return (TRUE); +} + +//리턴값 더블포인터를 data->env_array에 담아서 사용하시고, 쓰고 나서 더블포인터만 free해주면 됩니다 +char **env_to_array(t_data *data) +{ + t_list *cur; + char **array; + int i; + int cnt; + + cnt = ft_lstsize(data->envs); + array = (char **)ft_calloc(cnt, sizeof(char *)); + if (!array) + return (NULL); + i = -1; + cur = data->envs; + while (++i < cnt) + { + array[i] = cur->env; + if (!array[i]) + { + while (i--) + free(array[i]); + return (NULL); + } + cur = cur->next; + } + return (array); +} diff --git a/eunumini/srcs/utils/list.c b/eunumini/srcs/utils/list.c new file mode 100644 index 0000000..f2cb7b4 --- /dev/null +++ b/eunumini/srcs/utils/list.c @@ -0,0 +1,66 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* list.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/02 16:53:01 by eunwolee #+# #+# */ +/* Updated: 2023/07/12 19:39:50 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +t_list *ft_lstnew(void); +void ft_lstadd_back(t_list **lst, t_list *new); +t_list *ft_lstlast(t_list *lst); +int ft_lstsize(t_list *lst); + +t_list *ft_lstnew(void) +{ + t_list *tmp; + + tmp = (t_list *)ft_calloc(1, sizeof(t_list)); + if (!tmp) + return (NULL); + return (tmp); +} + +void ft_lstadd_back(t_list **lst, t_list *new) +{ + t_list *last; + + if (!lst || !new) + return ; + if (!*lst) + { + *lst = new; + return ; + } + last = ft_lstlast(*lst); + last->next = new; + new->pre = last; +} + +t_list *ft_lstlast(t_list *lst) +{ + if (!lst) + return (NULL); + while (lst->next) + lst = lst->next; + return (lst); +} + +int ft_lstsize(t_list *lst) +{ + int cnt; + + cnt = 0; + while (lst) + { + cnt++; + lst = lst->next; + } + return (cnt); +} diff --git a/eunumini/srcs/utils/list_clear.c b/eunumini/srcs/utils/list_clear.c new file mode 100644 index 0000000..2dd2dd6 --- /dev/null +++ b/eunumini/srcs/utils/list_clear.c @@ -0,0 +1,48 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* list_clear.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/11 12:03:31 by eunwolee #+# #+# */ +/* Updated: 2023/07/15 09:38:40 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +void ft_lstdelone(t_list *lst); +void ft_lstclear(t_list **lst); + +void ft_lstdelone(t_list *lst) +{ + if (!lst) + return ; + if (lst->token) + { + if (lst->token->str) + free(lst->token->str); + free(lst->token); + } + if (lst->env) + free(lst->env); + free(lst); +} + +void ft_lstclear(t_list **lst) +{ + t_list *cur; + t_list *tmp; + + if (!lst) + return ; + cur = *lst; + while (cur) + { + tmp = cur->next; + ft_lstdelone(cur); + cur = tmp; + } + *lst = NULL; +} diff --git a/eunumini/srcs/utils/temp.c b/eunumini/srcs/utils/temp.c new file mode 100644 index 0000000..f6442b2 --- /dev/null +++ b/eunumini/srcs/utils/temp.c @@ -0,0 +1,99 @@ +//테스트용 임시 함수들 + +#include "../incs/minishell.h" + +void tree_print(t_leaf *leaf); +void print_token(t_data *data); +void env_array_print(t_data *data); +void check_leak(); + +//트리 전위순회 출력 +void tree_print(t_leaf *leaf) +{ + if (!leaf) + return ; + if (!leaf->parent) + printf("\n\n--------------tree preorder--------------\n"); + if (leaf->token) + { + if (leaf->token->type == T_CMD) + printf("CMD, str: %s\n", leaf->token->str); + else if (leaf->token->type == T_ARG) + printf("ARG, str: %s\n", leaf->token->str); + else if (leaf->token->type == T_REDIRECT) + { + printf("REDIRECT, "); + if (leaf->token->redirect_type == T_INPUT) + printf("type: <\n"); + else if (leaf->token->redirect_type == T_OUTPUT) + printf("type: >\n"); + else if (leaf->token->redirect_type == T_HEREDOC) + printf("type: <<\n"); + else if (leaf->token->redirect_type == T_APPEND) + printf("type: >>\n"); + } + } + else + { + if (leaf->leaf_type == T_PIPE) + printf("\nPIPE, exist: %d\n", leaf->exist); + else + printf("CMD\n"); + } + tree_print(leaf->left_child); + tree_print(leaf->right_child); +} + +//토큰 리스트 출력용 +void print_token(t_data *data) +{ + t_list *tmp = data->tokens; + printf("\n\n--------------token list--------------\n"); + while (tmp) + { + if (tmp->token->type == T_PIPE) + printf("token: pipe\n"); + else if (tmp->token->type == T_REDIRECT) + { + printf("token: redirect, "); + if (tmp->token->redirect_type == T_INPUT) + printf("type: <\n"); + else if (tmp->token->redirect_type == T_OUTPUT) + printf("type: >\n"); + else if (tmp->token->redirect_type == T_HEREDOC) + printf("type: <<\n"); + else if (tmp->token->redirect_type == T_APPEND) + printf("type: >>\n"); + } + else if (tmp->token->type == T_WORD) + { + printf("token: word, "); + printf("str: %s\n", tmp->token->str); + } + else if (tmp->token->type == T_CMD) + { + printf("token: cmd, "); + printf("str: %s\n", tmp->token->str); + } + else if (tmp->token->type == T_ARG) + { + printf("token: arg, "); + printf("str: %s\n", tmp->token->str); + } + tmp = tmp->next; + } +} + +//배열에 넣은 환경변수 출력용 +void env_array_print(t_data *data) +{ + char **array = env_to_array(data); + + for(int i=0; array[i]; i++) + printf("%s\n", array[i]); +} + +void check_leak() +{ + system("leaks minishell"); +} \ No newline at end of file diff --git a/eunumini/srcs/utils/tree.c b/eunumini/srcs/utils/tree.c new file mode 100644 index 0000000..15092c9 --- /dev/null +++ b/eunumini/srcs/utils/tree.c @@ -0,0 +1,70 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* tree.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/06/29 11:48:39 by eunwolee #+# #+# */ +/* Updated: 2023/07/21 08:36:07 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../incs/minishell.h" + +t_leaf *tree_create_leaf(t_leaf *parent, int leaf_type); +t_bool tree_add_left(t_leaf *parent, t_token *new_token, int leaf_type); +t_bool tree_add_right(t_leaf *parent, t_token *new_token, int leaf_type); +void tree_clear(t_leaf *leaf); + +t_leaf *tree_create_leaf(t_leaf *parent, int leaf_type) +{ + t_leaf *new; + + new = (t_leaf *)ft_calloc(1, sizeof(t_leaf)); + if (!new) + return (NULL); + new->leaf_type = leaf_type; + new->parent = parent; + new->left_child = NULL; + new->right_child = NULL; + return (new); +} + +t_bool tree_add_left(t_leaf *parent, t_token *new_token, int leaf_type) +{ + t_leaf *child; + + if (!parent || !new_token) + return (FALSE); + while (parent->left_child) + parent = parent->left_child; + child = tree_create_leaf(parent, leaf_type); + child->token = new_token; + parent->left_child = child; + return (TRUE); +} + +t_bool tree_add_right(t_leaf *parent, t_token *new_token, int leaf_type) +{ + t_leaf *child; + + if (!parent || !new_token) + return (FALSE); + while (parent->right_child) + parent = parent->right_child; + child = tree_create_leaf(parent, leaf_type); + child->token = new_token; + parent->right_child = child; + return (TRUE); +} + +//토큰은 환경변수 리스트에서 삭제하기 때문에 트리의 큰 틀만 삭제 +void tree_clear(t_leaf *leaf) +{ + if (!leaf) + return ; + free(leaf); + tree_clear(leaf->left_child); + tree_clear(leaf->right_child); +} diff --git a/eunumini/srcs/utils/utils.c b/eunumini/srcs/utils/utils.c new file mode 100644 index 0000000..5b6eb0c --- /dev/null +++ b/eunumini/srcs/utils/utils.c @@ -0,0 +1,51 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* utils.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/12 19:40:44 by eunwolee #+# #+# */ +/* Updated: 2023/07/21 08:45:57 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +t_bool error_back_readline(t_data *data, char *str, int error_code); +void program_error_exit(char *str); +void input_free(t_data *data); +void data_free(t_data *data); + +//input 관련 에러일 때 사용 +t_bool error_back_readline(t_data *data, char *str, int error_code) +{ + printf("%s\n", str); + data->error_code = error_code; + return (FALSE); +} + +//system 관련 에러일 때 +void program_error_exit(char *str) +{ + perror(str); + exit(errno); +} + +//input 한번 끝났을 때 사용 +void input_free(t_data *data) +{ + ft_lstclear(&data->tokens); + data->tokens = NULL; + free(data->input); + data->input = NULL; + tree_clear(data->root); + data->root = NULL; +} + +//정상종료 시 사용 +void data_free(t_data *data) +{ + ft_lstclear(&data->envs); + free(data); +} \ No newline at end of file diff --git a/incs/exec.h b/incs/exec.h index e16d59e..001b38b 100644 --- a/incs/exec.h +++ b/incs/exec.h @@ -36,8 +36,9 @@ void make_unique_num(char *str, int num); void read_heredoc(t_data *data, char *content, int fd); /*redirect*/ -void input_redirect(t_data *data, t_leaf *cur_leaf); -void output_redirect(t_data *data, t_leaf *cur_leaf); +void redirect(t_data *data, t_leaf *cur_root); +void redirect_input(t_data *data, t_leaf *cur_leaf); +void redirect_output(t_data *data, t_leaf *cur_leaf); /*pipe*/ void set_pipe(t_data *data); diff --git a/incs/struct.h b/incs/struct.h index 7e1240b..2c04678 100644 --- a/incs/struct.h +++ b/incs/struct.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:24:15 by eunwolee #+# #+# */ -/* Updated: 2023/07/22 14:55:27 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 16:45:52 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,8 @@ # include # define CHILD 0 +# define P_READ 0 +# define P_WRITE 1 # define BUF_SIZE 1024 typedef enum e_bool @@ -92,7 +94,7 @@ typedef struct s_data int cmd_idx; int oristdin; // 이놈은 redirection이 나오면 fd 가변경 되는데 안돌려주면 계속 그 fd 를 사용 int oristdout; // 같은이유 - int parent; + int parent; //signal에 필요 t_input *input; } t_data; diff --git a/libft.a b/libft.a index 5b90389eaea74bfd87adb275e463124548a74654..fc303919b57ed5b4ff209fbbf756378d75592c1b 100644 GIT binary patch delta 499 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 delta 8532 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/22 12:06:55 by eunwolee #+# #+# */ -/* Updated: 2023/07/22 15:59:24 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 18:52:50 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,11 +27,7 @@ t_bool execute(t_data *data) while (cur_root) { if (cur_root->left_child->left_child) - { - heredoc(data, cur_root); - input_redirect(data, cur_root->left_child->left_child); - output_redirect(data, cur_root->left_child->left_child); - } + redirect(data, cur_root); command(data, cur_root); data->cmd_idx++; cur_root = cur_root->right_child; @@ -51,7 +47,7 @@ static t_bool command(t_data *data, t_leaf *cur_root) return (FALSE); } func = get_builtin_func(cur_root->left_child->right_child->token->str); - if (!func) // execve + if (!func || data->input->pipe_num) // execve exec_cmd(data, cur_root); if (func(data, cur_root) == FALSE) return (FALSE); @@ -69,15 +65,15 @@ static void exec_cmd(t_data *data, t_leaf *cur_root) if (pipe(cur_cmd->fd) < 0) // exit(1); 에러처리 cur_cmd->pid = fork(); + printf("%d\n", cur_cmd->pid); // if (cmd->pid == -1) 에러처리 // return; if (cur_cmd->pid == CHILD) { - // data->parent =1; 무슨 용도? + data->parent = 1; link_pipe(data, cur_cmd, pre_cmd); exec_fork(data, cur_root, cur_cmd); } - printf("a\n"); close_pipe(data, cur_cmd, pre_cmd); signal(SIGQUIT, SIG_IGN); } diff --git a/srcs/execute/execute.o b/srcs/execute/execute.o index 64197cf4b690597379c3bc9c28721beae88d330d..a1d869457d014f0fe838408c775cc5978e0ffcc3 100644 GIT binary patch delta 763 zcmZ9KL1+^}6o%hyHtEJD+0;a^ma>R673|uIUPP)XL>UNHJoF@zR&AwVgF*uBAqsAa zmZg~Gf%I641<^xGLC}jAg?bUZD7~o%B?pBbQxM`m-3aSGcJ|x<{cmR84BN^)&orKi zthatn=-&5|xXWYWQF5h=C`&{;2GJ+}EG%KN&;~iJC5#EV^g}wo(mbN&tRjk}dvRB~ zc|$t$2ATEbeyY}zZgrQ}w4uQl?RHzbwN?`by%x%L-lwm>n>lG(b(JI2DiCo~J0tFK ze6|5V(e{^UZRfLs z=k#1RIzUTJ=}vs(4gH8{@Qz+SJ#gy)3WMSKLiPDytaj8EFGMehHou9MgvVpCz9gEb z#vhy#v4zYPxL&OIpohr*sS!oNk0379UI%eH`zaU$7r_Wv0TW;mOo0Uu&!JOz#i5UZ zxLG>^s`-rmGGHHwl>Hk$bb}v26MU%3;Mv#ww(W5+&9$x*Q)~E2!CLhlI^NNf$fl+u{{4`C64KMWU<@C< i8p@sz=~ujGSUeox=(#;zDcz{f-l@!%OEcB-P5KK|ZHD*& delta 842 zcmZvZO=uHA6vy9ezE(}Tt+6>oA)!J7g`j7r-4$yRA@%W$2>2F93|asfSORl~iZR??gQt+S&XjL$WjO}U`e@l43&rB}(Z zm(~)$R*ngie=8}mz{h@jJn%L<5AHUT$w&zX@t^3ygpl!7xvS4vep0)PvSFP{t5a`emey z7f9*#j*tCyyjR8|QtQk~FCx2?YWy>l7?lU#U7hgwVA~ZxDB~ltyMNu|NuE^?k3RBL zZ+ZN&$0t3W@%USQqb6e0j(y#+&0_9KzL?9}WabNS{;t;JlQ~qUvt(Y)+2(|kzh>tP JrsWi}^as8zpM3xT diff --git a/srcs/execute/pipe.c b/srcs/execute/pipe.c index 84caf55..7da0045 100644 --- a/srcs/execute/pipe.c +++ b/srcs/execute/pipe.c @@ -18,23 +18,23 @@ void link_pipe(t_data *data, t_cmd *cur_cmd, t_cmd *pre_cmd) return ; if (data->cmd_idx == 0) { - if (close(cur_cmd->fd[0]) == -1 \ - || dup2(cur_cmd->fd[1], STDOUT_FILENO) == -1 \ - || close(cur_cmd->fd[1])== -1) + if (close(cur_cmd->fd[P_READ]) == -1 \ + || dup2(cur_cmd->infile_fd, STDIN_FILENO) == -1 \ + || dup2(cur_cmd->fd[P_WRITE], STDOUT_FILENO) == -1) program_error_exit("pipe"); } else if (data->cmd_idx == data->input->pipe_num) { - if (dup2(pre_cmd->fd[0], STDIN_FILENO) == -1 \ - || close(pre_cmd->fd[0]) == -1) + if (close(pre_cmd->fd[P_WRITE]) == -1 \ + || dup2(pre_cmd->fd[P_READ], STDIN_FILENO) == -1 \ + || dup2(cur_cmd->outfile_fd, STDOUT_FILENO) == -1) program_error_exit("pipe"); } else { - if (dup2(pre_cmd->fd[0], STDIN_FILENO) == -1 \ - || close(pre_cmd->fd[0]) == -1 \ - ||dup2(cur_cmd->fd[1], STDOUT_FILENO) == -1 \ - || close(cur_cmd->fd[1]) == -1) + if (close(cur_cmd->fd[P_READ]) == -1 \ + || dup2(pre_cmd->fd[P_READ], STDIN_FILENO) == -1 \ + || dup2(cur_cmd->fd[P_WRITE], STDOUT_FILENO) == -1) program_error_exit("pipe"); } } @@ -42,13 +42,20 @@ void link_pipe(t_data *data, t_cmd *cur_cmd, t_cmd *pre_cmd) void close_pipe(t_data *data, t_cmd *cur_cmd, t_cmd *pre_cmd) { if (data->cmd_idx == 0) - close(cur_cmd->fd[1]); + { + if (close(cur_cmd->fd[P_WRITE]) == -1) + program_error_exit("pipe"); + } else if (data->cmd_idx == data->input->pipe_num) - close(pre_cmd->fd[0]); + { + if (close(pre_cmd->fd[P_READ] == -1)) + program_error_exit("pipe"); + } else { - close(pre_cmd->fd[0]); - close(cur_cmd->fd[1]); + if (close(pre_cmd->fd[P_READ]) \ + || close(cur_cmd->fd[P_WRITE])) + program_error_exit("pipe"); } } diff --git a/srcs/execute/pipe.o b/srcs/execute/pipe.o index 60b8a09b1f1762646dd87ec3e688436e88b8dac1..076121a92329c8731f36e4c12c222de8b3b5df62 100644 GIT binary patch literal 2172 zcmaJ?O=uHQ5T4Z7My+lR7OM!YC{nN$D+q#!tv0#`6_FMzBCj#sw!t(B$yQgP5Zo#a zi%`LX7r~=9(Svvrf9lDD;z9A~K}bcRh)62h`pxd_CZ>%;X1|@8Z|2RLeY<({>)T=z zQD_z60u4hW4Y;&JA)BGo9H=AvIRVnaIS}7QO=6WWDPW>Zf`&I?NOC7Gq zxkHW8N|*{27NK4uZ|0KeQE}GR^XsgY_?Fex*+jBT;6%O5cs8Ce)kOMoGCi!+@xCC) zH#{In!M$R?sK>4$Y?Awg{8LgXV@!?Y;^T%FtnIHL^`3ZPx-a#_q;*7N{ypPfXe-ox z6xv#9gtG9W>@T2?HNa?uCi_sLo_ifT&T`vJZ9S+~DN_2Oh%cVf_ z6C-U(j=;m9&H>?928d_d;yLjU{T3>zmx5H>th`Boe>e$pLLIBw?Ll`=l$|Th#n_K3 zGwMF1Vr;(32g+B^bO(4Lo*$!ZGAl1IuM9cq0iURU#DCY~USwJPnRwoNSp7gsS?>5(4^mx+uGF}P$3KMmG1mcbEdL{N_v9AFm@J|BqYZ=Fd`GbPTfE+&z z#II$q_?NJE_WuI1{|k`w?u!48`1!w!*G&ta0W$9>kn?+ioZl_+O@jQPW!?wuk$LZc z%zFXkdiMoy0h!kaWZoel^R@#q`>r7%N;UQfwhICRzXpPTKK8-Swtt?Ei+vA8S$07= z?#m9`RGBnfW1p?D`85N-Aq-^U-0FN%*<5B6|69t)_u delta 718 zcmaJ;JxGF46n*de@sGfgK1_owEHX(Vf}+76B*BJ=f*RU`h^SSktQ7i?AiL1q(hv) zxCBvYfX~8;G|@lA8H;CQA3F&Pvu762gshrPC}okb^YLv@kHC@KYDV^IMvY-Fp7rO@d3=1<$hA(P1Ru zb;bpiX|e1u$<5$O_peFu>`XPAwCJ&yGMp(c+3tzJjiU1left_child->left_child); - // data->cmd[i].heredoc_file = (char **)ft_calloc(data->input->pipe_num + 1, sizeof(char *)); - // if (!data->cmd[i].heredoc_file) - // program_error_exit("bash"); - // if (!data->input->pipe_num && data->heredoc_flag == FALSE)//단일 커맨드고 히어독도 없으면 - // if(check_bulitin(data, cur_root) == TRUE) // bulitin 일때는 바로 실행하고 종료 아닌경우에는 sigle command fork 해야함 - // return (FALSE); - - - // heredoc 일 경우에는 무조건 fork 를 해줘야함 - // 시그널 함수 때문인거같음 ctrl +d 눌렀을때 종료가되면안되는데 포크안햇을시 종료가됨 - if (heredoc) - if (fork_heredoc(data, heredoc)) - return (FALSE); + if (data->cmd[data->cmd_idx].infile_fd) + close(data->cmd[data->cmd_idx].infile_fd); //에러처리 + if (fork_heredoc(data, cur_leaf)) + return (FALSE); return (TRUE); } -static t_leaf *find_heredoc(t_leaf *cur_leaf) -{ - t_leaf *heredoc; - - heredoc = NULL; - while (cur_leaf) - { - if (cur_leaf->token->redirect_type == T_HEREDOC) - heredoc = cur_leaf; - cur_leaf = cur_leaf->left_child; - } - if (cur_leaf->parent->token->redirect_type != T_HEREDOC) //output이 있을 수 있으니 수정해야함 - return (NULL); - return (heredoc); -} - -static int fork_heredoc(t_data *data, t_leaf *heredoc) +static int fork_heredoc(t_data *data, t_leaf *cur_leaf) { int status; @@ -49,7 +21,7 @@ static int fork_heredoc(t_data *data, t_leaf *heredoc) if (data->cmd[data->input->pipe_num + 1].pid == CHILD) { data->parent = 1; - make_heredoc(data, heredoc); + make_heredoc(data, cur_leaf); // exit (g_exit_status);// 전역변수 } else diff --git a/srcs/redirect/heredoc.o b/srcs/redirect/heredoc.o index 12a585f2165420a739f34d14c3caef662f50ff79..86e2c5521aee0aed08eeba31446e0a1521dd640b 100644 GIT binary patch delta 537 zcmaFCvxR$tgHQq!0~lyP=>(>UL3Tph7!jf@KxPNa#6@OsQK%%tJ?4q8>|}R9xegF5 z3=fzY7=Vc30#GBf+8Bi4plRFvhbsqrbIe;PwtPBhxK$;tf1E4BE8ekaY zFt*8zOzM*bn0O{@FbR8p@aSgn==S~Kk?hIgk$KVpsKA5qM014(1AmJmh|}$gT}gL^ z#tWc4P(dwFLFtRh2~1)_>_CCzu75z*b-VuYXg;E_nTOeiQL+uB65!PjkMZYQ3NSb2P;TK5R{6xSpw0;A0W6$1+7*Q6~WS_c4!?!mX_N^ z1XmIC9}tIve}Q8cu{y=AgHqr1u0=e!y!+mJ-}haCDv(;zOkYko%EEC?9Vuy)p=)5menK{Z z0qj-bU~}%cC4CR%-2Y$6l0;A_iXpP*3ya% zutBg@>zmLgU$n3n(n~ChY}n45?Z8{Lc$s3}gLx8??OG^djudlBSLl-6vBfwR8n+Y; zJ-v^YX0yo&=)zsXJhO6;ZB~H;`>bHf5%Vadnz!?u|4OG$D@*x z?9Tk4G1fj^QuOY75oHk#t4Hu^^gz)IU&zKw81F!ga^Mw+i7(y?yaIMXKLp|h3<-!) z8*x;?(TMV{hRI|9h(G|-{mZ~!9NKrD60ye&gp83Dd_yp_R~UysA<^lms`oAYV+ZM) XI!-Utncmdi!SQY?lRiuDp6rlcSlfRE diff --git a/srcs/redirect/heredoc_utils.c b/srcs/redirect/heredoc_utils.c index 9124e61..773f921 100644 --- a/srcs/redirect/heredoc_utils.c +++ b/srcs/redirect/heredoc_utils.c @@ -6,18 +6,18 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/22 10:08:39 by eunwolee #+# #+# */ -/* Updated: 2023/07/22 15:30:02 by eunwolee ### ########.fr */ +/* Updated: 2023/07/22 19:00:30 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -void make_heredoc(t_data *data, t_leaf *heredoc); +void make_heredoc(t_data *data, t_leaf *cur_leaf); char *make_filename(void); void make_unique_num(char *str, int num); void read_heredoc(t_data *data, char *content, int fd); -void make_heredoc(t_data *data, t_leaf *heredoc) +void make_heredoc(t_data *data, t_leaf *cur_leaf) { char *name; @@ -25,7 +25,12 @@ void make_heredoc(t_data *data, t_leaf *heredoc) name = make_filename(); data->cmd[data->cmd_idx].infile_fd = open(name, O_WRONLY | O_CREAT | O_TRUNC, 0644); // if (data->cmd[data->cmd_idx].infile_fd < 0) //open 실패 시 에러처리 해야함 - read_heredoc(data, heredoc->left_child->token->str, data->cmd[data->cmd_idx].infile_fd); + printf("aa\n"); + printf("\nfile str : %d\n", cur_leaf->token->type); + printf("\nfile fd : %d\n", data->cmd[data->cmd_idx].infile_fd); + printf("aa\n"); + read_heredoc(data, cur_leaf->left_child->token->str, data->cmd[data->cmd_idx].infile_fd); + printf("c\n"); } // 유니크한 파일명 생성 @@ -61,28 +66,28 @@ void make_unique_num(char *str, int num) num %=100; } str[13+ i++] = num /(100/(j *10)) + '0'; - num%= (100 / (j*10)); + num%= (100 / (j * 10)); j*=10; } } void read_heredoc(t_data *data, char *content, int fd) { + write(1, "b", 1); char *str; - data->input->env_array = env_to_array(data->input); //환경변수 가져오기 추후에 필요할 수있음 + (void)data; while (TRUE) { str = readline ("> "); - if (!str || !ft_strncmp (content, str, ft_strlen(str) + 1)) + if (!str || !ft_strncmp (content, str, ft_strlen(content) + 1)) { free (str); close (fd); - return ; + exit(1); } - // str = heredoc_parser(str, data->env_array); heredoc $pwd - if (str) - write(fd, str, ft_strlen(str)); + // str = heredoc_parser(str, data->env_array); heredoc $pwd + write(fd, str, ft_strlen(str)); write (fd, "\n", 1); free(str); } diff --git a/srcs/redirect/heredoc_utils.o b/srcs/redirect/heredoc_utils.o index c287f1716dfb5f5d5c874c0a972e85d22de78088..4f89b14c9c22146f6648904cba4fa3f1b1d2cbfe 100644 GIT binary patch delta 1035 zcmZ8gT}V@582-L9H_w(oTeY%?b`r!t4ju^!i){{BoFWS)iJ}P8jTV-=CV4X)dDH1I zaDLGbbrD5ZQFs$b2w4dUMM&LvQLrE(VHbmLgpl=oXWuFD^u?jl6VJv->LjZoPq>D*d)&wY`d5#oZA5H78=2tBmD zPBfSkZkLPQrXf$AOo$Islbd~^^|YE%sgZf5D!E@bR`scZ#x$w>KsH!`O0(n_KdhTQ zMcq86nC*HtSj4*`}Aiv;i#uY_R!Hfx!;;CowqzQU9iwPX+%HS zqHd1obu*eb(o4GWK{v)1gtG)^K{ww0OU!n(+ud{{I%ny+na+dET4b%WR4Q4c8tHXo zob^?FJTWlfA)a_*IHp`rC6&WU!;sD6LxK)^NL%XaXxrsjGInujWKh#Ia*2c#;=%lz zVuMATyWNC;E#f9voh(R^TQtKSIK%FxKbQis!G1Uc^f9BZMz_3C){3m%6`;$k*Af6J|GrI-3jF9Bp@bK3z&iDy#>|)=Yg>NuYkPn zbHPV|wcuxgSiMR0WZ6)?KpDoiGWY++*HwcTfV|Ku5X+{%5c*T0KN5UK@Dagdf}a+= zNAMP473%QqCWO^gwshK;c?Uu*+S_qd@C^F%c!HPv(;{aV8>9X&09Eb njps|^k4HKfl>;-fm!4rhx!y66NU@N7&NZ4$Tua5-UHSN5`q|My delta 881 zcmZ`&O=uHA7@ghxbT_spX^o9Y%@V{avdxN$EwqiH7RH0xf(i;H6s>sCme7hKA!6FY zx)c&V#e)|SL~kCv1W&~ZUV0J=(u3@!kU(!i=)n@-WM}=U_`&Ym@4Yu~XLe@4_PFuN z**Fifb{$ncG1^cw>AD!m%b$#?)msD6 z)M7iQB5g6gJaUyz1)leDXMCGG_miI8xq#+;lH0i?9Peo}kXBsMg2zj}BF!nfZJ$%z z^5Z9_R(ZMTvgqP5I3RFm!9}QR7uUG`ncE91a>yE#6>fj@6ZrD!ZiTTAxR{rQcy5o^ z+D&7q)oT5ocp#c$^ftI&%FN%H%iNwR%;ay*-mol-jT$V{UfZwRlJ_KX|Eh}Y9((wY zZb+v2KONgjhr`4A#1G63wM5nM!O%I_Yh;J}bz{fln}Y9p3VvHM>tK3I5d>iW%pJTa z3Ty&FB^t8d0P5i10dW}2H$dTk2E-c8lGHB)yU*9AFyBm diff --git a/srcs/redirect/redirect.c b/srcs/redirect/redirect.c index 6e18517..0e4b3c2 100644 --- a/srcs/redirect/redirect.c +++ b/srcs/redirect/redirect.c @@ -1,46 +1,43 @@ #include "../../incs/minishell.h" -void input_redirect(t_data *data, t_leaf *cur_leaf); -void output_redirect(t_data *data, t_leaf *cur_leaf); +void redirect(t_data *data, t_leaf *cur_root); +void redirect_input(t_data *data, t_leaf *cur_leaf); +void redirect_output(t_data *data, t_leaf *cur_leaf); static void check_file(t_data *data, int fd); -void input_redirect(t_data *data, t_leaf *cur_leaf) +void redirect(t_data *data, t_leaf *cur_root) { - t_leaf *input; + t_leaf *tmp; - if (data->cmd[data->cmd_idx].infile_fd > 0) + tmp = cur_root->left_child->left_child; + while (tmp) { - dup2 (data->cmd[data->cmd_idx].infile_fd, STDIN_FILENO); - return ; + if (tmp->token->redirect_type == T_HEREDOC) + heredoc(data, cur_root); + else if (tmp->token->redirect_type == T_INPUT) + redirect_input(data, tmp); + else if (tmp->token->redirect_type == T_OUTPUT \ + || tmp->token->redirect_type == T_APPEND) + redirect_output(data, tmp); + tmp = tmp->left_child; } - while (cur_leaf) - { - if (cur_leaf->token->redirect_type == T_INPUT) - input = cur_leaf; - cur_leaf = cur_leaf->left_child; - } - data->cmd[data->cmd_idx].infile_fd = open(input->left_child->token->str, O_RDONLY); - check_file(data, data->cmd[data->cmd_idx].infile_fd); - dup2(data->cmd[data->cmd_idx].infile_fd, STDIN_FILENO); } -void output_redirect(t_data *data, t_leaf *cur_leaf) +void redirect_input(t_data *data, t_leaf *cur_leaf) { - t_leaf *output; + if (data->cmd[data->cmd_idx].infile_fd) + close(data->cmd[data->cmd_idx].infile_fd); //에러처리 + data->cmd[data->cmd_idx].infile_fd = open(cur_leaf->left_child->token->str, O_RDONLY); + check_file(data, data->cmd[data->cmd_idx].infile_fd); +} - while (cur_leaf) - { - if (cur_leaf->token->redirect_type == T_OUTPUT \ - || cur_leaf->token->redirect_type == T_APPEND) - output = cur_leaf; - cur_leaf = cur_leaf->left_child; - } +void redirect_output(t_data *data, t_leaf *cur_leaf) +{ if (cur_leaf->token->redirect_type == T_OUTPUT) data->cmd[data->cmd_idx].outfile_fd = open (cur_leaf->left_child->token->str, O_WRONLY | O_TRUNC | O_CREAT, 0644); else if (cur_leaf->token->redirect_type == T_APPEND) data->cmd[data->cmd_idx].outfile_fd = open (cur_leaf->left_child->token->str, O_WRONLY | O_APPEND | O_CREAT, 0644); check_file(data, data->cmd[data->cmd_idx].outfile_fd); - dup2(data->cmd[data->cmd_idx].outfile_fd, STDOUT_FILENO); } static void check_file(t_data *data, int fd) diff --git a/srcs/redirect/redirect.o b/srcs/redirect/redirect.o index b440bc16eb06dbedfd56e0abccf1105ba9531053..246f38b9d35f5242a0d108fc14640376a328307f 100644 GIT binary patch literal 1884 zcmb7F&1(}u6o08{nrhn((u0D~_;JXgk?KM8P-wN$6;!mePy`u6x-rofn%-bm%5isjSF#U$jPx?*Eq8}xCAifV)_&=mbyX}2w^2e zd@4F=IetCAG2O_rN>d+rIlXacA5lW5q&bP-15h~@V=wujEc{T8C%~f}b`y3S7W?Tc zl!f=OGCpV%9`)ZcYL-8n#VT7()oWl8w>^DlCvPL57T?kN>e>4TZ31-!3tyVLO zZ-O^o$B!F5bDXDn-A};P4=7^e(gg$()uH~n}c{(K%hbe~Z=tLQo> zB)Pos;A%Wy#6{T23It*gz^bNL{U{IiR{2%Z-7qG`-M<~-Q&*VnxPSkQ2>@VnyUhlf z=~eUE(XP=$?(-_=Hj0G}G9L3wVHY;^jQKv$I}hJ<9%%7?HyI^=XK;$ll-jyDqL%l@7DO9nPKwe1D-%fo1Za{A$|z@=ofA;MDrsW z>%lSpT*6p7eGdfI|XSg|`Io}9osVF5ZFBl-iS C7jj(y literal 1768 zcmb7EQA-q26h33Cu9eObJ|qP0Lk|nNQN84gpyk313Q81&keiKTF6p}IERDg^!fG%K zg+IZdhoBc9r3ZUZ(0U1b@(%7Irp1$XYR-EUw$f~| zH4>fTP=pF>LXpy%p306|j?85qr!!+x-s}%^Y`1lvdpfv`X3V98ewvd;D1emqgdCq4 zow7r}mS49nTGahwl|DfP94B-tFjw$A3k}9%o}?xy3vbHtSQAkcb`f?Mmf!I{cZDCk62<&Jne!KT>8H@XH(qojjphQsR1on}J312;UTS~$L%CcIwm`Ty$_2uA zqstUD4tV)3!XE;?0nq!T=xup@3E|@vnD=pc|B+(Go$Ep76hsu)<0ETkX8{aJ&nL$7 z@p1>n`~jKI`Oy6Qfo9aoxDA6(f_oR|+R0qtQ+&rEH4iK>iuKsY+W1AYbDmu?JMks{ zF@H6$9>!PZ)nv|}sf|ScGQky0u%>w7TBZ1KqN@fzskg7d@#t(ZM(ZhNTUN9E=Jj>$ z@-JA`6Wdo&tn_TbxA@OJ(GorR(CU11ezr@`xE{dmT0I=HIyY`wB^{jBzgJb5;wnye zR8V^rL?O)Asc+X%hD037!gm$-3We`<_6s`3UrSXwxWlS_URV1G Date: Sun, 6 Aug 2023 21:52:14 +0900 Subject: [PATCH 11/57] =?UTF-8?q?echo=20=EC=88=98=EC=A0=95,=20stdin=20?= =?UTF-8?q?=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Libft/ft_atoi.o | Bin 892 -> 0 bytes Libft/ft_bzero.o | Bin 684 -> 0 bytes Libft/ft_calloc.o | Bin 776 -> 0 bytes Libft/ft_isalnum.o | Bin 760 -> 0 bytes Libft/ft_isalpha.o | Bin 680 -> 0 bytes Libft/ft_isascii.o | Bin 664 -> 0 bytes Libft/ft_isdigit.o | Bin 664 -> 0 bytes Libft/ft_isprint.o | Bin 664 -> 0 bytes Libft/ft_itoa.o | Bin 1160 -> 0 bytes Libft/ft_memchr.o | Bin 732 -> 0 bytes Libft/ft_memcmp.o | Bin 756 -> 0 bytes Libft/ft_memcpy.o | Bin 764 -> 0 bytes Libft/ft_memmove.o | Bin 856 -> 0 bytes Libft/ft_memset.o | Bin 700 -> 0 bytes Libft/ft_putchar_fd.o | Bin 696 -> 0 bytes Libft/ft_putendl_fd.o | Bin 876 -> 0 bytes Libft/ft_putnbr_fd.o | Bin 984 -> 0 bytes Libft/ft_putstr_fd.o | Bin 756 -> 0 bytes Libft/ft_split.o | Bin 2048 -> 0 bytes Libft/ft_strchr.o | Bin 732 -> 0 bytes Libft/ft_strdup.o | Bin 828 -> 0 bytes Libft/ft_striteri.o | Bin 696 -> 0 bytes Libft/ft_strjoin.o | Bin 936 -> 0 bytes Libft/ft_strlcat.o | Bin 888 -> 0 bytes Libft/ft_strlcpy.o | Bin 840 -> 0 bytes Libft/ft_strlen.o | Bin 700 -> 0 bytes Libft/ft_strmapi.o | Bin 848 -> 0 bytes Libft/ft_strncat.c | 2 +- Libft/ft_strncat.o | Bin 916 -> 0 bytes Libft/ft_strncmp.o | Bin 824 -> 0 bytes Libft/ft_strnstr.o | Bin 988 -> 0 bytes Libft/ft_strrchr.o | Bin 728 -> 0 bytes Libft/ft_strtrim.o | Bin 1408 -> 0 bytes Libft/ft_substr.o | Bin 1056 -> 0 bytes Libft/ft_tolower.o | Bin 664 -> 0 bytes Libft/ft_toupper.o | Bin 664 -> 0 bytes Libft/get_next_line.o | Bin 2808 -> 0 bytes Libft/get_next_line_utils.o | Bin 884 -> 0 bytes Libft/libft.a | Bin 37376 -> 0 bytes Makefile | 22 ++-- eunumini/Libft/Makefile | 78 ------------ eunumini/Libft/ft_atoi.c | 31 ----- eunumini/Libft/ft_bzero.c | 22 ---- eunumini/Libft/ft_calloc.c | 24 ---- eunumini/Libft/ft_isalnum.c | 20 --- eunumini/Libft/ft_isalpha.c | 18 --- eunumini/Libft/ft_isascii.c | 18 --- eunumini/Libft/ft_isdigit.c | 18 --- eunumini/Libft/ft_isprint.c | 18 --- eunumini/Libft/ft_itoa.c | 62 --------- eunumini/Libft/ft_memchr.c | 29 ----- eunumini/Libft/ft_memcmp.c | 30 ----- eunumini/Libft/ft_memcpy.c | 27 ---- eunumini/Libft/ft_memmove.c | 31 ----- eunumini/Libft/ft_memset.c | 25 ---- eunumini/Libft/ft_putchar_fd.c | 20 --- eunumini/Libft/ft_putendl_fd.c | 21 ---- eunumini/Libft/ft_putnbr_fd.c | 40 ------ eunumini/Libft/ft_putstr_fd.c | 20 --- eunumini/Libft/ft_split.c | 100 --------------- eunumini/Libft/ft_strchr.c | 27 ---- eunumini/Libft/ft_strdup.c | 26 ---- eunumini/Libft/ft_striteri.c | 23 ---- eunumini/Libft/ft_strjoin.c | 30 ----- eunumini/Libft/ft_strlcat.c | 31 ----- eunumini/Libft/ft_strlcpy.c | 29 ----- eunumini/Libft/ft_strlen.c | 25 ---- eunumini/Libft/ft_strmapi.c | 31 ----- eunumini/Libft/ft_strncat.c | 44 ------- eunumini/Libft/ft_strncmp.c | 30 ----- eunumini/Libft/ft_strnstr.c | 38 ------ eunumini/Libft/ft_strrchr.c | 31 ----- eunumini/Libft/ft_strtrim.c | 55 -------- eunumini/Libft/ft_substr.c | 36 ------ eunumini/Libft/ft_tolower.c | 18 --- eunumini/Libft/ft_toupper.c | 18 --- eunumini/Libft/get_next_line.c | 138 -------------------- eunumini/Libft/get_next_line_utils.c | 36 ------ eunumini/Libft/libft.h | 73 ----------- eunumini/Makefile | 59 --------- eunumini/incs/init.h | 21 ---- eunumini/incs/message.h | 23 ---- eunumini/incs/minishell.h | 28 ----- eunumini/incs/parse.h | 34 ----- eunumini/incs/struct.h | 71 ----------- eunumini/incs/utils.h | 48 ------- eunumini/srcs/init/init.c | 43 ------- eunumini/srcs/lexer/expand.c | 147 ---------------------- eunumini/srcs/lexer/lexer.c | 59 --------- eunumini/srcs/lexer/quote.c | 114 ----------------- eunumini/srcs/lexer/tokenizer.c | 91 -------------- eunumini/srcs/minishell.c | 47 ------- eunumini/srcs/parser/parser.c | 67 ---------- eunumini/srcs/parser/syntax.c | 97 -------------- eunumini/srcs/utils/env.c | 90 ------------- eunumini/srcs/utils/list.c | 66 ---------- eunumini/srcs/utils/list_clear.c | 48 ------- eunumini/srcs/utils/temp.c | 99 --------------- eunumini/srcs/utils/tree.c | 70 ----------- eunumini/srcs/utils/utils.c | 51 -------- incs/bulitin.h | 30 +++++ incs/exec.h | 53 -------- incs/init.h | 6 +- incs/minishell.h | 22 ++-- incs/parse.h | 18 +-- incs/pipe.h | 35 ++++-- incs/struct.h | 59 ++++----- incs/utils.h | 23 ++-- libft.a | Bin 37376 -> 0 bytes minishell | Bin 71888 -> 0 bytes srcs/{execute => }/.DS_Store | Bin 6148 -> 6148 bytes srcs/builtin/builtin.c | 37 ++++-- srcs/builtin/builtin.o | Bin 1380 -> 0 bytes srcs/builtin/builtin_utils.c | 49 ++++---- srcs/builtin/builtin_utils.o | Bin 2832 -> 0 bytes srcs/builtin/ft_cd.c | 19 ++- srcs/builtin/ft_cd.o | Bin 2408 -> 0 bytes srcs/builtin/ft_echo.c | 76 ++++++----- srcs/builtin/ft_echo.o | Bin 1512 -> 0 bytes srcs/builtin/ft_exit.c | 8 +- srcs/builtin/ft_exit.o | Bin 1764 -> 0 bytes srcs/builtin/ft_export.c | 14 +-- srcs/builtin/ft_export.o | Bin 3276 -> 0 bytes srcs/builtin/ft_pwd.c | 12 +- srcs/builtin/ft_pwd.o | Bin 1224 -> 0 bytes srcs/builtin/ft_unset.c | 16 +-- srcs/builtin/ft_unset.o | Bin 1456 -> 0 bytes srcs/execute/checkbulitin.c | 24 ++++ srcs/execute/execute.c | 104 --------------- srcs/execute/execute.o | Bin 2472 -> 0 bytes srcs/execute/execve.c | 99 +++++++++++++++ srcs/execute/freepipe.c | 51 ++++++++ srcs/execute/get_input.c | 23 ---- srcs/execute/get_input.o | Bin 1040 -> 0 bytes srcs/execute/path.c | 105 ---------------- srcs/execute/path.o | Bin 2544 -> 0 bytes srcs/execute/pipe.c | 76 ++++------- srcs/execute/pipe.o | Bin 2172 -> 0 bytes srcs/execute/pipeutils.c | 42 +++++++ srcs/execute/setpath.c | 89 +++++++++++++ srcs/execute/sig.c | 48 ------- srcs/execute/sig.o | Bin 996 -> 0 bytes srcs/init/init.c | 53 ++++++-- srcs/init/init.o | Bin 1484 -> 0 bytes srcs/lexer/expand.c | 62 ++++----- srcs/lexer/expand.o | Bin 3508 -> 0 bytes srcs/lexer/lexer.c | 38 +++--- srcs/lexer/lexer.o | Bin 1804 -> 0 bytes srcs/lexer/quote.c | 62 ++++----- srcs/lexer/quote.o | Bin 2820 -> 0 bytes srcs/lexer/tokenizer.c | 42 +++---- srcs/lexer/tokenizer.o | Bin 2420 -> 0 bytes srcs/minishell.c | 44 +++++-- srcs/minishell.o | Bin 924 -> 0 bytes srcs/parser/parser.c | 14 +-- srcs/parser/parser.o | Bin 1692 -> 0 bytes srcs/parser/syntax.c | 44 +++---- srcs/parser/syntax.o | Bin 2720 -> 0 bytes srcs/redirect/heredoc.c | 32 ++--- srcs/redirect/heredoc.o | Bin 1460 -> 0 bytes srcs/redirect/heredoc_utils.c | 94 -------------- srcs/redirect/heredoc_utils.o | Bin 2520 -> 0 bytes srcs/redirect/heredocutils.c | 181 +++++++++++++++++++++++++++ srcs/redirect/redirect.c | 52 -------- srcs/redirect/redirect.o | Bin 1884 -> 0 bytes srcs/redirect/redirection.c | 61 +++++++++ srcs/utils/env.c | 32 ++--- srcs/utils/env.o | Bin 1992 -> 0 bytes srcs/utils/list.o | Bin 1376 -> 0 bytes srcs/utils/list_clear.o | Bin 1060 -> 0 bytes srcs/utils/temp.c | 12 +- srcs/utils/temp.o | Bin 2948 -> 0 bytes srcs/utils/tree.c | 12 +- srcs/utils/tree.o | Bin 1592 -> 0 bytes srcs/utils/utils.c | 34 ++--- srcs/utils/utils.o | Bin 1576 -> 0 bytes 176 files changed, 1086 insertions(+), 3709 deletions(-) delete mode 100644 Libft/ft_atoi.o delete mode 100644 Libft/ft_bzero.o delete mode 100644 Libft/ft_calloc.o delete mode 100644 Libft/ft_isalnum.o delete mode 100644 Libft/ft_isalpha.o delete mode 100644 Libft/ft_isascii.o delete mode 100644 Libft/ft_isdigit.o delete mode 100644 Libft/ft_isprint.o delete mode 100644 Libft/ft_itoa.o delete mode 100644 Libft/ft_memchr.o delete mode 100644 Libft/ft_memcmp.o delete mode 100644 Libft/ft_memcpy.o delete mode 100644 Libft/ft_memmove.o delete mode 100644 Libft/ft_memset.o delete mode 100644 Libft/ft_putchar_fd.o delete mode 100644 Libft/ft_putendl_fd.o delete mode 100644 Libft/ft_putnbr_fd.o delete mode 100644 Libft/ft_putstr_fd.o delete mode 100644 Libft/ft_split.o delete mode 100644 Libft/ft_strchr.o delete mode 100644 Libft/ft_strdup.o delete mode 100644 Libft/ft_striteri.o delete mode 100644 Libft/ft_strjoin.o delete mode 100644 Libft/ft_strlcat.o delete mode 100644 Libft/ft_strlcpy.o delete mode 100644 Libft/ft_strlen.o delete mode 100644 Libft/ft_strmapi.o delete mode 100644 Libft/ft_strncat.o delete mode 100644 Libft/ft_strncmp.o delete mode 100644 Libft/ft_strnstr.o delete mode 100644 Libft/ft_strrchr.o delete mode 100644 Libft/ft_strtrim.o delete mode 100644 Libft/ft_substr.o delete mode 100644 Libft/ft_tolower.o delete mode 100644 Libft/ft_toupper.o delete mode 100644 Libft/get_next_line.o delete mode 100644 Libft/get_next_line_utils.o delete mode 100644 Libft/libft.a delete mode 100644 eunumini/Libft/Makefile delete mode 100644 eunumini/Libft/ft_atoi.c delete mode 100644 eunumini/Libft/ft_bzero.c delete mode 100644 eunumini/Libft/ft_calloc.c delete mode 100644 eunumini/Libft/ft_isalnum.c delete mode 100644 eunumini/Libft/ft_isalpha.c delete mode 100644 eunumini/Libft/ft_isascii.c delete mode 100644 eunumini/Libft/ft_isdigit.c delete mode 100644 eunumini/Libft/ft_isprint.c delete mode 100644 eunumini/Libft/ft_itoa.c delete mode 100644 eunumini/Libft/ft_memchr.c delete mode 100644 eunumini/Libft/ft_memcmp.c delete mode 100644 eunumini/Libft/ft_memcpy.c delete mode 100644 eunumini/Libft/ft_memmove.c delete mode 100644 eunumini/Libft/ft_memset.c delete mode 100644 eunumini/Libft/ft_putchar_fd.c delete mode 100644 eunumini/Libft/ft_putendl_fd.c delete mode 100644 eunumini/Libft/ft_putnbr_fd.c delete mode 100644 eunumini/Libft/ft_putstr_fd.c delete mode 100644 eunumini/Libft/ft_split.c delete mode 100644 eunumini/Libft/ft_strchr.c delete mode 100644 eunumini/Libft/ft_strdup.c delete mode 100644 eunumini/Libft/ft_striteri.c delete mode 100644 eunumini/Libft/ft_strjoin.c delete mode 100644 eunumini/Libft/ft_strlcat.c delete mode 100644 eunumini/Libft/ft_strlcpy.c delete mode 100644 eunumini/Libft/ft_strlen.c delete mode 100644 eunumini/Libft/ft_strmapi.c delete mode 100644 eunumini/Libft/ft_strncat.c delete mode 100644 eunumini/Libft/ft_strncmp.c delete mode 100644 eunumini/Libft/ft_strnstr.c delete mode 100644 eunumini/Libft/ft_strrchr.c delete mode 100644 eunumini/Libft/ft_strtrim.c delete mode 100644 eunumini/Libft/ft_substr.c delete mode 100644 eunumini/Libft/ft_tolower.c delete mode 100644 eunumini/Libft/ft_toupper.c delete mode 100644 eunumini/Libft/get_next_line.c delete mode 100644 eunumini/Libft/get_next_line_utils.c delete mode 100644 eunumini/Libft/libft.h delete mode 100644 eunumini/Makefile delete mode 100644 eunumini/incs/init.h delete mode 100644 eunumini/incs/message.h delete mode 100644 eunumini/incs/minishell.h delete mode 100644 eunumini/incs/parse.h delete mode 100644 eunumini/incs/struct.h delete mode 100644 eunumini/incs/utils.h delete mode 100644 eunumini/srcs/init/init.c delete mode 100644 eunumini/srcs/lexer/expand.c delete mode 100644 eunumini/srcs/lexer/lexer.c delete mode 100644 eunumini/srcs/lexer/quote.c delete mode 100644 eunumini/srcs/lexer/tokenizer.c delete mode 100644 eunumini/srcs/minishell.c delete mode 100644 eunumini/srcs/parser/parser.c delete mode 100644 eunumini/srcs/parser/syntax.c delete mode 100644 eunumini/srcs/utils/env.c delete mode 100644 eunumini/srcs/utils/list.c delete mode 100644 eunumini/srcs/utils/list_clear.c delete mode 100644 eunumini/srcs/utils/temp.c delete mode 100644 eunumini/srcs/utils/tree.c delete mode 100644 eunumini/srcs/utils/utils.c create mode 100644 incs/bulitin.h delete mode 100644 incs/exec.h delete mode 100644 libft.a delete mode 100755 minishell rename srcs/{execute => }/.DS_Store (86%) delete mode 100644 srcs/builtin/builtin.o delete mode 100644 srcs/builtin/builtin_utils.o delete mode 100644 srcs/builtin/ft_cd.o delete mode 100644 srcs/builtin/ft_echo.o delete mode 100644 srcs/builtin/ft_exit.o delete mode 100644 srcs/builtin/ft_export.o delete mode 100644 srcs/builtin/ft_pwd.o delete mode 100644 srcs/builtin/ft_unset.o create mode 100644 srcs/execute/checkbulitin.c delete mode 100644 srcs/execute/execute.c delete mode 100644 srcs/execute/execute.o create mode 100644 srcs/execute/execve.c create mode 100644 srcs/execute/freepipe.c delete mode 100644 srcs/execute/get_input.c delete mode 100644 srcs/execute/get_input.o delete mode 100644 srcs/execute/path.c delete mode 100644 srcs/execute/path.o delete mode 100644 srcs/execute/pipe.o create mode 100644 srcs/execute/pipeutils.c create mode 100644 srcs/execute/setpath.c delete mode 100644 srcs/execute/sig.c delete mode 100644 srcs/execute/sig.o delete mode 100644 srcs/init/init.o delete mode 100644 srcs/lexer/expand.o delete mode 100644 srcs/lexer/lexer.o delete mode 100644 srcs/lexer/quote.o delete mode 100644 srcs/lexer/tokenizer.o delete mode 100644 srcs/minishell.o delete mode 100644 srcs/parser/parser.o delete mode 100644 srcs/parser/syntax.o delete mode 100644 srcs/redirect/heredoc.o delete mode 100644 srcs/redirect/heredoc_utils.c delete mode 100644 srcs/redirect/heredoc_utils.o create mode 100644 srcs/redirect/heredocutils.c delete mode 100644 srcs/redirect/redirect.c delete mode 100644 srcs/redirect/redirect.o create mode 100644 srcs/redirect/redirection.c delete mode 100644 srcs/utils/env.o delete mode 100644 srcs/utils/list.o delete mode 100644 srcs/utils/list_clear.o delete mode 100644 srcs/utils/temp.o delete mode 100644 srcs/utils/tree.o delete mode 100644 srcs/utils/utils.o diff --git a/Libft/ft_atoi.o b/Libft/ft_atoi.o deleted file mode 100644 index 061a592c6db7f9e146e403ff0530b299e700c793..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 892 zcma)4&nrYx6uyr!7(ea^MOn-O8!4>Vjkxs|lr&Q|x+X>>KhhH^MPuX{$--JT%1&8X zNn@dGZ2bckvoPLb7Q@2$&b<4^ouqtq?mg!__k8zzulxM@_EpW8QOU3%e2800LI|K8 zF-Y|v*j2q3wR<%*83pMQq_pB&mYchEL`+3~YA@^1^vFvIKDJxRkw`hay1W*fwdBUi z=Hkknlw+fMKcsX*ip*EIUZ!A3wZQy9%J_nuUym)vT~5k!e_=HgRwHfD@xG0yI>r`M ztGEqdZ9^2tc!2p41iF;?8RcUQdp&B*vk8O_npM~8^uO|`X}_BGPX1Bk==`H_NXblz zJin_+eAM#eR=sYxF%F~e{3NK8A%2zydnDek44$k)E7Pp{W>rzn7WvFop-?F4_VE2O ziC&)U(j`&Tt5_0F!4?jUX-a6Y{(Cbu4v$TV&%Q&E<;P`mL;M_$vPU9Ya@1Xv%LQo6 zw4cnqwCgMik^V%s&v0y!%Ur@_O62&paHb#V9uMlh{rb%<>VUC5$&9U_5v;GSImM|? n@EwSYFDL@udu79o!GnsC2EQka9moA7%yo4+Z^@Xox(NOoU0R&9 diff --git a/Libft/ft_bzero.o b/Libft/ft_bzero.o deleted file mode 100644 index cfe1fcb38b2a14fd921d7ec79f72985c3db1d65d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 684 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%*Z>v30aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7DmfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1- z%29yQ8cYzkbO33nQ-Lf5h>uUrh)*j@%uR)e#mA$%uK=pl0ZMy7&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNPGg+9SeXo50DSk&j52XkO>ALy->G8MTn=2n__UJvq^i`Sdt_Z)8v$I9qsSg51`;uYTqgYo z?q&T^o>3Y-fk?gt&V8rpi(KfESuPE=%3PU{AI)-^0>Fnvn}P!8cHKL$Y@au3$NRNC z&NtT89>t0jhKws{LbF_Bl%vMBavSG!D%?G^JV#VG|2f~e@{w^@`lu?A%g^fc$Uq>#7>XDJis* zEzp{IEuYPdUErw&tj{9LUjpjC!|G)IEVY(P%Rc%hc)T!&5x+x$%Ba)it0!)wG$A4T YO9OX(?m6C(;{*4sYPD|1C0nHM4T&sd0{{R3 diff --git a/Libft/ft_isalnum.o b/Libft/ft_isalnum.o deleted file mode 100644 index beb024fb43c977a5ff07b8d7ec035a1071eac39f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 760 zcmb7CJxjw-6uqg^inb<$gMvZ_hb~>592G4@a1g2BB9G7y6RnmF<;GA^&_iMi!w@$&gaR-6=75QiKQtbJJ!rgz$_4+ zrB6~C;NU|!e=YS--~v4AhciQl!LNju#Rk_Y;0rB26=5w9{?UT83t1GZUBCwTS#Y;C)9C-!H9B z8|SIDTw3b#V0>p$2cxXWX>d9R))S}k|Cq3$PI^*xUpdEBXW#KfTL*5lG1Q)Iaqk~* Cq*RFj diff --git a/Libft/ft_isalpha.o b/Libft/ft_isalpha.o deleted file mode 100644 index da20b0195bfc3228a1611cc01e4a7ae55c359431..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SOFEk0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7kxfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw$ z%29yPOc1v;0BNXGfh+`wk5A2rPb*5yO@)ZX$D_J01FF;kMnlbmav8W87+^}kLPkJR z0*JwO@pCb-0Wk=GECq>oK;1C|NDBb@K>Z8>K#UAPdZBJb7AA@v>e2bMv-U@G?GH!( z9+1^QRuq4q2!xf$-y;TLRq^-p09nUf|A1_I35qfx8%Q#AyZ(ti3}S!*G+r>A12PZ< z7^{L97%K!A1$fvwCID5b0L5g0xZ*zqz~Ys`kx!tF$(ff8qzMXu%Gp2$^CO!cpH>o| NS)7+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z82Ed{fLeg8dj5VMAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag;K7AI$Bf|LRP DvIs#H diff --git a/Libft/ft_isdigit.o b/Libft/ft_isdigit.o deleted file mode 100644 index a0e0f40d01b86d5d7227538c36481efb8e07fb54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z4ETG*fLeeoOa6WyAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag<#WTt0=Qwad2 CK0yZn diff --git a/Libft/ft_isprint.o b/Libft/ft_isprint.o deleted file mode 100644 index 8cf5033396fa25d36dbe5e96031092dc2714b779..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z6!?3@fLeg8I{tnhAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag;46lLatQwadc C8bMe9 diff --git a/Libft/ft_itoa.o b/Libft/ft_itoa.o deleted file mode 100644 index 6b8424d68378e36d6a5611c4e94625e64d9abff7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1160 zcmb7D&ubGw7@e)54caCFD^w5+=)p@QcF=6!G8%5v|ISwItR z5o0ejhk7Z^dUc~{+Oko5X4TfDT+WZLztw&exB(;N<(Ae{vbsjfQbm@Z7OSNQk@BoR zeZGn+c(3$y{UyfqQV88ayMPRBBrmdQBn6#?@J09_KNa+8^r&a|krY&;llY+qEu14B z3iqdQ`dPPmBusuJT<#06=^v7W%ljVhJ9~yOzlqO3m~cBG4pLV*%`Qv6oC8g?`GDxX zcW9{K&~SMGf)Bzh5j@^KVA?K3!8}7T8enS*!@KJB7Xl7 zTVJvv*ywuAAm91~;Xs&${y{7ry1~K#*g!a6 zv#a~%+sW%KXfjsb3Gc&g25sIa05$@3iZ&n81@|7Ez}r_ajBW^5C9Faaoud%wBcQgG zK11?wGpA>P?cR43LB!=lj}KS(!5)uT^r#b0n^MSDM4nimS0cvq2h7+^8L8Qs_zqY% zfnP($kICz3r1TlfB~q`Zmgc5a9r5zWK=IT*6Fhnge0v%CRuP#r8f+8FP>*B@G}+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%cmNf@0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8z3?fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1z8@Z zSOF>+!31&34j>J6Dv*T$@$sn{@o7bgxv3Db_;^(JEr2R@fYKFE^PpS?ZU%-77#lmYz0vLaro;C-koUl&^PorL!T&(u(dqlZqxlB|e~U5DXrSB;{%sum z+d{8fUgU4(g$e;R|9B}4;6uKmbb*432yPZA{L*YzU)4VZ#P8m>=2n__UJv+|=CU Hj3NdADT-*# diff --git a/Libft/ft_memcmp.o b/Libft/ft_memcmp.o deleted file mode 100644 index 4ae0e2bb654a43e15e6c99b8ab3cf36fdc659359..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 756 zcma)4Jxjw-6n&|+Em}X2Hb#UcobMF?HGi2jn& zwKzDMZW+4>?I1W7DeAe+?H3|=;N+fr-+Skski34re}#q6W&|E!5Nwc$fxrs5N&O$_ z@!aD*!ycZ3NWKK6idMPkYrjvL$H{R&RF5pkkFtyq6gMLcp;YGFE~GO>RmxwU2;wHwm5b(3Os2mk)45h4`%3h>x%bzJVov*=Lx4G8Xk6SS>L~f|5Zh*_+;4Xbm zgg^paN^_5MbWo${ab6sPlc2Mlb#nYKos!O*bgn<7Q|d@3)s|Hg+VoJ-n=WcwI!$@o z{05|xXv@2v&?^UU$C{_tBPgz3H?~@Og%VFs*IQ1a-;MKJ&QebHcSoJueSrCk*~g-& zn*Eb!5(Dse{`GoGysljx39W2sMl>9$Vb>bwt6-es0>l4A>?|7hf!&1=pQD29Au`q{ O-Bq@zY|GBr1@QxK3v*xq diff --git a/Libft/ft_memcpy.o b/Libft/ft_memcpy.o deleted file mode 100644 index d0b66830935e4bef0eeb8229d790025509088e30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 764 zcma)4Jxc>Y6nv*45ly@+EEFtK*xFcGDtfSmf=B{3vV?dc78iqDFbV<14?Jxw#max7 zrNP3|lvkz^l0ry%Sg7;dz2t%j4oqg=+qbhXB(ERupD7|^l<)y2z(+P&5SRfMx&90K zEQn^bB9oY$%aGD@>Ynnd&e>bJK^?g}Z8(p2=_5hMeGemLanG$5ik_@h4t6U$Qm(DW z&+m1S)mk4>y97|ZBHRE{I%QefFSw5CNjbdVlOA2tdaLtvNfSin$g?hh)8Nlr<~Sum z20zOEw%(%$O{2zr+5qF=yL#7n`(HjU{5Rn@dcv=Dgr9GV(?*ZXbAB4O1Dj#{Vuu{p zEpTydW84m)xMH`UZQ(b?N%IR3{yIWJGSBAKY)hT-f;ekkS(p!odcmdDec-DqIE04V z&zO%v|K7j8=9Hc>jyB1tTZWZRjon~s4*gj$%R2$l|Am$(t&5SBOfr^@@gxVE@pM`8 Lr0clF>LGmt?|yTx diff --git a/Libft/ft_memmove.o b/Libft/ft_memmove.o deleted file mode 100644 index 215dd01afd4aabcfc28b0b90b7a1c2f4460f6e6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 856 zcma)4K}!Nb6dp}fD%(AHFzVo;YY?4;E=euSAt6e^OAKO)9o8bWBoK;9T)Xsdif+=O zI_1%$m%u#)LYJk3_PyO%-H50M-@fm?dGDJyv-A4-J`6GDn_~C?0pOlU9DvOO35tKQ ztX%6#@5az%1kxoFqEe_;9PY$vEt{UiF8h##^k|l`1=#tRg9wp7)Q@ucil~-P56b&O zY;AhiEg8h6@A#crRxpqp6`6?%Q7DPxaZWEdIU&B!7n4ovvSlFkT!k6NN-ihA3d8`r zO_^pvfQ&Y!d_vB_;Z?-wXWM|+s8??5P5+B$xben~`hXkNJ~uKwepw$d<(jqz?Sn>$ zK56zvnGY1)XeigZ@MzIG@Lj&9b(BUDt0q7tJ#Mu5MSBF}MhdzXQ?3@AHMFF9t!UWp z1Z_sc<_ikV-M<8uT>)F14h`{6OSP4}xo%T6??@6Q?!*?Vti4Cdj7`3yAJ-R^6~40_ z=Buebbv6{fMb#4Wi@@`cPBt33?~o+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%H~)KfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1; z%29yQ7EBPg%mC6*rvh0B5FekK5ua9+n41a_i;qWjUjtOB1C)+{ng``Fa5FGuz}O(# z2#6(s7;G0m7Xup*g8;}IX`og2z^@m5N>w|9JFCD)3fxH(Uod-P{5B>)Nk51ng9?d@(_*-OvMt8XarF|cG zbe{5PJOr{GsQp0)6aUHDCpp!TLcjV9*qk2&>_OWOAO1pq6bZ67bOq`A(Rk0cI?lH zu66I)KM)kuT{>iM-1%@j1P#3Jy*E2E->~2F*XMVN$eJM>z$|btA`2kaft>h1;#Tu7 zT4OwBl0fE4Fb94+h;-x&N5#U_8?~oG=E*LNM6?%7*VG6zdl$8a>jfOvTh)4r`S>vY zJ*OtCY-5h>(l+ympr*m>SGe4CYkrht{=HvOOY_P*I!`Sv5LJv8-UZfx$#2QbQxcGn zOC{fh5PgS3Jo@Pbh==qV#Pk2rXU^c&>3!JwerG%gN4?I7GQ&A^zOUf8?u?vaIDU}n zZ!*s5J=y1vqBQg!ChMD=@TwZ?@|3K$ZP|;d^bM*uk>3FN<0#BK(*Cl2l{i>RYTp(Z j<=bMx$uu|18#(YS8ej!|B`_%H;6XZ6-|Wtk3N`S}%r`spy?IZcKHtBhM4=Ia14e;Z7%m0C=7A=E_`@Eh zzQi-IfJ2iQtjDIcWz;M`_jxXx&;9ZsGbCX>p8b#ravAh+)cWwus+P?oDQZ2a7wE`Z z)Cv;mAEK;xa(sGlXldI#FPjCeH#el!3nd{biERk*nX$3wBcxT1ODFU$ZpOIHqHtJo9x5hB=nuc@hUFF(6-NImD$_DW$n3vxW5?GZ6I8r$qDIZ<70QC?4XcD^7kIcntVwX)zH7$mmeYA3;z2 z7@lJ2#XF$aNUPABzYkwB-2aAirn^PYwcAdyEwtJYgv}pVj7-Wi=0HkXnI25F*fwe} z55ej*$0;D1Wh_q7gYGF?!& zaS;0QUWE4bkUkuVenZs+^3Q;i4$g+DcPCzt>R$)mjQDRC`wal)@hbZ@_8;K!-5$~H m(f$m_a1@85@EV9RqCFx0SbK$>WeSX-M;-kGLInkf4#h$JF1=_K9Q??a@4kEQ?p^Zk-d^70M3Di)3mgP5IWRzA8eC%k z2QDQ4AbUcOp2Xz746SXmY4_ru&t!*H8a8hT+8H||6)sdkE-=-D9`PBPN(H|D0wo3E>H7# z`EEz~PFMNauIIig?^bzEyUl0#u)fn)-c?{#>&Do*<^_S=kNm0;r;ehTv6$3lp!m-8A{1q5PD5i8&}83f9QIjC{PLtrw%)hv WyJn4aqh7JiAY(Z;lDbsHcKQT3j9ec8 diff --git a/Libft/ft_split.o b/Libft/ft_split.o deleted file mode 100644 index 34c727b49092ba2f6d31d2490e2121323eb1eec3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmb7FPiP!v6#u5C=~mm!T3d}EGzAYuTusD-#fT9*@PRG{=|T?;({(zrk?l67I~at4 zg-ImSp^$^3C-vBio;}Fg8gb*v2CD4QLnJejvU6D4q13Fu_syGaT(busyzhPQz2Eo# zeY4;GdjHPO0U@+U1QzfRIJXbW7#Q?4c!eATXr2y$PSP1rrX!{xX16fSn!Q*fL`tT4 z#yEQ>(;mvdI1a_5vtJAg@ff*>M4d!NrfFTNEzDKlXG4FyEKXMXk^R}pRC1c05%Dfx znlD>5)2V(mSG{1GZ=dctv5EP>*K8a`JepaI`Z)BzLYk(1(VSfm$|`-MB|Wz#^yR~_$)=GIIGV%a zxtlOk;quyRSJ6azA}F?`uSKuJ-Za?cwq)QSSE((p6+>n8lCHjdj1C8GD{xXH(j^fk ziooz7IV_Ng^nMzjS(|-9KfXjRp&y?T+|L;LNqnc%G-C1)y8epLm*~qRMQ`L@Eq3(f zCs>#JX^1M-^UCBVfzi<$v8u~AwgV%^9DE}VjBObd6KUO&+J^LtN%U2>+l3p|jLod= zo~QJkaHX^b5Lz`_O$1iiLsiP>te_MOVe8aJubQw|O&C=a$_;TRTdJ0cyS{N7^9iL@ zy3M03#xf|iq;*94LmNm16)CNQ(wkhzbsR#Brttt}cB7Nn2Na-)0Ng@I@Ia&fwCEgA z00RcxgZ>e(a({WAFNWmb^loc_&8pETyMDdPVKB1ZGGvfhr!`Gn)B|9DgCpb>9f6Rw6AOW zGW`mo5mh>0SM)7%V zLi_k#p)KaM{GkK6RpfjY_GiG;>KeOUu3v~ZM)IHRd-E`!D@BAm4Ne$WS5_>0;ON_$ z{u}cFaX)+FJ_Rnflj69qJ#pUyH_kZj??1Q?(LZjfaGvE4=q(5R8%R8zg%d2lL@YoG zJ|s+qG9;eB!nxFb>_tfQT%i9kP@#?mxZ(3Gr&x}$gi!tykRt$Q_e}38>Dj$L$9i^; zldNa=2B^?!VKN|hsp73ZeWFjNAINUJFlTG#mHEnCO_=tgoo&hJyoY~6VOmw})uv*X cp_8k&aKV{RT@||u+k$N?k5#TzE?da)55k_hwg3PC diff --git a/Libft/ft_strchr.o b/Libft/ft_strchr.o deleted file mode 100644 index 0f0c202426d5830381eab492ee1bd9626e5043fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 732 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%cmNf@0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8zY1fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1z8@Z zSOF>+!31&34j>J6Dv*T$@$sn{@o7bgxv3Db_;^(JEr2R@fYKFE^PpS?ZU%-77#lYqto@rOKTX16=XM1=)=nc z|NsBTr-cKg@VM&_AO$k|N9{=4FHG15rTbY#@XAkxh?JD~T^IDN4>LVgLYE|79!y diff --git a/Libft/ft_strdup.o b/Libft/ft_strdup.o deleted file mode 100644 index d96ab0ed5ffbdd7eee8fec0146c58f826f641262..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 828 zcmah{J4?e*6h6_~idq}NLBS!Yn|5(>RJ3ph3q>lp$R(sH719SarBw(BMImHy^k+D_ z`hdFW*fEPxL7`)DP|r#3wNVfceEGif%*nlZe1H2$04Sq?4@3-cO+rJU%_G*y|HHZ> z-W4^{$C*H&xn!K%X3GwB=;t&0`JpdWQwW+zyIhTk88JAOHN>17)pAWYY~H9e4=V-E zcebPXmT)w|IWgw}S*(g`Xq=lRUaae7GmLTmbH7Vbx*@nG_Y(djKuO4e*6=xp2;P;N zfH;DTUP|#N6!d*69?&W>_CpR4HR>hEGmPf`(|gQ)X6;vvxlW&XPQOPD%+2(ehZv)= z?8e7PM`nE1c6>;kB`MX(45;B{ksQzQnb*KE-<|Gl*yUw?=4J<&8L;-fc5p{cfr)zz zK3~R&XN9Aj?1Iu#6?G~xet}iX7+*lJ&(P$50Gre5`N&o>F8Xw2EKjc>O!L?rDaxtmvzgk8USA=scVb? diff --git a/Libft/ft_striteri.o b/Libft/ft_striteri.o deleted file mode 100644 index b14ffbd07af69e702ca1c6ba0618d99d4bb81546..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%*Z~#40aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj0F<{nFn$U9I!Anz}Y}Xe0*|#Zb4#lNqlKud1hWpe7uhfvU~)T zqX4B1m>_PM0HmQ#1+owzK0Y-gKCLJ*Hx(ilACKz33aC;CC>;Pb56WfWW?;yGu|c#E z5K90t*e-r91~woD0g$C2@flEetN_viKt51ELjVvX1CU;*Takr{VuyNkKJ{pRqu|k5 z`@^HN^uux2Hz0i;-L5}8l6~Ja*l;lLx2QryK6KZ<@#yviN`$`gV7%zjdG7xOpiuL1 z#?IO|FHipe|KFqeh(hdPWQ(EkgyB39s3OLyAO^+?0Y(8Hc8&=^RVqMn86eI8ng#-} ncxG_q6KG>{=4C@N9H^WPWH3Ln>G5eL@x>)YnI)-3nLs%J-wawt diff --git a/Libft/ft_strjoin.o b/Libft/ft_strjoin.o deleted file mode 100644 index 0e88db478a65639c179019944de738852d5e1711..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 936 zcmaJ<&r2IY6rR-(Lv5NIB3SScO0O2_DF+WqyD$d>K@_}{Y1l?g$q&&D1|blMO2%Az z>fhqg&>y)qIqp?RVFNAXW{_g~z3kg&bEpr#c|YcT-@MtK?)~qF1tE-ifdvQw*AyfH z*mEF7`G4#^?>X%K9GZeax@1b(xvK5OUcO`Q?M!n&`ojU~(JUzlOf*8G?)Q*a$|@HR zvzDzYrIUQ=gHl^>gZq=qppfLEGw11KAjYGjGBu@g2WtN)Tg-VirDo?#GHHV;Bi8d3 z7KJ$QWAd+oWne;!JrQAmj1Hyx9^b18pF|G6$N)hjE@5WSV8bKvuGBwe^vQ_|_-RU8dYtJ2qZjgFyfeQEt@CL)7xk%rwfr!=z59z3UKp)F=76D6r0cD zmve8TVdkyF=t&Z)ZkL7$xa9qeCEM^OZ HvL*fkEIy)# diff --git a/Libft/ft_strlcat.o b/Libft/ft_strlcat.o deleted file mode 100644 index 1a44b8f2d409487dbcfa82492673fcda67ba14d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 888 zcma)5ze^)Q6rS}*6i?k1EEFs(J5G3iWsMT#^B8&F6YER5gF&S)$IKlt{&_q}=FyujrC>G8RPF{_o~1Ga$| zlnjHwAUH|&2bj^le>$2Po{UJo1S#G0o*U+2J;&$g-fELQ>V*7gmr)qBkk-b2QZSG* zwXwdLOu2F=v%8vEl5+Zo=~1leVpzulOlX%$eDtafTiwQf=@q%Wm0VAUij?p7bM#P5 z4+PrJ%zt5Q#pDzxzyYu^W_Pg&NT5qekLlmFh)6Z&*$mhWnl)_JKa(ef`Y*hPm{12* zp>_hH5@q2ZR0A3oiWgA?rYHy>!W1vtzx$}|^MYvQWgM$j{)R#k0*pW(jWHaL(rSvA z#;=4Q5A4f6?}=r3-ahPy?(>q$dAYiZm%JLY|6FGi`4gT$x9p>Kv@6lj6>H_huN*lE z6%S4vxZ{>4t(tWzXZ3oW8h4G=Xp;i12B{{z+t|Vl#troQA;)*1r3lvkEVK3;%jxdu zJjJOIXhUG}8J7U&{jqPo&T-54o(K&AUqKv?(*J=XX^0V!+4RxqL2N4V@Rwb=?QX55 KlJ0As&af9Gnwnhz diff --git a/Libft/ft_strlcpy.o b/Libft/ft_strlcpy.o deleted file mode 100644 index 98c68f0743316b5bc1f76fa4c587c67bf9078b5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 840 zcma)4Jxjw-6uqh17QYg~LBXMegNsm|1Q$gEZ?GUz!9^aWRur^~ruYFxr7EUfT*TGU zpWr0*195ZIv5Sy`f@5*8o}0YbI0#-ix%ZrR-?=v-PoM8!5hAUL@Bo^DD=uOHq8Aup z{znX`vlo?p4o_mRFNc&?X4~>=k0;H!WP|(Ftt!}$cVPq9x|#OXk(;DUudS}9(w59+ zx0bUDQcg_<&mR?useBRgc8U6aL{J(bWoAh(ZlqQ-o+jn*{T$UgrgB;NDN1cbOMcCH z80Z1q-St)q0~|b*bpv~F9Yi?-{h5afDZ*gJgKZKogggsjkrM%<5 zhp^2TQOH+FKk9&)D1q8$t-1$NW%r@7C?y>Ix~uR>C+4$$$m{V9O+PO~D4Nfgnts&6 z{iA$TGBM#s9Nh4}!cI6v0~#g=w2u?kDx#&1z`RQJj0?0qG3iNbw+{tiZgxb>DQ{*rY(D|W) XzfXYTM_#n#rnRw>Uf=ntGg(}!*iUF| z3>q9;gXZ8l1dh^>eaCm78WHrtchC2od+xd4%jd^eoXD6W9AFfD6p;pjB`_oY4?OAq ztDXrxc9Kx`3Ya~&<^?+NSv!{<`%pPr$Uez3LX;XK4Z&PEDWB#G9-mh(jw*-D+gp?O zjy7psGm#+69jcBBH3qX=;$k&lc7q=C&wLF%x~^+Z@6(oMiAtfCx(Y6W!@tZKih%<8 zRQmTi#{+5-9`9)voP@m9Str~7()+6Qu3Gh;>e#+KP|bRe%SvQf*R4nwU7>`K=Q;rZ^^!UuH9=jF#27dWeJ^%m! diff --git a/Libft/ft_strmapi.o b/Libft/ft_strmapi.o deleted file mode 100644 index 42f0f023a9174375d2eec7f7338b8d8a2a5b0db6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 848 zcmaJ-#ROosO5p6_{|_t*DwcfaoM9)?7$LBRo}fD1ZV z0QLs>K>ZJMOfEE>Xv`FXb7@+8rCl%fW4-KtUVhezcV-;U<1VcM5j+(8q{Or?ZdSGm zMNikNI~&zit(O*)9QoXctl?t};VvDpS@mhGNn^j#x?bBZR7!C~>;C<2OyQj2Q!~#< zc_p%*_~duM1n_j1{Zi5Zjh8acWw=icM;45J`3UqHdx^e9dkg;KuPFbIYW&S9zus1U zt)+r`yTy9-f+N+{Z&7|Tj`(h<8ud`@!x5&MZij`pUvMNqtT)S||<<=3Ly@7-<}{Yd1a>r{rbLgl+1a7Q(M=Dz;m z4T+iW&mH@0%qVN`lUTcs +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 07:51:04 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 16:20:55 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 16:19:01 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/Libft/ft_strncat.o b/Libft/ft_strncat.o deleted file mode 100644 index 21a2bbecba6355bf054e680aa093886d7d75280b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 916 zcmaJ=&r2IY6rNRyq1Gmc929!+(1Se)QYZ*5n4$x7s34-yiwt3nScp;VE{YHkwutK@ z_~&>kf})~Od)z|~UJ6NxkmKUP_`TUTO+2&@zIngq`{wP=?(M_<NhJojSuHixDlkS>|lUU|n$<1}BCUlzN$js9>zdNj*81p25pAoj>v)7srw z-z>SF_N&`pt1DW6p0z#lZBEA6UqOUsnZm-O8d+{*zVe!0-72k@(~8#5=gTvx$b<&# zS^kg^Yc?kT4j2IpE%!oX05Uq1>P5^!^K4>y0}sBK2YQXTglB{HZun2Uq{81SXiciH zmZ;Eghf6IL)shBLlsnf_&Q&NIk!%E~j&hS9bWYj~<=v&Mn|(no5xMV0#7&b&G6A=~ z_c4nyO|7_cSjZy0qvk;&8~OF%!U_F)^SaaN80w{rjY3dsgF0;$BN=~?t=!SuRI3ev zn6)6%@5jphX#`^<7&mXMpgAr$pIkm8-LCQXV_ti=Dnx-3XLmt3J9#Jnaxi<0UGx;M zfnSeMhS~2=e0r7N@0%IUFz-D)wolOA;XWp)j66dJY5Z#L!#jm@{s&93 z5KGZQut?6zlxYN02$m`#@l9?niHP99%e;9zGy67N?(41GDumG_@B=ghH$*}Jq7N9O z`j7C>^4#Os*eM9KmqKehnzTLc)r)dzv0nS^nF;M9FSTeE2Q?0&bz~#Hxe~GUPGWaG zv8wgVbmMuRixB6_fak@6A+`#o9$H6ZdTnbZ9`!V>fBO62)(Oro@8eQ*2odu+du^2e#ly;ZQO^Fma&}&o6E3KX1ebYa)Y2Wf zRhij>avs&;T?J9?Ir}V%v~5} zx&;lzx%#NrY>hveDS9z4WOeAtnJpCuSywIePWI>4Dz_MhwFguq~0 J5s7b7&o}l;ioyT@ diff --git a/Libft/ft_strnstr.o b/Libft/ft_strnstr.o deleted file mode 100644 index 10bba56b90c572c309b9a3fe5211716834ae6601..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 988 zcmaJ=&r2IY6rS}*47R#Cc&OmPg9qCpR8JN!5j!vk3!*M~DN{)!7EBboK`EpJ7d3GY z_2U2FpWsPEh0RUdQ!a&E3Q1`p$Fv92@6FD%&JPFm-))_Uu?1`mLAQr4gsan!%C)y zqLi7<+}3KwmxcV!+x#0T=U>?MXIf`eFDA842~n52?0zY;>vC;-HJ6Q7rMy4if+nRk zY23`E@dJ#iQx&H0d<0iCx1S~8WV9)*mo@(kaSRxIwg9({xa9W+wHyAEd!q7H1mDx5 zQf!Gzp&=?>T|~S_6cO@9X_~qF12I4YZ#TaY2#R&H9`QCcH$SVUVyi(2owp(^HVmjj zt1f1E)!iFZeJB$Ol(dofh*Fd2lNTaca5!B6I%T$a7) zh)1W6yWdMpq3SqCh;xKqRc#)$&7dKV5AZmasfk{CX_yonp=402`JvP4;2o%Aq0|<^ zb^6s6dM(r6pSm_{nGI>+ykBI_ZpukL>`T(OPIor~KfZ%F%zVFWb})6&H8+sZyf28j u$BEa7piM04h(I_&8@lw+M*p1!8NE*%Gr8u=cm8%B{wL4mwoJZ}&9mP%!lxww diff --git a/Libft/ft_strrchr.o b/Libft/ft_strrchr.o deleted file mode 100644 index 5df8815da6375cb5853e5789029454873c59165c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 728 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%xB(Tv0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8zI{fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zElV z%29yQ0Zb6LYyi?wrvh0B5FekK5ua9+n41a_i;qWj-wdcy2PjkE*cZr3jzuFpNXU4JxKFz~nN0fj&u{(T($+d`jPUgU4(fC_nZy1oEOd9Z@4 z2l9TrJo^9tfBdRn#2yAJh5=|iVmMy}s(`U7h=H*}fKh;lonrz}l?qT?28ca?_J9B^ o9WXfZ3A8ae^RmGV2GT&~Y#@XAkxh?JD~T^IDJn|NC;}-30DQw^DF6Tf diff --git a/Libft/ft_strtrim.o b/Libft/ft_strtrim.o deleted file mode 100644 index 4a891a2cb4a204f63ecbe7a9aa3da2d1bf9add5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1408 zcmb_cL2DCH5PnWe}=m{WITHzdy!8SG#Xnq>ogawa)>k|0F6Dk`m#RaW@; zd}*1zF8RJnJ_*@5#;VFEdkcCQ8jqo$Whp2L(NKI-?v)>7>>)7fV+#}KP#)FNtVsQ5 zDRTEacYfr#+a7RtxyQZsphqmO(IuaIh`lLx;}~}h1fZ_rdxfsk*MNL(e&L!=F{j;S z`q~9lqtriE>KR>UQ{(0?-}=V5yQla9?z97@znY+;&qheC`_~eN01N|F=qD9kA>eKy zMBk7*JNbp}$_;&LjjEVFHOH9TCyRYT?1NE@*vSYxGnnj7!b>}Z`lo!t=!9sG*Hvvn zJVq~yg{V!>OJh$r-Tx3pk!+h?*j7#dPd`vcr}lGp&3bx6rwhlS)W;lPiWn}tO@m6aAI#`Jwn z;zGUCZHd*p+yvHfuY~^3j=wwsMzAU-Kv?*RrsxjMMvFMakJV|ZmnEb WuH9O)WcJgN`HTsxRI4>iaQ_D40uwU; diff --git a/Libft/ft_substr.o b/Libft/ft_substr.o deleted file mode 100644 index db439e35cfcacbe79efe23715dd4f782507200ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1056 zcmaJot5L8fz;I&Xah++>Beeeoh2-=_*dBm6!AxTTR!Jq_`wI#26 z(2IXSJoFzVCrMPA=)vwua?C|AutK~=4~;X~_vl8@fqCD2GxN=xUEaa(ABXb*#xcMH zeHOh*K>{7^Ec#XA|1eM0dI~kinLti+$%L?TRXd0SzQ*pY9dR9PhUU>OdpLj)k7oqh zgvf3bH#1pVR7#H@l^zPQdP~;`^_+xCa-2iEbn#GE%&5`?gvjN^dO1_f1z91c_j{#8 zNhQjwd5XdbfV_?gFQcD9pUBMP5J4xSODXSZJ$_sQIqD&W9yZdFPc0g5_)nbX@*8*j z6qmK3toU4}`!4fko4d6kmsaaLX}N2)__emVvp}T7x|AH;nN(OGt3x;K%dgz{$>jl; ztf^JaiRygNICL#ve&&Y9WhZEmtUHM6DMT>F%UGAs(f9CnA40u7?$ml E0X|8}Jpcdz diff --git a/Libft/ft_tolower.o b/Libft/ft_tolower.o deleted file mode 100644 index 940856f607c9a3610ea6a8646714448622eb4e2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAa64fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z9Qk`d76MsO{QZ1DR=4Yq<^u|yu76&#L3luBx9gwS!^j3h;{n5Z5vU@@svri&3IRp| z9(IliKvgP0aTy@)_zwZFcw}(o6KG>{<^@>=13=|$AcOglO^;72i7&~|$uCbW0;vN4 Db)`kr diff --git a/Libft/ft_toupper.o b/Libft/ft_toupper.o deleted file mode 100644 index 137ae034299c5876940f6875451f8bafc47236ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAa64fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z68U>T76MsS{QZ1DR=4Yq<`)W`u76&#L3luBx9gwS!^j3h;{n5Z5vU@@svri&3IRp| z9(IliKvgP0aTy@)_zwZFcw}(o6KG>{<^@>=13=|$AcOglO^;72i7&}7EhtDW0;vN4 DyER5X diff --git a/Libft/get_next_line.o b/Libft/get_next_line.o deleted file mode 100644 index 3fe2879730db3b1523d6228938a97ac898c702c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2808 zcmb7GTWDKl9RIS_?pU{;4C-a*SV14Ea&(RggCQi?14l3*(#jafX-!UTHBB^4Seb-H zPAfS*6ec*lqJ8Y}#U~#`)`_L*TlGO&e99n$1dh^&3bB^P-~YQTm!^UreBb|m`!4@; zHuwHGIKf!xIKzV3gQ*?EGKh(B2D3Ck@CSp(`3=kCL#56$q$d+i%UzDgw~9N1~(ACPU=`^ZSEpRHL&b+m5Ga-kXSL z?Of{WbSh!nuZ}2P4j&NIvSbdSIPy3CAY)P_cR(oEwlifMy zNwS9+n^HKz3z&~#^1Ssv){9Alf)c-oJWc^#274J0_UtuG8Wf5q+0yaQx%}TTW_kB4 zHyHHtyKa7$=}Q#MDw%b1R9nO1=XR~7mx!#=VtHoOa`RQDFSMzC4w;|dwftO_>$&xY zK7X1Fd>HrDZrgKz$< z>b1Q5j+YA{*s**nN(Fo#Zv1?pYE|sETE7&r%a$M8vAj?XB$Wx>xiHh`4N3airC1=h zNhVSoSE_y_Oi^oVjYflPh4TDG$nS^uW5_-lZn|#Y@_`OtT(7O#$s4L(FJHI3+|KH= zu<5MrBzPrrABi+-KXN>vE9K?`6!R4@AI5&J{KGTAxv^&kkm7*pvU0rzx`?$j7M?{s z7OeMZgkyW>G_n>^`Hn@wfWV#8aKaCBo4k;#G+q>rxbbZYBCOpyGUAc=a)s}mH1*BE zGxvRSUmUc4t^hM8>pxHDT{0`gdf^T~H~$sQijP(F+ry{bgTA79!j7=?i$hO|@3nR%pZWN^&!+ z!jl!>uztFW%eX13^~`O&g6+ZN%z%yyHS-LDOJ+r1I@g|lusA^byp2kN;(%7$ zgu!9Es=h?Ws&eyV!SPtdivJo}9HxsWOBxFz#o@5JtmLxNJYQaORnprn@9li^y`jIX z(xps`$g)>db;X;0=*U9E*g!3 zs;Em`>Lu(z#Fh0O^7lRJ$9K#48W7($<9!J~#YdRv>wtLw#ya+q^lkxafWD;P1;isW zE&!sB8Gj)kvil4Wu8cDh{*F|zC&q7-6Juw;!$S18oMdM|21F?1y5wJz{4qedHmIk= zl`$mw1wr?YOBj)GP(lFG@BI+49}d)i3w6kT2-JB+C9Uoe{ST153>zA6U=pqF$&;XU z&}zhiw2=JYpp_=Pm8M?bO4BoIrEhl7A9T>np3K^_*-U&YqtJKK(!PRhAzr_u>#C!C~{bp%enCKCcDs}AqaO>y4LL^7GC HtziEGhP9L- diff --git a/Libft/get_next_line_utils.o b/Libft/get_next_line_utils.o deleted file mode 100644 index d4ef3003edb8ea27560f9b335abdf86315d80376..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 884 zcma)4&r1S96rQzE>DO-1!Jxw)x_0R#bWv(y4h0bgb%;@P#UM3gB?*GS43@q0=XmN; zAav>KCD==#P~cHIXy4nN!6k_L;LZ2FH#6UR`{VWNbCO_8n`2lI^N21969KFv(v<&# zjNI!>RyjNw1^E($aO{>7>M+k)C%IX!lrIJO(JUz#5M#L|QV^n8uU;04j%e1d&TAzh z_V?5tu`d%-ayJ&vl7^og6_pu;uq&e6C{*pRCd7~V)bq(Jed(th78$E3O}vdrA%biA z0*fOE)RgKO%t1O2UIXJkJ48f5cU45||Ix?Xedp~Dle;$~?luS9vqs!w+_ij2pYK=$ zy+iLm$l5J~=^Z0XN4ytw80u=<%NX1{fRBdLuxcd-bRtOHUZ{K4m}Kc74ROmZ2F-iR1%b z<|b+z2!De9fDauYyJFnOc9-KaeF5Y6)}!PL$$7~j+KLtd$0l)%@iU0rr diff --git a/Libft/libft.a b/Libft/libft.a deleted file mode 100644 index fc303919b57ed5b4ff209fbbf756378d75592c1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37376 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

w%E}>d{f2efsQd!X5B2`~4L3XoD*PlG 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 VIf3#F2_S`&O?Z?y$B3+81_0!d4M+e0 diff --git a/srcs/builtin/builtin.c b/srcs/builtin/builtin.c index f73f677..24ee918 100644 --- a/srcs/builtin/builtin.c +++ b/srcs/builtin/builtin.c @@ -6,25 +6,40 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/21 17:42:18 by eunwolee #+# #+# */ -/* Updated: 2023/07/22 15:05:53 by eunwolee ### ########.fr */ +/* Updated: 2023/08/06 14:43:55 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -t_bool (*get_builtin_func(char *name))(t_data *, t_leaf *) +int check_bulitin_func(char *name) { - if (!ft_strncmp(name, "cd", 3)) - return (ft_cd); + if (!ft_strncmp(name, "cd", 3)) + return (1); if (!ft_strncmp(name, "echo", 5)) - return (ft_echo); + return (2); if (!ft_strncmp(name, "exit", 5)) - return (ft_exit); + return (3); if (!ft_strncmp(name, "pwd", 4)) - return (ft_pwd); + return (4); if (!ft_strncmp(name, "unset", 6)) - return (ft_unset); + return (5); if (!ft_strncmp(name, "export", 7)) - return (ft_export); - return (NULL); -} \ No newline at end of file + return (6); + return (0); +} +void exec_bulitin(int bulitnum,t_data *data , t_leaf *leaf) +{ + if (bulitnum == 1) + ft_cd(data, leaf); + else if (bulitnum == 2) + ft_echo(leaf); + else if (bulitnum == 3) + ft_exit(data, leaf); + else if (bulitnum == 4) + ft_pwd(data, leaf); + else if (bulitnum == 5) + ft_unset(data, leaf); + else if (bulitnum == 6) + ft_export(data, leaf); +} diff --git a/srcs/builtin/builtin.o b/srcs/builtin/builtin.o deleted file mode 100644 index bc031d86c6e18fd371cef167cd72bbfaea90d878..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1380 zcma)6&ubG=5T2wpjatppT2TDeg9k75P|!nR!BPVY_E1U%QRERfn`FUkmgFssf*=IN zPz3ShMXz4H2{{Q0J$UdW_zx5mRCrp;XFgs9L+ybfSjre7-bY6~33kCm|gLb?md9hn|FnZKWerfU@vQ8TT>A zVFnHnRbkLiD;%eUds&Mq?4a%qtG{LSei&B&;kLB_eRlaYxCVR%-epP21K5X~&qU_tTR14}TYV*|Ugm1P$)o4y z^Rzb0Lm0fHJhXZrjXNLgDmiweMNZe%H4Kid?^#pWa9HtoafsTimGWPJBeIui=Aj&s*a?qRYzBJ& +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/22 13:20:41 by eunwolee #+# #+# */ -/* Updated: 2023/07/22 15:40:14 by eunwolee ### ########.fr */ +/* Updated: 2023/08/06 14:35:21 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,35 +14,38 @@ int count_args(char **args) { - int count = 0; - + int count; + + count = 0; while (*args != NULL) { count++; args++; } - - return count; + return (count); } char **join_cmd(t_leaf * com_leaf) { - int cnt =1; - - t_leaf *temp = com_leaf; - t_leaf *leaf = com_leaf; + int i; + char **str; + t_leaf *temp; + t_leaf *leaf; + i = 1; + temp = com_leaf; + leaf = com_leaf; while(temp && temp->right_child) { - temp= temp->right_child; - cnt++; + temp = temp->right_child; + i++; } - char **str = (char **)ft_calloc(cnt + 1, sizeof(char *)); - if(!str) - return NULL; - int i=1; - str[0]= leaf->token->str; - while(leaf) + str = (char **)ft_calloc(i + 1, sizeof(char *)); + if (!str) + return (NULL); + str[0] = leaf->token->str; + i = 1; + while (leaf) { if (leaf->right_child) { @@ -51,9 +54,9 @@ char **join_cmd(t_leaf * com_leaf) i++; } else - break; + break ; } - return str; + return (str); } t_list *create_env_node(char *key, char *value) @@ -88,15 +91,15 @@ t_list *create_env_node(char *key, char *value) void add_env_back(t_data *head, char *key, char *value) { - if (head->input->envs == NULL) + if (head->envs == NULL) { printf("\nenv dose not exit!\n"); - head->input->envs = create_env_node(key, value); + head->envs = create_env_node(key, value); } else { printf("\nenv exit!\n"); - ft_lstadd_back(&(head->input->envs), create_env_node(key, value)); + ft_lstadd_back(&(head->envs), create_env_node(key, value)); } } @@ -104,7 +107,7 @@ void update_env(t_data *data, char *key, char *value) { t_list *tmp; char *key_equal; - tmp = env_search(data->input, key); + tmp = env_search(data, key); if (!tmp) add_env_back(data, key, value); else diff --git a/srcs/builtin/builtin_utils.o b/srcs/builtin/builtin_utils.o deleted file mode 100644 index e3f8f2afabaab9b35e48835dac6069a6f553edbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2832 zcmbVOU1%It6uuMFG)CLqf{`d{HlR?1)u+IymZg$t*8C|P^ zw3|q#Lm{9df`TGS9|J!4U}+LkvV{bUT45i2*aw9yM9f3LrB>s2?oYDWBnTe%&bjBD z@0@$ix%bZO_qTul=P+Z&T?`M5R*d!*JYpE22Qa3|Z~*nTNyBmS0cjaA84Zd@#JT4d zJvo>18SCts9a+y#D+h{4)3fc2JwnD-HbG1i=T5=Pk7kCIg7e++beyxwenI7_{Z+bJ zM1D?oESGdV?q}W}&7?Sg<>a;zlUbG5=So>YJnET!H)DsSZdXXo-4Q;NPma0L*qmR# za;i!*E23ExPt!e&jp#Y?r!l%P#8yN)SQ`crElT z-}3=G_{|Q+>t$<`z;>yFE{k*lc1>@l2 zjPNh5n~1Sdw$`Z(#MrO{tEzbAsd>9JUS-qPa%7T9fxc>&icuE%Xkj|BeA!yQYDA`} zfZBuF9GX!I5hm743r3JwuYD_4Tt_;#Q@>7$tYIJe_pFl&uw& zPQ?z*7)CqlShWKK9u<`MDtUxfMJ6-(tQKkUMh9nL#SU735Kx&|CG=NHOGekID1xGm;~O%>Av&jXqRqjQR0U}0wp|EPfwtV#soh*^HTn=$AYqu-hWVwF zhJh^o3N;3CRbvnlSbr_Bu4yQh*Cp%O?sxw|{qChRj((%(18Z=qV}rZozE3?# +#+ +:+ +#+ */ +/* By: donghong < donghong@student.42seoul.kr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:31:18 by kichan #+# #+# */ -/* Updated: 2023/07/22 15:08:48 by eunwolee ### ########.fr */ +/* Updated: 2023/08/03 17:11:24 by donghong ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -t_bool ft_cd(t_data *data, t_leaf *cur_root); +void ft_cd(t_data *data, t_leaf *cur_root); static int change_directory(t_data *data, char *path); -t_bool ft_cd(t_data *data, t_leaf *cur_root) +void ft_cd(t_data *data, t_leaf *cur_root) { char *option; char pwd[1024]; @@ -32,10 +32,10 @@ t_bool ft_cd(t_data *data, t_leaf *cur_root) { getcwd(pwd, 1024); printf("current directory : %s\n",pwd); - update_env(data, "OLDPWD", env_search(data->input, "PWD")->env); + update_env(data, "OLDPWD", env_search(data, "PWD")->env); update_env(data, "PWD", pwd); } - return (TRUE); + // return (TRUE); } static int change_directory(t_data *data, char *path) @@ -44,19 +44,16 @@ static int change_directory(t_data *data, char *path) int res; char pwd[1024]; - printf("\npath : %s\n", path); if (!ft_strncmp(path, "~", 1)) - buf = ft_strdup(env_search(data->input, "HOME")->env + 5); + buf = ft_strdup(env_search(data, "HOME")->env + 5); else if (!ft_strncmp(path, "-", 1)) - buf = ft_strdup(env_search(data->input, "OLDPWD")->env + 7); + buf = ft_strdup(env_search(data, "OLDPWD")->env + 7); else buf = ft_strdup(path); if (!buf) exit(1); - printf("buf val : %s\n", buf); res = chdir(buf); getcwd(pwd, 1024); - printf("current directory : %s\n",pwd); free(buf); return (res); } diff --git a/srcs/builtin/ft_cd.o b/srcs/builtin/ft_cd.o deleted file mode 100644 index 82288e26b59fb2e8bbac79a7d6f7105e8d13c941..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2408 zcmb7GL1-LR7=9bmbep!B1zlO8&;c#h!(56%S{qq4ktZ}Zw2dvOJf^d=*(J$jnVn6y z3Z*4Z>M#z}g9k6-!ILL1fgr|4T1XCsS`f)a@SPw!#=>0~jQ{%it+gnZIL_WOwZpEAj# z@A;LV%IFD?B1t-?>BA5IaUP4<0X3Iy@P94?BIT_j;Fn zla*hv@&)xlM&-#85ipHm3jeR5X^%AFIFY5sFPBjDI$1}zc`|$v4pDd$x{4G}l;9!P zli|sonzYfUqSWCCgUi))$NqJ1X1`k zn18wom*I`8u!`kukk8W~vGnHge%PXmdw4vF_T7oXWmp)Y0XCNJ=pwbN+r>-lyxpuF zGY>V7nXk;5&6ZO$tMwVzob$~}-FKZ}&c8UwoR;sqUeKdVav5YNPmE5S9c45I8+K6B zG(R~$#w>QeRW;}B8BJ1ZN)kFF{TWe=ny)FI-FU$IBicCk<|&qI7jlJtyYuAp1o#6O z)N~RZpRwnM3X6R&?#E|M3fYZf@O#Qm@AEgiaeM^vyRaSy;u(1q6K;jo55#xN`VEVC ziXBY&##wiOI8^I8kk*%hc#5B3!rs;*Fc0)Jz7E9Qwax$UA zGWx-c-p=UHX7rab`XQzFp_fuFDP3!fH8MJV6}IQggj2J&-La zw(9{CQxZipu!B~UTwu*aH2~vRT8;G8b7t`_$j+ID)wHPE^%(^5=0(%BeW%7m1Ajh( ZDm;AGMPN5@E>w2 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:30:59 by kichan #+# #+# */ -/* Updated: 2023/07/22 15:09:33 by eunwolee ### ########.fr */ +/* Updated: 2023/08/06 18:21:16 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -t_bool ft_echo(t_data *data, t_leaf *cur_root); -static void check_echo_flag(char **av, int *i, int *flag); +void ft_echo(t_leaf *cur_root); +static void check_flag(char **av, int *idx, int *flag); +static void print_line(char *line); -t_bool ft_echo(t_data *data, t_leaf *cur_root) +void ft_echo(t_leaf *cur_root) { - (void)data; - + int i; + int flag; + int blank; char **cmd; - int cnt; - int flag = 0; - // int i = 0; - int blank = 0; + cmd = join_cmd(cur_root->left_child->right_child); - int k = 1; - check_echo_flag(cmd, &cnt, &flag); blank = count_args(cmd); - if(flag == 1) - k = 2; - while (cmd[k]) + i = 1; + flag = FALSE; + check_flag(cmd, &i, &flag); + while (cmd[i]) { - printf("%s", cmd[k]); - if(k < blank - 1) + print_line(cmd[i]); + if(i < blank - 1) printf(" "); - ++k; + i++; } - if(flag == 0) + if (flag == FALSE) printf("\n"); - return (TRUE); } -static void check_echo_flag(char **av, int *i, int *flag) +static void check_flag(char **av, int *idx, int *flag) { + int i; int j; - *i = 1; - if (av[1] && av[*i][0] == '-' && av[*i][1] == 'n') + i = 1; + while (av[i] && av[i][0] == '-' && av[i][1] == 'n') { - while (av[*i][0] == '-' && av[*i][1] == 'n') + j = 1; + while (av[i][j] != '\0') { - j = 1; - while (av[1][j] != '\0') - { - if (av[1][j] != 'n') - return ; - j++; - } - (*i)++; + if (av[i][j] != 'n') + return ; + j++; } - *flag = 1; + i++; + *idx += 1; + *flag = TRUE; + } +} + +static void print_line(char *line) +{ + int i; + + i = 0; + while (line[i]) + { + if (line[i] == '$' && line[i + 1] != '\0') + break ; + printf("%c", line[i]); + i++; } } diff --git a/srcs/builtin/ft_echo.o b/srcs/builtin/ft_echo.o deleted file mode 100644 index ea867e6c040094f09479828eedacc2e1a2a1bd0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1512 zcmah}Ur1A76#uT7&NS}`1EVM(5`-FP{~*YiIp;g){JwL(`{!$AeY24< z?Eu39sfYOLuyjCxV~{xt?1M$h1-g{>d~h-n;v)!QMN*b)yZ(?dJhbC`R&x~})fTZd zQLvuPkn$jenXsl}@lmxQ#BM&1hk78K_Zo3srjAh_^=D3uPlioPB;$`_@ev_z_HPGa zw5x)k+6;n^?yUPD^SE|V3K1C-(W&rw#4V`pZ&+oIDZUxSr(D*|m=}^;=diXz9dPk|K(45ww1E8y?3fIjJ&<5WsH33 z_14xFj%0dTWnJ9KnwQPmpS$lZ>8F^SSIx>Zp(0I~leY+KgWD+|8Y{bvZE$Cx%*`h5 z)GzA`e!CLT)8GFU8r1AcTu;A8OwQS}h)Pt4P<@0uE#LHo9(yw|XRPVzllu|`^%q}) zbIG-*#@ZWP9v(O=-NlkK3UUPMkDi4&P|z3Je0Bw$p511v4#f3YS>1)GV-(~i6-pm) zNi?qGvp;GXU+K2%7v1siEp;YX2Xo&()G4gHni|*zx+21HH?k+*=7yQ}_!iSre$C&~ z=zET=)7U=&nfrs&0maW)U#tH~-L=E?t`jJ)A2PV<=Bab`jUit5o z|5EwSluzFd@&ebPfxsCo_-+Cn&}dH{Pr4I+D-3T=>RE^H!4IR#^}fS8a7kRPiC?Pm znHUw3RLl|yD{Lhb48N&l+!EobQP@#SM9i@XY>q|D2htYNhv88sCh=>uqD +#+ +:+ +#+ */ +/* By: donghong < donghong@student.42seoul.kr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:23:29 by kichan #+# #+# */ -/* Updated: 2023/07/22 15:11:22 by eunwolee ### ########.fr */ +/* Updated: 2023/07/29 20:38:37 by donghong ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,7 @@ static int is_num_str(char *str); static void exit_not_num(t_data *data, t_leaf *cur_root); -t_bool ft_exit(t_data *data, t_leaf *cur_root) +void ft_exit(t_data *data, t_leaf *cur_root) { int status; char **cmd; @@ -45,7 +45,7 @@ t_bool ft_exit(t_data *data, t_leaf *cur_root) printf("bash: exit: too many arguments\n"); status = 1; } - return (TRUE); + // return (TRUE); } static int is_num_str(char *str) diff --git a/srcs/builtin/ft_exit.o b/srcs/builtin/ft_exit.o deleted file mode 100644 index 541740261d373124f3200d89e0de279632cfc147..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1764 zcmb7FO-NKx6h32SFEif|3I&C4kzmD?wn|Ad>cJBfEbM2I+@^8ViRO*YyrC%=2u5RG zgXSh^69huLpk-}rpul#us0eB?L`A}cE-gy?&VBcpqqXS3x!*nKeCOQr?$6B2AK#X@ z5Ct|7252=@tHNMFA-kY?4*Ww}I1$pqIgH9iO=9JGEJ8TZjN{EcyWc$D|Ht-cU({M$ zk8}Gr6Ybz&HQiwFMTkhsNyhA9o?qvbir4#%C|kAbmqUM%M0_+HaYWj_8nXw5 z=sCF>#N>!dxTu^LQI9{hg#OegSCkYYIwFRW;dsqO z5zWM$TDlZYjdU11?=YN1!ib0MYeqOZoQ_9rCsi45PIVYI0?Alpm0~2LW9e8jI_O$Yf|vlsr|Q0o_V5u(;7 zI$j^VS#@H&{|12v1Jr;ofOvb250yQm>>_G$ z{0UITfe3}}13CW=kmFN8j*kQJ#6va^5;}*0c|AbpnLy_42jY!~_5ktw8|nh0ZjGT3 zAnj&gJpv_mK-!>e`}>V4={zXm7re&gwJU7Cd~4%;^suX#$HKowYva~Bo5YYK_{xzO zmMBtA*h!}dzsqUc5x9Ps$5H~94WT4?Bs<}-M`nkeM2y5J{uG=c5|+)@ diff --git a/srcs/builtin/ft_export.c b/srcs/builtin/ft_export.c index 873385d..8be7bb5 100644 --- a/srcs/builtin/ft_export.c +++ b/srcs/builtin/ft_export.c @@ -3,22 +3,22 @@ /* ::: :::::::: */ /* ft_export.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: donghong < donghong@student.42seoul.kr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:25:07 by kichan #+# #+# */ -/* Updated: 2023/07/22 15:15:15 by eunwolee ### ########.fr */ +/* Updated: 2023/08/03 17:12:35 by donghong ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -t_bool ft_export(t_data *data, t_leaf *cur_root); +void ft_export(t_data *data, t_leaf *cur_root); static int check_underbar(char ch); static int check_name(char *str); static char **sort_bubble(char **str, int size); static void print_export_order(t_data *data); -t_bool ft_export(t_data *data, t_leaf *cur_root) +void ft_export(t_data *data, t_leaf *cur_root) { char **cmd; char **tmp; @@ -53,7 +53,7 @@ t_bool ft_export(t_data *data, t_leaf *cur_root) ++i; } } - return (TRUE); + // return (TRUE); } int check_underbar(char ch) @@ -164,8 +164,8 @@ static void print_export_order(t_data *data) t_list *cur; i = 0; - lst_size = ft_lstsize(data->input->envs); - cur = data->input->envs; + lst_size = ft_lstsize(data->envs); + cur = data->envs; order_copy = (char **)ft_calloc(sizeof(char *), lst_size + 1); while (cur) { diff --git a/srcs/builtin/ft_export.o b/srcs/builtin/ft_export.o deleted file mode 100644 index 29dc6b07cda7b0e217be4064da2ae2805f085b31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3276 zcmb7GUu+ab7@xxmM+LShU`)m;`3zc}W z$+o8F2E{}YB_{F+CMG=i;Daf(AibCvi>XNys<{|QdZ8xO^r6s7{e3gDch{plILYj9 zzCZKL_kHut%>MG=uZOD`3q8T`L2p10ufRt|M|%!^kOYru&6rGWJIz50Xkt?*d(=$R zv3ngc7W5JQ*pVt7j9z$BjL06%jjU#D3$YqlA3@Me)5#@az zdjIyU6#S9^b|Nh7Ns>LqSa&ccdxW>%a3QGFIZQ0`$o(p<@Xf%YN_UORa0O-3O)f$f1^!s zOu$03^eb92td3cu&~OXpA;8umOy8aLZiWi(Y@xd=%-$iBqk4(Jz@g*l<)=`Hblg$9zau4lE3Q#)_=wjJFAod* zDYk>|+6pT;5ByYF9jHaV-?Ud!Kd}D6qt;QoJhoE#i)!(gjM0W7Ip^i?Fy+GV?!`(f zsW=b_c^3qN1LH?a-VdnETkvlT8N329{1Yy~KN|ZTB@~Ha{bW%6RD=yhWNi%R2N#hz z*EnZmhVOzu!V^Gy^0C}PX^|#TK`*fiCfzHROBwhZLMTKl%l<=5xdqjr-$c;mO+n<| zjmYuqvFu4aA8yJ~ThwjwM%LKnn09X_opsbR-HD{FCe!JRnsZ`VXG$C8P-nuyyeC()I#vyE(9u8~FUo^0bikt=EnMaV=^GfVhCP9Y9=4 z8a?`Jfp-xL+4}=X_C^G1mw`~xJ^|tvLVF)bdajUfJO)J5bbN^a29W0O0^*|7wgR69 z_5opM7b()!#dx+saN;sU6%Oq)Zl5iz)hPHgmW=%}%$oGYO(AYvX$=ok*EhPn=J(_ +#+ +:+ +#+ */ +/* By: donghong < donghong@student.42seoul.kr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:24:31 by kichan #+# #+# */ -/* Updated: 2023/07/22 15:12:15 by eunwolee ### ########.fr */ +/* Updated: 2023/07/29 20:52:11 by donghong ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -t_bool ft_pwd(t_data *data, t_leaf *cur_root); +void ft_pwd(t_data *data, t_leaf *cur_root); -t_bool ft_pwd(t_data *data, t_leaf *cur_root) +void ft_pwd(t_data *data, t_leaf *cur_root) { (void)data; (void)cur_root; + char *buf; size_t buf_size; @@ -36,7 +37,7 @@ t_bool ft_pwd(t_data *data, t_leaf *cur_root) { printf("%s\n", buf); free(buf); - return (FALSE); + return ; } free(buf); if (errno != ERANGE) @@ -46,5 +47,4 @@ t_bool ft_pwd(t_data *data, t_leaf *cur_root) } buf_size *= 2; } - return (TRUE); } diff --git a/srcs/builtin/ft_pwd.o b/srcs/builtin/ft_pwd.o deleted file mode 100644 index d566370ccee0062c282e41cc4d128fc8e8f7472e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1224 zcma)5O=}ZD7=9B=8ml!q7^xtV7QYY{t0?qRsOZ8R1WT#lK^ekklLpcxCKIv<0U=Rb zgW$!BKf#M$z4(EGH}wa2*o&}&LQhgWG(PXnY?}lHUwG%4=lytQc4p`E@1HxWn%o)gfyEq}#LjwbQYzO|dan7peRF+}$Fomn!g}26VPmr# zo1%LRu}SH)RI^emn}C$#da=%e$^SC@i~A=i_UF_$8wE$ncCAyX6{Wm(HLhjcG9+(s z4*TLW3ow`?7?YIJ-H@ebVbj$Oll#k>rWK>NWb_QB14J9~obdvD4j#2-W+(+`<3%|h zqJKZo!=bGL(H|jT*SMEGy&L)e$qnIu6TKgc!tZVizr7_s+97uX1HLFR=mxJ@Tt|I7 z6uoXpnfph$=<)KSIQ3?)XwVJCpdILr-Zo|Wr?_~~4$)A-^rcZlp>KbU>dwCvy$_4G z-($Tn3PeM1X(7`$D_#8CN_HUL1qtEX!S}V{a9C2(DO9U#DrzCjO|2EPMDU+xwVTGn;VEgQ%>E1Kud0&y)Cfb~+B zfSHl6IIiQIj*L?yX*xH-S${OoZyP*`H6mNq+%O`(jM4hj6P%>$RTRl`gtDays@)>l gh>jnxQJP5uZ(NlKPsw#LD%t21(G}fQ#PvPW9~*|K-v9sr diff --git a/srcs/builtin/ft_unset.c b/srcs/builtin/ft_unset.c index e9973e0..93c8493 100644 --- a/srcs/builtin/ft_unset.c +++ b/srcs/builtin/ft_unset.c @@ -3,19 +3,19 @@ /* ::: :::::::: */ /* ft_unset.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: donghong < donghong@student.42seoul.kr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 22:51:02 by kichan #+# #+# */ -/* Updated: 2023/07/22 15:13:08 by eunwolee ### ########.fr */ +/* Updated: 2023/08/03 17:12:24 by donghong ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -t_bool ft_unset(t_data *data, t_leaf *cur_root); +void ft_unset(t_data *data, t_leaf *cur_root); static void env_clear(t_data *data); -t_bool ft_unset(t_data *data, t_leaf *cur_root) +void ft_unset(t_data *data, t_leaf *cur_root) { char **cmd; int arg_cnt; @@ -35,22 +35,22 @@ t_bool ft_unset(t_data *data, t_leaf *cur_root) printf("else start!"); while (i < arg_cnt) { - env_remove(data->input, cmd[i]); + env_remove(data, cmd[i]); ++i; } } - return (TRUE); + // return (TRUE); } static void env_clear(t_data *data) { printf("env clear start!\n"); - t_list *current = data->input->envs; + t_list *current = data->envs; while (current != NULL) { t_list *next = current->next; ft_lstdelone(current); current = next; } - data->input->envs = NULL; + data->envs = NULL; } diff --git a/srcs/builtin/ft_unset.o b/srcs/builtin/ft_unset.o deleted file mode 100644 index 876506cf9f881caee6ea47567bf74fb4b08c5666..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1456 zcmb7EO=}Zj5T4X(L$yr~Dp8cK;uk`siWikYO1ttFEEH{_9?IL0Y}!b&Daob=AtC7-ScgzJr@*TTk$DKM~VE9>$-t60(Hwm{d5G%!cEz~ zi8+F>lZT1sU{Oz#P!_K7mGh6V^FL);*xy9;=diFV9buQ+!qK7epm56JCUXf}ZwjZ< zbV0Qlu=U2eUgx$>sUd2y4sI*tMJo*oJs;wtTI|oRALSie|KjGf?t0-LyJ1JK-_aYP z+GUP7dIzl|uuYMis0-)jhFj-M*Q@UW_H@1VaeI5ag;aXWLx}48;n}tHwb0Nq`$+Ah zx%<>&ui#SC31$SMk7;`xGdL1L0$R!Pm&T0RI_iWD8qB6hG0(VE9GP=z#yuaNZbnRpqHZ z2l7sWvzI9P9l7`pM8Cq~-8=CH7O#5rsq&YVKMMVUe7d zMmb|iJYK6*Bz#~>rX}$f;BJ^p(tW-p7x5Ld(w?heroot->left_child->right_child->token->str); + if(data->root->left_child->right_child == NULL) //no command but redirection 존재 + { + check_redirect(data->root,data); // redirection 실행 + recover_std(data); // 다시 돌려놔줘야함 안그러면 redirect로 바꾼곳으로 계속출력됨 + // free(data); + return (TRUE); + } + if(bulit != 0) + { + check_redirect(data->root,data); + exec_bulitin(bulit,data,data->root);// flag 에 따라 return 부모 프로세스 or exit 자식 쿠 + recover_std(data); // 커맨드가 하나이기 때문에 바로 종료 + // free(data); + return (TRUE); + } + return (FALSE); +} \ No newline at end of file diff --git a/srcs/execute/execute.c b/srcs/execute/execute.c deleted file mode 100644 index 53a5868..0000000 --- a/srcs/execute/execute.c +++ /dev/null @@ -1,104 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* execute.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/22 12:06:55 by eunwolee #+# #+# */ -/* Updated: 2023/07/22 18:52:50 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../../incs/minishell.h" - -t_bool execute(t_data *data); -static t_bool command(t_data *data, t_leaf *cur_root); -static void exec_cmd(t_data *data, t_leaf *cur_root); -static void exec_fork(t_data *data, t_leaf *cur_root, t_cmd *cmd); -static void wait_child_processes(t_data *data); - -t_bool execute(t_data *data) -{ - t_leaf *cur_root; - - cur_root = data->input->root; - data->cmd_idx = 0; - while (cur_root) - { - if (cur_root->left_child->left_child) - redirect(data, cur_root); - command(data, cur_root); - data->cmd_idx++; - cur_root = cur_root->right_child; - } - wait_child_processes(data); - return (TRUE); -} - -static t_bool command(t_data *data, t_leaf *cur_root) -{ - t_bool (*func)(t_data *, t_leaf *); - - if (!cur_root->left_child->right_child) //cmd 없을 때 - { - // 다시 돌려놔줘야함 안그러면 redirect로 바꾼곳으로 계속출력됨 - recover_std(data); - return (FALSE); - } - func = get_builtin_func(cur_root->left_child->right_child->token->str); - if (!func || data->input->pipe_num) // execve - exec_cmd(data, cur_root); - if (func(data, cur_root) == FALSE) - return (FALSE); - return (TRUE); -} - -static void exec_cmd(t_data *data, t_leaf *cur_root) -{ - t_cmd *cur_cmd; - t_cmd *pre_cmd; - - cur_cmd = &data->cmd[data->cmd_idx]; //왜 &? - pre_cmd = &data->cmd[data->cmd_idx - 1]; - signal(SIGQUIT, SIG_DFL); - if (pipe(cur_cmd->fd) < 0) - // exit(1); 에러처리 - cur_cmd->pid = fork(); - printf("%d\n", cur_cmd->pid); - // if (cmd->pid == -1) 에러처리 - // return; - if (cur_cmd->pid == CHILD) - { - data->parent = 1; - link_pipe(data, cur_cmd, pre_cmd); - exec_fork(data, cur_root, cur_cmd); - } - close_pipe(data, cur_cmd, pre_cmd); - signal(SIGQUIT, SIG_IGN); -} - -static void exec_fork(t_data *data, t_leaf *cur_root, t_cmd *cmd) // 이제경로 찾고 하던 대로해주면됨 -{ - data->input->env_array = env_to_array(data->input); - abs_path(data, cmd); - set_path(cur_root, cmd); - // if (!cmd->cmd_path) - // exit(1); - execve(cmd->cmd_path, cmd->cmd_list, data->input->env_array); - // if (execve(cmd->cmd_path, cmd->cmd_list, data->input->env_array) == -1) - // exit(1); -} - -static void wait_child_processes(t_data *data) -{ - int i; - int status; - - i = 0; - while (i < data->input->pipe_num) - { - waitpid(-1, &status, 0); - i++; - } -} \ No newline at end of file diff --git a/srcs/execute/execute.o b/srcs/execute/execute.o deleted file mode 100644 index a1d869457d014f0fe838408c775cc5978e0ffcc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2472 zcmb7GU1%It6uuj4I%=9-YYHn$8&Dw+os#$_qHM4mZmBDYG$2U1na<88Lw9G_-Pv>% zBGqZdVF*V2!N(v7qAx`de2~`ILi%D`e2_lwi?RU=iw&|!?E0NMcaq&n^57w7zI%S} zIrpBK?CpQPyo%(bY!FODo09$u)IsNTSHqbB5znT{qTqVFC0&C)A=e3J zH1FqxKcn#=hsaadE7#umrrYguxXPFxs0HrbNS(c2IFUSdiSn@IG2E1@5A`gyxnFN# zcd*<&#gdngP+YJS?!2DeqPUH>q*D0>nUw4&XlP-1ezu8jnkfBn=tte8y~gpKW}vCJ zR5S2Keo}PrcpYpxgs5mIdK0jw>VxbS8W`K^4YdDWCUsi`0Ta{EW!E4TplNX{r?Alt2-kv{dYP$g-|da2Vj-7(aV`rDq;G zm0oPF%_TS|%Fd7UL1sYGh%ptgdX&qDV!IK4&l z)$OYK8JiqVeK7FKA$*1Wz76qBu({8>z<|53g9W@7ToG5PzL%!K7E3b!nbYSnm~iK>;i ztCs09F)yr!?TVUfxb+$n7YqpIf?dpuO0{fSwVDNO&7OCRB9b&LQxwY8^H5o?s2J`7 z6UMokT2=51#4Utwi<r7mK3poEH_lf~8q3*DSS01?5Gnip}#dluISU!9s3gmaw8? VDmE7L*z8>0F1ofO3U$Y1{{c$Y@>~D_ diff --git a/srcs/execute/execve.c b/srcs/execute/execve.c new file mode 100644 index 0000000..5d97632 --- /dev/null +++ b/srcs/execute/execve.c @@ -0,0 +1,99 @@ +#include "../../incs/minishell.h" + + +void do_cmd(t_data *data) +{ + int builtnum; + + builtnum = check_bulitin_func(data->root->left_child->right_child->token->str); + if (data->root->left_child->left_child != NULL) + check_redirect (data->root,data); // redirect가 있는거는 먼저실행 + if (data->root->left_child->right_child== NULL) //커맨드가 없을때 종료하기 + exit(g_exit_status); + if (builtnum != 0) + { + exec_bulitin(builtnum,data,data->root); + exit(0); // 실행 후 종료돼야함 + } + else + exec_fork(data); +} + +void execute(t_data *data) +{ + count_pipe(data); + heredoc_flag(data->root,data); //heredoc 이 있는 지판별해준다 + data->info->heredoc_file= (char **)ft_calloc(data->info->heredoc_flag+1,sizeof(char *)); + if (!data->info->heredoc_file) // 파이프 기준으로 <info->pipe_num && !data->info->heredoc_flag)//단일 커맨들일때 히어독도 x + if(check_bulitin(data) == TRUE) // bulitin 일때는 바로 실행하고 종료 아닌경우에는 sigle command frok 해야함 + return ; + if(data->info->heredoc_flag) // heredoc 일 경우에는 무조건 fork 를 해줘야함 + { // 시그널 함수 때문인거같음 ctrl +d 눌렀을때 종료가되면안되는데 포크안햇을시 종료가됨 + if (fork_heredoc (data)) + { + // free(data); + return ; + } + } + execute_cmd(data,0); //그 외일경우 실행해 주기 + // free(data); +} + +void exec_fork(t_data *data) // 이제경로 찾고 하던 대로해주면됨 +{ + t_pipe *base = data->pipe; + if(!data->root->left_child->right_child) + return ; + data->env_array = env_to_array(data); + abs_path(data); + base->command = set_path(data ,data->root->left_child->right_child); + if (!base->command) + exit(1); + execve(base->command, base->cmd_path, data->env_array); + // if (execve(base->command, base->cmd_path, data->env_array) == -1) + // exit(1); +} + +void execute_cmd(t_data *data,int flag) // flag 는 자식이랑 부모 차이를 두기위해서 주는거임 +{ // 부모에서 exit 하면 return 자식에서 하면 exit + int i; + + i = data->info->pipe_index; + t_pipe *base = data->pipe; + t_leaf *head = data->root; + + while (i < data->info->pipe_num + 1) + { + signal(SIGQUIT, SIG_DFL); + if (i < data->info->pipe_num) + if (pipe(base->com[i].fd) < 0) + exit(1); + base->com[i].pid = fork(); + if (base->com[i].pid == -1) + { + if (flag) + exit(1); // 자식일때는 exit ; + else + return; + } + if (base->com[i].pid == 0) + { + data->info->parent =1; + if (data->info->pipe_num !=0) + link_pipe(i, base,data); + do_cmd(data); + } + else + data->root = data->root->right_child; // pipepe 순회하기 root 바꿔주기 + if (data->info->pipe_num) + close_pipe(i, base,data); + signal(SIGQUIT, SIG_IGN); + i++; + } + data->root = head; // root 는 원래 root 로 다시 돌려주기 + wait_child_processes(data); + + // free_cmd(base); +} diff --git a/srcs/execute/freepipe.c b/srcs/execute/freepipe.c new file mode 100644 index 0000000..5b80fc5 --- /dev/null +++ b/srcs/execute/freepipe.c @@ -0,0 +1,51 @@ +#include "../../incs/minishell.h" + +// void free_cmd(t_pipe *base) +// { +// int i; + +// i = 0; +// while (base->cmd_abs[i]) +// { +// free(base->cmd_abs[i]); +// i++; +// } +// free(base->cmd_path); +// free(base->com); +// } + +void get_input(t_data *data) +{ + data->input = readline("minishell$ "); + if (!data->input) + program_error_exit("bash"); + lexer(data); + syntax(data); + parser(data); +} + + + +void close_pipe(int i, t_pipe *base,t_data *data) +{ + if (i == data->info->pipe_num) + close(base->com[i - 1].fd[0]); + else if (i == 0) + close(base->com[i].fd[1]); + else + { + close(base->com[i - 1].fd[0]); + close(base->com[i].fd[1]); + } +} + +void check_file(int fd,t_data *data) +{ + if (fd < 0) + { + close(fd); + g_exit_status = 1; + if (data->info->parent ==0) // 자식에서 종료 or 부모에서 종료 확인해주기 + exit(1); + } +} diff --git a/srcs/execute/get_input.c b/srcs/execute/get_input.c deleted file mode 100644 index 95c24df..0000000 --- a/srcs/execute/get_input.c +++ /dev/null @@ -1,23 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* get_input.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/21 20:37:23 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 21:39:04 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../../incs/minishell.h" - -void get_input(t_data *data) -{ - data->input->line = readline("minishell$ "); - if (!data->input->line) - program_error_exit("bash"); - lexer(data->input); - syntax(data->input); - parser(data->input); -} \ No newline at end of file diff --git a/srcs/execute/get_input.o b/srcs/execute/get_input.o deleted file mode 100644 index 1656449d3925d29b2215625a914c4d6dac8b2500..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1040 zcma)4O=}ZT6ulEQty;|#6h?57MHk&<H4$_%XF&?Iru6JxeIwRxQLoyOyxQ(i*Hdg19B)(7;`hR zCW>1w!91&1=q$VXTX(-=evaaP&0e=3HZ2e0mr=aSeD8MAD|qZk)!};x$j%f#Zap)S z%(~6bP1x1>!2JE*Ih_rMU!0z!bdjiC#DX{A0X#daa)HWlF*#K7+ip)EfZO1h&k!&% znH4WjGXEbuRHLtI_}y2dgA?_7?I|X+U#-UXPtGmVUL1b%pM2~_ag?-mr?XO}XJIn43~0Llo2>(MVpm+`?LQzd^*w)S zVet*RR*=6Aum8!dcptQR**_}Xx>W2$-V;_>djv$Tb{B{p*Vce|kF|QvugW>+z$=ae zWVhw>z{=FER`Yxbvzgt@xno4@b6j+%#_7%+m)dllIN6JBm=d?NM?m;ch32HT?xD*? +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/22 14:50:41 by eunwolee #+# #+# */ -/* Updated: 2023/07/22 15:40:08 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../../incs/minishell.h" - -void abs_path(t_data *data, t_cmd *cmd); -void set_path(t_leaf *cur_root, t_cmd *cmd); -static char **get_path_envp(char **env); -static t_bool check_path(char *str); -static char *search_path(t_cmd *cmd); - -void abs_path(t_data *data, t_cmd *cmd) -{ - int i; - char *tmp; - - i = 0; - data->input->env_array = env_to_array(data->input); // 환경 변수 array에 담아주기 - cmd->cmd_abs = get_path_envp(data->input->env_array); - if (!cmd->cmd_abs) - exit(1); - while (cmd->cmd_abs[i]) - { - tmp = cmd->cmd_abs[i]; - cmd->cmd_abs[i] = ft_strjoin(tmp, "/");// 절대 경로 만들어주기 - free(tmp); - i++; - } -} - -void set_path(t_leaf *cur_root, t_cmd *cmd) -{ - char *tmp; - - cmd->cmd_list = join_cmd(cur_root->left_child->right_child); //ls - l - y -t - if (!cmd->cmd_list[0][0]) - exit(1); - if (check_path(cmd->cmd_list[0]) == TRUE) - { - tmp = ft_strdup(cmd->cmd_list[0]); - if (access(tmp, X_OK) == 0) - { - cmd->cmd_path = tmp; - return ; - } - free(tmp); - } - else - cmd->cmd_path = search_path(cmd); -} - -static char **get_path_envp(char **env) -{ - char *path; - int i; - - path = NULL; - i = 0; - if (*env == NULL) - return (NULL); - while (env[i]) - { - if (ft_strncmp("PATH=", env[i], 5) == 0) - path = env[i]; - i++; - } - if (path == NULL) - return (NULL); - return (ft_split(path, ':')); -} - -static t_bool check_path(char *str) -{ - if (!ft_strncmp("./", str, 2) || \ - !ft_strncmp("../", str, 3) || \ - !ft_strncmp("/", str, 1)) - return (TRUE); - return (FALSE); -} - -static char *search_path(t_cmd *cmd) -{ - char *tmp; - int k; - - k = 0; - while (cmd->cmd_abs[k]) - { - tmp = ft_strjoin(cmd->cmd_abs[k], cmd->cmd_list[0]); - if (access(tmp, X_OK) == 0) - return (tmp); - free(tmp); - k++; - } - return (NULL); -} diff --git a/srcs/execute/path.o b/srcs/execute/path.o deleted file mode 100644 index 9b2324febc53e6053d2ae8d92f2eff919e5332a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2544 zcmb7FPiP}$6#vq#-Ke|GC>AOdn}Y{0lU+omNDC=;@LRF6N>}!vejBILrrM?@nP?OP z!R)S$!-C*?kVWyRc+rzkWnEEBFS4i?z2y)gfd~OFMXUAqzVA&kNxOoNzWIIc@4WZE z*U8O4fB)yW5V2zd5AY~BK7vOQ47wM*O@>=g`Zi;DfMP(QjGTg)@)0TJdnMnTjlATX zU+T-@=~F5MMENK-izHM7gbG1OO1T9;zm{8Ng;In0!aNDK|IBrU@my{wqCR(XV=LqO zs+fCqEw`-HlM6i~4mY^2k6774K2n{I3&E)eQYz(T)k;3I;hBKp`Y!Nb8k}!?%;aNH z+==)oLPf_#bpm)_#-K zPEyv&d$LyS)}0PT%fQ)_L20sOghdEvCS`4Y(iqafzOf5K5{9m88q(2i zlLFQtos{lkM^9mOS*Ohfg2iBb?nN7trDEK5vb!U&X z?aTC_leW8yO|F;Lrl$%X+Lc%4)-m}Vn!HY1-9svCz)N@33Y;d&tU1m0C%VdVYxtda z>!@<;`lDeoOae0p5A_u3N8gwB3DR-ght(gKxhR@AE=p9W$H7a{jcDr(*B(n;dLpbn zVn7`&OuTiycb~e=yNoMLi*)-|dzw4Y+1kcj?nW!JhFeKYW2D@Vh5bXh#V)2gg;(v+ zPIG10m06u#TVrIUt?yg!>sx=pac8j96HwKieNwjR%Y`$ZB5?Lmko8~t65SKCq~R_o zB;XO!N;hRNyW1b>Y18)6lheBvV5qp@!KwAvFJiAhBVr{hW}P@5e+ORo zLq7$s{DodYT)zmaZtF4TmrRXi=@8_3`y<^VZ=$&8MT+0bn;0WY+v7lpx cacmd = (t_cmd *)ft_calloc(data->input->pipe_num + 1, sizeof(t_cmd));// heredoc 때문에 하나를 여유롭게생성 - if(!data->cmd) - program_error_exit("bash"); -} - -void link_pipe(t_data *data, t_cmd *cur_cmd, t_cmd *pre_cmd) +void link_pipe(int i, t_pipe *base,t_data *data) { - if (!data->input->pipe_num) - return ; - if (data->cmd_idx == 0) + if (i == data->info->pipe_num) { - if (close(cur_cmd->fd[P_READ]) == -1 \ - || dup2(cur_cmd->infile_fd, STDIN_FILENO) == -1 \ - || dup2(cur_cmd->fd[P_WRITE], STDOUT_FILENO) == -1) - program_error_exit("pipe"); + dup2(base->com[i-1].fd[0], STDIN_FILENO); + close(base->com[i-1].fd[0]); } - else if (data->cmd_idx == data->input->pipe_num) + else if (i == 0) { - if (close(pre_cmd->fd[P_WRITE]) == -1 \ - || dup2(pre_cmd->fd[P_READ], STDIN_FILENO) == -1 \ - || dup2(cur_cmd->outfile_fd, STDOUT_FILENO) == -1) - program_error_exit("pipe"); + close(base->com[i].fd[0]); + dup2(base->com[i].fd[1], STDOUT_FILENO); + close(base->com[i].fd[1]); } else - { - if (close(cur_cmd->fd[P_READ]) == -1 \ - || dup2(pre_cmd->fd[P_READ], STDIN_FILENO) == -1 \ - || dup2(cur_cmd->fd[P_WRITE], STDOUT_FILENO) == -1) - program_error_exit("pipe"); - } + { + close(base->com[i].fd[0]); + dup2(base->com[i - 1].fd[0], STDIN_FILENO); + dup2(base->com[i].fd[1], STDOUT_FILENO); + } } -void close_pipe(t_data *data, t_cmd *cur_cmd, t_cmd *pre_cmd) +// 정상 종료 확인해주고 수정; +void wait_child_processes(t_data *data) { - if (data->cmd_idx == 0) - { - if (close(cur_cmd->fd[P_WRITE]) == -1) - program_error_exit("pipe"); - } - else if (data->cmd_idx == data->input->pipe_num) - { - if (close(pre_cmd->fd[P_READ] == -1)) - program_error_exit("pipe"); - } - else + int i; + int status; + + i = 0; + while (i < data->info->pipe_num + 1) { - if (close(pre_cmd->fd[P_READ]) \ - || close(cur_cmd->fd[P_WRITE])) - program_error_exit("pipe"); + waitpid(-1, &status, 0); + i++; } } - -void recover_std(t_data *data) -{ - dup2(data->oristdin,STDIN_FILENO); - close(data->oristdin); - dup2(data->oristdout,STDOUT_FILENO); - close(data->oristdin); -} \ No newline at end of file diff --git a/srcs/execute/pipe.o b/srcs/execute/pipe.o deleted file mode 100644 index 076121a92329c8731f36e4c12c222de8b3b5df62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2172 zcmaJ?O=uHQ5T4Z7My+lR7OM!YC{nN$D+q#!tv0#`6_FMzBCj#sw!t(B$yQgP5Zo#a zi%`LX7r~=9(Svvrf9lDD;z9A~K}bcRh)62h`pxd_CZ>%;X1|@8Z|2RLeY<({>)T=z zQD_z60u4hW4Y;&JA)BGo9H=AvIRVnaIS}7QO=6WWDPW>Zf`&I?NOC7Gq zxkHW8N|*{27NK4uZ|0KeQE}GR^XsgY_?Fex*+jBT;6%O5cs8Ce)kOMoGCi!+@xCC) zH#{In!M$R?sK>4$Y?Awg{8LgXV@!?Y;^T%FtnIHL^`3ZPx-a#_q;*7N{ypPfXe-ox z6xv#9gtG9W>@T2?HNa?uCi_sLo_ifT&T`vJZ9S+~DN_2Oh%cVf_ z6C-U(j=;m9&H>?928d_d;yLjU{T3>zmx5H>th`Boe>e$pLLIBw?Ll`=l$|Th#n_K3 zGwMF1Vr;(32g+B^bO(4Lo*$!ZGAl1IuM9cq0iURU#DCY~USwJPnRwoNSp7gsS?>5(4^mx+uGF}P$3KMmG1mcbEdL{N_v9AFm@J|BqYZ=Fd`GbPTfE+&z z#II$q_?NJE_WuI1{|k`w?u!48`1!w!*G&ta0W$9>kn?+ioZl_+O@jQPW!?wuk$LZc z%zFXkdiMoy0h!kaWZoel^R@#q`>r7%N;UQfwhICRzXpPTKK8-Swtt?Ei+vA8S$07= z?#m9`RGBnfW1p?D`85N-Aq-^U-0FN%*<5B6|69t)_u diff --git a/srcs/execute/pipeutils.c b/srcs/execute/pipeutils.c new file mode 100644 index 0000000..e605571 --- /dev/null +++ b/srcs/execute/pipeutils.c @@ -0,0 +1,42 @@ +#include "../../incs/minishell.h" + +void count_pipe(t_data*data) +{ + t_leaf *temp = data->root; + while(temp) + { + data->info->pipe_num++; + temp= temp->right_child; + } + if(data->info->pipe_num!=0) + data->info->pipe_num--; // 파이프가 1나일때 2개가됨 + data->pipe->com = (t_pid *)ft_calloc(data->info->pipe_num+1,sizeof(t_pid));// 하나를 여유롭게 생성하는이유는 herdoc 때문에 하나를 여유롭게생성 + if(!data->pipe->com) + program_error_exit("bash"); +} + +void heredoc_flag(t_leaf *leaf,t_data *data) +{ + if (!leaf) + return ; + if (leaf->token) + { + if (leaf->token->type == T_REDIRECT) + { + if (leaf->token->redirect_type == T_HEREDOC) + data->info->heredoc_flag++; + } + } + heredoc_flag(leaf->left_child,data); + heredoc_flag(leaf->right_child,data); +} + + + +void recover_std(t_data *data) +{ + dup2(data->info->oristdin,STDIN_FILENO); + close(data->info->oristdin); + dup2(data->info->oristdout,STDOUT_FILENO); + close(data->info->oristdin); +} diff --git a/srcs/execute/setpath.c b/srcs/execute/setpath.c new file mode 100644 index 0000000..885e66a --- /dev/null +++ b/srcs/execute/setpath.c @@ -0,0 +1,89 @@ +#include "../../incs/minishell.h" + +static char **get_path_envp(char **env) +{ + char *path; + int i; + + path = NULL; + i = 0; + if (*env == NULL) + return (NULL); + while (env[i]) + { + if (ft_strncmp("PATH=", env[i], 5) == 0) + path = env[i]; + i++; + } + if (path == NULL) + return (NULL); + return (ft_split(path, ':')); +} + +void abs_path(t_data *data) +{ + int i; + t_pipe *pipe = data->pipe; + char *temp; + + i = 0; + data->env_array = env_to_array(data); // 환경 변수 array에 댐아주기 ! 1 + pipe->cmd_abs = get_path_envp(data->env_array); + if (!pipe->cmd_abs) + exit(1); + while (pipe->cmd_abs[i]) + { + temp = pipe->cmd_abs[i]; + pipe->cmd_abs[i] = ft_strjoin(temp, "/");// 절대 경로 만들어주기 + free(temp); + i++; + } +} + + +static int check_path(char *str) +{ + if (!ft_strncmp("./", str, 2) || \ + !ft_strncmp("../", str, 3) || \ + !ft_strncmp("/", str, 1)) + return (1); + return (0); +} + +char *set_path(t_data *data, t_leaf *leaf) +{ + char *tmp; + t_pipe *base; + + base= data->pipe; + base->cmd_path=join_cmd(leaf); //ls - l - y -t + if (!base->cmd_path[0][0]) + exit(1); + if (check_path(base->cmd_path[0]) == 1) + { + tmp = ft_strdup(base->cmd_path[0]); + if (access(tmp, X_OK) == 0) + return (tmp); + free(tmp); + return (NULL); + } + else + return (search_path(base)); +} + +char *search_path(t_pipe *base) +{ + char *tmp; + int k; + + k = 0; + while (base->cmd_abs[k]) + { + tmp = ft_strjoin(base->cmd_abs[k], base->cmd_path[0]); + if (access(tmp, X_OK) == 0) + return (tmp); + free(tmp); + k++; + } + return (NULL); +} diff --git a/srcs/execute/sig.c b/srcs/execute/sig.c deleted file mode 100644 index 21bb05f..0000000 --- a/srcs/execute/sig.c +++ /dev/null @@ -1,48 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* sig.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/15 18:40:34 by kichlee #+# #+# */ -/* Updated: 2023/07/22 14:49:38 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../incs/minishell.h" - -// void set_terminal_print_off() { -// struct termios old_term, new_term; -// tcgetattr(fileno(stdin), &old_term); // 기존의 터미널 설정 가져오기 - -// new_term = old_term; -// new_term.c_lflag &= ~(ECHOCTL); // 시그널표식 출력이 true 라면 false로 변경 - -// tcsetattr(fileno(stdin), TCSANOW, &new_term); // 변경한 설정을 터미널에 적용 -// } - - -// void set_terminal_print_off(void) -// { -// struct termios term; // 터미널 설정이 담겨있는 termios 구조체 - -// tcgetattr(1, &term); // 현재 터미널의 설정을 term에 가져옴 -// term.c_lflag &= ~(ECHOCTL); // 시그널표식 출력이 true 라면 false로 변경 -// tcsetattr(1, 0, &term); // 변경한 term 설정을 현재 터미널에 적용 -// } - -void handle_sigint(int sig) -{ - printf("\n"); - // rl_on_new_line(); - // rl_replace_line("", 0); - // rl_redisplay(); - (void) sig; -} - -void sig(void) -{ - signal(SIGINT, handle_sigint); - signal(SIGQUIT, SIG_IGN); -} \ No newline at end of file diff --git a/srcs/execute/sig.o b/srcs/execute/sig.o deleted file mode 100644 index 4329b6fdc38df453cd976c99aa35d58179714cfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 996 zcmb7DO-ox*5S^q^L+i&|C{$=^76n}>lwy}cq!r%6g-8n7l<6aRCJ*!}=1PMg2!fb} z;Ico%U(giVeSd}EqTP#>w&%P%kH&}#56ql9cV^C=dz1I$=GUJwk-{T^gOyamQ%2p-D)kM>R%;3dT9mvz`6SWDyF z55@bicNrf440?yZ!?Wco+ArjaBH{7(;KR4`Jm2R5;n^FevV5PXec{+)Z}obh#m~<= z;)N&s_xOOmVoTm1xRamu`%*aAkU}>o1mk1nb5y;={xewk*TeKhRwjd!;@gQ)>th{% z=&IG(Id|$p)RaUPc`@=UFz|c^4mVt!1mo&66)=v^q>c_(0sI`~#^mXyX6? diff --git a/srcs/init/init.c b/srcs/init/init.c index c967cbf..fc49715 100644 --- a/srcs/init/init.c +++ b/srcs/init/init.c @@ -3,32 +3,35 @@ /* ::: :::::::: */ /* init.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: donghong < donghong@student.42seoul.kr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:52 by eunwolee #+# #+# */ -/* Updated: 2023/07/22 08:20:41 by eunwolee ### ########.fr */ +/* Updated: 2023/08/03 16:16:49 by donghong ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" void init(t_data **data, char **envp); -void init_env(t_input *input, char **envp); +void env_init(t_data *data, char **envp); +//필요하신 초기화 내용 여기 넣어주시면 됩니당 void init(t_data **data, char **envp) { + t_pipe *pipe; + t_info *info; + *data = (t_data *)ft_calloc(1, sizeof(t_data)); if (!*data) program_error_exit("bash"); - (*data)->input = (t_input *)ft_calloc(1, sizeof(t_input)); - if (!(*data)->input) - program_error_exit("bash"); - (*data)->oristdin = dup(STDIN_FILENO); - (*data)->oristdout = dup(STDOUT_FILENO); - init_env((*data)->input, envp); + pipe_init(&pipe); + info_init(&info); + (*data)->pipe= pipe; + (*data)->info= info; + env_init(*data, envp); } -void init_env(t_input *input, char **envp) +void env_init(t_data *data, char **envp) { int i; t_list *new; @@ -42,6 +45,34 @@ void init_env(t_input *input, char **envp) new->env = ft_strdup(envp[i]); if (!new->env) program_error_exit("bash"); - ft_lstadd_back(&input->envs, new); + ft_lstadd_back(&data->envs, new); } } + + +void pipe_init(t_pipe **pipe) +{ + *pipe = (t_pipe *)malloc(sizeof(t_pipe)); + if (!*pipe) + program_error_exit("bash"); + (*pipe)->cmd_path = NULL; + (*pipe)->command = NULL; + (*pipe)->cmd_abs = NULL; + +} + + +void info_init(t_info **info) +{ + *info = (t_info *)malloc(sizeof(t_info)); + if (!*info) + program_error_exit("bash"); + (*info)->index = 0; + (*info)->heredoc_flag = 0; + (*info)->heredoc_file = NULL; + (*info)->oristdin = dup(STDIN_FILENO); + (*info)->oristdout = dup(STDOUT_FILENO); + (*info)->pipe_num = 0; + (*info)->pipe_index = 0; + (*info)->parent =0; +} diff --git a/srcs/init/init.o b/srcs/init/init.o deleted file mode 100644 index 7ee3a8ef2d4b25143f057d35970d427d1d2b078f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1484 zcmb7E&ubG=5PpgMk!Wo8pb}AN4k983suw-9*k}U}wJ1`d2<5rmY|>zwgk;l3r66n- zmqqH)|G<;r&6`$QXm8e=$6f@52n9V94~^gK&Ne@!2M6YTZ@!uN-n`~@KmYl;Hz-8t zkiY`(gGa(xl5p5b_zOxLUx^EPKYdUj<$y=Tmc;tj9y#{x}auP0~LX7$<}vTb|s zZ~3*f`BmP&IUs+G^P$IgMW~^LwAf(e6;#fEKMfz*qwBX?tS>}*NP8Z>esqBQsBQwj z$#s0rKXud4>=Pn&4HyBA0rAF;4+Ei<8e%@m{4Z$YiKgBHL8VrJs82m%q)!Ct&@Vtb zH-Y%qNR2XonfX)9CxQM^KAuM$2N4*(LyA|KxB=`)3)K_f?un_kv;JyNOfMSwF#ZOf zo$zCh04isxV$CXW diff --git a/srcs/lexer/expand.c b/srcs/lexer/expand.c index cac1643..3b9bab4 100644 --- a/srcs/lexer/expand.c +++ b/srcs/lexer/expand.c @@ -6,53 +6,52 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:20:49 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 20:55:49 by eunwolee ### ########.fr */ +/* Updated: 2023/08/03 17:41:06 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -t_bool expand(t_input *input, t_token *token, int *i, t_bool quote); -static t_bool check_heredoc(t_input *input, t_token *token, int *i); -static t_bool check_blank(t_input *input, t_token *token, int *i, t_bool quote); -static t_bool check_other(t_input *input, t_token *token, int *i, t_bool quote); -static void replace(t_input *input, t_token *token, char *name); +t_bool expand(t_data *data, t_token *token, int *i, t_bool quote); +static t_bool check_heredoc(t_data *data, t_token *token, int *i); +static t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote); +static t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote); +static void replace(t_data *data, t_token *token, char *name); -//환경변수 뒤에 숫자 알파벳 외에는 환경변수 치환해야함 -t_bool expand(t_input *input, t_token *token, int *i, t_bool quote) +t_bool expand(t_data *data, t_token *token, int *i, t_bool quote) { char *name; *i += 1; name = NULL; - if (check_heredoc(input, token, i) == TRUE) + if (check_heredoc(data, token, i) == TRUE) return (TRUE); - if (check_blank(input, token, i, quote) == TRUE) + if (check_blank(data, token, i, quote) == TRUE) return (TRUE); - if (check_other(input, token, i, quote) == TRUE) + if (check_other(data, token, i, quote) == TRUE) return (TRUE); - while (input->line[*i] != '\'' && input->line[*i] != '\"' \ - && input->line[*i] != ' ' && input->line[*i] != '\t' \ - && input->line[*i] != '\0' && ft_isalnum(input->line[*i])) + while (data->input[*i] != '\'' && data->input[*i] != '\"' \ + && data->input[*i] != ' ' && data->input[*i] != '\t' \ + && data->input[*i] != '\0' && ft_isalnum(data->input[*i])) { - name = ft_strncat(name, &input->line[*i], 1); + name = ft_strncat(name, &data->input[*i], 1); if (!name) program_error_exit("bash"); *i += 1; } - replace(input, token, name); + replace(data, token, name); if (quote == FALSE) *i -= 1; - else if (quote == TRUE && input->line[*i] == '\"') + else if (quote == TRUE && data->input[*i] == '\"') return (TRUE); return (FALSE); } -static t_bool check_heredoc(t_input *input, t_token *token, int *i) +static t_bool check_heredoc(t_data *data, t_token *token, int *i) { t_list *tmp; - tmp = ft_lstlast(input->tokens); + tmp = ft_lstlast(data->tokens); if (tmp && tmp->token->redirect_type == T_HEREDOC) { token->str = ft_strncat(token->str, "$", 1); @@ -64,9 +63,9 @@ static t_bool check_heredoc(t_input *input, t_token *token, int *i) return (FALSE); } -static t_bool check_blank(t_input *input, t_token *token, int *i, t_bool quote) +static t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote) { - if (quote == FALSE && (input->line[*i] == ' ' || input->line[*i] == '\t')) + if (quote == FALSE && (data->input[*i] == ' ' || data->input[*i] == '\t')) { token->str = ft_strncat(token->str, "$", 1); if (!token->str) @@ -76,7 +75,7 @@ static t_bool check_blank(t_input *input, t_token *token, int *i, t_bool quote) *i -= 1; return (TRUE); } - token->str = ft_strncat(token->str, &input->line[*i], 1); + token->str = ft_strncat(token->str, &data->input[*i], 1); if (!token->str) program_error_exit("bash"); if (quote == TRUE) @@ -85,10 +84,11 @@ static t_bool check_blank(t_input *input, t_token *token, int *i, t_bool quote) return (FALSE); } -static t_bool check_other(t_input *input, t_token *token, int *i, t_bool quote) +static t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote) { - if (input->line[*i] == '\"') + if (data->input[*i] == '\"') { + if (quote == TRUE) { token->str = ft_strncat(token->str, "$", 1); @@ -97,18 +97,18 @@ static t_bool check_other(t_input *input, t_token *token, int *i, t_bool quote) } else { - if (input->line[*i + 1] == '\0') + if (data->input[*i + 1] == '\0') return (FALSE); *i -= 1; } return (TRUE); } - else if (input->line[*i] == '\'') + else if (data->input[*i] == '\'') { *i -= 1 ; return (TRUE); } - else if (input->line[*i] == '\0') + else if (data->input[*i] == '\0') { token->str = ft_strncat(token->str, "$", 1); if (!token->str) @@ -118,15 +118,15 @@ static t_bool check_other(t_input *input, t_token *token, int *i, t_bool quote) return (FALSE); } -static void replace(t_input *input, t_token *token, char *name) +static void replace(t_data *data, t_token *token, char *name) { int j; t_list *tmp; - tmp = env_search(input, name); + tmp = env_search(data, name); if (!tmp) { - token->str = ft_strdup("$"); + token->str = ft_strncat(token->str, "$", 1); if (!token->str) program_error_exit("bash"); token->str = ft_strncat(token->str, name, ft_strlen(name)); @@ -143,5 +143,5 @@ static void replace(t_input *input, t_token *token, char *name) if (!token->str) program_error_exit("bash"); } - free(name); // test. + free(name); } diff --git a/srcs/lexer/expand.o b/srcs/lexer/expand.o deleted file mode 100644 index 8bae0c4b028a8649048cdf2c1b9aa35bbf91fa3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3508 zcma)9U1(fI6rQayz1yGMZK)W4z*vL?VWo=IJT$P;u8inHs11l%ZnihKNz7&w_eYmv zFmRKSn@hA{s}H{PMX9JzkU}XM)21}Rmu#Pm5Fu!kEGk4_tg$A3=gv%W@BYvXnK^Uj z`{vAj!qG->F996SVj6f?Gmv3tc>z@%YVy~e3ba=;Q` zxqla>y(Iy&qOvFT-Hi3ht|y*C+lcBNg}#f`qf((oX}kq~G(c*58T$ef^H~Qf6^bKO znoGWxg#sgYFP+@^h1`N{eXyEH|-Oo%q#ui4!1}XssuwxtqZ9VOpJ=`}L`(_u1>sPipofpt#G5?4t0o@y@K{Zpd3Y0W#0%a*B;Z|GpE{z+oiqLX_3_U6iTM0QM2k+T zl<@e&#o!zsn&ZyRtJpB}rgA4<!>uvGfdddw3CUGz%o)@d3?VI~Y7qI$JOLIAC;{8^6Qt8?h5Jr=HLs8Kn_+R^FdO z{`(^~RuCb;J{GW#1*VVElL5BC-B`pf)a}&AUJ)a>Qw5Dr9!}#n`y${ba2?wP{cls1vRCyKTIhVc>-169c8Z_ZOOq$)S zkJX4a{g4Hp<>q=^KbIu1|Ljhi$Zw{kIhTucvlYckTZ*w=7e>Z@=|`zxh_>C z-KrL+u(n4jeS+R>d>O5J+>P8!EQ`Rk>7(@P<;Iuo>5vm&F8#1U`ARwA<$^{xv5a3D zZr@d+hv*a&j6@UfFb#!t?^=iL!0eM~-k(csDFVXy52K zF>^AR?PZS<;4g>8uRY=wEHN?8XtyX8_^QNP1X6)FA!Sh+tbw0Ja;Ne}4g7$BS?KgJ z7AizSkv%)Lv*6MO9!71wjliNv{~2p>vjN%Q9*!_a4>{v{;-q81wBb;Q_Ogd6yw+-bZL?-lWt|Kx)u$;cPJ_dI^&FpF)@+WK*y)D(K6jA(~0ZnzgVWzzY>1@(K0GMT}QVHNr?1|0u!q|GGyJ>D4fWG +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 16:24:37 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 20:55:32 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 16:14:38 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -void lexer(t_input *input); -static void check_char(t_input *input, t_token **token, int *i); +void lexer(t_data *data); +static void check_char(t_data *data, t_token **token, int *i); -void lexer(t_input *input) +void lexer(t_data *data) { int i; t_token *token; @@ -24,35 +24,35 @@ void lexer(t_input *input) if (!token) program_error_exit("bash"); i = -1; - while (input->line[++i]) - check_char(input, &token, &i); + while (data->input[++i]) + check_char(data, &token, &i); if (token->str && *(token->str)) - token_add_list(&input->tokens, &token, FALSE); + token_add_list(&data->tokens, &token, FALSE); } -static void check_char(t_input *input, t_token **token, int *i) +static void check_char(t_data *data, t_token **token, int *i) { - if (input->line[*i] == '|' \ - || input->line[*i] == '<' || input->line[*i] == '>') + if (data->input[*i] == '|' \ + || data->input[*i] == '<' || data->input[*i] == '>') { if (*(*token)->str) - token_add_list(&input->tokens, token, TRUE); - tokenizer(input, token, i); + token_add_list(&data->tokens, token, TRUE); + tokenizer(data, token, i); } - else if (input->line[*i] == '\'' || input->line[*i] == '\"') + else if (data->input[*i] == '\'' || data->input[*i] == '\"') { - tokenizer(input, token, i); + tokenizer(data, token, i); } - else if (input->line[*i] == ' ' || input->line[*i] == '\t') + else if (data->input[*i] == ' ' || data->input[*i] == '\t') { if (*(*token)->str) - token_add_list(&input->tokens, token, TRUE); + token_add_list(&data->tokens, token, TRUE); } - else if (input->line[*i] == '$') - expand(input, *token, i, FALSE); + else if (data->input[*i] == '$') + expand(data, *token, i, FALSE); else { - (*token)->str = ft_strncat((*token)->str, &input->line[*i], 1); + (*token)->str = ft_strncat((*token)->str, &data->input[*i], 1); if (!(*token)->str) program_error_exit("bash"); } diff --git a/srcs/lexer/lexer.o b/srcs/lexer/lexer.o deleted file mode 100644 index 124d2633885b025ddc950035588fb2413cf4abe9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1804 zcmb7FL1+^}6rI$xZnW)2sG=w|XvH23SP}71wbcd&G$6G>FLhYA+a|P4O1i~REEJN6 z%Mz#_#EW?J>cNwTq9|4mB6{}VMMy!Rha6&2>-#&iZIYTpKl$_L{XhTxKeMx&PwPMb z?q)2oi(!BUp;`-u2o!P%dY=MKBuR;oUdn;^7@Ulh_(+7Xt(-0A5|6}gj%;Cn_CoOx zALTB!GS)%CAX_BkixB3lolT`DltYMmKA#8ao_zHiQCO8xi25@#(=&!?i@EfjRC-K^ zt3#VXOkSyk0p%=%kG5V#0TrsF6v9f1@vJdz$%MxKykvxuimw+u>L@+W-mQ>_Ph&g? z^&W-3hqXaTs3`fhHpW7*k74PUkxV_Lytg->&Zmh~(=Ef`e*8wM9;pXSX{xH)E2WY*!Q01k$GA|`6UefAE znF7+BhD9g6MX2EpX!^32{{ab$t>r|a>>mH##J_XSSu=wqt#(?ia^rFPk5G**OPf=Tg zy{_yfSn@wX4YH$NRTk}qCB9>@#7Ey!y#LV%tW1%17`PJ-{~WFW>%hKDVNwIx@dn%{ zaZ6Ao>}!ZqZf*Xp20YM!nXogHR$3TiV`3^bYcnyE%}n5XDy(calNDAj1>d+W@Gp=y s4a_GzAFyH1&8qa&yp?5Q%F2;3la@J&(ZF1in_0`SEr!GyBR$6c0jRoQI{*Lx diff --git a/srcs/lexer/quote.c b/srcs/lexer/quote.c index 1e9f900..cce7479 100644 --- a/srcs/lexer/quote.c +++ b/srcs/lexer/quote.c @@ -6,69 +6,69 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 07:46:30 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 20:55:14 by eunwolee ### ########.fr */ +/* Updated: 2023/07/16 20:16:29 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -void single_quote(char *line, t_token *token, int *i); -void double_quote(char *line, t_token *token, int *i, t_input *input); -static t_bool find_next_quote(char *line, t_token *token, int i, char quote); -static t_bool s_check_char(char *line, t_token *token, int *i, t_bool next_quote); -static t_bool d_check_char(char *line, t_token *token, int *i, t_bool next_quote); +void single_quote(char *input, t_token *token, int *i); +void double_quote(char *input, t_token *token, int *i, t_data *data); +static t_bool find_next_quote(char *input, t_token *token, int i, char quote); +static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next_quote); +static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next_quote); -void single_quote(char *line, t_token *token, int *i) +void single_quote(char *input, t_token *token, int *i) { t_bool next_quote; *i += 1; - next_quote = find_next_quote(line, token, *i, '\''); - while (line[*i] != '\'' && line[*i] != '\0') + next_quote = find_next_quote(input, token, *i, '\''); + while (input[*i] != '\'' && input[*i] != '\0') { - if (s_check_char(line, token, i, next_quote) == TRUE) + if (s_check_char(input, token, i, next_quote) == TRUE) return ; *i += 1; } - if (line[*i] == '\0') + if (input[*i] == '\0') *i -= 1; } -void double_quote(char *line, t_token *token, int *i, t_input *input) +void double_quote(char *input, t_token *token, int *i, t_data *data) { t_bool next_quote; *i += 1; - next_quote = find_next_quote(line, token, *i, '\"'); - while (line[*i] != '\"' && line[*i] != '\0') + next_quote = find_next_quote(input, token, *i, '\"'); + while (input[*i] != '\"' && input[*i] != '\0') { - if (line[*i] == '$') + if (input[*i] == '$') { - if (line[*i + 1] != '\'' && next_quote == TRUE) - if (expand(input, token, i, TRUE) == TRUE) + if (input[*i + 1] != '\'' && next_quote == TRUE) + if (expand(data, token, i, TRUE) == TRUE) return ; } - if (d_check_char(line, token, i, next_quote) == TRUE) + if (d_check_char(input, token, i, next_quote) == TRUE) return ; *i += 1; } - if (line[*i] == '\0') + if (input[*i] == '\0') *i -= 1; } -static t_bool find_next_quote(char *line, t_token *token, int i, char quote) +static t_bool find_next_quote(char *input, t_token *token, int i, char quote) { if (quote == '\"') - while (line[i] != quote && line[i] != '\0') + while (input[i] != quote && input[i] != '\0') { - if (line[i] == '\\' && line[i + 1] == quote) + if (input[i] == '\\' && input[i + 1] == quote) i++; i++; } else - while (line[i] != quote && line[i] != '\0') + while (input[i] != quote && input[i] != '\0') i++; - if (line[i] == '\0') + if (input[i] == '\0') { token->str = ft_strncat(token->str, "e, 1); if (!token->str) @@ -78,36 +78,36 @@ static t_bool find_next_quote(char *line, t_token *token, int i, char quote) return (TRUE); } -static t_bool s_check_char(char *line, t_token *token, int *i, t_bool next_quote) +static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next_quote) { if (next_quote == FALSE \ - && (line[*i] != ' ' || line[*i] != '\t')) + && (input[*i] != ' ' || input[*i] != '\t')) { *i -= 1; return (TRUE); } else - token->str = ft_strncat(token->str, &line[*i], 1); + token->str = ft_strncat(token->str, &input[*i], 1); if (!token->str) program_error_exit("bash"); return (FALSE); } -static t_bool d_check_char(char *line, t_token *token, int *i, t_bool next_quote) +static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next_quote) { if (next_quote == FALSE \ - && (line[*i] != ' ' || line[*i] != '\t')) + && (input[*i] != ' ' || input[*i] != '\t')) { *i -= 1; return (TRUE); } - if (line[*i] == '\\' && line[*i + 1] == '\"') + if (input[*i] == '\\' && input[*i + 1] == '\"') { token->str = ft_strncat(token->str, "\\\"", 2); *i += 1; } else - token->str = ft_strncat(token->str, &line[*i], 1); + token->str = ft_strncat(token->str, &input[*i], 1); if (!token->str) program_error_exit("bash"); return (FALSE); diff --git a/srcs/lexer/quote.o b/srcs/lexer/quote.o deleted file mode 100644 index 072c3049740e7a15308c23ea12c1db7565b9cabb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2820 zcmcImUuauZ7(c07m(JRg$%b<%#!^>B0-b*zhA1ia;uRJdvcQm*(=1J!vMs6kgHZ_t zZlk%q3?@u`w2wZC;M2wk)5$Eph|kSK+GLo3LVfFMZT)@soO^S#v~vo6^xW@!f6kZR z_nq(Sy+3dLzH^8%-y;kUtOHp7K0Jb0peL~^WY~v-I85|BodG#AscBI>A|Y~#LQd|b zd`>%mt|L3UYX{|y;?Y@sfUy9n4zLn2hlGe{bD8OtpJ}gb%hinkrcC;*yV&ga6i6qztqpR~mIJ5#>F(}sZ){$svMAVXf^GZ|oVv}Q2{TWA$SvP8qs>aB!K+%s*c|5NF9-$} zv$NUI79zU&KIAMkztC!L6tE`FW7EHK&Cm4wywK(+nF-~AGo!#gBf_kZp>|;MF<1*hz?=oK@;0p{M@?VAT2=q^3E#E_TfE0el#)kr* z^u76*dQIAX6Yx8~CH+($d-`31-#33sKb6m(e%IiqZ%aRw*Pebi;kWRY^i%ou_?7UY z@-r6t7#yWMHU$psp<%_3EB$k*6YQaTs3%mR_hel|hr#LmL2x?%D;{({3{Lvjz)AnK z(tid_C|`(%3=}Hi0l9x#@v!1S#ldX*8So)E)=2>x!yoI BvZnw5 diff --git a/srcs/lexer/tokenizer.c b/srcs/lexer/tokenizer.c index 5484f5c..5433ee4 100644 --- a/srcs/lexer/tokenizer.c +++ b/srcs/lexer/tokenizer.c @@ -6,36 +6,32 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:26:13 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 20:54:53 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 09:06:12 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -void tokenizer(t_input *input, t_token **token, int *i); +void tokenizer(t_data *data, t_token **token, int *i); t_token *token_create(void); -void token_redirect(t_input *input, t_token *token, int *i); +void token_redirect(t_data *data, t_token *token, int *i); void token_add_list(t_list **head, t_token **token, t_bool token_flag); -void tokenizer(t_input *input, t_token **token, int *i) +void tokenizer(t_data *data, t_token **token, int *i) { - if (input->line[*i] == '|') - { + if (data->input[*i] == '|') (*token)->type = T_PIPE; - input->pipe_num++; - printf("%d\n", input->pipe_num); - } - else if (input->line[*i] == '\"') - double_quote(input->line, *token, i, input); - else if (input->line[*i] == '\'') - single_quote(input->line, *token, i); - else if (input->line[*i] == '<' || input->line[*i] == '>') - token_redirect(input, *token, i); - if ((input->line[*i] == '\'' || input->line[*i] == '\"') \ - && (input->line[*i + 1] != ' ' && input->line[*i + 1] != '\t') \ - && (input->line[*i + 1] != '\0')) + else if (data->input[*i] == '\"') + double_quote(data->input, *token, i, data); + else if (data->input[*i] == '\'') + single_quote(data->input, *token, i); + else if (data->input[*i] == '<' || data->input[*i] == '>') + token_redirect(data, *token, i); + if ((data->input[*i] == '\'' || data->input[*i] == '\"') \ + && (data->input[*i + 1] != ' ' && data->input[*i + 1] != '\t') \ + && (data->input[*i + 1] != '\0')) return ; - token_add_list(&input->tokens, token, TRUE); + token_add_list(&data->tokens, token, TRUE); } t_token *token_create(void) @@ -52,12 +48,12 @@ t_token *token_create(void) return (token); } -void token_redirect(t_input *input, t_token *token, int *i) +void token_redirect(t_data *data, t_token *token, int *i) { token->type = T_REDIRECT; - if (input->line[*i] == '<') + if (data->input[*i] == '<') { - if (input->line[*i + 1] == '<') + if (data->input[*i + 1] == '<') { token->redirect_type = T_HEREDOC; *i += 1; @@ -67,7 +63,7 @@ void token_redirect(t_input *input, t_token *token, int *i) } else { - if (input->line[*i + 1] == '>') + if (data->input[*i + 1] == '>') { token->redirect_type = T_APPEND; *i += 1; diff --git a/srcs/lexer/tokenizer.o b/srcs/lexer/tokenizer.o deleted file mode 100644 index f0849c8da851a8b86a8720e147696bc8b9003a04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2420 zcma)8-)kII6uz5o(n;DnE3IJtK^L)DFatqE3jINX30$zjAPp2T+-_zk$ zaiuWX(s3xwLqYrtd=(KCA7V6>1qIuOzWEY_LLytbk4we2-?{hB&SaYn9=LPnobQ}( z&bjx@?B0F+@X3D0Qu`P#SZOR{0GBKlf$q{m-*)>v;2w_(|w@_Nt4k32(MLZ)Kf2iw>@^!h9iTdpF z<>j31iE8Oep_CWm++-KT%{^V$HSO$xk6iaqpYCx7r4Y`NSa5Tf9hJ~q-;7TBQS;S? z6rVQP0mhc1d(!V~kSS0jN^0!gPA?S63vG1Xg&t|ZaLXV_1oOJ%r`&k}5 z;C?I1gL;Pt)iw`iw|F?!;UVMU^cJ^=C(X6AG2wSUHyiJQ6kr=*Q}R<}$VdHOQUM>8 z#_}k?d8UXR{FZG|$o3y9CqZbg9WngJZ|#69PMa&Q_JPit4H`xsViRP4vJyoHKilqJsL6P5qI&ugqe~i;L{|8s|7(id zzpK=&xiYmEK5VWW-wS8v${_IVZexRn45x!^{zOA1o8bPP?A(TVY@EsS-g(yTrktKc zjfqn~Z8kpGs{r8o+3n_d8pBGxZiNPogt1N23Y#EV=AKkIgano9V^=D?QtCwJHdcG* zH<)dyj)SR9?$nrFq^e52xC9r0pDeodQLWjn+ z&T0)M{WRnz0@e{s@--IO(Rqz&J34>*ND>}Nh?|7TzUi@@9-Cs5@gMit*Ncr zW5ZsQeo^sqUbUj(!d1tW#Q2MmuP#T=AmaI)eTj$*C2xU=3jTl;9r0^V&2%hmbV UQV+6SCr22nv~$H`*+%`(0Q>axg8%>k diff --git a/srcs/minishell.c b/srcs/minishell.c index ec7883c..68ca520 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -6,26 +6,52 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/07/22 15:41:20 by eunwolee ### ########.fr */ +/* Updated: 2023/08/06 18:10:35 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -int main(int argc, char **argv, char **envp) +int main(int argc, char **argv, char **envp) { - t_data *data; + t_data *data; + // atexit(check_leak); + (void)argc; (void)argv; init(&data, envp); - while (TRUE) - { + + + // execute(data); + // while (TRUE) + // { + // count_pipe(data); get_input(data); - sig(); - set_pipe(data); execute(data); - free_input(data->input); - } + // input_free(data); + // } + // while (TRUE) + // for(int i=0; i<1; i++) + // { + // char *str = get_next_line(0); + // data->input = ft_substr(str, 0, ft_strlen(str) - 1); //-1 개행 떼기 + // if (*data->input) + // { + // lexer(data); + // if (syntax(data) == FALSE) + // return (0); //free하고 다시 input 받기 + // parser(data); + + // // print_token(data); + // // printf("\n\n"); + // // tree_print(data->root); + // // printf("\n\n"); + // input_free(data); + // } + + // execute(data); + // } + // data_free(data); return (0); } diff --git a/srcs/minishell.o b/srcs/minishell.o deleted file mode 100644 index e08fc3ae9aefee8d426dcb1553ef6d4b50c239e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 924 zcmb7COG_J36h4z`46TnWT%;gHXqO%Eu?emWY2Yp_h!1d4I1cGG&LU$lcQ7pk0zzR3 zg)aM3y6mn67wyu83pa%n6uK-$OusX8uSTJZe(=qA-gCJ3e*1HIJwfC>Abh|v@RJzx zAn+J0i~kRNw((P2<9y5{q0AL98{ILPo%vg}ovmBnS+A@i^JJHgIikG8#;7Oaz+69Q zwt~9hI64ZW*UW1#TuyY?I`dY`m?OJWemqd`yXOOmtG+evdN*O!e|fI@Z%Rq+EUox?G8_)2(ZSxAJyI7Xnzg3) zc7wc5(JM|)6h5Hp8RB!`F6Ic_eN$z+_%2tSO79x^O%O-qSD|S0SD?uGi%^`0{~U_< z;Xj3rLm^U^7h`5*n{pPHbc#uQN7D2p^K+P$LUN<|n>)1m%Dw#ZJ)gLt4Tn)HHiY-2 nwX?%0M5MvG6B=%tz{G9hW)Mci?XW?J>w0W7JoLB17T)1spLBBF diff --git a/srcs/parser/parser.c b/srcs/parser/parser.c index c4f0df7..ba26787 100644 --- a/srcs/parser/parser.c +++ b/srcs/parser/parser.c @@ -6,25 +6,25 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 18:35:07 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 20:54:30 by eunwolee ### ########.fr */ +/* Updated: 2023/07/14 07:52:10 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -void parser(t_input *input); +void parser(t_data *data); static void link_pipe_leaf(t_leaf **cur_leaf); static void check_token_type(t_leaf *cur_leaf, t_list *cur_token); -void parser(t_input *input) +void parser(t_data *data) { t_list *cur_token; t_leaf *cur_leaf; - cur_token = input->tokens; - input->root = tree_create_leaf(NULL, T_PIPE); - input->root->left_child = tree_create_leaf(input->root, T_CMD); - cur_leaf = input->root->left_child; + cur_token = data->tokens; + data->root = tree_create_leaf(NULL, T_PIPE); + data->root->left_child = tree_create_leaf(data->root, T_CMD); + cur_leaf = data->root->left_child; while (cur_token) { while (cur_token && cur_token->token->type != T_PIPE) diff --git a/srcs/parser/parser.o b/srcs/parser/parser.o deleted file mode 100644 index 3b8393c08cf7aa1f0c549d99ba6866aac181ee3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1692 zcmb7EO-NKx6uvW>f0geA5k*mtXc5Fv7SSwPjOf4<5<(PgA-Bi)#u*&PVSIyAFd&Q* zj)UZ;b*;i}yJ#UJ3b}LJwji8=g0~6@)4p?m9A~se2hW^)&iU?lzx(st`Tg^tld(V> z!wK{+Nq(lUOA zu^uY5vjqy;IFHTFWSp4CbLshHdXn=egStm?Rq;Gm#RSMm%NqEUCWVjy&fNr$XPp^W z=gs?~smJ*Idcei<%~#pq!ja5AEydKEh8eC~BHmO{jQ_7qM=7;>6R zTCvoB+n8PcZWn)8ebw?t-!Hpd*t08R@R2UNJm%Zwof=WvmEk?R+;7>HD0+EootABM zDnk~!U9uYiDuUV3nq4gT%vgL4Y@Jy8s-m(K-8B|3AP3$D)+~mZ@n&Obcy~FvyB07? z*fOhM7l1;|uH<~Rl0Xx)U;l7;cqr*5`c4a7shbKbh1$ufaWQqvn%FdMM3~yYDRy4Y zL66qdZj`P{4cIajGv+5cVZm5mZ(1;T3ijxT>MKpyHls9uRKOX~{!d$rZd9%{&~Srq*Yyzt?;f95|29PZ;3_;oE;C?nuumIQm}S9Y~zg zbAm4hz2FW#RPh_M;Qfc*BI31$xXK@>{3|#y482E$g&yOF=HFB?f{1>Hr6PjJpCR_5 zq4f^wT%Ffl)Py*JEulKAt~n=`-$SU6(tPlRTT8N_fZelp9An#oc_; z<8z+l<>naAIN3Qjt5C75>v%3txlWw%R5CryGs%q3V+l7l&Ar)aH_g2l8T=pq3#0B= A;Q#;t diff --git a/srcs/parser/syntax.c b/srcs/parser/syntax.c index b02004b..8e58659 100644 --- a/srcs/parser/syntax.c +++ b/srcs/parser/syntax.c @@ -6,24 +6,24 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/07 22:24:38 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 20:54:38 by eunwolee ### ########.fr */ +/* Updated: 2023/07/17 06:40:42 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -t_bool syntax(t_input *input); -static t_bool syntax_none(t_input *input, t_list *cur); +t_bool syntax(t_data *data); +static t_bool syntax_none(t_data *data, t_list *cur); static void syntax_word(t_list *cur); -static t_bool syntax_redirect(t_input *input, t_list *cur); -static t_bool syntax_pipe(t_input *input, t_list *cur); +static t_bool syntax_redirect(t_data *data, t_list *cur); +static t_bool syntax_pipe(t_data *data, t_list *cur); -t_bool syntax(t_input *input) +t_bool syntax(t_data *data) { t_list *cur; - cur = input->tokens; - if (syntax_none(input, cur) == FALSE) + cur = data->tokens; + if (syntax_none(data, cur) == FALSE) return (FALSE); cur = cur->next; while (cur) @@ -32,12 +32,12 @@ t_bool syntax(t_input *input) syntax_word(cur); else if (cur->token->type == T_PIPE) { - if (syntax_pipe(input, cur) == FALSE) + if (syntax_pipe(data, cur) == FALSE) return (FALSE); } else if (cur->token->type == T_REDIRECT) { - if (syntax_redirect(input, cur) == FALSE) + if (syntax_redirect(data, cur) == FALSE) return (FALSE); } cur = cur->next; @@ -45,12 +45,12 @@ t_bool syntax(t_input *input) return (TRUE); } -static t_bool syntax_none(t_input *input, t_list *cur) +static t_bool syntax_none(t_data *data, t_list *cur) { if (cur->token->type == T_WORD) cur->token->type = T_CMD; else if (cur->token->type == T_PIPE) - return (error_back_readline(input, E_SYNTAX_PIPE, 258)); + return (error_back_readline(data, E_SYNTAX_PIPE, 258)); return (TRUE); } @@ -67,31 +67,31 @@ static void syntax_word(t_list *cur) cur->token->type = T_CMD; } -static t_bool syntax_redirect(t_input *input, t_list *cur) +static t_bool syntax_redirect(t_data *data, t_list *cur) { if (cur->pre->token->type == T_REDIRECT) { if (cur->token->redirect_type == T_INPUT) - return (error_back_readline(input, E_SYNTAX_INPUT, 258)); + return (error_back_readline(data, E_SYNTAX_INPUT, 258)); if (cur->token->redirect_type == T_OUTPUT) - return (error_back_readline(input, E_SYNTAX_OUTPUT, 258)); + return (error_back_readline(data, E_SYNTAX_OUTPUT, 258)); if (cur->token->redirect_type == T_HEREDOC) - return (error_back_readline(input, E_SYNTAX_HEREDOC, 258)); + return (error_back_readline(data, E_SYNTAX_HEREDOC, 258)); if (cur->token->redirect_type == T_APPEND) - return (error_back_readline(input, E_SYNTAX_APPEND, 258)); + return (error_back_readline(data, E_SYNTAX_APPEND, 258)); } if (!cur->next) - return (error_back_readline(input, E_SYNTAX_NEWLINE, 258)); + return (error_back_readline(data, E_SYNTAX_NEWLINE, 258)); return (TRUE); } -static t_bool syntax_pipe(t_input *input, t_list *cur) +static t_bool syntax_pipe(t_data *data, t_list *cur) { if (cur->pre->token->type == T_PIPE) - return (error_back_readline(input, E_SYNTAX_PIPE, 258)); + return (error_back_readline(data, E_SYNTAX_PIPE, 258)); if (cur->pre->token->type == T_REDIRECT) - return (error_back_readline(input, E_SYNTAX_PIPE, 258)); + return (error_back_readline(data, E_SYNTAX_PIPE, 258)); if (!cur->next) - return (error_back_readline(input, E_SYNTAX_NEWLINE, 258)); + return (error_back_readline(data, E_SYNTAX_NEWLINE, 258)); return (TRUE); } diff --git a/srcs/parser/syntax.o b/srcs/parser/syntax.o deleted file mode 100644 index 9d57e733a1b49ce97b83836e5693a417becddafc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2720 zcmb7FOK1~e5dM>H0p`FU1z?`OGBKc3t5RrHt1UoNCGt}NLjIXf%m(ZdZV zZc^<^d&I^9hNGQ5>JoxoT1qLcVL9leFIy^Let$I%`po%an3MAP)GfrYe@}8Jcn#Pa z$5{IB2_ML#40ue8cgNbO5#1uKWX&g$O{Pi$Gi~q;Sl->;A8{Zr!l>abv6`Hz(+<71=GPuH`o`en`qj~ClmVk! zKT5Y5JHC#Ua@o}AvQz%krw zeg1RhUo~37YRi#!?Z8(A8hWe4J2ZHA0RB*icWUsi0DMS?M>Tjf08aq!J$>FY99U6% zAfVNXE~JaYd(Gli+fA2E%W?9KXEZJ7MU}an@Yr6T1mTeB)*en(g-nSI+fu(@= zEiLtua@*F(rJQZiJHkX~3Q||Lk%+NnMA-uVdu*9pz(2qr_h$?EWBilZsPY8z)7wrI zx^_Z@%CS&vd1sVrZh~z+c={KA?h=V<`Tj4`1{NF3#4ue1cRydxcCGHY%i9ZU* z^R&d>r+kd#xmx000yjLP^6`8DTyMnt2gbW0v8vuL*a!ZJ@lTMXKWF_Z>$h0H!TM>| zkFov}K@?wur1*ENzhwOZ>l3UGVwZ$J2MJT}YxIm%@jH;vTqddC3E zewHRn2+zLy>y1*VD#fcCq47xBKf^1U7I;DrPHbqjs+JdEY ztZdG~doARUw8}YG7TvU4DmMIuT)}E6cHV~KeHG+|bmk(W(^+~$8icmd[data->cmd_idx].infile_fd) - close(data->cmd[data->cmd_idx].infile_fd); //에러처리 - if (fork_heredoc(data, cur_leaf)) - return (FALSE); - return (TRUE); -} - -static int fork_heredoc(t_data *data, t_leaf *cur_leaf) +int fork_heredoc(t_data *data) { int status; - data->cmd[data->input->pipe_num + 1].pid = fork(); //pid가 겹치지않게 가장 마지막 인덱스 부여해주기 - if (data->cmd[data->input->pipe_num + 1].pid == CHILD) + data->pipe->com[data->info->pipe_index].pid =fork(); //인덱스 부여해주기 pid 갚곂치지않게 가장 마지막 인덱스 주기 + if (data->pipe->com[data->info->pipe_index].pid == 0) { - data->parent = 1; - make_heredoc(data, cur_leaf); - // exit (g_exit_status);// 전역변수 + mk_heredoc_pipe(data); + // mk_heredoc(data); + execute_cmd(data,1); // heredoc 실행후 다시 커맨드 확인해주러가기 + exit (g_exit_status);// 전역변수 } else { // signal (SIGINT, SIG_IGN); - waitpid(data->cmd[data->input->pipe_num + 1].pid, &status, 0); - g_exit_status = WEXITSTATUS(status); // 정상종료일경우 exit코드 추출 + data->info->pipe_index++; + waitpid(data->pipe->com[data->info->pipe_index].pid,&status,0); + g_exit_status = WEXITSTATUS(status); // 정상종료일경우 exit코 드 추출 if (WIFSIGNALED(status)) // signal 에 의해 종료가 되었는지 아닌지 확인 { g_exit_status = WTERMSIG (status);//시그널로 종료시 시그널 번호를 저장 예 ctrl +c경우 2 번 @@ -37,4 +27,4 @@ static int fork_heredoc(t_data *data, t_leaf *cur_leaf) } } return (1); -} +} \ No newline at end of file diff --git a/srcs/redirect/heredoc.o b/srcs/redirect/heredoc.o deleted file mode 100644 index 86e2c5521aee0aed08eeba31446e0a1521dd640b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1460 zcmb7D;Y(9d6hF^Qr>R?DVNkRnM94)2K@oWx^`*=|AWRl)P~b-q(|+f@`*fT5p#$fg`#a}%e)rtFyKg&x_8N(d6NC@E z9`38dCkTg~gD-L67@J@&tV>4^LzCE9k4;L;%vtW*#iQW|qlegAz1DlN9``Qc)5OJk zdcwgoDWe%Hok&jVgp}2Ko{l&A4?bXp>2VJ-&`ZtEMWU9>Cg&5$n3VSi4vJX3(L%jC zxdArH9BAap86JVoS{9L5cNJK#>6znL1~Y`iJw zH_-1xoH$9u*NT1`hO=>x=ge>5Xe zC<^1Vo$Dh1!X*aBQBT`rdS^TsE6J5Cn$YAybX0rEN6>)xK=cg8Y{lv@jcz#$GUJD$llD` zJ9+=Y9WI88_D0^hif%xm@M|JFRJ4EQ3qG;ja|Q4%|AvmFzMe8)TN!@jzBuRFq8s=m zRkos0r&~EvZ`XC>(Fhs2fDveE^sRt(8Ts?@(%*f@v_4T^TVS!SztwwV%o~6Y@3}m^ z&k^1WXx0;jo+ILXXL5)*d{0=%yNGxZp=LyAhh9Mw|Ci7>A}qvj9etr7qDyh(P2e^p zymJa*Kd@(Kv8aF)sKK2zn7Qye%<5Rbi!~zRS5v7+a#EVPge5ap#L8w!##8BOlF^w| o#w0l(Nmz4<7_yd}%UWhKHY4K5BxfVj<^h8KKh>A|{r~^~ diff --git a/srcs/redirect/heredoc_utils.c b/srcs/redirect/heredoc_utils.c deleted file mode 100644 index 773f921..0000000 --- a/srcs/redirect/heredoc_utils.c +++ /dev/null @@ -1,94 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* heredoc_utils.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/22 10:08:39 by eunwolee #+# #+# */ -/* Updated: 2023/07/22 19:00:30 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../../incs/minishell.h" - -void make_heredoc(t_data *data, t_leaf *cur_leaf); -char *make_filename(void); -void make_unique_num(char *str, int num); -void read_heredoc(t_data *data, char *content, int fd); - -void make_heredoc(t_data *data, t_leaf *cur_leaf) -{ - char *name; - - // herdoc_signal(); - name = make_filename(); - data->cmd[data->cmd_idx].infile_fd = open(name, O_WRONLY | O_CREAT | O_TRUNC, 0644); - // if (data->cmd[data->cmd_idx].infile_fd < 0) //open 실패 시 에러처리 해야함 - printf("aa\n"); - printf("\nfile str : %d\n", cur_leaf->token->type); - printf("\nfile fd : %d\n", data->cmd[data->cmd_idx].infile_fd); - printf("aa\n"); - read_heredoc(data, cur_leaf->left_child->token->str, data->cmd[data->cmd_idx].infile_fd); - printf("c\n"); -} - -// 유니크한 파일명 생성 -char *make_filename(void) -{ - char *str; - int exist; - int i; - - str = ft_strdup("/tmp/here_doc000"); - i = 0; - exist = 0; - while(!exist) - { - make_unique_num(str,i++); // doc000 doc100 doc 200 순으로접근 유효성검사 - exist = access(str,F_OK); //access 가 가능하면 1리턴해줘서 while문 탈출 . - if (!exist) - unlink(str); - } - return (str); -} - -void make_unique_num(char *str, int num) -{ - - int i=0; - int j=1; - while(i<3) - { - if (i ==0) - { - str[13+i++]= num/100 +'0'; - num %=100; - } - str[13+ i++] = num /(100/(j *10)) + '0'; - num%= (100 / (j * 10)); - j*=10; - } -} - -void read_heredoc(t_data *data, char *content, int fd) -{ - write(1, "b", 1); - char *str; - (void)data; - - while (TRUE) - { - str = readline ("> "); - if (!str || !ft_strncmp (content, str, ft_strlen(content) + 1)) - { - free (str); - close (fd); - exit(1); - } - // str = heredoc_parser(str, data->env_array); heredoc $pwd - write(fd, str, ft_strlen(str)); - write (fd, "\n", 1); - free(str); - } -} diff --git a/srcs/redirect/heredoc_utils.o b/srcs/redirect/heredoc_utils.o deleted file mode 100644 index 4f89b14c9c22146f6648904cba4fa3f1b1d2cbfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2520 zcma)8UuauZ7(eN{Ez8y>!m1U9&4WTG#HH#U{L|66+;N3Q=2%d{a*fGN8`~spn$RMI z6|+hYmxzdh1s_Cx5X8|JVJo7k9kvhR0wV08LLNG3Aws}lQ+2Dq@0@enEUn;2&i$R= z_wRh?PtLu!{`&piQN|pH7#?WtXwEh~yl9Yz(dNkTA5x|ONH4`eY>u3anldxP$ePnx z@{nQ}m$g?f+iVZRR0xFfQEcOgDy5yxklq%HMV+%mUvx{iWLPJvPXjcBu zepu&s^g`9I^L#_+x!MNB>0H~;t^CG!4phJR1!`Mh(qM%ex^)b;h914*)Dt^?a(8U= zK(AixZ^umcJZrl3qSxw!zJ}RwZGF#la1v{RlKdi^E4Fj7|C&&&*$Nul3Q=+=4WL^S zKvCA9r8Pp)0cR*tqOt}ZOV-Q1T)QnxFZRzNk)5S*(?7KA?qO>F9t=DNvpxOBidLhQ zSkdYPg?yd4KPo-F^QFT*ODAsgc|2$tEUm_u3QG$zy}2M<@jr?a6K&;ABnq`oY&*#9$#>~pQ6 z7xES6zWN;bT6ru_u7WXY$a7ogE7;nybUiGxSyRo)8EugbI~Wm$!#WamRP3huKD#(BCf+)!BsWI>S4XRr=p{c-kquD-kERVuNN zuN`t17i16BJ%yg7)#q=-(AnB9l>8X5ftdz)BTy(gf?TT=Ryqcww_ccQ?f+^H`>>dm>rB5yX0Fd?|qK3}Qc#wIdWQBi%#6QLXB- zwDtMG7J1dVwie{2d34vH!7!uYsta4Sc>z-zT8>0q%oR_JnO@vw-eWHcDSjS^f1~d-5ViVF0r7|S zodi-`8xULIqccc;OTbRxw?LS>z5!C+uM|%M-QceQ+kr1hz0U)5f*+T>>krh9``K3o zQl2|N+?KwtmHu<3|3vW*6i+KouN#V^S1aWSDgHR{1US7TAig*7z>r4<6nYf`g#HT9 z4F~zcVT{&Pa3IMAG~zQDjN~&k;`VuZ5S+qoNukrsso%`sYvFXsG~4OEYUZa~IQE3> zZCG0&XC+sRF{6d&TKFq1e7J=(!<env_array=env_to_array(data); //환경변수 가져오기 추후에 필요할 수있음 + + while (1) + { + str = readline ("> "); + if (!str \ + || (!ft_strncmp (content, str,ft_strlen(content)) && \ + (ft_strlen(content) == (ft_strlen(str))))) + { + free (str); + close (fd); + return ; + } + heredoc_parser(data, fd, str); + } +} + +void heredoc_parser(t_data *data, int fd, char *str) +{ + int i; + char *tmp; + + i = -1; + tmp = ft_strdup(""); + while (str[++i]) + { + if (str[i] == '$') + tmp = heredoc_expand(data, str, tmp, &i); + else + tmp = ft_strncat(tmp, &str[i], 1); + } + write (fd, tmp, ft_strlen(tmp)); + write (fd, "\n", 1); + free (str); +} + +char *heredoc_expand(t_data *data, char *str, char *tmp, int *i) +{ + char *name; + t_list *env; + int j; + + *i += 1; + name = ft_strdup(""); + while (str[*i] != '\0' && str[*i] != ' ' && str[*i] != '\t') + { + name = ft_strncat(name, &str[*i], 1); + *i += 1; + } + env = env_search(data, name); + if (!env) + { + tmp = ft_strncat(tmp, "$", 1); + if (!tmp) + program_error_exit("bash"); + tmp = ft_strncat(tmp, name, ft_strlen(name)); + if (!tmp) + program_error_exit("bash"); + } + else + { + j = 0; + while (env->env[j] != '=') + j++; + tmp = ft_strncat(tmp, \ + &env->env[j + 1], ft_strlen(&env->env[j + 1])); + if (!tmp) + program_error_exit("bash"); + } + if (str[*i] != '\0') + *i -= 1; + return (tmp); +} + +void mk_num(char *str, int num) +{ + + int i=0; + int j=1; + while(i<3) + { + if (i ==0) + { + str[13+i++]= num/100 +'0'; + num %=100; + } + str[13+ i++] = num /(100/(j *10)) + '0'; + num%= (100 / (j*10)); + j*=10; + } + +} + +char *mk_filename() // 파일이름 유니크줘서만들어주기 +{ + char *str; + int exist; + int i; + + str = ft_strdup("/tmp/here_doc000"); + i=0; + exist=0; + while(exist ==0) + { + mk_num(str,i++); // doc000 doc100 doc 200 순으로접근 유효성검사 + exist =access(str,F_OK); //access 가 가능하면 1리턴해줘서 while문 탈출 . + if (!exist) + unlink(str); + } + return (str); +} + + + +void do_heredoc(t_leaf *leaf,t_data *data) +{ + int fd; + t_leaf *temp; + temp = leaf; + + while(temp) + { + + if(temp->token->redirect_type==T_HEREDOC) + { + fd = open(data->info->heredoc_file[data->info->index], O_WRONLY | O_CREAT | O_TRUNC, 0644); //임시파일오픈 + write_str(temp->left_child->token->str,fd,data); //limiter 들고가서 작성하기 + } + temp = temp ->left_child; //순회하기 + } + +} + + +// void mk_heredoc(t_data *data) +// { +// t_leaf *temp; +// int fd; +// // herdoc_signal(); +// temp =data->root->left_child -> left_child; +// while(temp) +// { +// data->info->heredoc_file[data->info->index] = mk_filename(); //설명했듯이 이중 배열 +// if(temp->token->redirect_type == T_HEREDOC) +// { +// fd = open(data->info->heredoc_file[data->info->index], O_WRONLY | O_CREAT | O_TRUNC, 0644); //임시파일오픈 +// write_str(temp->left_child->str,fd,data); //limiter 들고가 +// // do_heredoc(temp,data); // 실제 here _doc 이 나왔을경우 만들러가기 +// data->info->index++; //순회하면서 heredoc 찾기 +// } +// temp = temp ->left_child; +// } +// } + + +void mk_heredoc_pipe(t_data *data) +{ + + + // herdoc_signal(); + + t_leaf *pipe = data->root; + while(pipe) + { + data->info->heredoc_file[data->info->index] = mk_filename(); //설명했듯이 이중 배열 + if(pipe->left_child->left_child && pipe->left_child->left_child->token->redirect_type == T_HEREDOC) + { + do_heredoc(pipe->left_child->left_child,data); // 실제 here _doc 이 나왔을경우 만들러가기 + data->info->index++; //순회하면서 heredoc 찾기 + } + pipe = pipe->right_child; + } +} diff --git a/srcs/redirect/redirect.c b/srcs/redirect/redirect.c deleted file mode 100644 index 0e4b3c2..0000000 --- a/srcs/redirect/redirect.c +++ /dev/null @@ -1,52 +0,0 @@ -#include "../../incs/minishell.h" - -void redirect(t_data *data, t_leaf *cur_root); -void redirect_input(t_data *data, t_leaf *cur_leaf); -void redirect_output(t_data *data, t_leaf *cur_leaf); -static void check_file(t_data *data, int fd); - -void redirect(t_data *data, t_leaf *cur_root) -{ - t_leaf *tmp; - - tmp = cur_root->left_child->left_child; - while (tmp) - { - if (tmp->token->redirect_type == T_HEREDOC) - heredoc(data, cur_root); - else if (tmp->token->redirect_type == T_INPUT) - redirect_input(data, tmp); - else if (tmp->token->redirect_type == T_OUTPUT \ - || tmp->token->redirect_type == T_APPEND) - redirect_output(data, tmp); - tmp = tmp->left_child; - } -} - -void redirect_input(t_data *data, t_leaf *cur_leaf) -{ - if (data->cmd[data->cmd_idx].infile_fd) - close(data->cmd[data->cmd_idx].infile_fd); //에러처리 - data->cmd[data->cmd_idx].infile_fd = open(cur_leaf->left_child->token->str, O_RDONLY); - check_file(data, data->cmd[data->cmd_idx].infile_fd); -} - -void redirect_output(t_data *data, t_leaf *cur_leaf) -{ - if (cur_leaf->token->redirect_type == T_OUTPUT) - data->cmd[data->cmd_idx].outfile_fd = open (cur_leaf->left_child->token->str, O_WRONLY | O_TRUNC | O_CREAT, 0644); - else if (cur_leaf->token->redirect_type == T_APPEND) - data->cmd[data->cmd_idx].outfile_fd = open (cur_leaf->left_child->token->str, O_WRONLY | O_APPEND | O_CREAT, 0644); - check_file(data, data->cmd[data->cmd_idx].outfile_fd); -} - -static void check_file(t_data *data, int fd) -{ - if (fd < 0) - { - close(fd); - g_exit_status = 1; - if (data->parent ==0) // 자식에서 종료 or 부모에서 종료 확인해주기 - exit(1); - } -} diff --git a/srcs/redirect/redirect.o b/srcs/redirect/redirect.o deleted file mode 100644 index 246f38b9d35f5242a0d108fc14640376a328307f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1884 zcmb7F&1(}u6o08{nrhn((u0D~_;JXgk?KM8P-wN$6;!mePy`u6x-rofn%-bm%5isjSF#U$jPx?*Eq8}xCAifV)_&=mbyX}2w^2e zd@4F=IetCAG2O_rN>d+rIlXacA5lW5q&bP-15h~@V=wujEc{T8C%~f}b`y3S7W?Tc zl!f=OGCpV%9`)ZcYL-8n#VT7()oWl8w>^DlCvPL57T?kN>e>4TZ31-!3tyVLO zZ-O^o$B!F5bDXDn-A};P4=7^e(gg$()uH~n}c{(K%hbe~Z=tLQo> zB)Pos;A%Wy#6{T23It*gz^bNL{U{IiR{2%Z-7qG`-M<~-Q&*VnxPSkQ2>@VnyUhlf z=~eUE(XP=$?(-_=Hj0G}G9L3wVHY;^jQKv$I}hJ<9%%7?HyI^=XK;$ll-jyDqL%l@7DO9nPKwe1D-%fo1Za{A$|z@=ofA;MDrsW z>%lSpT*6p7eGdfI|XSg|`Io}9osVF5ZFBl-iS C7jj(y diff --git a/srcs/redirect/redirection.c b/srcs/redirect/redirection.c new file mode 100644 index 0000000..a26c37b --- /dev/null +++ b/srcs/redirect/redirection.c @@ -0,0 +1,61 @@ +#include "../../incs/minishell.h" + +void do_input_redirect(t_leaf *leaf,t_data *data) +{ + int fd; + + t_leaf *temp; + fd = 0; + temp =leaf; + + if (temp->token->redirect_type == T_HEREDOC) // heredoc 일경우 전에만들어 준 heredoc 으로 접근해줘야함 + { + fd = open (data->info->heredoc_file[data->info->index-1], O_RDONLY);// 만들어지면 바로 ++을해줘서 인덱스 -1 로 접근을해야 전에 만들어진 heredoc으로 접근 + dup2 (fd, STDIN_FILENO); + return ; + } + else if (temp->token->redirect_type == T_INPUT) // 그냥 인풋 + { + fd = open (temp->left_child->token->str, O_RDONLY); + } + check_file (fd,data); + dup2 (fd, STDIN_FILENO); + close (fd); +} + +void do_output_redirect(t_leaf *leaf,t_data *data) +{ + int fd; + t_leaf *temp =leaf; + fd = 0; + + if (temp->token->redirect_type == T_APPEND) + fd = open (temp->left_child->token->str, O_WRONLY | O_APPEND | O_CREAT, 0644); + else if (temp->token->redirect_type == T_OUTPUT) + { + fd = open (temp->left_child->token->str, O_WRONLY | O_TRUNC | O_CREAT, 0644); + } + check_file (fd,data); + dup2 (fd, STDOUT_FILENO); + close (fd); +} + + + + +void check_redirect(t_leaf *leaf,t_data *data) +{ + + t_leaf *temp = leaf->left_child->left_child; + + while(temp) + { + if(temp->token->redirect_type == T_INPUT ||temp->token->redirect_type == T_HEREDOC) + { + do_input_redirect(temp,data); // input or heredoc + } + else if (temp->token->redirect_type == T_OUTPUT ||temp->token->redirect_type == T_APPEND) + do_output_redirect(temp,data); // output or append + temp=temp->left_child; + } +} diff --git a/srcs/utils/env.c b/srcs/utils/env.c index f260421..5f216a9 100644 --- a/srcs/utils/env.c +++ b/srcs/utils/env.c @@ -6,22 +6,22 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 06:38:21 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 20:53:31 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 08:49:50 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -void env_print(t_input *input); -t_list *env_search(t_input *input, char *key); -t_bool env_remove(t_input *input, char *key); -char **env_to_array(t_input *input); +void env_print(t_data *data); +t_list *env_search(t_data *data, char *key); +t_bool env_remove(t_data *data, char *key); +char **env_to_array(t_data *data); -void env_print(t_input *input) +void env_print(t_data *data) { t_list *cur; - cur = input->envs; + cur = data->envs; while (cur) { printf("%s\n", cur->env); @@ -30,13 +30,13 @@ void env_print(t_input *input) } //환경변수 이름에 해당하는 노드를 반환하는 함수입니다 -t_list *env_search(t_input *input, char *key) +t_list *env_search(t_data *data, char *key) { char *tmp; t_list *cur; tmp = ft_strncat(key, "=", 1); - cur = input->envs; + cur = data->envs; while (cur) { if (!ft_strncmp(cur->env, tmp, ft_strlen(tmp))) @@ -46,35 +46,35 @@ t_list *env_search(t_input *input, char *key) return (NULL); } -t_bool env_remove(t_input *input, char *key) +t_bool env_remove(t_data *data, char *key) { t_list *env; - env = env_search(input, key); + env = env_search(data, key); if (!env) return (FALSE); if (env->pre) - input->envs = env->next; + data->envs = env->next; else env->pre->next = env->next; ft_lstdelone(env); return (TRUE); } -//리턴값 더블포인터를 input->env_array에 담아서 사용하시고, 쓰고 나서 더블포인터만 free해주면 됩니다 -char **env_to_array(t_input *input) +//리턴값 더블포인터를 data->env_array에 담아서 사용하시고, 쓰고 나서 더블포인터만 free해주면 됩니다 +char **env_to_array(t_data *data) { t_list *cur; char **array; int i; int cnt; - cnt = ft_lstsize(input->envs); + cnt = ft_lstsize(data->envs); array = (char **)ft_calloc(cnt, sizeof(char *)); if (!array) return (NULL); i = -1; - cur = input->envs; + cur = data->envs; while (++i < cnt) { array[i] = cur->env; diff --git a/srcs/utils/env.o b/srcs/utils/env.o deleted file mode 100644 index ad3f5607faab19938335b31d0b96cabc56f00d81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1992 zcma)7OK1~87@pLsX?-N%gDQeO_`0kVK@hBvVpm2mD5B`4OvAc;K$_HKqp=XEY^`0^ zf(H+t1P>kr51vFsM6J-Cd|V`l9C8t|pb&3Cs`2}0W^EcRI57Lq|N7?p|C!zW@Z;OB zjf_RsF+4CkF{2%L^kQP{!ki<=8sjx3VjQ9zj8F$Aqe*x)gmCPlqt;5lU|znkqKB)S z8i(*Gx3-?KP2}uk(EHi`}9IA-D|Ujeu^pRQv?UndRUCky|tyu#=+!qKTn}*xqR}XuiEId{I`Rw!+gb zRk6ip#4ei4loFi6LvnMEf%T41qy4BU-atIqw%S-;3kvXT|<_AjC8euM>>AX@R>xNn+XvO*o7*{Sl8hgiQ~ zolWq$rPJX#&=zzKwO~py!jaN7ljqPkw6H(l%}&r3YUsNyUx&~}GQ9JTmGLjXdVv_b zy@vm;&iKBDf4j1?$kcfjDaIr5%^RbXvk&$?nB`?^XtNpeU;|s@vmGb5gx?{G8zhXM zDo*oc|B6c^Y);2%zW zhlvqK;FpxKQdo})yEsmI$|>YmToaSwI&EiEa^6nmtT84e$cS{O^G<$z%2xiIJ(0bJ XHPB(dVyCki(sH)4S*dh7Yccj4gp`;> diff --git a/srcs/utils/list.o b/srcs/utils/list.o deleted file mode 100644 index 34d4f239cdc64565d9bc95294badb241baad5146..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1376 zcmaJ=L2DC16rPPS4ceL&Jya2zgW#zmUW~Vvc3}krq7}T9aZNThn5MyOY$yZ*slu|C z9Q*^`di27giPVPn1K6$06)ZkDS>Deo?i*K5qv=1mtuNJ|%d_#azI6dMXwDIC*AHFn_%73>A~U-eu&G zGwgh@LT9LM5#0e@KJI@59V)AP)IDbO05JYqG@zA!W3m@I9IJoP`{Ka~^&32K`-J*M zp0~E{3#(~c_ViS`i=-c5w)_tt+4SFDR{sLkW@v+9K1&&#c2-KINPbh=LyyrAy^L{9)I)buWSgGH< z-x4tO7~}uZ1kTnbOM$G^gQ~wNIIVc~K**=kZUNN>_h>7mC+4J_zEqy<6B5Yp`rnx>L$=pqD!twLCY z{s}#L^ys~X9xe3ZKOm%_uoofp(DZvVZ?dta&V}j^Zf6{BvI}TVS$gq ze{fKO!ydsGnBQOrQu`(7IC>I0_hr*M45HA+mM>M_EoIzA|0LjkJWGTIY^Y7m)7xNhfu^d#pP<9SjC$@MB0ZUwl+r zIW(bNzFLr1nHBaWl;3=<{!r?* m#`L-lqRmjZ!fM!VkzNaRy%pB#LAB|~YEa*41Ypg;jDHD6d8gU{ diff --git a/srcs/utils/temp.c b/srcs/utils/temp.c index 9902c65..f6442b2 100644 --- a/srcs/utils/temp.c +++ b/srcs/utils/temp.c @@ -3,8 +3,8 @@ #include "../incs/minishell.h" void tree_print(t_leaf *leaf); -void print_token(t_input *input); -void env_array_print(t_input *input); +void print_token(t_data *data); +void env_array_print(t_data *data); void check_leak(); //트리 전위순회 출력 @@ -45,9 +45,9 @@ void tree_print(t_leaf *leaf) } //토큰 리스트 출력용 -void print_token(t_input *input) +void print_token(t_data *data) { - t_list *tmp = input->tokens; + t_list *tmp = data->tokens; printf("\n\n--------------token list--------------\n"); while (tmp) { @@ -85,9 +85,9 @@ void print_token(t_input *input) } //배열에 넣은 환경변수 출력용 -void env_array_print(t_input *input) +void env_array_print(t_data *data) { - char **array = env_to_array(input); + char **array = env_to_array(data); for(int i=0; array[i]; i++) printf("%s\n", array[i]); diff --git a/srcs/utils/temp.o b/srcs/utils/temp.o deleted file mode 100644 index a6a8d465e7054628bed02116eb5ee3bcfcc4c65f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2948 zcma)8QD_`h6n&ed$+FeXTCG$OGD-sxceS+IBS zgg{^uZ5$%~i1g12eh7Xg_#^hG7^U^2^urGeA_h^&!U_>YqSeN8=iRqEvq`~A-rRTY zJ@3Bz?tMFx+kgLduSJMRqrd~B2_xEohlv4s4C4|x?jzTmm7|^3Kr}{7L4)FvNa@-| zSIre3O}#!^!+Q26FQ9ld-Hr-znw(8yk(3rGGX>Yl<|f%7WjLOW)5^KO&w1+goUVq* zFEclrPiI_tA$KvG8<+BIf7OY}r9%oWvT+@Uqna(os%H#^l+vD(6Ha>8RtxI$i*i0+ zaJ-W^C&klpScoY-C;dFeaSZ=BMoctgkkF=N{}>PjZav((XG zEVpVu43?LVV&#e2%JM$}cd4WCKz>7jeUu-aWgU8~s)?ONWTS(+r@8bmyQ7RrsZ69ak<=b&6 zD-eaNJ`gZbOuzJAF}mGzZ*Px5eET$k(%12^&537?)+Hheqg8N!O~1d?Pp>Cxt)zCa z)gQQHx_+gF9dz?k^vHT zLz8OVcql;PZfH`i8-F5AK3shxZmAloH60OS`6L-uy91kBd;-gRi*E0e*l{IQ(ed63 z1;B;p0FAZ8>H=&bo0ZhI4$vD4fM38fDudg#r0W7)^#lB(1AtzCzi<)gM1FJ233VCF zvCVM*7k1T;7Z>10szOoxWtpLhRqDEl8_*s!d1r3o@B_7^yi}!hJ%UPYIGjqDb}?IU5pdiO4|9D&bJKRtoB^pm8<#wt zWuXlsz*;JqXHo zC>%sR0}i@DzTl2QH1YvGw(yc5Nh`I_Ka3YD$x)^D`5#es5qW1sM2hi9{DGF}Ww1`b z{shLIztC|A=O;w(k@&j}eGlr-FY(ZRarv&|`5!RggLri4secuZ^F5Ha2HraJIPZPD z^Eeki*~!|8b#tn?`q9^4444U@)gz*)|)HCwG z!uTb|3C3-VTNu+#BL2^)HO2b@n($YQuQC3J@fF57#*>WCFitXl1DdwzVQsR8^6m6L zi~)kamj+{fkLepp{w)j=6N9i8ng*aqC`|u1_;OxhMtINFVIl3@+tQtrX~#*=E96gQ w9{+v1LegtW&nG3`A+9XAY4<`wC@a?D +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:48:39 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 18:33:51 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 08:36:07 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -59,16 +59,12 @@ t_bool tree_add_right(t_leaf *parent, t_token *new_token, int leaf_type) return (TRUE); } +//토큰은 환경변수 리스트에서 삭제하기 때문에 트리의 큰 틀만 삭제 void tree_clear(t_leaf *leaf) { - t_leaf *left; - t_leaf *right; - if (!leaf) return ; - left = leaf->left_child; - right = leaf->right_child; free(leaf); - tree_clear(left); - tree_clear(right); + tree_clear(leaf->left_child); + tree_clear(leaf->right_child); } diff --git a/srcs/utils/tree.o b/srcs/utils/tree.o deleted file mode 100644 index 79cce5f1f383b1f01d6d344ccb5b99e474bb6a3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1592 zcmbtU&1(};5Pzw)4YhSw@DN4l9z1x77C{lbG}wiAuu!yxUdro|Zkj^+LAt>x1cIr; zvX>$rJo*=SwI?l9$kA(#K`LyZ!XAUv*5B-#wW+m5abVtj&-~u(OFn=9b}%SJ>YTs< z?gwv?Vu3+d!1u^Lg{G(w)Z(1PMo&S^VWE`gRz1qpq|~%MJDpfZGSjDZ>PJ{^oYxXY z{U}SIUw(CY&B=SJvhrkUWkIQj6TR`IPf`>C2w{;)KOuOMu2RY^szTXWb`$$JzBin` zrNd$k;F7zM>w*wP4#na&&I~wSi!meyz(mxB{6*lP{j?zGAyF@;z`aEGC+?lo8$U~* zk^WcN*t4Wxi~P#oN5b)83`a;+(zn~PQELn1#R!>AyG!oQ9UOtZCxgkhpUXf*GMH&g ze~3J?nM+d^>*g=rpX|!O?#jj|Yi`FFty6&KkI{VTS3-Yg7Xu?ZQaC#?yctb=rrAhcc)|L1j0&M+^BOAho2Qv!KHUYCo4oW4d%; z?*rJ_+)m-9F}gtmgfTk)|M<+~_{@LBXZ{sF`hHk!t&45prHIa59PzSwC9KnUYyls^ zZ|copOW}LHt}uK@O8j}~{zOl;h@Yoc^;u`*m6j*s7JE*MZ*zS1l={ouKlSX9NL9_0 zIXsx&M9p>huYu(cKm{>AA#xYZmwgXL2Dpy$Cctkwk8%7luY|nJf$n!!-fQG-avtM8 z(U0CzzYy8ykoY}jzo3TXRY-i8>^vkw1LG_$mJqR@p0a_2Iypd4W7{GHbPG)JZMN^T zO);WLFo$CM@o%=J?LJ`Cq`b20DraFqm6sNao;b2gZUN?^a;r<8TK62Uvd+F8xskEBMgrCTbM1KGP diff --git a/srcs/utils/utils.c b/srcs/utils/utils.c index 4fee07c..5b6eb0c 100644 --- a/srcs/utils/utils.c +++ b/srcs/utils/utils.c @@ -6,22 +6,22 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/12 19:40:44 by eunwolee #+# #+# */ -/* Updated: 2023/07/22 13:23:33 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 08:45:57 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -t_bool error_back_readline(t_input *input, char *str, int error_code); +t_bool error_back_readline(t_data *data, char *str, int error_code); void program_error_exit(char *str); -void free_input(t_input *input); -void free_data(t_data *data); +void input_free(t_data *data); +void data_free(t_data *data); //input 관련 에러일 때 사용 -t_bool error_back_readline(t_input *input, char *str, int error_code) +t_bool error_back_readline(t_data *data, char *str, int error_code) { printf("%s\n", str); - input->error_code = error_code; + data->error_code = error_code; return (FALSE); } @@ -33,19 +33,19 @@ void program_error_exit(char *str) } //input 한번 끝났을 때 사용 -void free_input(t_input *input) +void input_free(t_data *data) { - ft_lstclear(&input->tokens); - input->tokens = NULL; - free(input->line); - input->line = NULL; - tree_clear(input->root); - input->root = NULL; + ft_lstclear(&data->tokens); + data->tokens = NULL; + free(data->input); + data->input = NULL; + tree_clear(data->root); + data->root = NULL; } //정상종료 시 사용 -void free_data(t_data *data) +void data_free(t_data *data) { - ft_lstclear(&data->input->envs); - free(data->input); -} + ft_lstclear(&data->envs); + free(data); +} \ No newline at end of file diff --git a/srcs/utils/utils.o b/srcs/utils/utils.o deleted file mode 100644 index f9ac99e1ceb7798ddaa362f31956a53d9294359c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1576 zcma)6O=}Zj5T3*)jkPszwE}IPvLZA>4 z*C2TC2Z$$+9*ZZTh3ZLvf)}Akl^%nK>ND@o)^u&afq9?#d}j88_w%nGhr>j%Q-lLL z1Wm&}W<&ASTyBrUXMDoW#m}EJ}HH%M0wlUzmHa@YfHml+0p2?sagCaB_$? z8A4I2*znwHy&?gnj`M{);rwZSz&??6k0Rh(UvsRYr<(PRYQ3b?o!O%#3`6$Xlwb~g zO!)x=WX3T{rR-HzcC9r#Xo&9jQuwxnZ%g>Zr87jUq0M*$Iu6xs=@CjoS$HVNzha3| z;Ohjw7ZCk45A7G;lQq>J{7-w)^uL*%{fz0id#2w!@E7;ZZu7u=aqBx6-q9ZOT>sS7 z;hw)V<~Ghr}a{|t_XzV5r)2;RG%f#YUi z$kz;`M0qhM2jm^e7Y5|NNIo|pe@^nT$M-4LGGfN)aEkw_D~Ml)&L95PBKr}|oHd@t zZ;vIVkL&Q7X;tcE&lBrvsB@&Q09(rme6NsrD|NE>KYWL%!4BD@6_dxus**6k@ zF7ag`e&y^Ea0qx0cpAui;tOOi0`c#kF97k_$-H1j5TN5Lz%&X%X^S7eUrup8{2pWC z=YcHz9DVI{DdKNL{F#V98TfHLgO=&Q7mw&+#J?Ny373d%t7_e8dZZk8y@ESM*{-|p zD!WxhtfEmhJj-h~P@;3VZ-XNAd#cv(iZ$DENqI~rwu9@_E0d6|Sj9)mwXIUETDOC# KGP`7X7X1OyU+-K1 From 1c823a78e805859f878bc6426984e18ca43a378e Mon Sep 17 00:00:00 2001 From: eunwoo Date: Mon, 7 Aug 2023 12:19:26 +0900 Subject: [PATCH 12/57] . --- incs/.DS_Store | Bin 0 -> 6148 bytes Makefile => incs/Makefile | 0 srcs/.DS_Store | Bin 6148 -> 6148 bytes srcs/builtin/.DS_Store | Bin 0 -> 6148 bytes srcs/builtin/ft_env.c | 63 ++++++++++++++++++++++++++++++++++++++ srcs/builtin/ft_export.c | 17 +++++----- srcs/builtin/ft_unset.c | 52 +++++++++++++++---------------- srcs/execute/pipe.c | 6 ++-- srcs/execute/setpath.c | 2 +- srcs/minishell.c | 34 +++----------------- srcs/utils/env.c | 4 +-- 11 files changed, 105 insertions(+), 73 deletions(-) create mode 100644 incs/.DS_Store rename Makefile => incs/Makefile (100%) create mode 100644 srcs/builtin/.DS_Store create mode 100644 srcs/builtin/ft_env.c diff --git a/incs/.DS_Store b/incs/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9b1aadb990a8d8dba95deb0abb1fbb6ac8f4a355 GIT binary patch literal 6148 zcmeHKL2uJA82#LJt4oE{187{3B5|EY#}H`RrIc})1Q&wf0H`EuSfhDKm89#Ts?;m+ zANUI#`6v7rPVhe4pfm|rgpj|;evbW~lf1-sOhjTdpBxbNiAW+bwyz;;2yW+8iBFg|S;2zv)@1(h#jYH9SJv|DgjVq8&ZX znXkwC2KP&ayG>8Q4(UA=r>e{pw<}CZ&nTb^iolI=KT(DMslxBlCAc|`fX-2>-HZ5M zQS_kT87hWm3WdT^Q?<@3st(O?g$$a8YiMsiZ+J69|FcFedsF7N(Pu_ylvkdVooVES zi+pC^%hzzG;=C9PzKPaWdwZuNJF+L=`qOmb7eO)4M?vdKpU?jAoMU#QC@{eW9X2rLLX_ya4)N1XhA>?=P@RGP5i%$KmEfFW~O((q{s{s79h zbim|KRzX*Ljr!%6*$}%ZJ78at?3F8B**V}Ga1Ou$o*z7mLyK#Jdg?%?w*bI4s&$~u zKMbt(EDkNM4Wb1hj1*|3!fr8yk)z(TyrIRlK_e$&Hy^@YS=b$l&{s$Qo~Dx+8g#jH zz&Wt#z?M1f^ZNhf&-?#Pkvnq^I0ybK2SoeCKN;bX?Als;I9_W#q<2Uh%v&4O5@dEc h)&*XQZz1VGo5uy<(Bj%4Y7p*6K-=Il=fGce;3s6)*J%I% literal 0 HcmV?d00001 diff --git a/Makefile b/incs/Makefile similarity index 100% rename from Makefile rename to incs/Makefile diff --git a/srcs/.DS_Store b/srcs/.DS_Store index c15fb9dd6fda839dff8584cb7e238b02a82f8bb8..21ae4fd7d18ae537e6136c7ac28da42f6acc6f6e 100644 GIT binary patch delta 547 zcmZoMXfc=|#>B!ku~2NHo}wrZ0|Nsi1A_nqLkUABL!M_&esWUIW=59f%t;_Ac7`N| zQlLZ*vUGkDPzI=j!4Zh{{(}LKg`qmBytp7K2dsK~QbA5;afyM!HAW_87FITP4t5T1 zj>+~+VLBX~9Gvk2;?>p0hL$=CCg!y|3e}cI20*5E+kO5Sm1B7}E$!NNMLUh%Gf(XcDU|?e?U`S*rVkpM6f+-!M7_OEBs4kTu z1!xV3PDXb;IP~X%R71^X1;!L85_1@eQJulS4GIyc(usv@HnVf^a{!Y7Fq*$JPv#eK RB)qu~2NHo}wrV0|Nsi1A_nqLkUABLtavOaY0hf#=_-{@*o*@h9rhk zh8&;_l5BnwP-fTUO4dS6sp@K7Lt{%r9R+h!i&`CpYD*&n9R(9hquN?d4pC)&>!A4T zoZP(pp2>o2^1QvsCQg=SRhgX2`gF4h2OrC3b`E|HprbYma(ri=%rD}|0aOZd7t7`d Hku}T!E_x}% diff --git a/srcs/builtin/.DS_Store b/srcs/builtin/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c6f166f562757e467a33ba7d207173a0f2640bfb GIT binary patch literal 6148 zcmeHKOHRWu5PdF{=x0HfY>;w-O57k+Wx<*Q6!k+virR{{&}H@<0f{Sc4X(thys@Vx zP0SV{n32ZMvFFA1i|mO3xZZkv4s-xC=z{eYi-<|Tc*SbkB0T5cvBEuO=wfu0RidrI z6fgyTn*y?Tn;2rvotvSsf9IoNHXpKAj)pgSck7Kc;H1PDkT2W}%dqV<> zzzE}Nv^y(BH#K^~_&dxajOP-gv1iQi7>R#j{CilE=5L5=e6c3yd*2a@%k1y9MtSzD!`mA z)@TQ`(iAWSOo6=uay}$v)LQ#^1~pUL@`y&1G0za0+kr3POlg) z(Al17T&kD{40JfXd^jE1=?%sC(fR(whr^`-tuzHpfkOq3!edAB|K<1h|3i{JnF6N3 zpHjfp``7&*m!!G1vN*}L3H^pHCUJQ{Php|y*jFSKpVGatFOdo{Rm=mjg=RkjUIr^n Ifge@i6Y9j6%K!iX literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_env.c b/srcs/builtin/ft_env.c new file mode 100644 index 0000000..a1c08ff --- /dev/null +++ b/srcs/builtin/ft_env.c @@ -0,0 +1,63 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_env.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: kichan +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/21 19:15:04 by kichlee #+# #+# */ +/* Updated: 2023/08/06 23:28:27 by kichan ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../incs/minishell.h" +void ft_env(t_data *data, t_leaf *cur_root); + +char *check_dollar_two(t_data *data, char *str) +{ + t_list *tmp; + tmp = env_search(data, str); + if(tmp == NULL) + return (NULL); + else + return (tmp->env); +} +/** + * 1. cmd cnt 를 해주고 cmd가 1개 인경우는 + * -> env_print 실행 + * 2. cmd cnt 가 1개가 아닐때 + * -> $가 있을때 + * $뒤 path가 존재 할때 $뒤를 검색한 다음에 해당하는 path만 반환 + * $뒤 path가 존재 없을때 env_print 실행 + * -> $가 없을때 해당 문자열 + * env: 문자열: No such file or directory + * + * + * export $kichlee 있는 거면 kichlee + * export $aaa 없는 거면 $aaaa +*/ + +void ft_env(t_data *data, t_leaf *cur_root) +{ + char **cmd; + + cmd = join_cmd(cur_root->left_child->right_child); + + if(!cmd[1]) + env_print(data); + else + { + if(cmd[1][0] == '$') + { + if(ft_strlen(cmd[1]) == 1) + printf("env: %s: No such file or directory\n", cmd[1]); + else if(check_dollar_two(data, cmd[1]) == NULL) + env_print(data); + else + printf("%s", env_search(data, cmd[1])->env); + } + else + printf("env: %s: No such file or directory\n", cmd[1]); + } + // return (TRUE); +} diff --git a/srcs/builtin/ft_export.c b/srcs/builtin/ft_export.c index 8be7bb5..94748bf 100644 --- a/srcs/builtin/ft_export.c +++ b/srcs/builtin/ft_export.c @@ -3,16 +3,16 @@ /* ::: :::::::: */ /* ft_export.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: donghong < donghong@student.42seoul.kr> +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:25:07 by kichan #+# #+# */ -/* Updated: 2023/08/03 17:12:35 by donghong ### ########.fr */ +/* Updated: 2023/08/06 22:34:57 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void ft_export(t_data *data, t_leaf *cur_root); +void ft_export(t_data *data, t_leaf *cur_root); static int check_underbar(char ch); static int check_name(char *str); static char **sort_bubble(char **str, int size); @@ -22,19 +22,17 @@ void ft_export(t_data *data, t_leaf *cur_root) { char **cmd; char **tmp; - int arg_count; + int arg_cnt; int i; i = 1; cmd = join_cmd(cur_root->left_child->right_child); - arg_count = count_args(cmd); - - printf("arg_count : %d\n", arg_count); - if (arg_count == 1) + arg_cnt = count_args(cmd); + if (arg_cnt == 1) print_export_order(data); else { - while (i < arg_count) + while (i < arg_cnt) { printf("\nft_export while loop start!\n"); if (!ft_isalpha(cmd[1][0]) && !check_underbar(cmd[1][0]) && !check_name(cmd[i])) @@ -53,7 +51,6 @@ void ft_export(t_data *data, t_leaf *cur_root) ++i; } } - // return (TRUE); } int check_underbar(char ch) diff --git a/srcs/builtin/ft_unset.c b/srcs/builtin/ft_unset.c index 93c8493..66c06a1 100644 --- a/srcs/builtin/ft_unset.c +++ b/srcs/builtin/ft_unset.c @@ -3,17 +3,17 @@ /* ::: :::::::: */ /* ft_unset.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: donghong < donghong@student.42seoul.kr> +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 22:51:02 by kichan #+# #+# */ -/* Updated: 2023/08/03 17:12:24 by donghong ### ########.fr */ +/* Updated: 2023/08/06 22:32:49 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void ft_unset(t_data *data, t_leaf *cur_root); -static void env_clear(t_data *data); +void ft_unset(t_data *data, t_leaf *cur_root); +// static void env_clear(t_data *data); void ft_unset(t_data *data, t_leaf *cur_root) { @@ -22,35 +22,31 @@ void ft_unset(t_data *data, t_leaf *cur_root) int i; cmd = join_cmd(cur_root->left_child->right_child); - arg_cnt = count_args(cmd) - 1; + // arg_cnt = count_args(cmd) - 1; + arg_cnt = count_args(cmd); i = 1; - printf("\n=====arg_Cnt : %d\n========", arg_cnt); - if(arg_cnt == 0) - { - printf("if start!"); - env_clear(data); - } - else - { - printf("else start!"); + // if(arg_cnt == 0) + // env_clear(data); + // else + // { while (i < arg_cnt) { env_remove(data, cmd[i]); ++i; } - } - // return (TRUE); + // } } -static void env_clear(t_data *data) -{ - printf("env clear start!\n"); - t_list *current = data->envs; - while (current != NULL) - { - t_list *next = current->next; - ft_lstdelone(current); - current = next; - } - data->envs = NULL; -} + +//왜 arg_cnt가 0이면 clear하지? +// static void env_clear(t_data *data) +// { +// t_list *current = data->envs; +// while (current != NULL) +// { +// t_list *next = current->next; +// ft_lstdelone(current); +// current = next; +// } +// data->envs = NULL; +// } diff --git a/srcs/execute/pipe.c b/srcs/execute/pipe.c index 9a2ed6a..de432e2 100644 --- a/srcs/execute/pipe.c +++ b/srcs/execute/pipe.c @@ -9,9 +9,9 @@ void link_pipe(int i, t_pipe *base,t_data *data) } else if (i == 0) { - close(base->com[i].fd[0]); - dup2(base->com[i].fd[1], STDOUT_FILENO); - close(base->com[i].fd[1]); + close(base->com[i].fd[0]); + dup2(base->com[i].fd[1], STDOUT_FILENO); + close(base->com[i].fd[1]); } else { diff --git a/srcs/execute/setpath.c b/srcs/execute/setpath.c index 885e66a..0e5acf8 100644 --- a/srcs/execute/setpath.c +++ b/srcs/execute/setpath.c @@ -27,7 +27,7 @@ void abs_path(t_data *data) char *temp; i = 0; - data->env_array = env_to_array(data); // 환경 변수 array에 댐아주기 ! 1 + data->env_array = env_to_array(data); // 환경 변수 array에 담아주기 pipe->cmd_abs = get_path_envp(data->env_array); if (!pipe->cmd_abs) exit(1); diff --git a/srcs/minishell.c b/srcs/minishell.c index 68ca520..2b4830c 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/06 18:10:35 by eunwolee ### ########.fr */ +/* Updated: 2023/08/06 22:33:17 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,36 +22,12 @@ int main(int argc, char **argv, char **envp) (void)argv; init(&data, envp); - - // execute(data); - // while (TRUE) - // { - // count_pipe(data); + while (TRUE) + { get_input(data); execute(data); - // input_free(data); - // } - // while (TRUE) - // for(int i=0; i<1; i++) - // { - // char *str = get_next_line(0); - // data->input = ft_substr(str, 0, ft_strlen(str) - 1); //-1 개행 떼기 - // if (*data->input) - // { - // lexer(data); - // if (syntax(data) == FALSE) - // return (0); //free하고 다시 input 받기 - // parser(data); - - // // print_token(data); - // // printf("\n\n"); - // // tree_print(data->root); - // // printf("\n\n"); - // input_free(data); - // } - - // execute(data); - // } + input_free(data); + } // data_free(data); return (0); } diff --git a/srcs/utils/env.c b/srcs/utils/env.c index 5f216a9..9000e80 100644 --- a/srcs/utils/env.c +++ b/srcs/utils/env.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 06:38:21 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 08:49:50 by eunwolee ### ########.fr */ +/* Updated: 2023/08/06 22:27:25 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -53,7 +53,7 @@ t_bool env_remove(t_data *data, char *key) env = env_search(data, key); if (!env) return (FALSE); - if (env->pre) + if (!env->pre) data->envs = env->next; else env->pre->next = env->next; From 63d1c722cd4608c7954b9df8333d9b7db44afb0f Mon Sep 17 00:00:00 2001 From: eunwoo Date: Mon, 7 Aug 2023 14:35:20 +0900 Subject: [PATCH 13/57] . --- incs/Makefile => Makefile | 0 srcs/.DS_Store | Bin 6148 -> 0 bytes srcs/minishell.c | 2 +- srcs/parser/parser.c | 2 +- srcs/utils/tree.c | 4 ++-- srcs/utils/utils.c | 6 +++--- 6 files changed, 7 insertions(+), 7 deletions(-) rename incs/Makefile => Makefile (100%) delete mode 100644 srcs/.DS_Store diff --git a/incs/Makefile b/Makefile similarity index 100% rename from incs/Makefile rename to Makefile diff --git a/srcs/.DS_Store b/srcs/.DS_Store deleted file mode 100644 index 21ae4fd7d18ae537e6136c7ac28da42f6acc6f6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~L2uJA6vv;tc1b8mJ%HE+DH7Ldbn6&YyOc5xTnT~$pwcuEi^!6yNmrz*Qm(*v z;45&1Pr`TM1pjAykfiL$#E@TQ{~i0i*!?B8V?j#kJr3Sg&|-F{A&bw?poy295Xkj()>+*wD7X<0BPrkG?do7{Y5tQ zW9j|HpT<#^ce~$2W24#Hv~0_6+poOibm8UWe4Y)*vlo2zG)-gwtUUIgMd4!9x&AOs z@^O@eGZ_#CAzWTQkCGr=4AXfMWHQ!M4Yp%Dqt4CcvbWpccK7eCw%uiauZv>uV6}4W z8@KNqJ{i4@Pm=V#95x9oQPQqyJ(CY8)DWC{vm{QFH)!D~i$Z#bGy$fZLbbsC0`wUk zRX`Q*5}>bjK$c^*t-k}vk$|?A%l!jT>D|Bkn^1qRMu-W(&L#8_jWq@}LQP)yk@6}V zaSM@UHZ8nliq5R&$$gYP+jOGunb9#~V*GY!Qj7Xti`t|qjcG<1B5FM}_-U4Vu;CX{ zfL>T9^|8wr|5NG3Z^@_6(p*Lv zR4yIJ4zw0ZQ3Ep{0uqDC41o(J@Dt~h@dE$= diff --git a/srcs/minishell.c b/srcs/minishell.c index 2b4830c..c835cb4 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/06 22:33:17 by eunwolee ### ########.fr */ +/* Updated: 2023/08/07 13:22:32 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/parser/parser.c b/srcs/parser/parser.c index ba26787..0bc8ac6 100644 --- a/srcs/parser/parser.c +++ b/srcs/parser/parser.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 18:35:07 by eunwolee #+# #+# */ -/* Updated: 2023/07/14 07:52:10 by eunwolee ### ########.fr */ +/* Updated: 2023/08/07 13:16:24 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/utils/tree.c b/srcs/utils/tree.c index 15092c9..d4cb850 100644 --- a/srcs/utils/tree.c +++ b/srcs/utils/tree.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:48:39 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 08:36:07 by eunwolee ### ########.fr */ +/* Updated: 2023/08/07 13:22:54 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -64,7 +64,7 @@ void tree_clear(t_leaf *leaf) { if (!leaf) return ; - free(leaf); + // free(leaf); //왜 프리 안해도 되지? tree_clear(leaf->left_child); tree_clear(leaf->right_child); } diff --git a/srcs/utils/utils.c b/srcs/utils/utils.c index 5b6eb0c..716a28b 100644 --- a/srcs/utils/utils.c +++ b/srcs/utils/utils.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/12 19:40:44 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 08:45:57 by eunwolee ### ########.fr */ +/* Updated: 2023/08/07 14:32:36 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,7 +17,7 @@ void program_error_exit(char *str); void input_free(t_data *data); void data_free(t_data *data); -//input 관련 에러일 때 사용 +//syntax 관련 에러일 때 사용 t_bool error_back_readline(t_data *data, char *str, int error_code) { printf("%s\n", str); @@ -25,7 +25,7 @@ t_bool error_back_readline(t_data *data, char *str, int error_code) return (FALSE); } -//system 관련 에러일 때 +//그 외 자식에서 종료해야되는 경우 모든 에러 void program_error_exit(char *str) { perror(str); From 696c01ffd09df5737e2a0ad81b549918336690af Mon Sep 17 00:00:00 2001 From: eunwoo Date: Tue, 8 Aug 2023 11:53:41 +0900 Subject: [PATCH 14/57] . --- .DS_Store | Bin 0 -> 6148 bytes Makefile | 2 + incs/bulitin.h | 33 +++-- incs/minishell.h | 10 +- incs/pipe.h | 44 +++--- incs/struct.h | 40 ++++-- incs/utils.h | 5 +- srcs/.DS_Store | Bin 0 -> 6148 bytes srcs/builtin/builtin.c | 13 +- srcs/builtin/builtin_utils.c | 161 +++++++++++---------- srcs/builtin/ft_cd.c | 55 +++---- srcs/builtin/ft_echo.c | 12 +- srcs/builtin/ft_env.c | 74 +++++----- srcs/builtin/ft_exit.c | 26 ++-- srcs/builtin/ft_export.c | 252 +++++++++++++++------------------ srcs/builtin/ft_pasterror.c | 18 +++ srcs/builtin/ft_pwd.c | 58 ++++---- srcs/builtin/ft_test.c | 72 ---------- srcs/builtin/ft_unset.c | 51 ++----- srcs/execute/execve.c | 15 +- srcs/execute/freepipe.c | 8 +- srcs/execute/pipe.c | 32 +++-- srcs/execute/pipeutils.c | 8 +- srcs/execute/setpath.c | 2 +- srcs/init/init.c | 25 ++-- srcs/lexer/expand.c | 3 +- srcs/lexer/quote.c | 32 +++-- srcs/minishell.c | 7 +- srcs/parser/parser.c | 2 +- srcs/parser/syntax.c | 20 +-- srcs/redirect/heredoc.c | 50 +++++-- srcs/redirect/heredoc_parser.c | 78 ++++++++++ srcs/redirect/heredocutils.c | 191 +++++++------------------ srcs/redirect/redirection.c | 77 +++++----- srcs/signal/signal.c | 52 +++++++ srcs/utils/tree.c | 4 +- srcs/utils/utils.c | 15 +- 37 files changed, 787 insertions(+), 760 deletions(-) create mode 100644 .DS_Store create mode 100644 srcs/.DS_Store create mode 100644 srcs/builtin/ft_pasterror.c delete mode 100644 srcs/builtin/ft_test.c create mode 100644 srcs/redirect/heredoc_parser.c create mode 100644 srcs/signal/signal.c diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..556a392b0ffdb9f5575bb1af5a523270e5564997 GIT binary patch literal 6148 zcmeHK(QeZ)6us^;nrK3*5R>*8iPwsi4iFPOL}hzGf)|3|0Z>WSz@mBa)THY}RVmNx zBlr!zWS_BLfOBnkYSZzG5c8F;k9~cv6CX!*OhjTZ89gHE5RngOYy~K8Fz#nxvzCo; zr{FPONp+M;m7>i9I{Wt(;I;E8r-F{CY^>i4^ga1yZJC!&%QL&qKhrarmsPKKDOwxe z=AE|R_P6}c@v)l5RZ>mLK{Ecxt#?YvbWu;z_jxuQcJ9AaMU~`5Hr5IGCUsC*T4S2kORQTVr>u+m@uh8lPc^L zL)e>xFzM)zEWb8r(n;tiV;uWrVQ(nHUOYso=_De9u5=1G1y&W +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/07 19:05:05 by eunwolee #+# #+# */ +/* Updated: 2023/08/07 19:18:37 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + #ifndef BULITIN_H # define BULITIN_H # include "struct.h" - - /*signal*/ -void sig(void); -void handle_sigint(int sig); + +/*signal*/ +void sig(void); +void handle_sigint(int sig); +void init_base(int ac); +void child_handler(int signum); /*builtin*/ -void exec_bulitin(int bulitnum,t_data *data , t_leaf *leaf); -int check_bulitin_func(char *name); +void exec_bulitin(int bulitnum, t_data *data, t_leaf *leaf); +int check_bulitin_func(char *name); void ft_cd(t_data *data, t_leaf *cur_root); void ft_echo(t_leaf *cur_root); void ft_exit(t_data *data, t_leaf *cur_root); -void ft_pwd(t_data *data, t_leaf *cur_root); +void ft_pwd(void); void ft_unset(t_data *data, t_leaf *cur_root); void ft_export(t_data *data, t_leaf *cur_root); +void ft_env(t_data *data, t_leaf *cur_root); /*builtin utils*/ -char **join_cmd(t_leaf * com_leaf); -int count_args(char **args); +char **join_cmd(t_leaf *com_leaf); +int count_args(char **args); t_list *create_env_node(char *key, char *value); void add_env_back(t_data *head, char *key, char *value); void update_env(t_data *data, char *key, char *value); diff --git a/incs/minishell.h b/incs/minishell.h index 43cb559..2d9fc4b 100644 --- a/incs/minishell.h +++ b/incs/minishell.h @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* minishell.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: donghong < donghong@student.42seoul.kr> +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:05:33 by eunwolee #+# #+# */ -/* Updated: 2023/08/03 17:06:43 by donghong ### ########.fr */ +/* Updated: 2023/08/07 19:06:30 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,6 +17,10 @@ # include # include # include +# include +# include +# include +# include # include "init.h" # include "parse.h" # include "struct.h" @@ -25,7 +29,5 @@ # include "pipe.h" # include "message.h" # include "../Libft/libft.h" -#include -#include #endif \ No newline at end of file diff --git a/incs/pipe.h b/incs/pipe.h index adb1c25..2c42bd5 100644 --- a/incs/pipe.h +++ b/incs/pipe.h @@ -1,28 +1,38 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* pipe.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/07 19:06:40 by eunwolee #+# #+# */ +/* Updated: 2023/08/07 19:07:50 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + #ifndef PIPE_H # define PIPE_H -int g_exit_status; //info init void info_init(t_info **info); -void pipe_init(t_pipe **pipe); +void pipe_init(t_pipe **pipe); void count_pipe(t_data*data); -void execute_cmd(t_data *data,int flag); -int fork_heredoc(t_data *data); -int check_bulitin(t_data * data); -void heredoc_flag(t_leaf *leaf,t_data *data); -void check_file(int fd,t_data *data); -void check_redirect(t_leaf *leaf,t_data *data); -void recover_std(t_data *data); -// void mk_heredoc(t_data *data); -void mk_heredoc_pipe(t_data *data); -void link_pipe(int i, t_pipe *base,t_data *data); -void check_redirect(t_leaf *leaf,t_data *data); -void do_cmd(t_data *data); -void exec_fork(t_data *data); +void execute_cmd(t_data *data, int flag); +int fork_heredoc(t_data *data); +int check_bulitin(t_data *data); +void heredoc_flag(t_leaf *leaf, t_data *data); +void check_file(int fd, t_data *data); +void check_redirect(t_leaf *leaf, t_data *data); +void recover_std(t_data *data); +void mk_heredoc_pipe(t_data *data); +void link_pipe(int i, t_pipe *base, t_data *data); +void check_redirect(t_leaf *leaf, t_data *data); +void do_cmd(t_data *data); +void exec_fork(t_data *data); void abs_path(t_data *data); char *set_path(t_data *data, t_leaf *leaf); -char **join_cmd(t_leaf * com_leaf); -void close_pipe(int i, t_pipe *base,t_data *data); +char **join_cmd(t_leaf *com_leaf); +void close_pipe(int i, t_pipe *base, t_data *data); void wait_child_processes(t_data *data); char *search_path(t_pipe *base); void execute(t_data *data); diff --git a/incs/struct.h b/incs/struct.h index f7e42dd..f945ff4 100644 --- a/incs/struct.h +++ b/incs/struct.h @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* struct.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: donghong < donghong@student.42seoul.kr> +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:24:15 by eunwolee #+# #+# */ -/* Updated: 2023/08/03 17:12:05 by donghong ### ########.fr */ +/* Updated: 2023/08/07 19:04:51 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,7 @@ # define STRUCT_H # define BUF_SIZE 1024 + typedef enum e_bool { FALSE, @@ -65,26 +66,37 @@ typedef struct s_pid int fd[2]; } t_pid; +/* +cmd_path : 명령어 +옵션 +cmd_abs : 절대경로 +*/ typedef struct s_pipe { t_pid *com; - - char **cmd_path;//명령어 +옵션 + char **cmd_path; char *command; - char **cmd_abs; // 절대경로 + char **cmd_abs; } t_pipe; +/* +항상 기준은 파이프 한커맨드라는건 파이프 기준으로 < 히어독은 포크로 진행되기때문에 +heredoc_file : 한 커맨드에 여러개 리다이렉션이 들어올수 있다 +oristdin : 이놈은 redirection이 나오면 fd 가변경 되는데 안돌려주면 계속 그 fd 를 사용 +oristdout : 같은이유 +pipe_num : fork 를 해주기위해서 갯수가 필요함 +*/ typedef struct s_info { - // 항상 기준은 파이프 한커맨드라는건 파이프 기준으로 < 히어독은 포크로 진행되기때문에 - char **heredoc_file; // 한 커맨드에 여러개 리다이렉션이 들어올수 있다 - int oristdin; // 이놈은 redirection이 나오면 fd 가변경 되는데 안돌려주면 계속 그 fd 를 사용 - int oristdout; // 같은이유 - int pipe_num; // fork 를 해주기위해서 갯수가 필요함 - int parent; - int pipe_index; + int index; + int heredoc_flag; + char **heredoc_file; + int oristdin; + int oristdout; + int pipe_num; + int parent; + int pipe_index; } t_info; typedef struct s_data diff --git a/incs/utils.h b/incs/utils.h index 0a48943..88927d0 100644 --- a/incs/utils.h +++ b/incs/utils.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:32:09 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 08:38:22 by eunwolee ### ########.fr */ +/* Updated: 2023/08/07 19:00:58 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -34,10 +34,11 @@ t_bool tree_add_left(t_leaf *parent, t_token *new_token, int leaf_type); t_bool tree_add_right(t_leaf *parent, t_token *new_token, int leaf_type); void tree_clear(t_leaf *leaf); -t_bool error_back_readline(t_data *data, char *str, int error_code); +t_bool error_back_readline(t_data *data, char *str, int error_code, int flag); void program_error_exit(char *str); void input_free(t_data *data); void data_free(t_data *data); +void init_base(int ac); /*temp.c 임시 함수*/ void tree_print(t_leaf *leaf); diff --git a/srcs/.DS_Store b/srcs/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..21ae4fd7d18ae537e6136c7ac28da42f6acc6f6e GIT binary patch literal 6148 zcmeH~L2uJA6vv;tc1b8mJ%HE+DH7Ldbn6&YyOc5xTnT~$pwcuEi^!6yNmrz*Qm(*v z;45&1Pr`TM1pjAykfiL$#E@TQ{~i0i*!?B8V?j#kJr3Sg&|-F{A&bw?poy295Xkj()>+*wD7X<0BPrkG?do7{Y5tQ zW9j|HpT<#^ce~$2W24#Hv~0_6+poOibm8UWe4Y)*vlo2zG)-gwtUUIgMd4!9x&AOs z@^O@eGZ_#CAzWTQkCGr=4AXfMWHQ!M4Yp%Dqt4CcvbWpccK7eCw%uiauZv>uV6}4W z8@KNqJ{i4@Pm=V#95x9oQPQqyJ(CY8)DWC{vm{QFH)!D~i$Z#bGy$fZLbbsC0`wUk zRX`Q*5}>bjK$c^*t-k}vk$|?A%l!jT>D|Bkn^1qRMu-W(&L#8_jWq@}LQP)yk@6}V zaSM@UHZ8nliq5R&$$gYP+jOGunb9#~V*GY!Qj7Xti`t|qjcG<1B5FM}_-U4Vu;CX{ zfL>T9^|8wr|5NG3Z^@_6(p*Lv zR4yIJ4zw0ZQ3Ep{0uqDC41o(J@Dt~h@dE$= literal 0 HcmV?d00001 diff --git a/srcs/builtin/builtin.c b/srcs/builtin/builtin.c index 24ee918..939395e 100644 --- a/srcs/builtin/builtin.c +++ b/srcs/builtin/builtin.c @@ -6,13 +6,13 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/21 17:42:18 by eunwolee #+# #+# */ -/* Updated: 2023/08/06 14:43:55 by eunwolee ### ########.fr */ +/* Updated: 2023/08/07 19:13:15 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -int check_bulitin_func(char *name) +int check_bulitin_func(char *name) { if (!ft_strncmp(name, "cd", 3)) return (1); @@ -26,11 +26,14 @@ int check_bulitin_func(char *name) return (5); if (!ft_strncmp(name, "export", 7)) return (6); + if (!ft_strncmp(name, "env", 4)) + return (7); return (0); } -void exec_bulitin(int bulitnum,t_data *data , t_leaf *leaf) + +void exec_bulitin(int bulitnum, t_data *data, t_leaf *leaf) { - if (bulitnum == 1) + if (bulitnum == 1) ft_cd(data, leaf); else if (bulitnum == 2) ft_echo(leaf); @@ -42,4 +45,6 @@ void exec_bulitin(int bulitnum,t_data *data , t_leaf *leaf) ft_unset(data, leaf); else if (bulitnum == 6) ft_export(data, leaf); + else if (bulitnum == 7) + ft_env(data, leaf); } diff --git a/srcs/builtin/builtin_utils.c b/srcs/builtin/builtin_utils.c index 1bcb144..c9eff41 100644 --- a/srcs/builtin/builtin_utils.c +++ b/srcs/builtin/builtin_utils.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/22 13:20:41 by eunwolee #+# #+# */ -/* Updated: 2023/08/06 14:35:21 by eunwolee ### ########.fr */ +/* Updated: 2023/08/07 20:29:49 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,28 +14,28 @@ int count_args(char **args) { - int count; - - count = 0; - while (*args != NULL) - { - count++; - args++; - } - return (count); + int count; + + count = 0; + while (*args != NULL) + { + count++; + args++; + } + return (count); } -char **join_cmd(t_leaf * com_leaf) +char **join_cmd(t_leaf *com_leaf) { - int i; - char **str; - t_leaf *temp; - t_leaf *leaf; - - i = 1; - temp = com_leaf; - leaf = com_leaf; - while(temp && temp->right_child) + int i; + char **str; + t_leaf *temp; + t_leaf *leaf; + + i = 1; + temp = com_leaf; + leaf = com_leaf; + while (temp && temp->right_child) { temp = temp->right_child; i++; @@ -46,77 +46,74 @@ char **join_cmd(t_leaf * com_leaf) str[0] = leaf->token->str; i = 1; while (leaf) - { - if (leaf->right_child) - { - str[i] = leaf->right_child->token->str; - leaf = leaf->right_child; - i++; - } - else - break ; - } + { + if (leaf->right_child) + { + str[i] = leaf->right_child->token->str; + leaf = leaf->right_child; + i++; + } + else + break ; + } return (str); } -t_list *create_env_node(char *key, char *value) +/* +환경 변수는 T_CMD로 설정 +환경 변수의 리다이렉션 타입은 0으로 설정 +key 값을 환경 변수 노드의 token의 str에 할당 +*/ +t_list *create_env_node(char *key, char *value) { - printf("\ncreate env_node start!\n"); - t_list *new_node = (t_list *)malloc(sizeof(t_list)); - char *key_equal; - - if (!new_node) - return NULL; + t_list *new_node; + char *key_equal; - new_node->pre = NULL; - new_node->next = NULL; - new_node->token = (t_token *)malloc(sizeof(t_token)); - if (!new_node->token) - { - free(new_node); - return NULL; - } - new_node->token->type = T_CMD; // 환경 변수는 T_CMD로 설정 - new_node->token->redirect_type = 0; // 환경 변수의 리다이렉션 타입은 0으로 설정 - new_node->token->str = key; // key 값을 환경 변수 노드의 token의 str에 할당 - key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key) + 2); - key_equal = ft_strdup(key); - key_equal[ft_strlen(key)] = '='; - key_equal[ft_strlen(key) + 1] = '\0'; - printf("\n===========keyequl=======%s\n", key_equal); - new_node->env = ft_strjoin(key_equal, value); - - return new_node; + new_node = (t_list *)malloc(sizeof(t_list)); + if (!new_node) + return (NULL); + new_node->pre = NULL; + new_node->next = NULL; + new_node->token = (t_token *)malloc(sizeof(t_token)); + if (!new_node->token) + { + free(new_node); + return (NULL); + } + new_node->token->type = T_CMD; + new_node->token->redirect_type = 0; + new_node->token->str = key; + key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key) + 2); + key_equal = ft_strdup(key); + key_equal[ft_strlen(key)] = '='; + key_equal[ft_strlen(key) + 1] = '\0'; + new_node->env = ft_strjoin(key_equal, value); + return (new_node); } -void add_env_back(t_data *head, char *key, char *value) +void add_env_back(t_data *head, char *key, char *value) { - if (head->envs == NULL) - { - printf("\nenv dose not exit!\n"); - head->envs = create_env_node(key, value); - } - else - { - printf("\nenv exit!\n"); - ft_lstadd_back(&(head->envs), create_env_node(key, value)); - } + if (head->envs == NULL) + head->envs = create_env_node(key, value); + else + ft_lstadd_back(&(head->envs), create_env_node(key, value)); } -void update_env(t_data *data, char *key, char *value) +void update_env(t_data *data, char *key, char *value) { - t_list *tmp; - char *key_equal; - tmp = env_search(data, key); - if (!tmp) - add_env_back(data, key, value); - else - { - free(tmp->env); - key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key) + 2); - key_equal = ft_strdup(key); - key_equal[ft_strlen(key)] = '='; - key_equal[ft_strlen(key) + 1] = '\0'; - tmp->env = ft_strjoin(key_equal, value); - } + t_list *tmp; + char *key_equal; + + tmp = env_search(data, key); + if (!tmp) + add_env_back(data, key, value); + else + { + free(tmp->env); + key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key) + 2); + key_equal = ft_strdup(key); + key_equal[ft_strlen(key)] = '='; + key_equal[ft_strlen(key) + 1] = '\0'; + tmp->env = ft_strjoin(key_equal, value); + } } diff --git a/srcs/builtin/ft_cd.c b/srcs/builtin/ft_cd.c index 21c256a..b4056d8 100644 --- a/srcs/builtin/ft_cd.c +++ b/srcs/builtin/ft_cd.c @@ -3,47 +3,48 @@ /* ::: :::::::: */ /* ft_cd.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: donghong < donghong@student.42seoul.kr> +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:31:18 by kichan #+# #+# */ -/* Updated: 2023/08/03 17:11:24 by donghong ### ########.fr */ +/* Updated: 2023/08/07 20:22:25 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void ft_cd(t_data *data, t_leaf *cur_root); -static int change_directory(t_data *data, char *path); +void ft_cd(t_data *data, t_leaf *cur_root); +static int change_directory(t_data *data, char *path); -void ft_cd(t_data *data, t_leaf *cur_root) +void ft_cd(t_data *data, t_leaf *cur_root) { - char *option; - char pwd[1024]; - option = NULL; - - if(!(cur_root->left_child->right_child->right_child)) - change_directory(data, "~"); - else if(change_directory(data,cur_root->left_child->right_child->right_child->token->str) != 0) - { - option = cur_root->left_child->right_child->right_child->token->str; - printf("bash: %s: No such file or directory\n", option); - } - else - { - getcwd(pwd, 1024); - printf("current directory : %s\n",pwd); + char *option; + char pwd[1024]; + + option = NULL; + if (!(cur_root->left_child->right_child->right_child)) + change_directory(data, "~"); + else if (change_directory(data, \ + cur_root->left_child->right_child->right_child->token->str) != 0) + { + option = cur_root->left_child->right_child->right_child->token->str; + printf("bash: %s: No such file or directory\n", option); + data->error_code = 1; + } + else + { + getcwd(pwd, 1024); + printf("current directory : %s\n", pwd); update_env(data, "OLDPWD", env_search(data, "PWD")->env); update_env(data, "PWD", pwd); - } - // return (TRUE); + } } -static int change_directory(t_data *data, char *path) +static int change_directory(t_data *data, char *path) { char *buf; int res; - char pwd[1024]; - + char pwd[1024]; + if (!ft_strncmp(path, "~", 1)) buf = ft_strdup(env_search(data, "HOME")->env + 5); else if (!ft_strncmp(path, "-", 1)) @@ -53,7 +54,7 @@ static int change_directory(t_data *data, char *path) if (!buf) exit(1); res = chdir(buf); - getcwd(pwd, 1024); - free(buf); + getcwd(pwd, 1024); + free(buf); return (res); } diff --git a/srcs/builtin/ft_echo.c b/srcs/builtin/ft_echo.c index a11a469..cdd3441 100644 --- a/srcs/builtin/ft_echo.c +++ b/srcs/builtin/ft_echo.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:30:59 by kichan #+# #+# */ -/* Updated: 2023/08/06 18:21:16 by eunwolee ### ########.fr */ +/* Updated: 2023/08/07 19:51:29 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,10 +18,10 @@ static void print_line(char *line); void ft_echo(t_leaf *cur_root) { - int i; - int flag; - int blank; - char **cmd; + int i; + int flag; + int blank; + char **cmd; cmd = join_cmd(cur_root->left_child->right_child); blank = count_args(cmd); @@ -31,7 +31,7 @@ void ft_echo(t_leaf *cur_root) while (cmd[i]) { print_line(cmd[i]); - if(i < blank - 1) + if (i < blank - 1) printf(" "); i++; } diff --git a/srcs/builtin/ft_env.c b/srcs/builtin/ft_env.c index a1c08ff..2961be6 100644 --- a/srcs/builtin/ft_env.c +++ b/srcs/builtin/ft_env.c @@ -3,25 +3,18 @@ /* ::: :::::::: */ /* ft_env.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichan +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/21 19:15:04 by kichlee #+# #+# */ -/* Updated: 2023/08/06 23:28:27 by kichan ### ########.fr */ +/* Updated: 2023/08/07 19:46:36 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void ft_env(t_data *data, t_leaf *cur_root); -char *check_dollar_two(t_data *data, char *str) -{ - t_list *tmp; - tmp = env_search(data, str); - if(tmp == NULL) - return (NULL); - else - return (tmp->env); -} +void ft_env(t_data *data, t_leaf *cur_root); +static char *check_keyval(t_data *data, char *str); + /** * 1. cmd cnt 를 해주고 cmd가 1개 인경우는 * -> env_print 실행 @@ -37,27 +30,42 @@ char *check_dollar_two(t_data *data, char *str) * export $aaa 없는 거면 $aaaa */ -void ft_env(t_data *data, t_leaf *cur_root) +void ft_env(t_data *data, t_leaf *cur_root) +{ + char **cmd; + + cmd = join_cmd(cur_root->left_child->right_child); + if (!cmd[1]) + env_print(data); + else + { + if (cmd[1][0] == '$') + { + if (ft_strlen(cmd[1]) == 1) + { + printf("env: %s: No such file or directory\n", cmd[1]); + data->error_code = 127; + } + else if (check_keyval(data, cmd[1]) == NULL) + env_print(data); + else + printf("%s", env_search(data, cmd[1])->env); + } + else + { + printf("env: %s: No such file or directory\n", cmd[1]); + data->error_code = 127; + } + } +} + +static char *check_keyval(t_data *data, char *str) { - char **cmd; + t_list *tmp; - cmd = join_cmd(cur_root->left_child->right_child); - - if(!cmd[1]) - env_print(data); - else - { - if(cmd[1][0] == '$') - { - if(ft_strlen(cmd[1]) == 1) - printf("env: %s: No such file or directory\n", cmd[1]); - else if(check_dollar_two(data, cmd[1]) == NULL) - env_print(data); - else - printf("%s", env_search(data, cmd[1])->env); - } - else - printf("env: %s: No such file or directory\n", cmd[1]); - } - // return (TRUE); + tmp = env_search(data, str); + if (tmp == NULL) + return (NULL); + else + return (tmp->env); } diff --git a/srcs/builtin/ft_exit.c b/srcs/builtin/ft_exit.c index 461332c..dabac4a 100644 --- a/srcs/builtin/ft_exit.c +++ b/srcs/builtin/ft_exit.c @@ -3,26 +3,26 @@ /* ::: :::::::: */ /* ft_exit.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: donghong < donghong@student.42seoul.kr> +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:23:29 by kichan #+# #+# */ -/* Updated: 2023/07/29 20:38:37 by donghong ### ########.fr */ +/* Updated: 2023/08/07 19:41:29 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" static int is_num_str(char *str); -static void exit_not_num(t_data *data, t_leaf *cur_root); +static void exit_not_num(t_leaf *cur_root); void ft_exit(t_data *data, t_leaf *cur_root) { int status; - char **cmd; + char **cmd; int count; - - cmd = join_cmd(cur_root->left_child->right_child); - count = count_args(cmd); + + cmd = join_cmd(cur_root->left_child->right_child); + count = count_args(cmd); status = 0; if (count == 1) { @@ -38,14 +38,13 @@ void ft_exit(t_data *data, t_leaf *cur_root) exit(status); } else - exit_not_num(data, cur_root); + exit_not_num(cur_root); } else { printf("bash: exit: too many arguments\n"); - status = 1; + data->error_code = 1; } - // return (TRUE); } static int is_num_str(char *str) @@ -64,11 +63,10 @@ static int is_num_str(char *str) return (1); } -static void exit_not_num(t_data *data, t_leaf *cur_root) +static void exit_not_num(t_leaf *cur_root) { - (void)data; - printf("exit\n"); - printf("bash: exit: %s: numeric argument required\n", cur_root->left_child->right_child->token->str); + printf("bash: exit: %s: numeric argument required\n", \ + cur_root->left_child->right_child->token->str); exit(255); } diff --git a/srcs/builtin/ft_export.c b/srcs/builtin/ft_export.c index 94748bf..7f5e31e 100644 --- a/srcs/builtin/ft_export.c +++ b/srcs/builtin/ft_export.c @@ -6,72 +6,74 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:25:07 by kichan #+# #+# */ -/* Updated: 2023/08/06 22:34:57 by eunwolee ### ########.fr */ +/* Updated: 2023/08/07 20:30:36 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void ft_export(t_data *data, t_leaf *cur_root); -static int check_underbar(char ch); -static int check_name(char *str); -static char **sort_bubble(char **str, int size); -static void print_export_order(t_data *data); +void ft_export(t_data *data, t_leaf *cur_root); +static int check_underbar(char ch); +static int check_name(char *str); +static char **sort_bubble(char **str, int size); +static void print_export_order(t_data *data); -void ft_export(t_data *data, t_leaf *cur_root) +void ft_export(t_data *data, t_leaf *cur_root) { - char **cmd; - char **tmp; - int arg_cnt; - int i; + char **cmd; + char **tmp; + int arg_cnt; + int i; - i = 1; - cmd = join_cmd(cur_root->left_child->right_child); - arg_cnt = count_args(cmd); - if (arg_cnt == 1) - print_export_order(data); - else - { - while (i < arg_cnt) - { - printf("\nft_export while loop start!\n"); - if (!ft_isalpha(cmd[1][0]) && !check_underbar(cmd[1][0]) && !check_name(cmd[i])) - printf("bash: export: `%s': not a valid identifier\n", cmd[i]); - else if (!ft_strchr(cmd[i], '=')) // = 가 없는 경우 - { - ++i; - continue; - } - else - { - tmp = ft_split(cmd[i], '='); - update_env(data, tmp[0], tmp[1]); - free(tmp); - } - ++i; - } - } + i = 1; + cmd = join_cmd(cur_root->left_child->right_child); + arg_cnt = count_args(cmd); + if (arg_cnt == 1) + print_export_order(data); + else + { + while (i < arg_cnt) + { + if (!ft_isalpha(cmd[1][0]) && !check_underbar(cmd[1][0]) && !check_name(cmd[i])) + { + printf("bash: export: `%s': not a valid identifier\n", cmd[i]); + data->error_code = 1; + } + else if (!ft_strchr(cmd[i], '=')) + { + ++i; + continue ; + } + else + { + tmp = ft_split(cmd[i], '='); + update_env(data, tmp[0], tmp[1]); + free(tmp); + } + ++i; + } + } } -int check_underbar(char ch) +int check_underbar(char ch) { - if (ch == '_') - return (1); - return (0); + if (ch == '_') + return (1); + return (0); } -int check_name(char *str) +int check_name(char *str) { - int i; + int i; - i = 0; - while (str[i] && str[i] != '=') - { - if (str[i] != '_' && ft_isalnum(str[i])) - return (0); - ++i; - } - return (1); + i = 0; + while (str[i] && str[i] != '=') + { + if (str[i] != '_' && ft_isalnum(str[i])) + return (0); + ++i; + } + return (1); } /** * @brief bash 환경변수 명명 규칙 @@ -83,99 +85,71 @@ int check_name(char *str) 환경 변수 이름의 길이에는 제한이 있으며, 일반적으로 많은 시스템에서는 최대 길이가 있습니다. * */ -// int split_export(char *str, t_data *data) -// { -// int key_len; -// int value_len; -// char *key; -// char *value; -// key_len = 0; -// value_len = 0; -// while(str[key_len] != '=') -// ++key_len; -// key = (char *)ft_calloc(sizeof(char), key_len + 1); -// if(!key) -// { -// perror("ft_calloc error!"); -// exit(1); -// } -// value_len = ft_strlen(str) - key_len; -// value = (char *)ft_calloc(sizeof(char), value_len + 1); -// if(!value) -// { -// perror("ft_calloc error!"); -// exit(1); -// } -// return (0); -// } -char **sort_bubble(char **str, int size) +char **sort_bubble(char **str, int size) { - char **res = (char **)ft_calloc(sizeof(char *), (size + 1)); - int sorted = 0; - int i = 0; - char *tmp; - tmp = NULL; - if (!res) - { - perror("Memory allocation error!"); - exit(1); - } - while (str[i]) - { - res[i] = ft_strdup(str[i]); - if (!res[i]) - { - perror("Memory allocation error!"); - exit(1); - } - ++i; - } - res[i] = NULL; + char **res; + int sorted; + int i; + char *tmp; - while (!sorted) - { - sorted = 1; - i = 0; - while (res[i + 1]) - { - if (ft_strncmp(res[i], res[i + 1], ft_strlen(res[i])) > 0) - { - tmp = res[i]; - res[i] = res[i + 1]; - res[i + 1] = tmp; - sorted = 0; - } - ++i; - } - } - return res; + res = (char **)ft_calloc(sizeof(char *), (size + 1)); + sorted = 0; + i = 0; + tmp = NULL; + if (!res) + program_error_exit("Memory allocation error!"); + while (str[i]) + { + res[i] = ft_strdup(str[i]); + if (!res[i]) + program_error_exit("Memory allocation error!"); + ++i; + } + res[i] = NULL; + while (!sorted) + { + sorted = 1; + i = 0; + while (res[i + 1]) + { + if (ft_strncmp(res[i], res[i + 1], ft_strlen(res[i])) > 0) + { + tmp = res[i]; + res[i] = res[i + 1]; + res[i + 1] = tmp; + sorted = 0; + } + ++i; + } + } + return (res); } -static void print_export_order(t_data *data) +static void print_export_order(t_data *data) { - int i; - int lst_size; - char **order_set; - char **order_copy; - t_list *cur; + int i; + int j; + int lst_size; + char **order_set; + char **order_copy; + t_list *cur; - i = 0; - lst_size = ft_lstsize(data->envs); - cur = data->envs; - order_copy = (char **)ft_calloc(sizeof(char *), lst_size + 1); - while (cur) - { - order_copy[i] = ft_strdup(cur->env); - cur = cur->next; - ++i; - } - order_set = sort_bubble(order_copy, lst_size); - int j = 0; - while (order_set[j]) - { - printf("%s\n", order_set[j]); - ++j; - } + i = 0; + lst_size = ft_lstsize(data->envs); + cur = data->envs; + order_copy = (char **)ft_calloc(sizeof(char *), lst_size + 1); + while (cur) + { + order_copy[i] = ft_strdup(cur->env); + cur = cur->next; + ++i; + } + order_set = sort_bubble(order_copy, lst_size); + j = 0; + while (order_set[j]) + { + printf("%s\n", order_set[j]); + ++j; + } } - diff --git a/srcs/builtin/ft_pasterror.c b/srcs/builtin/ft_pasterror.c new file mode 100644 index 0000000..f3ec824 --- /dev/null +++ b/srcs/builtin/ft_pasterror.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_pasterror.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/07 19:28:47 by eunwolee #+# #+# */ +/* Updated: 2023/08/07 19:29:12 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../incs/minishell.h" + +void ft_pasterror(t_data *data) +{ + printf("bash : %d: command not found\n", data->error_code); +} diff --git a/srcs/builtin/ft_pwd.c b/srcs/builtin/ft_pwd.c index 4043398..5ebeac9 100644 --- a/srcs/builtin/ft_pwd.c +++ b/srcs/builtin/ft_pwd.c @@ -3,48 +3,38 @@ /* ::: :::::::: */ /* ft_pwd.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: donghong < donghong@student.42seoul.kr> +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:24:31 by kichan #+# #+# */ -/* Updated: 2023/07/29 20:52:11 by donghong ### ########.fr */ +/* Updated: 2023/08/07 19:28:13 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void ft_pwd(t_data *data, t_leaf *cur_root); +void ft_pwd(void); -void ft_pwd(t_data *data, t_leaf *cur_root) +void ft_pwd(void) { - (void)data; - (void)cur_root; + char *buf; + size_t buf_size; - char *buf; - size_t buf_size; - - buf = NULL; - buf_size = BUF_SIZE; - while (1) - { - buf = (char *)ft_calloc(buf_size, sizeof(char)); - if (!buf) - { - perror("ft_calloc fail!"); - // malloc 실패시에 프로그램 종료 - exit(1); - } - if (getcwd(buf, buf_size) != NULL) - { - printf("%s\n", buf); - free(buf); - return ; - } - free(buf); - if (errno != ERANGE) - { - perror("getcwd error!"); - exit(1); - } - buf_size *= 2; - } + buf = NULL; + buf_size = BUF_SIZE; + while (1) + { + buf = (char *)ft_calloc(buf_size, sizeof(char)); + if (!buf) + program_error_exit("ft_calloc fail!"); + if (getcwd(buf, buf_size) != NULL) + { + printf("%s\n", buf); + free(buf); + return ; + } + free(buf); + if (errno != ERANGE) + program_error_exit("get_cwd fail!"); + buf_size *= 2; + } } diff --git a/srcs/builtin/ft_test.c b/srcs/builtin/ft_test.c deleted file mode 100644 index 9795ba7..0000000 --- a/srcs/builtin/ft_test.c +++ /dev/null @@ -1,72 +0,0 @@ -// #include -// #include -// #include - -// char **sort_bubble(char **str) -// { -// char **res = (char **)malloc(sizeof(char *) * (5 + 1)); // 마지막에 NULL 포인터를 위해 추가 공간 할당 -// if (!res) -// { -// perror("Memory allocation error!"); -// exit(1); -// } - -// // 입력된 문자열 포인터 배열을 결과 배열에 복사합니다. -// int i = 0; -// while (str[i]) -// { -// printf("while loop start!\n"); -// printf("str[i] : %s\n", str[i]); -// res[i] = strdup(str[i]); -// if (!res[i]) -// { -// perror("Memory allocation error!"); -// exit(1); -// } -// ++i; -// } -// res[i] = NULL; - -// int sorted = 0; -// while (!sorted) -// { -// sorted = 1; -// i = 0; -// while (res[i + 1]) -// { -// if (strcmp(res[i], res[i + 1]) > 0) -// { -// char *tmp = res[i]; -// res[i] = res[i + 1]; -// res[i + 1] = tmp; -// sorted = 0; -// } -// ++i; -// } -// } - -// return res; -// } - -// int main() -// { -// char **str; -// char **res; -// int i = 0; - - -// str[0] = "abc"; -// str[1] = "bbc"; -// str[2] = "cba"; -// str[3] = "aabcd"; -// str[4] = "sdfb"; -// str[5] = NULL; -// res = sort_bubble(str); - -// while (res[i]) -// { -// printf("%s\n", res[i]); -// ++i; -// } -// return (0); -// } \ No newline at end of file diff --git a/srcs/builtin/ft_unset.c b/srcs/builtin/ft_unset.c index 66c06a1..1936c4d 100644 --- a/srcs/builtin/ft_unset.c +++ b/srcs/builtin/ft_unset.c @@ -6,47 +6,26 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 22:51:02 by kichan #+# #+# */ -/* Updated: 2023/08/06 22:32:49 by eunwolee ### ########.fr */ +/* Updated: 2023/08/07 19:22:32 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void ft_unset(t_data *data, t_leaf *cur_root); -// static void env_clear(t_data *data); +void ft_unset(t_data *data, t_leaf *cur_root); -void ft_unset(t_data *data, t_leaf *cur_root) +void ft_unset(t_data *data, t_leaf *cur_root) { - char **cmd; - int arg_cnt; - int i; - - cmd = join_cmd(cur_root->left_child->right_child); - // arg_cnt = count_args(cmd) - 1; - arg_cnt = count_args(cmd); - i = 1; - // if(arg_cnt == 0) - // env_clear(data); - // else - // { - while (i < arg_cnt) - { - env_remove(data, cmd[i]); - ++i; - } - // } -} - + char **cmd; + int arg_cnt; + int i; -//왜 arg_cnt가 0이면 clear하지? -// static void env_clear(t_data *data) -// { -// t_list *current = data->envs; -// while (current != NULL) -// { -// t_list *next = current->next; -// ft_lstdelone(current); -// current = next; -// } -// data->envs = NULL; -// } + cmd = join_cmd(cur_root->left_child->right_child); + arg_cnt = count_args(cmd); + i = 1; + while (i < arg_cnt) + { + env_remove(data, cmd[i]); + ++i; + } +} diff --git a/srcs/execute/execve.c b/srcs/execute/execve.c index 5d97632..3b1c8cc 100644 --- a/srcs/execute/execve.c +++ b/srcs/execute/execve.c @@ -9,7 +9,7 @@ void do_cmd(t_data *data) if (data->root->left_child->left_child != NULL) check_redirect (data->root,data); // redirect가 있는거는 먼저실행 if (data->root->left_child->right_child== NULL) //커맨드가 없을때 종료하기 - exit(g_exit_status); + exit(0); if (builtnum != 0) { exec_bulitin(builtnum,data,data->root); @@ -50,7 +50,7 @@ void exec_fork(t_data *data) // 이제경로 찾고 하던 대로해주면됨 abs_path(data); base->command = set_path(data ,data->root->left_child->right_child); if (!base->command) - exit(1); + program_error_exit("bash"); execve(base->command, base->cmd_path, data->env_array); // if (execve(base->command, base->cmd_path, data->env_array) == -1) // exit(1); @@ -66,20 +66,21 @@ void execute_cmd(t_data *data,int flag) // flag 는 자식이랑 부모 차이 while (i < data->info->pipe_num + 1) { - signal(SIGQUIT, SIG_DFL); + signal (SIGINT, SIG_IGN); if (i < data->info->pipe_num) if (pipe(base->com[i].fd) < 0) - exit(1); + error_back_readline(data,"bash",EPIPE,1); base->com[i].pid = fork(); if (base->com[i].pid == -1) { if (flag) - exit(1); // 자식일때는 exit ; + program_error_exit("bash"); // 자식일때는 exit ; else - return; + error_back_readline(data,"bash",ENOMEM ,1); } if (base->com[i].pid == 0) { + signal (SIGINT, child_handler); data->info->parent =1; if (data->info->pipe_num !=0) link_pipe(i, base,data); @@ -96,4 +97,4 @@ void execute_cmd(t_data *data,int flag) // flag 는 자식이랑 부모 차이 wait_child_processes(data); // free_cmd(base); -} +} \ No newline at end of file diff --git a/srcs/execute/freepipe.c b/srcs/execute/freepipe.c index 5b80fc5..25a0b6f 100644 --- a/srcs/execute/freepipe.c +++ b/srcs/execute/freepipe.c @@ -18,14 +18,16 @@ void get_input(t_data *data) { data->input = readline("minishell$ "); if (!data->input) - program_error_exit("bash"); + { + printf("exit\n"); + exit(0); + } + add_history(data->input); lexer(data); syntax(data); parser(data); } - - void close_pipe(int i, t_pipe *base,t_data *data) { if (i == data->info->pipe_num) diff --git a/srcs/execute/pipe.c b/srcs/execute/pipe.c index de432e2..5748cf9 100644 --- a/srcs/execute/pipe.c +++ b/srcs/execute/pipe.c @@ -1,36 +1,40 @@ #include "../../incs/minishell.h" -void link_pipe(int i, t_pipe *base,t_data *data) +void link_pipe(int i, t_pipe *base, t_data *data) { if (i == data->info->pipe_num) { - dup2(base->com[i-1].fd[0], STDIN_FILENO); - close(base->com[i-1].fd[0]); + if (dup2(base->com[i - 1].fd[0], STDIN_FILENO) == -1 || close(base->com[i - 1].fd[0]) == -1) + error_back_readline(data, "Bad file descriptor", EBADF, 1); } else if (i == 0) { - close(base->com[i].fd[0]); - dup2(base->com[i].fd[1], STDOUT_FILENO); - close(base->com[i].fd[1]); + if (close(base->com[i].fd[0]) == -1 || dup2(base->com[i].fd[1], STDOUT_FILENO) == -1 || close(base->com[i].fd[1]) == -1) + error_back_readline(data, "Bad file descriptor", EBADF, 1); } else - { - close(base->com[i].fd[0]); - dup2(base->com[i - 1].fd[0], STDIN_FILENO); - dup2(base->com[i].fd[1], STDOUT_FILENO); - } + { + if (close(base->com[i].fd[0]) == -1 || dup2(base->com[i - 1].fd[0], STDIN_FILENO) == -1 || dup2(base->com[i].fd[1], STDOUT_FILENO) == -1) + error_back_readline(data, "Bad file descriptor", EBADF, 1); + } } // 정상 종료 확인해주고 수정; -void wait_child_processes(t_data *data) +void wait_child_processes(t_data *data) { - int i; - int status; + int i; + int status; i = 0; while (i < data->info->pipe_num + 1) { waitpid(-1, &status, 0); + i++; } + if (WIFSIGNALED(status)) // signal 에 의해 종료가 되었는지 아닌지 확인 + { + data->error_code = WTERMSIG(status); // 시그널로 종료시 시그널 번호를 저장 예 ctrl +c경우 2 번 + ft_putendl_fd("", STDERR_FILENO); // 빈문자열 출력을 위한 ctrl+c 이런거 눌렀을때 바로 새줄 + } } diff --git a/srcs/execute/pipeutils.c b/srcs/execute/pipeutils.c index e605571..7df3b39 100644 --- a/srcs/execute/pipeutils.c +++ b/srcs/execute/pipeutils.c @@ -35,8 +35,10 @@ void heredoc_flag(t_leaf *leaf,t_data *data) void recover_std(t_data *data) { - dup2(data->info->oristdin,STDIN_FILENO); + if (dup2(data->info->oristdin,STDIN_FILENO)== -1) + error_back_readline(data,"Bad file descriptor",EBADF,1); close(data->info->oristdin); - dup2(data->info->oristdout,STDOUT_FILENO); + if (dup2(data->info->oristdout,STDOUT_FILENO)== -1) + error_back_readline(data,"Bad file descriptor",EBADF,1); close(data->info->oristdin); -} +} \ No newline at end of file diff --git a/srcs/execute/setpath.c b/srcs/execute/setpath.c index 0e5acf8..d76fe1c 100644 --- a/srcs/execute/setpath.c +++ b/srcs/execute/setpath.c @@ -30,7 +30,7 @@ void abs_path(t_data *data) data->env_array = env_to_array(data); // 환경 변수 array에 담아주기 pipe->cmd_abs = get_path_envp(data->env_array); if (!pipe->cmd_abs) - exit(1); + program_error_exit("bash"); while (pipe->cmd_abs[i]) { temp = pipe->cmd_abs[i]; diff --git a/srcs/init/init.c b/srcs/init/init.c index fc49715..9856fae 100644 --- a/srcs/init/init.c +++ b/srcs/init/init.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* init.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: donghong < donghong@student.42seoul.kr> +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:52 by eunwolee #+# #+# */ -/* Updated: 2023/08/03 16:16:49 by donghong ### ########.fr */ +/* Updated: 2023/08/08 11:27:12 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,16 +18,16 @@ void env_init(t_data *data, char **envp); //필요하신 초기화 내용 여기 넣어주시면 됩니당 void init(t_data **data, char **envp) { - t_pipe *pipe; - t_info *info; - + t_pipe *pipe; + t_info *info; + *data = (t_data *)ft_calloc(1, sizeof(t_data)); if (!*data) program_error_exit("bash"); pipe_init(&pipe); info_init(&info); - (*data)->pipe= pipe; - (*data)->info= info; + (*data)->pipe = pipe; + (*data)->info = info; env_init(*data, envp); } @@ -49,22 +49,19 @@ void env_init(t_data *data, char **envp) } } - -void pipe_init(t_pipe **pipe) +void pipe_init(t_pipe **pipe) { - *pipe = (t_pipe *)malloc(sizeof(t_pipe)); + *pipe = (t_pipe *)ft_calloc(sizeof(t_pipe)); if (!*pipe) program_error_exit("bash"); (*pipe)->cmd_path = NULL; (*pipe)->command = NULL; (*pipe)->cmd_abs = NULL; - } - void info_init(t_info **info) { - *info = (t_info *)malloc(sizeof(t_info)); + *info = (t_info *)ft_calloc(1, sizeof(t_info)); if (!*info) program_error_exit("bash"); (*info)->index = 0; @@ -74,5 +71,5 @@ void info_init(t_info **info) (*info)->oristdout = dup(STDOUT_FILENO); (*info)->pipe_num = 0; (*info)->pipe_index = 0; - (*info)->parent =0; + (*info)->parent = 0; } diff --git a/srcs/lexer/expand.c b/srcs/lexer/expand.c index 3b9bab4..a376e00 100644 --- a/srcs/lexer/expand.c +++ b/srcs/lexer/expand.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:20:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/03 17:41:06 by eunwolee ### ########.fr */ +/* Updated: 2023/08/08 11:27:39 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -88,7 +88,6 @@ static t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote) { if (data->input[*i] == '\"') { - if (quote == TRUE) { token->str = ft_strncat(token->str, "$", 1); diff --git a/srcs/lexer/quote.c b/srcs/lexer/quote.c index cce7479..623096e 100644 --- a/srcs/lexer/quote.c +++ b/srcs/lexer/quote.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 07:46:30 by eunwolee #+# #+# */ -/* Updated: 2023/07/16 20:16:29 by eunwolee ### ########.fr */ +/* Updated: 2023/08/08 11:29:16 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,18 +15,18 @@ void single_quote(char *input, t_token *token, int *i); void double_quote(char *input, t_token *token, int *i, t_data *data); static t_bool find_next_quote(char *input, t_token *token, int i, char quote); -static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next_quote); -static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next_quote); +static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next); +static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next); void single_quote(char *input, t_token *token, int *i) { - t_bool next_quote; + t_bool next; *i += 1; - next_quote = find_next_quote(input, token, *i, '\''); + next = find_next_quote(input, token, *i, '\''); while (input[*i] != '\'' && input[*i] != '\0') { - if (s_check_char(input, token, i, next_quote) == TRUE) + if (s_check_char(input, token, i, next) == TRUE) return ; *i += 1; } @@ -36,19 +36,19 @@ void single_quote(char *input, t_token *token, int *i) void double_quote(char *input, t_token *token, int *i, t_data *data) { - t_bool next_quote; + t_bool next; *i += 1; - next_quote = find_next_quote(input, token, *i, '\"'); + next = find_next_quote(input, token, *i, '\"'); while (input[*i] != '\"' && input[*i] != '\0') { if (input[*i] == '$') { - if (input[*i + 1] != '\'' && next_quote == TRUE) + if (input[*i + 1] != '\'' && next == TRUE) if (expand(data, token, i, TRUE) == TRUE) return ; } - if (d_check_char(input, token, i, next_quote) == TRUE) + if (d_check_char(input, token, i, next) == TRUE) return ; *i += 1; } @@ -59,12 +59,14 @@ void double_quote(char *input, t_token *token, int *i, t_data *data) static t_bool find_next_quote(char *input, t_token *token, int i, char quote) { if (quote == '\"') + { while (input[i] != quote && input[i] != '\0') { if (input[i] == '\\' && input[i + 1] == quote) i++; i++; } + } else while (input[i] != quote && input[i] != '\0') i++; @@ -78,9 +80,9 @@ static t_bool find_next_quote(char *input, t_token *token, int i, char quote) return (TRUE); } -static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next_quote) +static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next) { - if (next_quote == FALSE \ + if (next == FALSE \ && (input[*i] != ' ' || input[*i] != '\t')) { *i -= 1; @@ -93,9 +95,9 @@ static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next_quot return (FALSE); } -static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next_quote) +static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next) { - if (next_quote == FALSE \ + if (next == FALSE \ && (input[*i] != ' ' || input[*i] != '\t')) { *i -= 1; @@ -111,4 +113,4 @@ static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next_quot if (!token->str) program_error_exit("bash"); return (FALSE); -} \ No newline at end of file +} diff --git a/srcs/minishell.c b/srcs/minishell.c index c835cb4..0a6bb4a 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* minishell.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/07 13:22:32 by eunwolee ### ########.fr */ +/* Updated: 2023/08/07 17:17:15 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,9 +21,10 @@ int main(int argc, char **argv, char **envp) (void)argc; (void)argv; init(&data, envp); - + init_base(argc); while (TRUE) { + sig(); get_input(data); execute(data); input_free(data); diff --git a/srcs/parser/parser.c b/srcs/parser/parser.c index 0bc8ac6..ba26787 100644 --- a/srcs/parser/parser.c +++ b/srcs/parser/parser.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 18:35:07 by eunwolee #+# #+# */ -/* Updated: 2023/08/07 13:16:24 by eunwolee ### ########.fr */ +/* Updated: 2023/07/14 07:52:10 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/parser/syntax.c b/srcs/parser/syntax.c index 8e58659..39fc537 100644 --- a/srcs/parser/syntax.c +++ b/srcs/parser/syntax.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/07 22:24:38 by eunwolee #+# #+# */ -/* Updated: 2023/07/17 06:40:42 by eunwolee ### ########.fr */ +/* Updated: 2023/08/08 11:31:02 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -50,7 +50,7 @@ static t_bool syntax_none(t_data *data, t_list *cur) if (cur->token->type == T_WORD) cur->token->type = T_CMD; else if (cur->token->type == T_PIPE) - return (error_back_readline(data, E_SYNTAX_PIPE, 258)); + return (error_back_readline(data, E_SYNTAX_PIPE, 258, 0)); return (TRUE); } @@ -72,26 +72,26 @@ static t_bool syntax_redirect(t_data *data, t_list *cur) if (cur->pre->token->type == T_REDIRECT) { if (cur->token->redirect_type == T_INPUT) - return (error_back_readline(data, E_SYNTAX_INPUT, 258)); + return (error_back_readline(data, E_SYNTAX_INPUT, 258, 0)); if (cur->token->redirect_type == T_OUTPUT) - return (error_back_readline(data, E_SYNTAX_OUTPUT, 258)); + return (error_back_readline(data, E_SYNTAX_OUTPUT, 258, 0)); if (cur->token->redirect_type == T_HEREDOC) - return (error_back_readline(data, E_SYNTAX_HEREDOC, 258)); + return (error_back_readline(data, E_SYNTAX_HEREDOC, 258, 0)); if (cur->token->redirect_type == T_APPEND) - return (error_back_readline(data, E_SYNTAX_APPEND, 258)); + return (error_back_readline(data, E_SYNTAX_APPEND, 258, 0)); } if (!cur->next) - return (error_back_readline(data, E_SYNTAX_NEWLINE, 258)); + return (error_back_readline(data, E_SYNTAX_NEWLINE, 258, 0)); return (TRUE); } static t_bool syntax_pipe(t_data *data, t_list *cur) { if (cur->pre->token->type == T_PIPE) - return (error_back_readline(data, E_SYNTAX_PIPE, 258)); + return (error_back_readline(data, E_SYNTAX_PIPE, 258, 0)); if (cur->pre->token->type == T_REDIRECT) - return (error_back_readline(data, E_SYNTAX_PIPE, 258)); + return (error_back_readline(data, E_SYNTAX_PIPE, 258, 0)); if (!cur->next) - return (error_back_readline(data, E_SYNTAX_NEWLINE, 258)); + return (error_back_readline(data, E_SYNTAX_NEWLINE, 258, 0)); return (TRUE); } diff --git a/srcs/redirect/heredoc.c b/srcs/redirect/heredoc.c index e8c3d3d..fca643c 100644 --- a/srcs/redirect/heredoc.c +++ b/srcs/redirect/heredoc.c @@ -1,30 +1,58 @@ -#include "../../incs/minishell.h" +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* heredoc.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/08 11:31:19 by eunwolee #+# #+# */ +/* Updated: 2023/08/08 11:51:34 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ +#include "../../incs/minishell.h" int fork_heredoc(t_data *data) { - int status; + int status; - data->pipe->com[data->info->pipe_index].pid =fork(); //인덱스 부여해주기 pid 갚곂치지않게 가장 마지막 인덱스 주기 + data->pipe->com[data->info->pipe_index].pid = fork(); //인덱스 부여해주기 pid가 겹치지않게 가장 마지막 인덱스 주기 if (data->pipe->com[data->info->pipe_index].pid == 0) { + signal(SIGINT, child_handler); mk_heredoc_pipe(data); - // mk_heredoc(data); - execute_cmd(data,1); // heredoc 실행후 다시 커맨드 확인해주러가기 - exit (g_exit_status);// 전역변수 + execute_cmd(data, 1); // heredoc 실행후 다시 커맨드 확인해주러가기 + program_error_exit("bash");// 전역변수 } else { - // signal (SIGINT, SIG_IGN); + signal(SIGINT, SIG_IGN); data->info->pipe_index++; - waitpid(data->pipe->com[data->info->pipe_index].pid,&status,0); - g_exit_status = WEXITSTATUS(status); // 정상종료일경우 exit코 드 추출 + waitpid(data->pipe->com[data->info->pipe_index].pid, &status, 0); if (WIFSIGNALED(status)) // signal 에 의해 종료가 되었는지 아닌지 확인 { - g_exit_status = WTERMSIG (status);//시그널로 종료시 시그널 번호를 저장 예 ctrl +c경우 2 번 + data->error_code = WTERMSIG(status); //시그널로 종료시 시그널 번호를 저장 예 ctrl +c경우 2 번 ft_putendl_fd("", STDERR_FILENO); // 빈문자열 출력을 위한 ctrl+c 이런거 눌렀을때 바로 새줄 return (1); } } return (1); -} \ No newline at end of file +} + +void do_heredoc(t_leaf *leaf, t_data *data) +{ + int fd; + t_leaf *temp; + + temp = leaf; + while (temp) + { + if (temp->token->redirect_type == T_HEREDOC) + { + fd = open(data->info->heredoc_file[data->info->index], \ + O_WRONLY | O_CREAT | O_TRUNC, 0644); + write_str(temp->left_child->token->str, fd, data); + } + temp = temp ->left_child; + } +} diff --git a/srcs/redirect/heredoc_parser.c b/srcs/redirect/heredoc_parser.c new file mode 100644 index 0000000..91b4ba9 --- /dev/null +++ b/srcs/redirect/heredoc_parser.c @@ -0,0 +1,78 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* heredoc_parser.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/08 11:43:30 by eunwolee #+# #+# */ +/* Updated: 2023/08/08 11:53:27 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +void heredoc_parser(t_data *data, int fd, char *str); +char *heredoc_expand(t_data *data, char *str, char *tmp, int *i); + +void heredoc_parser(t_data *data, int fd, char *str) +{ + int i; + char *tmp; + + i = -1; + tmp = ft_strdup(""); + while (str[++i]) + { + if (str[i] == '$') + tmp = heredoc_expand(data, str, tmp, &i); + else + tmp = ft_strncat(tmp, &str[i], 1); + } + write(fd, tmp, ft_strlen(tmp)); + write(fd, "\n", 1); + free(str); +} + +char *heredoc_expand(t_data *data, char *str, char *tmp, int *i) +{ + char *name; + t_list *env; + int j; + + *i += 1; + name = ft_strdup(""); + while (str[*i] != '\0' && str[*i] != ' ' && str[*i] != '\t') + { + name = ft_strncat(name, &str[*i], 1); + *i += 1; + } + env = env_search(data, name); + if (!env) + { + tmp = ft_strncat(tmp, "$", 1); + if (!tmp) + program_error_exit("bash"); + tmp = ft_strncat(tmp, name, ft_strlen(name)); + if (!tmp) + program_error_exit("bash"); + } + else + { + j = 0; + while (env->env[j] != '=') + j++; + tmp = ft_strncat(tmp, \ + &env->env[j + 1], ft_strlen(&env->env[j + 1])); + if (!tmp) + program_error_exit("bash"); + } + if (str[*i] != '\0') + *i -= 1; + return (tmp); +} + +static char *get_env_name(char *str, int *i) +{ + +} \ No newline at end of file diff --git a/srcs/redirect/heredocutils.c b/srcs/redirect/heredocutils.c index 0724afa..46766ec 100644 --- a/srcs/redirect/heredocutils.c +++ b/srcs/redirect/heredocutils.c @@ -1,180 +1,89 @@ -#include "../../incs/minishell.h" +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* heredocutils.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/08 11:33:58 by eunwolee #+# #+# */ +/* Updated: 2023/08/08 11:49:25 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ -void heredoc_parser(t_data *data, int fd, char *str); -char *heredoc_expand(t_data *data, char *str, char *tmp, int *i); +#include "../../incs/minishell.h" void write_str(char *content, int fd, t_data *data) { char *str; - data->env_array=env_to_array(data); //환경변수 가져오기 추후에 필요할 수있음 while (1) { str = readline ("> "); if (!str \ - || (!ft_strncmp (content, str,ft_strlen(content)) && \ - (ft_strlen(content) == (ft_strlen(str))))) + || (!ft_strncmp(content, str, ft_strlen(content)) \ + && (ft_strlen(content) == (ft_strlen(str))))) { - free (str); - close (fd); + free(str); + close(fd); return ; } heredoc_parser(data, fd, str); } } -void heredoc_parser(t_data *data, int fd, char *str) -{ - int i; - char *tmp; - - i = -1; - tmp = ft_strdup(""); - while (str[++i]) - { - if (str[i] == '$') - tmp = heredoc_expand(data, str, tmp, &i); - else - tmp = ft_strncat(tmp, &str[i], 1); - } - write (fd, tmp, ft_strlen(tmp)); - write (fd, "\n", 1); - free (str); -} - -char *heredoc_expand(t_data *data, char *str, char *tmp, int *i) -{ - char *name; - t_list *env; - int j; - - *i += 1; - name = ft_strdup(""); - while (str[*i] != '\0' && str[*i] != ' ' && str[*i] != '\t') - { - name = ft_strncat(name, &str[*i], 1); - *i += 1; - } - env = env_search(data, name); - if (!env) - { - tmp = ft_strncat(tmp, "$", 1); - if (!tmp) - program_error_exit("bash"); - tmp = ft_strncat(tmp, name, ft_strlen(name)); - if (!tmp) - program_error_exit("bash"); - } - else - { - j = 0; - while (env->env[j] != '=') - j++; - tmp = ft_strncat(tmp, \ - &env->env[j + 1], ft_strlen(&env->env[j + 1])); - if (!tmp) - program_error_exit("bash"); - } - if (str[*i] != '\0') - *i -= 1; - return (tmp); -} - -void mk_num(char *str, int num) +void mk_num(char *str, int num) { + int i; + int j; - int i=0; - int j=1; - while(i<3) + i = 0; + j = 1; + while (i < 3) { - if (i ==0) + if (i == 0) { - str[13+i++]= num/100 +'0'; - num %=100; + str[13 + i++] = num / 100 + '0'; + num %= 100; } - str[13+ i++] = num /(100/(j *10)) + '0'; - num%= (100 / (j*10)); - j*=10; + str[13 + i++] = num / (100 / (j * 10)) + '0'; + num %= (100 / (j * 10)); + j *= 10; } - } -char *mk_filename() // 파일이름 유니크줘서만들어주기 +// doc000 doc100 doc 200 순으로접근 유효성검사 +char *mk_filename(void) { - char *str; - int exist; - int i; + char *str; + int exist; + int i; str = ft_strdup("/tmp/here_doc000"); - i=0; - exist=0; - while(exist ==0) - { - mk_num(str,i++); // doc000 doc100 doc 200 순으로접근 유효성검사 - exist =access(str,F_OK); //access 가 가능하면 1리턴해줘서 while문 탈출 . - if (!exist) - unlink(str); - } - return (str); -} - - - -void do_heredoc(t_leaf *leaf,t_data *data) -{ - int fd; - t_leaf *temp; - temp = leaf; - - while(temp) + i = 0; + exist = 0; + while (exist == 0) { - - if(temp->token->redirect_type==T_HEREDOC) - { - fd = open(data->info->heredoc_file[data->info->index], O_WRONLY | O_CREAT | O_TRUNC, 0644); //임시파일오픈 - write_str(temp->left_child->token->str,fd,data); //limiter 들고가서 작성하기 - } - temp = temp ->left_child; //순회하기 + mk_num(str, i++); + exist = access(str, F_OK); + if (!exist) + unlink(str); } - + return (str); } - -// void mk_heredoc(t_data *data) -// { -// t_leaf *temp; -// int fd; -// // herdoc_signal(); -// temp =data->root->left_child -> left_child; -// while(temp) -// { -// data->info->heredoc_file[data->info->index] = mk_filename(); //설명했듯이 이중 배열 -// if(temp->token->redirect_type == T_HEREDOC) -// { -// fd = open(data->info->heredoc_file[data->info->index], O_WRONLY | O_CREAT | O_TRUNC, 0644); //임시파일오픈 -// write_str(temp->left_child->str,fd,data); //limiter 들고가 -// // do_heredoc(temp,data); // 실제 here _doc 이 나왔을경우 만들러가기 -// data->info->index++; //순회하면서 heredoc 찾기 -// } -// temp = temp ->left_child; -// } -// } - - -void mk_heredoc_pipe(t_data *data) +void mk_heredoc_pipe(t_data *data) { - - - // herdoc_signal(); + t_leaf *pipe; - t_leaf *pipe = data->root; - while(pipe) + pipe = data->root; + while (pipe) { - data->info->heredoc_file[data->info->index] = mk_filename(); //설명했듯이 이중 배열 - if(pipe->left_child->left_child && pipe->left_child->left_child->token->redirect_type == T_HEREDOC) + data->info->heredoc_file[data->info->index] = mk_filename(); + if (pipe->left_child->left_child \ + && pipe->left_child->left_child->token->redirect_type == T_HEREDOC) { - do_heredoc(pipe->left_child->left_child,data); // 실제 here _doc 이 나왔을경우 만들러가기 - data->info->index++; //순회하면서 heredoc 찾기 + do_heredoc(pipe->left_child->left_child, data); + data->info->index++; } pipe = pipe->right_child; } diff --git a/srcs/redirect/redirection.c b/srcs/redirect/redirection.c index a26c37b..27ff9f3 100644 --- a/srcs/redirect/redirection.c +++ b/srcs/redirect/redirection.c @@ -1,61 +1,70 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* redirection.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/08 11:36:30 by eunwolee #+# #+# */ +/* Updated: 2023/08/08 11:40:20 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "../../incs/minishell.h" -void do_input_redirect(t_leaf *leaf,t_data *data) +void do_input_redirect(t_leaf *leaf, t_data *data) { int fd; + t_leaf *temp; - t_leaf *temp; fd = 0; - temp =leaf; - + temp = leaf; if (temp->token->redirect_type == T_HEREDOC) // heredoc 일경우 전에만들어 준 heredoc 으로 접근해줘야함 { - fd = open (data->info->heredoc_file[data->info->index-1], O_RDONLY);// 만들어지면 바로 ++을해줘서 인덱스 -1 로 접근을해야 전에 만들어진 heredoc으로 접근 - dup2 (fd, STDIN_FILENO); + fd = open (data->info->heredoc_file[data->info->index - 1], O_RDONLY);// 만들어지면 바로 ++을해줘서 인덱스 -1 로 접근을해야 전에 만들어진 heredoc으로 접근 + dup2(fd, STDIN_FILENO); return ; } - else if (temp->token->redirect_type == T_INPUT) // 그냥 인풋 - { - fd = open (temp->left_child->token->str, O_RDONLY); - } - check_file (fd,data); - dup2 (fd, STDIN_FILENO); - close (fd); + else if (temp->token->redirect_type == T_INPUT) + fd = open(temp->left_child->token->str, O_RDONLY); + check_file (fd, data); + dup2(fd, STDIN_FILENO); + close(fd); } -void do_output_redirect(t_leaf *leaf,t_data *data) +void do_output_redirect(t_leaf *leaf, t_data *data) { - int fd; - t_leaf *temp =leaf; - fd = 0; + int fd; + t_leaf *temp; + fd = 0; + temp = leaf; if (temp->token->redirect_type == T_APPEND) - fd = open (temp->left_child->token->str, O_WRONLY | O_APPEND | O_CREAT, 0644); + fd = open (temp->left_child->token->str, \ + O_WRONLY | O_APPEND | O_CREAT, 0644); else if (temp->token->redirect_type == T_OUTPUT) - { - fd = open (temp->left_child->token->str, O_WRONLY | O_TRUNC | O_CREAT, 0644); - } - check_file (fd,data); + fd = open (temp->left_child->token->str, \ + O_WRONLY | O_TRUNC | O_CREAT, 0644); + check_file(fd, data); dup2 (fd, STDOUT_FILENO); close (fd); } - - - -void check_redirect(t_leaf *leaf,t_data *data) +void check_redirect(t_leaf *leaf, t_data *data) { - - t_leaf *temp = leaf->left_child->left_child; + t_leaf *temp; - while(temp) + *temp = leaf->left_child->left_child; + while (temp) { - if(temp->token->redirect_type == T_INPUT ||temp->token->redirect_type == T_HEREDOC) + if (temp->token->redirect_type == T_INPUT \ + || temp->token->redirect_type == T_HEREDOC) { - do_input_redirect(temp,data); // input or heredoc + do_input_redirect(temp, data); } - else if (temp->token->redirect_type == T_OUTPUT ||temp->token->redirect_type == T_APPEND) - do_output_redirect(temp,data); // output or append - temp=temp->left_child; + else if (temp->token->redirect_type == T_OUTPUT \ + || temp->token->redirect_type == T_APPEND) + do_output_redirect(temp, data); + temp = temp->left_child; } } diff --git a/srcs/signal/signal.c b/srcs/signal/signal.c new file mode 100644 index 0000000..fc695c4 --- /dev/null +++ b/srcs/signal/signal.c @@ -0,0 +1,52 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* signal.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: kichlee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/07/15 18:40:34 by kichlee #+# #+# */ +/* Updated: 2023/08/07 18:06:52 by kichlee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../incs/minishell.h" + +void init_base(int ac) +{ + struct termios termi; + + if (ac != 1) + exit(1); + if(tcgetattr(STDIN_FILENO,&termi)== -1) + exit(1); + termi.c_lflag &= ~(ECHOCTL); + if (tcsetattr(STDIN_FILENO,TCSANOW, &termi) == -1) + exit(1); +} + + +void handle_sigint(int sig) +{ + // printf("handle function !"); + printf("\n"); + rl_on_new_line(); + rl_replace_line("", 0); + rl_redisplay(); + // printf("after sig\n"); + (void) sig; +} + +void child_handler(int signum) +{ + printf("\n"); + exit(EXIT_SUCCESS); + (void) signum; +} + + +void sig() +{ + signal(SIGINT, handle_sigint); + signal(SIGQUIT, SIG_IGN); +} \ No newline at end of file diff --git a/srcs/utils/tree.c b/srcs/utils/tree.c index d4cb850..15092c9 100644 --- a/srcs/utils/tree.c +++ b/srcs/utils/tree.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:48:39 by eunwolee #+# #+# */ -/* Updated: 2023/08/07 13:22:54 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 08:36:07 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -64,7 +64,7 @@ void tree_clear(t_leaf *leaf) { if (!leaf) return ; - // free(leaf); //왜 프리 안해도 되지? + free(leaf); tree_clear(leaf->left_child); tree_clear(leaf->right_child); } diff --git a/srcs/utils/utils.c b/srcs/utils/utils.c index 716a28b..372050e 100644 --- a/srcs/utils/utils.c +++ b/srcs/utils/utils.c @@ -6,26 +6,29 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/12 19:40:44 by eunwolee #+# #+# */ -/* Updated: 2023/08/07 14:32:36 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 08:45:57 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -t_bool error_back_readline(t_data *data, char *str, int error_code); +t_bool error_back_readline(t_data *data, char *str, int error_code,int flag); void program_error_exit(char *str); void input_free(t_data *data); void data_free(t_data *data); -//syntax 관련 에러일 때 사용 -t_bool error_back_readline(t_data *data, char *str, int error_code) +//input 관련 에러일 때 사용 +t_bool error_back_readline(t_data *data, char *str, int error_code,int flag) { - printf("%s\n", str); + if (flag) + perror(str); + else + printf("%s\n", str); data->error_code = error_code; return (FALSE); } -//그 외 자식에서 종료해야되는 경우 모든 에러 +//system 관련 에러일 때 void program_error_exit(char *str) { perror(str); From 7442cd28d00ae01f6b495cd92981d7fc549429aa Mon Sep 17 00:00:00 2001 From: eunwoo Date: Tue, 8 Aug 2023 16:53:19 +0900 Subject: [PATCH 15/57] . --- .DS_Store | Bin 6148 -> 6148 bytes .vscode/launch.json | 11 +- Libft/ft_atoi.o | Bin 0 -> 880 bytes Libft/ft_bzero.o | Bin 0 -> 584 bytes Libft/ft_calloc.o | Bin 0 -> 696 bytes Libft/ft_isalnum.o | Bin 0 -> 688 bytes Libft/ft_isalpha.o | Bin 0 -> 632 bytes Libft/ft_isascii.o | Bin 0 -> 592 bytes Libft/ft_isdigit.o | Bin 0 -> 592 bytes Libft/ft_isprint.o | Bin 0 -> 592 bytes Libft/ft_itoa.o | Bin 0 -> 1128 bytes Libft/ft_memchr.o | Bin 0 -> 648 bytes Libft/ft_memcmp.o | Bin 0 -> 680 bytes Libft/ft_memcpy.o | Bin 0 -> 680 bytes Libft/ft_memmove.o | Bin 0 -> 784 bytes Libft/ft_memset.o | Bin 0 -> 608 bytes Libft/ft_putchar_fd.o | Bin 0 -> 624 bytes Libft/ft_putendl_fd.o | Bin 0 -> 856 bytes Libft/ft_putnbr_fd.o | Bin 0 -> 1048 bytes Libft/ft_putstr_fd.o | Bin 0 -> 680 bytes Libft/ft_split.o | Bin 0 -> 1976 bytes Libft/ft_strchr.o | Bin 0 -> 672 bytes Libft/ft_strdup.o | Bin 0 -> 736 bytes Libft/ft_striteri.o | Bin 0 -> 624 bytes Libft/ft_strjoin.o | Bin 0 -> 888 bytes Libft/ft_strlcat.o | Bin 0 -> 840 bytes Libft/ft_strlcpy.o | Bin 0 -> 768 bytes Libft/ft_strlen.o | Bin 0 -> 624 bytes Libft/ft_strmapi.o | Bin 0 -> 792 bytes Libft/ft_strncat.c | 4 +- Libft/ft_strncat.o | Bin 0 -> 928 bytes Libft/ft_strncmp.o | Bin 0 -> 776 bytes Libft/ft_strnstr.o | Bin 0 -> 936 bytes Libft/ft_strrchr.o | Bin 0 -> 672 bytes Libft/ft_strtrim.o | Bin 0 -> 1320 bytes Libft/ft_substr.o | Bin 0 -> 1000 bytes Libft/ft_tolower.o | Bin 0 -> 600 bytes Libft/ft_toupper.o | Bin 0 -> 600 bytes Libft/get_next_line.o | Bin 0 -> 2936 bytes Libft/get_next_line_utils.o | Bin 0 -> 808 bytes Libft/libft.a | Bin 0 -> 35288 bytes Makefile | 8 +- incs/bulitin.h | 36 ++---- incs/minishell.h | 13 +- incs/pipe.h | 44 +++---- incs/struct.h | 40 +++--- incs/utils.h | 8 +- libft.a | Bin 0 -> 35288 bytes minishell | Bin 0 -> 87174 bytes srcs/builtin/builtin.c | 11 +- srcs/builtin/builtin.o | Bin 0 -> 6128 bytes srcs/builtin/builtin_utils.c | 161 ++++++++++++------------ srcs/builtin/builtin_utils.o | Bin 0 -> 7936 bytes srcs/builtin/ft_cd.c | 55 ++++---- srcs/builtin/ft_cd.o | Bin 0 -> 6552 bytes srcs/builtin/ft_echo.c | 13 +- srcs/builtin/ft_echo.o | Bin 0 -> 4752 bytes srcs/builtin/ft_env.c | 79 ++++++------ srcs/builtin/ft_env.o | Bin 0 -> 5488 bytes srcs/builtin/ft_exit.c | 23 ++-- srcs/builtin/ft_exit.o | Bin 0 -> 5992 bytes srcs/builtin/ft_export.c | 224 ++++++++++++++++----------------- srcs/builtin/ft_export.o | Bin 0 -> 8416 bytes srcs/builtin/ft_pasterror.c | 18 +-- srcs/builtin/ft_pwd.c | 51 ++++---- srcs/builtin/ft_pwd.o | Bin 0 -> 5184 bytes srcs/builtin/ft_unset.c | 33 ++--- srcs/builtin/ft_unset.o | Bin 0 -> 4520 bytes srcs/execute/checkbulitin.o | Bin 0 -> 4696 bytes srcs/execute/execve.c | 2 +- srcs/execute/execve.o | Bin 0 -> 7968 bytes srcs/execute/freepipe.c | 9 ++ srcs/execute/freepipe.o | Bin 0 -> 5984 bytes srcs/execute/pipe.c | 2 +- srcs/execute/pipe.o | Bin 0 -> 5968 bytes srcs/execute/pipeutils.c | 2 +- srcs/execute/pipeutils.o | Bin 0 -> 6064 bytes srcs/execute/setpath.o | Bin 0 -> 7336 bytes srcs/init/init.c | 21 ++-- srcs/init/init.o | Bin 0 -> 6144 bytes srcs/lexer/expand.c | 35 +++--- srcs/lexer/expand.o | Bin 0 -> 9864 bytes srcs/lexer/lexer.c | 2 +- srcs/lexer/lexer.o | Bin 0 -> 6096 bytes srcs/lexer/quote.c | 32 +++-- srcs/lexer/quote.o | Bin 0 -> 8184 bytes srcs/lexer/tokenizer.c | 2 +- srcs/lexer/tokenizer.o | Bin 0 -> 7336 bytes srcs/minishell.c | 13 +- srcs/minishell.o | Bin 0 -> 4552 bytes srcs/parser/parser.o | Bin 0 -> 6152 bytes srcs/parser/syntax.c | 20 +-- srcs/parser/syntax.o | Bin 0 -> 8040 bytes srcs/redirect/heredoc.c | 51 ++------ srcs/redirect/heredoc.o | Bin 0 -> 5168 bytes srcs/redirect/heredoc_parser.c | 78 ------------ srcs/redirect/heredocutils.c | 191 ++++++++++++++++++++-------- srcs/redirect/heredocutils.o | Bin 0 -> 9816 bytes srcs/redirect/redirection.c | 77 +++++------- srcs/redirect/redirection.o | Bin 0 -> 6096 bytes srcs/signal/signal.c | 9 +- srcs/signal/signal.o | Bin 0 -> 4304 bytes srcs/utils/env.c | 6 +- srcs/utils/env.o | Bin 0 -> 6488 bytes srcs/utils/list.o | Bin 0 -> 3672 bytes srcs/utils/list_clear.o | Bin 0 -> 3184 bytes srcs/utils/temp.o | Bin 0 -> 8640 bytes srcs/utils/tree.o | Bin 0 -> 4288 bytes srcs/utils/utils.c | 2 + srcs/utils/utils.o | Bin 0 -> 5552 bytes 110 files changed, 675 insertions(+), 711 deletions(-) create mode 100644 Libft/ft_atoi.o create mode 100644 Libft/ft_bzero.o create mode 100644 Libft/ft_calloc.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_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 create mode 100644 Libft/ft_strmapi.o create mode 100644 Libft/ft_strncat.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 Libft/get_next_line.o create mode 100644 Libft/get_next_line_utils.o create mode 100644 Libft/libft.a create mode 100644 libft.a create mode 100755 minishell create mode 100644 srcs/builtin/builtin.o create mode 100644 srcs/builtin/builtin_utils.o create mode 100644 srcs/builtin/ft_cd.o create mode 100644 srcs/builtin/ft_echo.o create mode 100644 srcs/builtin/ft_env.o create mode 100644 srcs/builtin/ft_exit.o create mode 100644 srcs/builtin/ft_export.o create mode 100644 srcs/builtin/ft_pwd.o create mode 100644 srcs/builtin/ft_unset.o create mode 100644 srcs/execute/checkbulitin.o create mode 100644 srcs/execute/execve.o create mode 100644 srcs/execute/freepipe.o create mode 100644 srcs/execute/pipe.o create mode 100644 srcs/execute/pipeutils.o create mode 100644 srcs/execute/setpath.o create mode 100644 srcs/init/init.o create mode 100644 srcs/lexer/expand.o create mode 100644 srcs/lexer/lexer.o create mode 100644 srcs/lexer/quote.o create mode 100644 srcs/lexer/tokenizer.o create mode 100644 srcs/minishell.o create mode 100644 srcs/parser/parser.o create mode 100644 srcs/parser/syntax.o create mode 100644 srcs/redirect/heredoc.o delete mode 100644 srcs/redirect/heredoc_parser.c create mode 100644 srcs/redirect/heredocutils.o create mode 100644 srcs/redirect/redirection.o create mode 100644 srcs/signal/signal.o create mode 100644 srcs/utils/env.o create mode 100644 srcs/utils/list.o create mode 100644 srcs/utils/list_clear.o create mode 100644 srcs/utils/temp.o create mode 100644 srcs/utils/tree.o create mode 100644 srcs/utils/utils.o diff --git a/.DS_Store b/.DS_Store index 556a392b0ffdb9f5575bb1af5a523270e5564997..997a84f9289766fc946b5d009238499d5efb7e05 100644 GIT binary patch delta 87 zcmZoMXfc@J&&a+pU^gQp`(z#_X;w=H1_qnWI!ru_Yz)gm?8!OI+N`2r)*NPC)@Cs4 b9J4a-M-b~j6l@mc5M!CxptzZx<1aq|oC+Cd delta 130 zcmZoMXfc@J&&aVcU^gQp$7CKRX;vEs1_sm3I!ru_CX7Nrw*G%80J7N`au_lhk{Hq$ zN*MGQ5^F?M( Kmd)%OfB69g*(VtQ diff --git a/.vscode/launch.json b/.vscode/launch.json index 91b425d..03182c0 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -3,5 +3,14 @@ // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", - "configurations": [] + "configurations": [ + { + "type": "lldb", + "request": "launch", + "name": "Debug", + "program": "${workspaceFolder}/minishell", + "args": [], + "cwd": "${workspaceFolder}" + } + ] } \ No newline at end of file diff --git a/Libft/ft_atoi.o b/Libft/ft_atoi.o new file mode 100644 index 0000000000000000000000000000000000000000..6af93fb94d9f00580a48389b4dde722c5e961288 GIT binary patch literal 880 zcmbVKze~eV5Wck4rdEwmAsUw~LhGc0idzQ-1qYE1-5#YX7VQrqVi%#};@Zuvqb`mP z+3KX5xH!91Qo%o<4%Y9|y!3~iJaX^dyYKG1yO;O!{q-|Wq!5Ic5cG%*6AGDyI<7T* zxp6azuDxBJ!w6>$cxggd2W6|vAw+63o$8*YRqo-Fxh@u>ij3i1h-@)m%498ZRyfZU z_J!El=*1+`R`|5P&)$Z2Y1tAqF@aJ^+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710W6Ja|1EV4v-oU z2I&Qka^N;VM%6WsHdj0+yj@uS>ON=lNy2a${wQsYu}Ib z9Cy;g*r$GwrRde9C^XB_Teck0<@`0~T?GbWMmd^G(MM?Bto4YtuxI|>FN_wz0dl%0 zjh+;B52a6f?ocDOw?2>J&dw0~^&bp=(dSg}C7*xFs_<~9q6J2>C`rtjT?gmn!paKZ w94@ZrP#*sBL|){COZexeeBxt|-MV{L_lVt^<23CgWRIoexvdS7RURMq17ML_N&o-= literal 0 HcmV?d00001 diff --git a/Libft/ft_isalnum.o b/Libft/ft_isalnum.o new file mode 100644 index 0000000000000000000000000000000000000000..8311ad73435a78ccf372be4688ce3871f566087b GIT binary patch literal 688 zcmb7CJxjw-6uq(43eoD2L0!xu6tti&Iw~qSIEZv`yM#tbGrtu!Qc8_$9=2%U4OodZ)X*#d2kCYvp0S2 z#*NJmyxaE~eoDWSzGrOt8B0h}ELvckr6^r^jV*%nazGsm;5-hR+_T))RH`rkO)6D7 hof98N?47&bi5F?@RD+uTrNfFt)yNN5)Vi!6OCOCqO%MP8 literal 0 HcmV?d00001 diff --git a/Libft/ft_isalpha.o b/Libft/ft_isalpha.o new file mode 100644 index 0000000000000000000000000000000000000000..f936134384ebac76d78e8c6def92e55f0fe03b61 GIT binary patch literal 632 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg{|11j7BHi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJHe0cC*9gXskeu`o2i)PU&t_~iWDg2d#K_|m-c%)FHNcpn#J zd6+p0FhQVU%s{pRkcK)H#dss2oCFX<!C2I2r91_6*7 z5C-W5*+CBY@62%V0XM_W7u*gzIanDBUo4+51q^p{pqV0Iu}q-Y@%d7~a6yQ*LezO6 zi@gMjU7s(t0;*Sop&{r6Kf_L-yF~s2X^?pj_#Jiv?VEUjIsO{Vt>Ewy0DA)_1gC*| w*o1*RK9C2Y02DfWKu^QM86?GzB+n3^RuZ3CoS0LPk;sr!l3QR1CJkWv0U(J-hX4Qo literal 0 HcmV?d00001 diff --git a/Libft/ft_isascii.o b/Libft/ft_isascii.o new file mode 100644 index 0000000000000000000000000000000000000000..6895e02eb9b0f074c0d3d2b35b63434a98217467 GIT binary patch literal 592 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P08wF5<5+(=K!zK*m@PQl-1t4GZ0X+lr h8%T;DNuD7-tt39PII%c6Gm{~wB)7m2Od7!S0{}(4JCpzb literal 0 HcmV?d00001 diff --git a/Libft/ft_isdigit.o b/Libft/ft_isdigit.o new file mode 100644 index 0000000000000000000000000000000000000000..922557d07d952d8a42f60e7d36dfb72bb195ae68 GIT binary patch literal 592 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P08wF5<5+(=K!zK*m@PQl-1t4GZ0X+lr h8%T;DNuD7-tt39PxS%LAuY@6|B)7m2Od7!S0|2AlJTw3R literal 0 HcmV?d00001 diff --git a/Libft/ft_itoa.o b/Libft/ft_itoa.o new file mode 100644 index 0000000000000000000000000000000000000000..853a82d120c8aa5ad2a5be249327b6184fbacfa5 GIT binary patch literal 1128 zcma)6O=uHQ5T5Ne$!=o}g+jHc8}L$)LhZ!}9u}fdr3WcJc=8cae-`pnVWmPT1ab-J zCFn`PimgTU!r;henL?o87nB2o@YNZ{C|X-#0(J&8MH=exD#x z2*S%a^geIWP{?Vh=kNZ#m}7yz<}(n5=LFoW@|uLO?>w?24k1>r-CB*#;qI5@VLrz0 zsFGuxDq##;A@b$odMK3@Zd*ZLcXXpKVlK62VXi z*T8-cxEO2(16qJhLT^G@n3t8YJU`h2cKdma-I@yNnC8^gQ zYj)1LPUp6($7sq^^=*C2d^$&!J=)S=@O?KyJuhMQG=;uv@&Hy_W zVA*$Fsq9TmetdodHEYVmf%bvwU%~lGZMcVOa{CGDdyV>*tP2^R1F_6~I2g=uZ>`Qt z7x^9=sFBYOdgGkUsyOOzW?PtH{kD%RS2ZjN-z6HQB=t?g6}FPjA?p4qtZ^ zas^v}=Fh-_Vm=+%I1HcT=V4C<-0bq-D4#>#vwY8wU4F3B*rrC}@gL!1U;+{Ok}cM( edzMY2m@5>@c@lSRVcF#z73|{rMStZ_#g{+$EZs){ literal 0 HcmV?d00001 diff --git a/Libft/ft_memchr.o b/Libft/ft_memchr.o new file mode 100644 index 0000000000000000000000000000000000000000..a0a51afb13a7db7b5870c94d8eaad50fab46323f GIT binary patch literal 648 zcmbVKJx{|h5WVz+qzV*?R!ZrT{)EB;-8{g?z|eusLZPS#QX&)tBO?O?{RLeaS-T~8OM=W)hv4B>fMuTGWdDyv~HWpEls`#~(v2Ny?!11Wd5 z^7^d_TE;gptO&jdZ?^ht{5rG-@S`oE7=UpR=Y{Ey;5l}IU4V^i7~IR>_>ZNJ^gO9i z^6Jz0&80-uM51hXUyPMc9n7vPS0t4(&8E;Di)P9jHJt)&Xw4SLiO$p)9mlF1D|^(u zqq(L$N^l=_#dT#G^6d9C^-|=yf8vP*dl)_x9tMYa+E;eO2rY7NF@CNegJ{3BjE!8 zgDwPd6^P13aJ*S|!;ugKlf0cb^JZpuZ}0y7?PHS2As8cWl|UAw19a>QsTwZ4G-VqvN={6D9Jbb9&I(m2z`E zuiu!UX8bCKx!^5$bJQQ>m!Zu9U)mIk0T>r?e%th4!gCw|TL2r^Fu0fZ_>X0G^f;)H zdJajw1fp}dnOHpDivuogzh^uN~>4%zDp}w^8|8YZRiTM2=6_Z+sf83}Oxc e8kO;}?EA13=5&&KiHzHE6nE(;iMvaBZO|tV&tNV9 literal 0 HcmV?d00001 diff --git a/Libft/ft_memcpy.o b/Libft/ft_memcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..432a71542dd2a40a3eb37fb4330688e9c6f1b691 GIT binary patch literal 680 zcmbVKyH3L}6uluWDGIa_trY0g5iu1O=#~LC28IsZ3<^a>A|*o*urYR|U(g?5=qDiY z0l>msm=Yw0j%Fa7>)L9Nn7GpMeVu!3$9ekt{9Y!q2*yhR=yA{hVCz7lqQ94CT^=X} zB9l9)GZu7Th`4(l>jX}S_I{^5&rNi%1J*OMs#Ks`!(lH(a1lnwK`bu&S7-ebArAKP z{jp9O+V4WlM%;ndNBt$gjounC>#cwcz?j7KBRziy&$$a60&L7-@GS4~AIl!;Wl|;i zRw4QBl1!?;ELk*7oKbzlq8(`0lFGa`pjj>RNaBrZ%ugK5fs@!I72oycQjw-9^puu2 zs`reRt$M>0+>+(DQpcB@MH+rU1N*h6S>`EC=(EzCj9_ICSg$k literal 0 HcmV?d00001 diff --git a/Libft/ft_memmove.o b/Libft/ft_memmove.o new file mode 100644 index 0000000000000000000000000000000000000000..9d5e31641ef589af73b037128240e95a73f0b95e GIT binary patch literal 784 zcmbVJJx>Bb5S`=D15q%6L#`LfiqSo@;$F)FQG_TH@Cqf+T&DRZ2 zDNf#j%!WUJjYs^T-$88+I<2js84BSh&JSb!J8TJY26_l(;T~4T@{IpTbWe|?JgMg# zsh12XnfFx6qKS0+#SM#g!CjEKS*}CVT;!6%?gj3b4shs^Hmu{R(B}U1tGw+OJBew( z=E-;}y+D%?bMy?iUu>8ez=Ws+*G*YoB?QkH@us!Z#U7PO6uEiK`wI_d^g`@nc(xFa zv7_P99K1K~!2Zbf6yBjXw8fKoL;a6s{k$giZGl Sy6?9x>vSIY?QMOQ4gL#Ewtlk! literal 0 HcmV?d00001 diff --git a/Libft/ft_memset.o b/Libft/ft_memset.o new file mode 100644 index 0000000000000000000000000000000000000000..3524c0760ee6ccd2ade520ebc4f7777a2b686b43 GIT binary patch literal 608 zcmbVKJxc>Y5S=rLADreygo{?`B398xuF4e(78VvM>;_3rB6u<2ik6mX^9%eP=>&g( z*jPuajUX7XISbD>=Pq8r%7M4@@n#;o!#;ezeJv6>1e2o(bR?((ur)wu(ceekl>3 z$0Swb-=SAPybMuu)hYRHa24Q(TS7AclP0NG5Xk&KyyPx$2#86KKxU=qKbGFp+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*TVsc4*XM+jxbm+v!^8!jY5FJf4;wKUdwMn$I@GBtN2#3+mB1MW6!XVzMf%A-dApx6%`~d^@o?YS} zFm{4JK(r7`wMt`egs5*WdzhS!18?5EnccV9z1)Ake+?3K5kgWJs7VnA5EHK!K}FdGM2vmq=7 z5VA=66%_J5<1o>{13(IpkZ&N6y>j;sW9a|H_Z>YnPrIwl5|!Oj?Bg;St5uR*>+7PU z`t`-+KG8D#$3_9^*Q0b(De*@=LJb#;GtOTlTH`H5S1(cRMzo7{*mE{TRGud1QF`Lh zJYB2eyz*^`pZWtoPJIWtPDkiay+pHHV0dh1TD&T6AbkytyU&7T-n#@IM&XB)!+03w zPxApiBN}h(fF&k@k+%JP&~1{U0Zk^);SWZJ@(ZQxjqFov={-i-uM6jq}A%loRw~N0usA)`}D2VXDrDFqy zj&V%ZE={&d9MnbHp*Wf?D&0j$)9<{ThtJf42hKfz-}&x+_nmus^ZQRLkwy?+8lZW0 z0#L|PXw<4&;Xli?)Xv1(aWjytF6mIpSlTvj+m)J~d^>v^+g`xI_Xx=sAkewkKqebo zlv?;;q~eKplBnmidAw4;W-^D=g#^C$>&dwVLv1Fu;)zA2ViOKH4am6ylGJf7{MP%&S9glZs;_WrBRf7o1nrE@8MG2qaT$WEms+*^nTHw zFS)5uc8?WwjW){PGQJg}Veod0K(ob6{$g+LtFEtK%Qe?3H76D^~ox{DPzq{10P6$JPfp+jWZnqs$M@lRts+OVTM(p-2i z7mczn1tsnk%=5Z>7sr?xdmh^mw>kLutvEuWHPwfQLTW1&Hyu2L;y$2gw2Y3zT`9zyJUM literal 0 HcmV?d00001 diff --git a/Libft/ft_putstr_fd.o b/Libft/ft_putstr_fd.o new file mode 100644 index 0000000000000000000000000000000000000000..e34149bfbdabb9b249a3d3fc46968974ecf735e1 GIT binary patch literal 680 zcmb7Bze_?<6h8VagUSLOszsY>5vrwCvbKf>hqgob6a_W2D+(^bTU-VAY}5XMbPM_e zqNTZ--V!uwVD+8bee{Bs4t(eP&X0TEJ@?(ezkVzb1qdcC1QbLh0N5(vYW25kn{-=G zAoAic@`9kLGpk%vnE=F`IXKSz#GbN^ka==;8BWg#(S_F|%$z+fS5LBv>y<{aVlyA^ z`|AZ0Bn-b{o&}x2FmqKs)|6=nVg>lFEutBKNt5I^A!fi$@D_L;I0D3^M<8eA8>0Vf zpLg^yZ3PEYhdMncKE6uFhy64U=K^%*-dwI>pIyw4;a|lh??!3VcX;fEY0?AZd)?=7 zYVu;y^;0x8l34nut-S$ecWy0y^xw(6bI6|)EjuBZOo6dW5+r-gZh#}Qps{su1dDp_ u97Vk3tBdr7gnR#riSvrjRjrh(5I1T?mD8DOT_MSNn@Xx&-PT^7o4x>P!Baf| literal 0 HcmV?d00001 diff --git a/Libft/ft_split.o b/Libft/ft_split.o new file mode 100644 index 0000000000000000000000000000000000000000..0274283b48990647c87703b37087a4f2885a4d9d GIT binary patch literal 1976 zcma)7y-!n76hDs&ZT+B8h$yIq4NPjpLFr&pttJi(#4xy+3zn*lrBr;x8e;Mi784w7 zWHg~Twf+Tt6C^BbL}HASDd5l!CK@#XlUjf0e#nC^p5(rB&&NIIch0%JUH|>{&ru?a zK>Rs`Rpw1E7U(qAkhDs%>2rz?fIev-Bm1G_p3O)h;c?eM!DqZAOyJBvzm5x_^!FTjL_S&+X4Qcb! zZq*;#4OsNO>R;@BL39OJI+y3dJ7I7>2is$|flC|Cy~4`#c|ME6caOt&J3;wI54jcS zmXQCg&L22LgM7ZKW3zp;C+70`0`j1zot%?n6(RG!Fei5Ev+)vY%dhyv$Hpq5#+Fij z4mHAODIP92I>=?;B76f@EGlt!Ep|WjDV$2b5-r6=Iba1JF@`mbLE2g=&-vPQz9Rgr zv(&-3Dk1c&1GRI{kf#=MToo@kZ!m5(8eJ9m)Mu}kfKTB(FpJF)?QRK*ZtFgWErq!n z;-2qeUTamDm3}2!6Dz1^KW1qI<|<Dj=JR}MT&p=WC5MctDCIVXy%;WF-OXAN-_mf$?+<2e16>PNq>VIB1^!(Yy8Rh0M5 zYmVn-mFjWIS5W&V@Ub6e%=hqd4YHY+xfeWt&P%|?_TO0p*}5}{+wqS3Cugr?<4!0{tRl_^dqiiQ-9*X`MWHm5c7_6>X0Y@Fl3KN z{A2OTT&Gt)c|ay{-xg1@>6A?(nM;~2D`)QEpNd2xgFQBBaY4!H+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|z0xH}AHi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJIp1j+!J2h$4{Vqs{2sR7aP@yYqQ1&PTe@uhj?nRzMk@jfod z@++Vm1t@I*G>jR@4gk_nr=l2d1eB8iVu&0sP%#h#0Z0)@JOZk}14x7T+&~-v#2^4t z1HvG^AUntb|C<>uKHz5f`H-Js=L>#^oiFqmEP>{Uyx?~D$-(Gg$-&4__(FWX6bBQ7 zIYRt^}0RzA^#=r**Bv`zFr1+8K8RFAQ;)_d) Rk~4}Ja!PUw48f!U0|4h5Suy|s literal 0 HcmV?d00001 diff --git a/Libft/ft_strdup.o b/Libft/ft_strdup.o new file mode 100644 index 0000000000000000000000000000000000000000..ada19c5ee0486eb467f07cc0d4dbe8f7ba0b764c GIT binary patch literal 736 zcmb7CJxjw-6uoWQrlne!4(ejTrJ@DvqGJ#R2M31^ZqJfd6w)?mib@dzS-KY79PHTs z3I%_F=-?c;I5@a9Le+EA7p>yrf&0$6pYP_8ySJD338DxAe8gY}EOIbl2Id9o@1rZj z?O*~?=&OjcMP*(Ht9oil2P8ykbGP*Ehsu_M=W%Zyhr+QK*-RmX&>JTKuyC&xk+3K1GtFeTM!9w54;9W!**Z{u3_U|-Zj`4 z{2zSW(*3X%?GGL5xM}j;wC1D#!d1zCRy99Q_QOJ)I&_}84B`s;o}&552)%mh)ohz+ z758Vaow-2@>>~Gs86JA0+=p3Q-$S13x{eqOTkCz?+qqH1W4Nn568szdz#cq&S78Yp z2WP=3DuDRA6Gd=_A3$OeoWY~m(&yKl8q2dBbI0C()G+@mPh#H^$JUXdn`fb}G|f;N U)jEk<*)SS98CK0K2In%-C!!=_w*UYD literal 0 HcmV?d00001 diff --git a/Libft/ft_striteri.o b/Libft/ft_striteri.o new file mode 100644 index 0000000000000000000000000000000000000000..a0a8a3eb480b1c2684ca86ec97c56499edd8e498 GIT binary patch literal 624 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg{|0V>=9Hi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJHe0A+y8gXskeu`o2i)PU&t_~iWDg2d#K_|m-c%)FHNcpn#J zd6+p0P{AKS^O%8b380}+r=l2d1d;<{h#W6aF%Sa*ND)X}0muO94*=2%K$;uG24WBZ zsR3b-UXU7c!2iPx7yni>t^C`}FmXY%{Evs+3_t(#GwcMKDYBwD{>MxHhMgRYoZTFZ z4wf8@423Vm=Su;@$Q&g9g4^Ne1Ad2{D}m}>0o5roa&+FyGC6ysoJ5PShN=l%cx z;(x21Rs!vrcz`+n8qAH*Z~{d;1^}APCIS@Y19=Pz_<%GY(6g}c1xfKE$uq>KmBbg9 V6lIpA7G*Nzl;jo|f=L6YegJtAPvQUo literal 0 HcmV?d00001 diff --git a/Libft/ft_strjoin.o b/Libft/ft_strjoin.o new file mode 100644 index 0000000000000000000000000000000000000000..de774eabb4c94570e4232da47ad82f2dc58cd1aa GIT binary patch literal 888 zcmb7Cze`(D6h5!lG(XxJ1RrwX><{{2W`Q@!NI}pB58`Y`C;29Ed(KuMaUFz zb1RD5pR0j%jV>zgTw~S}(s|S-y*X_B^1+vsYLYlOs|k z_@;HPT-;dAS$ebddA;;T>%~`oj+pgy(%$A*Pv-~FOHuxh&4Nw9hq))X6b@q%_Z^TB zZ~@I^fsf!za2jjqJj-6m|JVA;IPX2adDeUJJ8u_D{#fex)H;iN8JZI zv6nnGhIQPJLa&AUneRaBCQ&`?s@TE%kc@S4K4Zk{Q-;ic@AnhbveDOlTHL2r2jB58 zTI{=nyCO!ko`OE(ee}&cnlY5Z(0>??N;d3ega9*C~Ra7D~DUwX+bhuyP48q7Y-$69pR~jbIh9PwX!K zgLIa5Vk4GfAs58L?jpqaX0xX!SU4~{Z|CF9?#|wQynPNZ#u=VrDigvfoH#!mLaZ&Vul?);ln(Jx?JX9`5n*RR4p|}cd%NXa-VsNo z~UirciCu_)VbAz$X`=!>}O+uY`CF5p34wShYr+|D-8dlLI=^afYxGZc!`)I(c*v@J&*ItRsk&iTfL5-U2p literal 0 HcmV?d00001 diff --git a/Libft/ft_strlcpy.o b/Libft/ft_strlcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..b280b25b58ee194985258aabecda6f07dcdacef9 GIT binary patch literal 768 zcmb7Cu}eZ>5Wm;co?__|SQ06;NDx#*;U-jDLxe-yN0?!tX7!@NMR0LU2x`+&`w!fN zmbPe#hK5%VJcouhUtspT=l9Zvh7RuTclX`>zI*q*`_K2UF(QQ^Y+TSZg9sEd1vPE- zhp{_}%F_3lh%}V5j>tA4^wgO?;1D9QzMUAv4tkb=`M9?XV^h1R=+v+mB6*O_?<93` zk~`hc?FzB6HhgZ#AR>JlJSy;o!#5bsu2_Pdg!VsU9K}!w&%pU>0N%|Ld=%aX-Gs7m z4J-HZ9eoafe@IVN9=Zj!(Y>WgO$~Qm0%X1V$T9+P3pAI8MwaP|TONfzOsyKK6RqH$ z2~&$(^-{Pq3v9=z_b9Cx>JH6dHRPq@R$HSc-mqWK9By!2RYNB7lB0R2(6ZC-byKB{ z`#nlL)=))f4)G0UiYgSdXW)L!_SWkK>o^Z{Ue3WBwUX#`3#$!$Q>CSf$Kf@|_vKao zl4(TP-8?73F**b92XKVnz>g&xGQmfIp>uw%p%6dFo-U5{qf9b?{)1CF%IMkrqHPy! Frf*NVcrE|{ literal 0 HcmV?d00001 diff --git a/Libft/ft_strlen.o b/Libft/ft_strlen.o new file mode 100644 index 0000000000000000000000000000000000000000..e5563189f7ffb9f76d73eb6efd9f398b04828652 GIT binary patch literal 624 zcmbVKp-uxq5S^oiD>>+;grrb)5(yZBI{~f&QBgM`r38}pD6oV|5=;|R9j?Dpi6a`hzWdZqgSy Cv`MJ| literal 0 HcmV?d00001 diff --git a/Libft/ft_strmapi.o b/Libft/ft_strmapi.o new file mode 100644 index 0000000000000000000000000000000000000000..8eef3c68ca51aaefaa12c673617b608def692e64 GIT binary patch literal 792 zcmb7Cze_?<6h5z~sZ>f3ymHZ&s6nWfY)YuMhK7c=o0yT{uj)mC1P@w*mV}0&A;7MOPl?D zv{m}VRv>a>AM)&dsxE|?J~UMT5Mph4eeEZ9*pnix$Fmj=Tf;+^)59o4s*o!tQ>NI@ zA7t{ILaZ#g>kSn|6>dO82R{Rzd zpAgOA?vb10NIL@T8C2u=8uKrPRr70sQ@@s&NB@pAuEJ9L?w6rNr)eZ=RrIycH=b$5 zNn5D1HqTLJDlSp?dudog^R?GAoEmFJG@9r58u#*jm1EKFmKLk{FXdZZ)ZIH!@5-Oo zFPlV!WQ=!=-Nm>Ft^NsM5X7-4NDzx{s06-Q3c2b`U7_nO)qvPC#h$sFP3K9`T(X!U UkxOQ?g%oAYTye%e`E`lD082u9{Qv*} literal 0 HcmV?d00001 diff --git a/Libft/ft_strncat.c b/Libft/ft_strncat.c index 8087ffc..9985563 100644 --- a/Libft/ft_strncat.c +++ b/Libft/ft_strncat.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 07:51:04 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 16:19:01 by eunwolee ### ########.fr */ +/* Updated: 2023/08/08 16:19:58 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,7 +29,7 @@ char *ft_strncat(char *dest, char *src, int n) res[i] = dest[i]; i++; } - // free(dest); + free(dest); } j = 0; if (src) diff --git a/Libft/ft_strncat.o b/Libft/ft_strncat.o new file mode 100644 index 0000000000000000000000000000000000000000..e83c7199da55dd89dc4e29fa72bcfeddab8ad349 GIT binary patch literal 928 zcmb7Cy-QnB6hGG&?Mq*6C z*{{j;A86iY$&yX%;OuzQ;@}pA^!0aM-ZiPXc;I(F?)mr~?!7117k?iS34*YS0dwpO z0+45b4!yh8$FP%VE3zhjfO1Ah)TWe|UGrKql$x1(KhuhhC)?(6uZFTX8KVLlBTBi8 z3riW-Q>*!}^Z8Foy`3~Uwr0*?bXYZWFf5`ltA!O~&`*J8t{bEPgp2sxMqd}~9PBGt z2Y3gta1Dcdc~{1LC9uS4W8Eq>Dzv@7IZ!{a2I_~E{__5&s$v)@^wo3 z@lJZ8t@wA^kl%)=@QZ8C9l8n<J}F z84=!PM8YCD(g)iK3&Zc$^#b-W93yFt@u<1C)#F@pX9g?*fK literal 0 HcmV?d00001 diff --git a/Libft/ft_strncmp.o b/Libft/ft_strncmp.o new file mode 100644 index 0000000000000000000000000000000000000000..0aae7fcd7d331337772487cb0551dd5b7ff10a15 GIT binary patch literal 776 zcmbVKu}%U(5FI!W@RTbsImLz&I_<5}-}=_fj>LM0b&o z_c^39(ova|-qEc$(U7vSz2BJZ<0zBRi)#&+p>`0@E&3o;s^MMnv!1ww+MvXJdyzzC-M1XRIlMH*xSG^z{WWYuH_#8vA{~b4wuP) zcgg=Kk*}A9uN`<7-X%~UL5or3>Ih( z&)Yfl8(y7BGujJ z%>h}a&-sop*Cn_(n=kjDbJXtZ4@pb&UdRnU#C=`#dXITt!`Dzz_i*(XciK90)sOW3 z+xNw1-Y1xsZ-2gwEWY7<(OMP(8lHn4hm*)N#`w@ho1@95aQ<&nq3|`OV^JRiwIA$N Wp|^giQcL{uR#nPDrM76+1^EXv5v9Wb literal 0 HcmV?d00001 diff --git a/Libft/ft_strrchr.o b/Libft/ft_strrchr.o new file mode 100644 index 0000000000000000000000000000000000000000..13f006b4b3c7ee1284c5c581ec3c11f49aba071a GIT binary patch literal 672 zcmbVIyH3ME5L_n#8v#iHk|9l8QUVQf=K>@O3W^kTCuBfDkPyrvC?nC(<_qF7zmU#< zfM}>gcNF;mQ($JDyEsTlNUSusyEA)pkC)HM*9wtE2wo~ciwh4xYyv8;eqRzzKj#ia zrnkW}N?I2}o&DZ03ua~1hsgS>KkRp*Z2(hk6~h36hnPRs`+LY9`eo(-4xVA~UOwYLkv-AtxJK!_ zOQX!DRJp-OHOPnOx~c`KV+For(XDa^b*Dso1)umI4c3;fls%{qsn8UBW^)VFSMZ-? znLG9Sd*9d&QrxSbl*OBQQ_O{zKi5#RjI$Qk&{a{G;9sobb7D=fRGZUDTu5;zqbO`e ObS>N6oqXNa0 zmBUg9r&_KR99OJVR+lUHgt&2aI<6Y$rLzSb{3weJvIMEoLgPHvli;ZRF(iROoW%Z% zs52qoK;|J+;9FoOxI*UIxYQy3iN?D2K4|E@V3*n*eQq>Nli$(B2q2q#x2cVD*!D8i zXWuYw`|RhuE^NenFJt%3I6d@q+c#dHd8&Md247}t7T@p!=9?KH&h?DR80?d^Cp_KU zHrMTEIokL@>*jNg50b!60#l=XFS#|_k~puLb0eI=%mA?$JVVq!#E1cdYq_qAJnqqH zic!$G(!)O6JG%Hd-X-ie)(e{0FLH({^7qh-bGyhjGV8udSq$C+r3%RTh}A9L*gZH}NZnE`wGMPDP0uhefO z{e<&pIuu{S!7)9F#G&|0#Bn#Rc`4r^F9CZK66a{~)5Kl3<{^<{@tw!}wd}}FWTk}Q zc!HnqaVU!TwXm(`yd-Tk*G;zhG09hV7HWE`p8sd2%ut`UPalY1KVXx%?}|rmz2wv$ uL$6oMyi{D}cZzkTmX<0?b?eJznSHn5JRngnluA{HN^ZG!E?oIMn0^9Qn*u!m literal 0 HcmV?d00001 diff --git a/Libft/ft_substr.o b/Libft/ft_substr.o new file mode 100644 index 0000000000000000000000000000000000000000..d1abcbe0e1551f4589d91ffc49d0148a08dd3dff GIT binary patch literal 1000 zcma)5F>ljQ5I)xpwh0hbtuSZ63BR!Y*+x++pZij;v$ znIbVDF*Gna{RPPcQhxw~fw^qYjTpMwNWpw(`zdL}(39`oy?6J0clJAf`}6znB_fR= zyo^HE*eO6E*P$}@{=c+iB+-6q)!sll>qrU{!d-ps_Bn)DTv%G{@0IsqfRC|`p7eyq zsw#)A5XFu1=1S2OJC)t_$_pVLKNyTFoVv| zuK|~VZNuJz%|f3*SvZH4v0UQ}G4|(?sHT1I?PXfM`&y%^=Yvm2Q|-_CRNx&gw`G>X zrY-{Tyq8%gG&SnVcL$UEM02P)5#=bn3hU|1fix)eklO-|G^-wCj6Md~7&Dx63=Z6V z!U3OoS^b<7PE+;AOokft*80eN$2Nu1jyX@I(eL9+Eg#_9Ohn^|1BY6t(nfqVsmXkD z+zDIg)6}f4oI9AbsQT15s53p(m$~lW1O65By^&fNo{I}NVXweZlIJ}JMa?OPaszSvlWI<5h&{9? k@zNFBJI}Y>t;BV=N~;wT<&{!tqevyUym>obc~~L;034LLZU6uP literal 0 HcmV?d00001 diff --git a/Libft/ft_tolower.o b/Libft/ft_tolower.o new file mode 100644 index 0000000000000000000000000000000000000000..6feae5c437e7a3858d479fa91e0d6b7aeab4b71f GIT binary patch literal 600 zcmb7ByG{a85FG@CWR=xufmHhmYNI8I+EG|g&`k_rBmox9HBf42>laY^4cl4T5gTo{ z+{PcUP|pl^a7}ESX7y*vad)(pg_PjWv`1p;Ps2t6y@#hFzuGzUJvQ~2MlC&N*0zyV j+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T0Tu25o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNe&jdCVX-&`_vTQH(bNN=X1QM2;7z7>I!YqzEL=0c3#mTL5VVAk7WL0YD4_ zAT=Ni(hIf&NRtZwJ2PB-z|FAp1-HXaj#kFP7t7~M0pr0OXr>5Q>?Kg_`h2Mq3`k;) z423WF8Fm8W46Fvk2C09*@30eS-oyjU@z-GP0EdSF*qJaPI1SXpCJf~9fjj^OAm8%= kJp~I#kQ6_XJVSh1Nqk9uX+c415kpQ%Zh;|~G=S*`08)TIf&c&j literal 0 HcmV?d00001 diff --git a/Libft/get_next_line.o b/Libft/get_next_line.o new file mode 100644 index 0000000000000000000000000000000000000000..dcf776a4686982b7a8e2055048374f2b6a5d706e GIT binary patch literal 2936 zcmb7GO>7%Q6rRn-@wzE>f+D#jQXGkkb6C_?2vVdVrwLLIIYd>2ICUEA4GuVVNsNjV zRWiy2DLoJY5)wZ(f`c9P&|B9hK)&RF1XLC3(YdWFD&S@#1@pc6vDdq4fsw~=-pu>` z-u&!Oe?9*DG-C!sqrYKvmj*NFXwRX~iB-Xd{@NpQ>YGRwkkw=WlLrYX+3_rG?dn{)CPL>b<68p^0EhoM(!g z*Vi&7{$An6Mj^}j@={L`107dIO{QR&>{VinMdTcX+iMpvI*Ts-JOg2LG!mluL+FhW zJ;m5v&{6aibZQhcb<%~Hz!BtswQhs`a=bHCJKkmcmBpl6UF5E1uy?(Cw}A-V z_-;4Zeiig5?S9W>(c;`|L zIPHIL@?ZUUHAh+JD9-BMsK^5`1>zc#`84C{y1*;2?#K5<<+lY}DT8&$w~ob%sa%1d zrEJRl)Abf?TSn|1!oR9=((xyiP12{>9(TKmkREJa4#Y_^*iaH4T}W>8I?~fUM4*Ek_Nj-b!FJ2WS8QUJaD0Ui@huNy|&v_ayo9Y_mqtV zqkM&ISPVLdTl>X1pZF1V(Yh2biT89Y0SwXSJ|?i{+KX9%xDuXgmF{`G@j|bKy_|}$4!s9rY@lwKOR9TeFxLM4h`2;MhfRP+p9up^&FgQ4 z(0We2j!RF_zoQ;!x}4EM`roQY_Kx%#TDS1sfTz^HI^)Me`3pY5r$P=kJ2T zwOs+F^)KZ7@@JCHXF=iGo&$v|8}EhCKd08ql8#(cG_B~2q97zcQUg7Mfo>lV4}i1I}C9id38eVq~n(zoD*X{9ARGGnZFU8 zM{UX{Zg6hT5V;I;ULCw-5fHf^P=jxqsS&<4Ht#zxuzM!`wsFyU4byM#yK8E l`+EQ4>fAcz+*CxJoLiQtf>pF^OO-1HDcYs#mN#ySd;{UChS2~3 literal 0 HcmV?d00001 diff --git a/Libft/libft.a b/Libft/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..db4ac599d9b94cac192a4a5d55b6c8bba46ae0d1 GIT binary patch literal 35288 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 +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/08/07 19:05:05 by eunwolee #+# #+# */ -/* Updated: 2023/08/07 19:18:37 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - #ifndef BULITIN_H # define BULITIN_H # include "struct.h" - -/*signal*/ -void sig(void); -void handle_sigint(int sig); -void init_base(int ac); -void child_handler(int signum); + + /*signal*/ +void sig(void); +void handle_sigint(int sig); +void init_base(int ac); +void child_handler(int signum); /*builtin*/ -void exec_bulitin(int bulitnum, t_data *data, t_leaf *leaf); -int check_bulitin_func(char *name); +void exec_bulitin(int bulitnum,t_data *data , t_leaf *leaf); +int check_bulitin_func(char *name); void ft_cd(t_data *data, t_leaf *cur_root); void ft_echo(t_leaf *cur_root); void ft_exit(t_data *data, t_leaf *cur_root); -void ft_pwd(void); +void ft_pwd(t_data *data, t_leaf *cur_root); void ft_unset(t_data *data, t_leaf *cur_root); void ft_export(t_data *data, t_leaf *cur_root); -void ft_env(t_data *data, t_leaf *cur_root); +void ft_env(t_data *data, t_leaf *cur_root); /*builtin utils*/ -char **join_cmd(t_leaf *com_leaf); -int count_args(char **args); +char **join_cmd(t_leaf * com_leaf); +int count_args(char **args); t_list *create_env_node(char *key, char *value); void add_env_back(t_data *head, char *key, char *value); void update_env(t_data *data, char *key, char *value); diff --git a/incs/minishell.h b/incs/minishell.h index 2d9fc4b..32997ad 100644 --- a/incs/minishell.h +++ b/incs/minishell.h @@ -3,24 +3,23 @@ /* ::: :::::::: */ /* minishell.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:05:33 by eunwolee #+# #+# */ -/* Updated: 2023/08/07 19:06:30 by eunwolee ### ########.fr */ +/* Updated: 2023/08/07 14:53:16 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef MINISHELL_H # define MINISHELL_H +# include # include # include +#include # include # include -# include -# include -# include -# include +# include # include "init.h" # include "parse.h" # include "struct.h" @@ -29,5 +28,7 @@ # include "pipe.h" # include "message.h" # include "../Libft/libft.h" +#include +#include #endif \ No newline at end of file diff --git a/incs/pipe.h b/incs/pipe.h index 2c42bd5..adb1c25 100644 --- a/incs/pipe.h +++ b/incs/pipe.h @@ -1,38 +1,28 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* pipe.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/08/07 19:06:40 by eunwolee #+# #+# */ -/* Updated: 2023/08/07 19:07:50 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - #ifndef PIPE_H # define PIPE_H +int g_exit_status; //info init void info_init(t_info **info); -void pipe_init(t_pipe **pipe); +void pipe_init(t_pipe **pipe); void count_pipe(t_data*data); -void execute_cmd(t_data *data, int flag); -int fork_heredoc(t_data *data); -int check_bulitin(t_data *data); -void heredoc_flag(t_leaf *leaf, t_data *data); -void check_file(int fd, t_data *data); -void check_redirect(t_leaf *leaf, t_data *data); -void recover_std(t_data *data); -void mk_heredoc_pipe(t_data *data); -void link_pipe(int i, t_pipe *base, t_data *data); -void check_redirect(t_leaf *leaf, t_data *data); -void do_cmd(t_data *data); -void exec_fork(t_data *data); +void execute_cmd(t_data *data,int flag); +int fork_heredoc(t_data *data); +int check_bulitin(t_data * data); +void heredoc_flag(t_leaf *leaf,t_data *data); +void check_file(int fd,t_data *data); +void check_redirect(t_leaf *leaf,t_data *data); +void recover_std(t_data *data); +// void mk_heredoc(t_data *data); +void mk_heredoc_pipe(t_data *data); +void link_pipe(int i, t_pipe *base,t_data *data); +void check_redirect(t_leaf *leaf,t_data *data); +void do_cmd(t_data *data); +void exec_fork(t_data *data); void abs_path(t_data *data); char *set_path(t_data *data, t_leaf *leaf); -char **join_cmd(t_leaf *com_leaf); -void close_pipe(int i, t_pipe *base, t_data *data); +char **join_cmd(t_leaf * com_leaf); +void close_pipe(int i, t_pipe *base,t_data *data); void wait_child_processes(t_data *data); char *search_path(t_pipe *base); void execute(t_data *data); diff --git a/incs/struct.h b/incs/struct.h index f945ff4..f7e42dd 100644 --- a/incs/struct.h +++ b/incs/struct.h @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* struct.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: donghong < donghong@student.42seoul.kr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:24:15 by eunwolee #+# #+# */ -/* Updated: 2023/08/07 19:04:51 by eunwolee ### ########.fr */ +/* Updated: 2023/08/03 17:12:05 by donghong ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,6 @@ # define STRUCT_H # define BUF_SIZE 1024 - typedef enum e_bool { FALSE, @@ -66,37 +65,26 @@ typedef struct s_pid int fd[2]; } t_pid; -/* -cmd_path : 명령어 +옵션 -cmd_abs : 절대경로 -*/ typedef struct s_pipe { t_pid *com; - char **cmd_path; + + char **cmd_path;//명령어 +옵션 char *command; - char **cmd_abs; + char **cmd_abs; // 절대경로 } t_pipe; -/* -항상 기준은 파이프 한커맨드라는건 파이프 기준으로 < 히어독은 포크로 진행되기때문에 -heredoc_file : 한 커맨드에 여러개 리다이렉션이 들어올수 있다 -oristdin : 이놈은 redirection이 나오면 fd 가변경 되는데 안돌려주면 계속 그 fd 를 사용 -oristdout : 같은이유 -pipe_num : fork 를 해주기위해서 갯수가 필요함 -*/ typedef struct s_info { - int index; - int heredoc_flag; - char **heredoc_file; - int oristdin; - int oristdout; - int pipe_num; - int parent; - int pipe_index; + // 항상 기준은 파이프 한커맨드라는건 파이프 기준으로 < 히어독은 포크로 진행되기때문에 + char **heredoc_file; // 한 커맨드에 여러개 리다이렉션이 들어올수 있다 + int oristdin; // 이놈은 redirection이 나오면 fd 가변경 되는데 안돌려주면 계속 그 fd 를 사용 + int oristdout; // 같은이유 + int pipe_num; // fork 를 해주기위해서 갯수가 필요함 + int parent; + int pipe_index; } t_info; typedef struct s_data diff --git a/incs/utils.h b/incs/utils.h index 88927d0..4268ded 100644 --- a/incs/utils.h +++ b/incs/utils.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:32:09 by eunwolee #+# #+# */ -/* Updated: 2023/08/07 19:00:58 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 08:38:22 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -34,16 +34,16 @@ t_bool tree_add_left(t_leaf *parent, t_token *new_token, int leaf_type); t_bool tree_add_right(t_leaf *parent, t_token *new_token, int leaf_type); void tree_clear(t_leaf *leaf); -t_bool error_back_readline(t_data *data, char *str, int error_code, int flag); +t_bool error_back_readline(t_data *data, char *str, int error_code,int flag); void program_error_exit(char *str); void input_free(t_data *data); void data_free(t_data *data); -void init_base(int ac); - +void init_base(int ac); /*temp.c 임시 함수*/ void tree_print(t_leaf *leaf); void print_token(t_data *data); void env_array_print(t_data *data); void check_leak(void); + #endif \ No newline at end of file diff --git a/libft.a b/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..db4ac599d9b94cac192a4a5d55b6c8bba46ae0d1 GIT binary patch literal 35288 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 E0O=4FmH+?% literal 0 HcmV?d00001 diff --git a/srcs/builtin/builtin.c b/srcs/builtin/builtin.c index 939395e..8533c3b 100644 --- a/srcs/builtin/builtin.c +++ b/srcs/builtin/builtin.c @@ -3,16 +3,16 @@ /* ::: :::::::: */ /* builtin.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/21 17:42:18 by eunwolee #+# #+# */ -/* Updated: 2023/08/07 19:13:15 by eunwolee ### ########.fr */ +/* Updated: 2023/08/07 13:50:39 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -int check_bulitin_func(char *name) +int check_bulitin_func(char *name) { if (!ft_strncmp(name, "cd", 3)) return (1); @@ -30,10 +30,9 @@ int check_bulitin_func(char *name) return (7); return (0); } - -void exec_bulitin(int bulitnum, t_data *data, t_leaf *leaf) +void exec_bulitin(int bulitnum,t_data *data , t_leaf *leaf) { - if (bulitnum == 1) + if (bulitnum == 1) ft_cd(data, leaf); else if (bulitnum == 2) ft_echo(leaf); diff --git a/srcs/builtin/builtin.o b/srcs/builtin/builtin.o new file mode 100644 index 0000000000000000000000000000000000000000..4ded32f2c5172973f934cfefa69922320c6d174c GIT binary patch literal 6128 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 literal 0 HcmV?d00001 diff --git a/srcs/builtin/builtin_utils.c b/srcs/builtin/builtin_utils.c index c9eff41..99e369e 100644 --- a/srcs/builtin/builtin_utils.c +++ b/srcs/builtin/builtin_utils.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/22 13:20:41 by eunwolee #+# #+# */ -/* Updated: 2023/08/07 20:29:49 by eunwolee ### ########.fr */ +/* Updated: 2023/08/08 15:06:01 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,28 +14,28 @@ int count_args(char **args) { - int count; - - count = 0; - while (*args != NULL) - { - count++; - args++; - } - return (count); + int count; + + count = 0; + while (*args != NULL) + { + count++; + args++; + } + return (count); } -char **join_cmd(t_leaf *com_leaf) +char **join_cmd(t_leaf * com_leaf) { - int i; - char **str; - t_leaf *temp; - t_leaf *leaf; - - i = 1; - temp = com_leaf; - leaf = com_leaf; - while (temp && temp->right_child) + int i; + char **str; + t_leaf *temp; + t_leaf *leaf; + + i = 1; + temp = com_leaf; + leaf = com_leaf; + while(temp && temp->right_child) { temp = temp->right_child; i++; @@ -46,74 +46,77 @@ char **join_cmd(t_leaf *com_leaf) str[0] = leaf->token->str; i = 1; while (leaf) - { - if (leaf->right_child) - { - str[i] = leaf->right_child->token->str; - leaf = leaf->right_child; - i++; - } - else - break ; - } + { + if (leaf->right_child) + { + str[i] = leaf->right_child->token->str; + leaf = leaf->right_child; + i++; + } + else + break ; + } return (str); } -/* -환경 변수는 T_CMD로 설정 -환경 변수의 리다이렉션 타입은 0으로 설정 -key 값을 환경 변수 노드의 token의 str에 할당 -*/ -t_list *create_env_node(char *key, char *value) +t_list *create_env_node(char *key, char *value) { - t_list *new_node; - char *key_equal; + printf("\ncreate env_node start!\n"); + t_list *new_node = (t_list *)malloc(sizeof(t_list)); + char *key_equal; - new_node = (t_list *)malloc(sizeof(t_list)); - if (!new_node) - return (NULL); - new_node->pre = NULL; - new_node->next = NULL; - new_node->token = (t_token *)malloc(sizeof(t_token)); - if (!new_node->token) - { - free(new_node); - return (NULL); - } - new_node->token->type = T_CMD; - new_node->token->redirect_type = 0; - new_node->token->str = key; - key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key) + 2); - key_equal = ft_strdup(key); - key_equal[ft_strlen(key)] = '='; - key_equal[ft_strlen(key) + 1] = '\0'; - new_node->env = ft_strjoin(key_equal, value); - return (new_node); + if (!new_node) + return NULL; + + new_node->pre = NULL; + new_node->next = NULL; + new_node->token = (t_token *)malloc(sizeof(t_token)); + if (!new_node->token) + { + free(new_node); + return NULL; + } + new_node->token->type = T_CMD; // 환경 변수는 T_CMD로 설정 + new_node->token->redirect_type = 0; // 환경 변수의 리다이렉션 타입은 0으로 설정 + new_node->token->str = key; // key 값을 환경 변수 노드의 token의 str에 할당 + key_equal = (char *)ft_calloc(ft_strlen(key) + 2, sizeof(char)); + key_equal = ft_strdup(key); + key_equal[ft_strlen(key)] = '='; + key_equal[ft_strlen(key) + 1] = '\0'; + printf("\n===========keyequl=======%s\n", key_equal); + new_node->env = ft_strjoin(key_equal, value); + + return new_node; } -void add_env_back(t_data *head, char *key, char *value) +void add_env_back(t_data *head, char *key, char *value) { - if (head->envs == NULL) - head->envs = create_env_node(key, value); - else - ft_lstadd_back(&(head->envs), create_env_node(key, value)); + if (head->envs == NULL) + { + printf("\nenv dose not exit!\n"); + head->envs = create_env_node(key, value); + } + else + { + printf("\nenv exit!\n"); + ft_lstadd_back(&(head->envs), create_env_node(key, value)); + } } -void update_env(t_data *data, char *key, char *value) +void update_env(t_data *data, char *key, char *value) { - t_list *tmp; - char *key_equal; - - tmp = env_search(data, key); - if (!tmp) - add_env_back(data, key, value); - else - { - free(tmp->env); - key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key) + 2); - key_equal = ft_strdup(key); - key_equal[ft_strlen(key)] = '='; - key_equal[ft_strlen(key) + 1] = '\0'; - tmp->env = ft_strjoin(key_equal, value); - } + t_list *tmp; + char *key_equal; + tmp = env_search(data, key); + if (!tmp) + add_env_back(data, key, value); + else + { + free(tmp->env); + key_equal = (char *)ft_calloc(ft_strlen(key) + 2, sizeof(char)); + key_equal = ft_strdup(key); + key_equal[ft_strlen(key)] = '='; + key_equal[ft_strlen(key) + 1] = '\0'; + tmp->env = ft_strjoin(key_equal, value); + } } diff --git a/srcs/builtin/builtin_utils.o b/srcs/builtin/builtin_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..f89a3d0ce9b24267665cedada5b57c5ca510ee83 GIT binary patch literal 7936 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 +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:31:18 by kichan #+# #+# */ -/* Updated: 2023/08/07 20:22:25 by eunwolee ### ########.fr */ +/* Updated: 2023/08/07 14:34:30 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void ft_cd(t_data *data, t_leaf *cur_root); -static int change_directory(t_data *data, char *path); +void ft_cd(t_data *data, t_leaf *cur_root); +static int change_directory(t_data *data, char *path); -void ft_cd(t_data *data, t_leaf *cur_root) +void ft_cd(t_data *data, t_leaf *cur_root) { - char *option; - char pwd[1024]; - - option = NULL; - if (!(cur_root->left_child->right_child->right_child)) - change_directory(data, "~"); - else if (change_directory(data, \ - cur_root->left_child->right_child->right_child->token->str) != 0) - { - option = cur_root->left_child->right_child->right_child->token->str; - printf("bash: %s: No such file or directory\n", option); - data->error_code = 1; - } - else - { - getcwd(pwd, 1024); - printf("current directory : %s\n", pwd); + char *option; + char pwd[1024]; + option = NULL; + + if(!(cur_root->left_child->right_child->right_child)) + change_directory(data, "~"); + else if(change_directory(data,cur_root->left_child->right_child->right_child->token->str) != 0) + { + option = cur_root->left_child->right_child->right_child->token->str; + printf("bash: %s: No such file or directory\n", option); + data->error_code = 1; + } + else + { + getcwd(pwd, 1024); + printf("current directory : %s\n",pwd); update_env(data, "OLDPWD", env_search(data, "PWD")->env); update_env(data, "PWD", pwd); - } + } } -static int change_directory(t_data *data, char *path) +static int change_directory(t_data *data, char *path) { char *buf; int res; - char pwd[1024]; - + char pwd[1024]; + if (!ft_strncmp(path, "~", 1)) buf = ft_strdup(env_search(data, "HOME")->env + 5); else if (!ft_strncmp(path, "-", 1)) @@ -54,7 +53,7 @@ static int change_directory(t_data *data, char *path) if (!buf) exit(1); res = chdir(buf); - getcwd(pwd, 1024); - free(buf); + getcwd(pwd, 1024); + free(buf); return (res); } diff --git a/srcs/builtin/ft_cd.o b/srcs/builtin/ft_cd.o new file mode 100644 index 0000000000000000000000000000000000000000..571017fa8d1bb019d6b8787caff142b5f5c9f114 GIT binary patch literal 6552 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 literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_echo.c b/srcs/builtin/ft_echo.c index cdd3441..0930aca 100644 --- a/srcs/builtin/ft_echo.c +++ b/srcs/builtin/ft_echo.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:30:59 by kichan #+# #+# */ -/* Updated: 2023/08/07 19:51:29 by eunwolee ### ########.fr */ +/* Updated: 2023/08/08 13:26:37 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,20 +18,21 @@ static void print_line(char *line); void ft_echo(t_leaf *cur_root) { - int i; - int flag; - int blank; - char **cmd; + int i; + int flag; + int blank; + char **cmd; cmd = join_cmd(cur_root->left_child->right_child); blank = count_args(cmd); i = 1; flag = FALSE; check_flag(cmd, &i, &flag); + printf("%p\n", cmd[i]); while (cmd[i]) { print_line(cmd[i]); - if (i < blank - 1) + if(i < blank - 1) printf(" "); i++; } diff --git a/srcs/builtin/ft_echo.o b/srcs/builtin/ft_echo.o new file mode 100644 index 0000000000000000000000000000000000000000..709adf0588c08cc0087e977064414252c882eb43 GIT binary patch literal 4752 zcmb7IZ*Wvs6+iF2y_=V8^73ba5GZA>{8@%38z8o!1z89nSyG`um43j-X7`bOWV5^M zZc-@K;znnfaYjvTXY4p5*m1_hPmUutsoFB&IMiB|5BkCJLv+Sz!q~A=bP_P)@4R4gMfCM=S84UIgjk*_l&W zHmSt>ot)D((yCQ=fhQ5HaH~t=A!w(y67RM&y6mhZQLM%VDf?F7#dEo|WoF_7Rso$V z@m`YgeO&_F@+NWta7nyu@96}0sl&fm5FiI>O@z^|e?n0e05Bu%qtZ&@t#gKAegDV4fG#7nL>x*XMt`E&PQ z+Rj*PQW1xUFP`M_0NrO5_Cpas{5y2zqINGxqT~fxvws$k^Oq_{{7}r4YERKrmFtC z&D{B}F~mP|RWpBo|2o~AY^K>i1!?xr^)$;dPBqhn<5zQZcDnh(1jpt1T#feWdYZWC z`M#*n)$RHfcWkfU0Y%1G-cO+4gmQ-GUBI+H zeF-1t`$+thoHra>%cg?S37)GdVBf-AO*cm;cr46w<1}Kv6^zbyE71v-yA_(4u8+=! z!QVt*%+vgQ&7D`r=7!yU^A_fvedhh+>;a|vE4mWh?)f;Sx$)1pv;QOR9Hr#kxNRn{ zcccFHLVTX@$b)(O8rbt5o6>5&58oE;v+}+0NBBHy4n$ zjM59n-(EBtnpYc*N|PVC*Fl=m9o*IOMBvGQiY(ODLGj5z0Lka`DcwQM2n4tdS3npo z57iU-+W^<(kFL}VZrRwf3pa9=AXO^5gUI2IMPjvU^4^Or3sy+vN+9HXJ+XQ13NRO* zs4l21cwy8z4)egBd_c6|^l%RYOg~C3@iEg4`aFv$e3W>FuVD2@kUj-ceAV->2<;ja z!sqJ)`vu6SHVWrn6_bz@(%uED@?pl@!hDSnZqLRIt!#o@RP6>p)DE4JeV?&613UZ@_u0&SAcbCWq-IxI>0obW z2_r3Y#%+}&HN46_+gPHSP96be9Hb2Jk)uV~?{9IR=skSr{odnP1WrI#o8k{h-GN1b zXKIJB3Y^ndeT_-vp^ogp4A16+BU&3{!xy1K07X z{WU%ZKt3M2_w~Scp6oPaHaW zysePzr?P6~nF2MICQyi3bBf_bcLgF@}E_lhEm02u&NIvu{aG`#W^WeoXf1@^p^0v z+N|QVmsot-vWgR!V}G#d+`L4i)H~-TwJ(0VvO)Qox0L-I;QE}aLQ#}^xLCk=D3D@j z5`{&F0XCVPv)WSJioHIVD7y89GlDm&Porw)PSJvjXsnqLtNk&tF(&kwKxMiApr`?d z_k$AlUaq{T}@)z+4vt%kNPCaRqV!+%FKL1Dy%20)3{;KG++ zccKJfZCzSJO>Nwk#2 z!!Z$xi5ADZDvo(rG`KSeS1>iCz5e1GLet(RZp0j45z5nQEf)E=SfM(i)?b0+jOn@I z@|}0EYOMbN9GTbiSC{X+D)m1F#}4h`I~089H^K3MXvLe&u}gvjs^_H3cOC%8ZfOmJ z<2Os|L*O{!S~v0r!_e=z?SB3-&hjpBJZX##QjSUD@`A@R z;E?x!hp24#@}el)@1PGC3&j2ZDdo>dc}B{7YL?@fEF&=Qcjd<+*O&Q&_c!}HU$_oZ zy)5r><@xr`3YpBsccGcc4&qvi=lcqjHrx2dF}=$Vm)QL6XFAv4DRQ}c4VtI3cE;oz a$hB +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/21 19:15:04 by kichlee #+# #+# */ -/* Updated: 2023/08/07 19:46:36 by eunwolee ### ########.fr */ +/* Updated: 2023/08/07 14:49:51 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" +void ft_env(t_data *data, t_leaf *cur_root); -void ft_env(t_data *data, t_leaf *cur_root); -static char *check_keyval(t_data *data, char *str); - +char *check_keyval(t_data *data, char *str) +{ + t_list *tmp; + tmp = env_search(data, str); + if(tmp == NULL) + return (NULL); + else + return (tmp->env); +} /** * 1. cmd cnt 를 해주고 cmd가 1개 인경우는 * -> env_print 실행 @@ -30,42 +37,32 @@ static char *check_keyval(t_data *data, char *str); * export $aaa 없는 거면 $aaaa */ -void ft_env(t_data *data, t_leaf *cur_root) -{ - char **cmd; - - cmd = join_cmd(cur_root->left_child->right_child); - if (!cmd[1]) - env_print(data); - else - { - if (cmd[1][0] == '$') - { - if (ft_strlen(cmd[1]) == 1) - { - printf("env: %s: No such file or directory\n", cmd[1]); - data->error_code = 127; - } - else if (check_keyval(data, cmd[1]) == NULL) - env_print(data); - else - printf("%s", env_search(data, cmd[1])->env); - } - else - { - printf("env: %s: No such file or directory\n", cmd[1]); - data->error_code = 127; - } - } -} - -static char *check_keyval(t_data *data, char *str) +void ft_env(t_data *data, t_leaf *cur_root) { - t_list *tmp; + char **cmd; - tmp = env_search(data, str); - if (tmp == NULL) - return (NULL); - else - return (tmp->env); + cmd = join_cmd(cur_root->left_child->right_child); + + if(!cmd[1]) + env_print(data); + else + { + if(cmd[1][0] == '$') + { + if(ft_strlen(cmd[1]) == 1) + { + printf("env: %s: No such file or directory\n", cmd[1]); + data->error_code = 127; + } + else if(check_keyval(data, cmd[1]) == NULL) + env_print(data); + else + printf("%s", env_search(data, cmd[1])->env); + } + else + { + printf("env: %s: No such file or directory\n", cmd[1]); + data->error_code = 127; + } + } } diff --git a/srcs/builtin/ft_env.o b/srcs/builtin/ft_env.o new file mode 100644 index 0000000000000000000000000000000000000000..237bd074cc584adbc5102f888927836d23490bdd GIT binary patch literal 5488 zcmb_geQX@X6`$L^J)d*u^*MHogJW_H32_4PImVC>@?j@2O)d^e6GH+G-K_7{_QvPC z>+YVh1q9cjC6!RARjR6Lt5PXdgH*Lrp=#-eNctI-BEBRfq_zZ=O6HHMd{rg13H|+c zXJhAx1pOH4&3o@RZ{EC_o1ORUXW#qlg`^M>fyOQhTF)*GLR$>_vFeML?Gp6?e2{a{ zLcInuDM1j;Fg$C*3*M!)OQjSMs;mm;3_xxrUd26sTY?yEBj{ryy0e@mWiBM%F07WOKX0;p z+5Mi9{!YtXwdgX?IaambTxkq(c}Aspw_VH|M*sFXQz4Gyqhjmvdm+x^67#2yH(k6a zRsMqeSFno~r&RCvjP$on&Pq1~j$7bQUd>DVbz!pZ0;)Zl<AP6J$seohId>8|@kfst@1DPB>tpacb4oQ{n(zNn*u080 zX5l}s!GEn>18dG=J!0WHC*?Zy$2c}~t&29NZi>%{Py6v`K|CB2^aG+NWNwVU zUsuIUdqmLYi=Y|WJ_i4@^;7%WZxT=9y#4s;D-!w=(pObH_?bUwo4ouQJQot@gnRg~ zSi(8;&(bQ6Z%D6jH>7VZrQJ$yBt2votaQmq=WWNzc_n9Zfmq>+NJC_W-l(bi^u7Au z?$=XSwCW9!g}59_w@~$+jawFPNZg!Iuv>LGfX#^nE>$!d+1aS-i3G=Rwc0VV1UVzd zyiwBup9^C>EvnApm5b>F--sp@3GKvlSlfMxx}bUzry%XnG}#OmIK%aBjLa>p*ZDDW zne~XHK7z22Sw05)bJWM+lrwR?8}e_6ccyd`+z)PTi%8H%;%Rirm(XnhDXZ$Xf~Az@dKTPY@*1J<3FVbh zormjtXpf5og+v{KOSYh!#E`PFZVIeZ>DC_vw*f0R3jGVAye_VPHI&z<^lwA1=@X%RTZ@0pK7RWW{WBqcAT2~ME0=VxU>1kdo%fU9b>d zZp1F+g<}togfdM6kJvc^@`C-AZLH`SK63+xLdr+-a9puG;KEn{XvAj_>y%7PI{26_~9OQwc3ik}3xdB7XW=)6@ z3%f7njG=-#Jf|T2iIRh;^L9}RC7dvWHj0(8KnNUIj#F|B{_esXD~nvkG5n)KC}PL{ z-W~XQ{JIaH2@*-rh(%;og?laDM?1N3{MdJ{zVSjavgim4$pKIv^f-w2OhIgX+Nl#~ zW4fU3|B(S6u1SoodQGnNpV%-VUI9Xx=r`_zv8$*Oqw=pit`!BbPGlL)IV_*K7R%H| z&>~PS{pEX~|5JVIiB=LV{d~0ThBHI&bxs{ml=e2YrY7ySin1d0%$GL);Kf{1tM`!I_U@VPqfcs?r;`X` zDX0t72RaBE1sw&=fKGsZ1o|E5kDxa|e2khwt3Vq;dq9Jr3g|e9>GFFZ=0%wMd^tE8 zb0VR7ble^q-*7^F&YFG1PoRXDQ6Ni$x0|CMf>AXs1Dh_$Cch~*EVVUYC2ginb1Tl!)tKoF=c0shhIe#@%p1w>|Kso)YwX zRcu;)>i%g&t^P`6l_c(qzhho$yv1uC;Kf0mJ{9myhb4Xp9LLkocME(I6Gt5OtZ{3= zmw@9K*Zd3K=tsUu{qI1>(5C0W@%FAc0Z#iVaJ<87mVndG6X39ml_lQ-j(-v9*GN4r zIhb#ED~xGB4qb;3wyUWl!0`WTV^V)k+VE?hKW^~$Gl;& ztx8{Ar86(VUI{VN>S6Ojn +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:23:29 by kichan #+# #+# */ -/* Updated: 2023/08/07 19:41:29 by eunwolee ### ########.fr */ +/* Updated: 2023/08/07 14:36:52 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" static int is_num_str(char *str); -static void exit_not_num(t_leaf *cur_root); +static void exit_not_num(t_data *data, t_leaf *cur_root); void ft_exit(t_data *data, t_leaf *cur_root) { int status; - char **cmd; + char **cmd; int count; - - cmd = join_cmd(cur_root->left_child->right_child); - count = count_args(cmd); + + cmd = join_cmd(cur_root->left_child->right_child); + count = count_args(cmd); status = 0; if (count == 1) { @@ -38,7 +38,7 @@ void ft_exit(t_data *data, t_leaf *cur_root) exit(status); } else - exit_not_num(cur_root); + exit_not_num(data, cur_root); } else { @@ -63,10 +63,11 @@ static int is_num_str(char *str) return (1); } -static void exit_not_num(t_leaf *cur_root) +static void exit_not_num(t_data *data, t_leaf *cur_root) { + (void)data; + printf("exit\n"); - printf("bash: exit: %s: numeric argument required\n", \ - cur_root->left_child->right_child->token->str); + printf("bash: exit: %s: numeric argument required\n", cur_root->left_child->right_child->token->str); exit(255); } diff --git a/srcs/builtin/ft_exit.o b/srcs/builtin/ft_exit.o new file mode 100644 index 0000000000000000000000000000000000000000..427a53f4fc4bbf846aaca9eb32932e2068f22f40 GIT binary patch literal 5992 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 literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_export.c b/srcs/builtin/ft_export.c index 7f5e31e..ed39018 100644 --- a/srcs/builtin/ft_export.c +++ b/srcs/builtin/ft_export.c @@ -6,74 +6,75 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:25:07 by kichan #+# #+# */ -/* Updated: 2023/08/07 20:30:36 by eunwolee ### ########.fr */ +/* Updated: 2023/08/08 15:06:24 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void ft_export(t_data *data, t_leaf *cur_root); -static int check_underbar(char ch); -static int check_name(char *str); -static char **sort_bubble(char **str, int size); -static void print_export_order(t_data *data); +void ft_export(t_data *data, t_leaf *cur_root); +static int check_underbar(char ch); +static int check_name(char *str); +static char **sort_bubble(char **str, int size); +static void print_export_order(t_data *data); -void ft_export(t_data *data, t_leaf *cur_root) +void ft_export(t_data *data, t_leaf *cur_root) { - char **cmd; - char **tmp; - int arg_cnt; - int i; + char **cmd; + char **tmp; + int arg_cnt; + int i; - i = 1; - cmd = join_cmd(cur_root->left_child->right_child); - arg_cnt = count_args(cmd); - if (arg_cnt == 1) - print_export_order(data); - else - { - while (i < arg_cnt) - { - if (!ft_isalpha(cmd[1][0]) && !check_underbar(cmd[1][0]) && !check_name(cmd[i])) - { - printf("bash: export: `%s': not a valid identifier\n", cmd[i]); - data->error_code = 1; - } - else if (!ft_strchr(cmd[i], '=')) - { - ++i; - continue ; - } - else - { - tmp = ft_split(cmd[i], '='); - update_env(data, tmp[0], tmp[1]); - free(tmp); - } - ++i; - } - } + i = 1; + cmd = join_cmd(cur_root->left_child->right_child); + arg_cnt = count_args(cmd); + if (arg_cnt == 1) + print_export_order(data); + else + { + while (i < arg_cnt) + { + printf("\nft_export while loop start!\n"); + if (!ft_isalpha(cmd[1][0]) && !check_underbar(cmd[1][0]) && !check_name(cmd[i])) + { + printf("bash: export: `%s': not a valid identifier\n", cmd[i]); + data->error_code = 1; + } + else if (!ft_strchr(cmd[i], '=')) // = 가 없는 경우 + { + ++i; + continue; + } + else + { + tmp = ft_split(cmd[i], '='); + update_env(data, tmp[0], tmp[1]); + free(tmp); + } + ++i; + } + } } -int check_underbar(char ch) +int check_underbar(char ch) { - if (ch == '_') - return (1); - return (0); + if (ch == '_') + return (1); + return (0); } -int check_name(char *str) +int check_name(char *str) { - int i; + int i; - i = 0; - while (str[i] && str[i] != '=') - { - if (str[i] != '_' && ft_isalnum(str[i])) - return (0); - ++i; - } - return (1); + i = 0; + while (str[i] && str[i] != '=') + { + if (str[i] != '_' && ft_isalnum(str[i])) + return (0); + ++i; + } + return (1); } /** * @brief bash 환경변수 명명 규칙 @@ -86,70 +87,67 @@ int check_name(char *str) * */ -char **sort_bubble(char **str, int size) +char **sort_bubble(char **str, int size) { - char **res; - int sorted; - int i; - char *tmp; + char **res = (char **)ft_calloc((size + 1), sizeof(char *)); + int sorted = 0; + int i = 0; + char *tmp; + tmp = NULL; + if (!res) + program_error_exit("Memory allocation error!"); + while (str[i]) + { + res[i] = ft_strdup(str[i]); + if (!res[i]) + program_error_exit("Memory allocation error!"); + ++i; + } + res[i] = NULL; - res = (char **)ft_calloc(sizeof(char *), (size + 1)); - sorted = 0; - i = 0; - tmp = NULL; - if (!res) - program_error_exit("Memory allocation error!"); - while (str[i]) - { - res[i] = ft_strdup(str[i]); - if (!res[i]) - program_error_exit("Memory allocation error!"); - ++i; - } - res[i] = NULL; - while (!sorted) - { - sorted = 1; - i = 0; - while (res[i + 1]) - { - if (ft_strncmp(res[i], res[i + 1], ft_strlen(res[i])) > 0) - { - tmp = res[i]; - res[i] = res[i + 1]; - res[i + 1] = tmp; - sorted = 0; - } - ++i; - } - } - return (res); + while (!sorted) + { + sorted = 1; + i = 0; + while (res[i + 1]) + { + if (ft_strncmp(res[i], res[i + 1], ft_strlen(res[i])) > 0) + { + tmp = res[i]; + res[i] = res[i + 1]; + res[i + 1] = tmp; + sorted = 0; + } + ++i; + } + } + return res; } -static void print_export_order(t_data *data) +static void print_export_order(t_data *data) { - int i; - int j; - int lst_size; - char **order_set; - char **order_copy; - t_list *cur; + int i; + int lst_size; + char **order_set; + char **order_copy; + t_list *cur; - i = 0; - lst_size = ft_lstsize(data->envs); - cur = data->envs; - order_copy = (char **)ft_calloc(sizeof(char *), lst_size + 1); - while (cur) - { - order_copy[i] = ft_strdup(cur->env); - cur = cur->next; - ++i; - } - order_set = sort_bubble(order_copy, lst_size); - j = 0; - while (order_set[j]) - { - printf("%s\n", order_set[j]); - ++j; - } + i = 0; + lst_size = ft_lstsize(data->envs); + cur = data->envs; + order_copy = (char **)ft_calloc(lst_size + 1, sizeof(char *)); + while (cur) + { + order_copy[i] = ft_strdup(cur->env); + cur = cur->next; + ++i; + } + order_set = sort_bubble(order_copy, lst_size); + int j = 0; + while (order_set[j]) + { + printf("%s\n", order_set[j]); + ++j; + } } + diff --git a/srcs/builtin/ft_export.o b/srcs/builtin/ft_export.o new file mode 100644 index 0000000000000000000000000000000000000000..fa099c14fd9d23d52798a0c872329832144d0ae0 GIT binary patch literal 8416 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 +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/08/07 19:28:47 by eunwolee #+# #+# */ -/* Updated: 2023/08/07 19:29:12 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - #include "../incs/minishell.h" -void ft_pasterror(t_data *data) +void ft_pasterror(t_data *data) { - printf("bash : %d: command not found\n", data->error_code); -} + printf("bash : %d: command not found\n", data->error_code); +} \ No newline at end of file diff --git a/srcs/builtin/ft_pwd.c b/srcs/builtin/ft_pwd.c index 5ebeac9..f8d0156 100644 --- a/srcs/builtin/ft_pwd.c +++ b/srcs/builtin/ft_pwd.c @@ -3,38 +3,41 @@ /* ::: :::::::: */ /* ft_pwd.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:24:31 by kichan #+# #+# */ -/* Updated: 2023/08/07 19:28:13 by eunwolee ### ########.fr */ +/* Updated: 2023/08/07 14:29:41 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void ft_pwd(void); +void ft_pwd(t_data *data, t_leaf *cur_root); -void ft_pwd(void) +void ft_pwd(t_data *data, t_leaf *cur_root) { - char *buf; - size_t buf_size; + (void)data; + (void)cur_root; - buf = NULL; - buf_size = BUF_SIZE; - while (1) - { - buf = (char *)ft_calloc(buf_size, sizeof(char)); - if (!buf) - program_error_exit("ft_calloc fail!"); - if (getcwd(buf, buf_size) != NULL) - { - printf("%s\n", buf); - free(buf); - return ; - } - free(buf); - if (errno != ERANGE) - program_error_exit("get_cwd fail!"); - buf_size *= 2; - } + char *buf; + size_t buf_size; + + buf = NULL; + buf_size = BUF_SIZE; + while (1) + { + buf = (char *)ft_calloc(buf_size, sizeof(char)); + if (!buf) + program_error_exit("ft_calloc fail!"); + if (getcwd(buf, buf_size) != NULL) + { + printf("%s\n", buf); + free(buf); + return ; + } + free(buf); + if (errno != ERANGE) + program_error_exit("get_cwd fail!"); + buf_size *= 2; + } } diff --git a/srcs/builtin/ft_pwd.o b/srcs/builtin/ft_pwd.o new file mode 100644 index 0000000000000000000000000000000000000000..81b9fdfd3bf84f1973b8477c5d97f3a06ad16347 GIT binary patch literal 5184 zcmb_gYiu0V6}~&OvtDOB>va-hCytv$W8s)|x2ZIU*m-#2qN zaaKWswpTv)ob%mtzx$Zkd+zwRXaD+9oe&X$!YT^sVwHlR%!NFw2Igg}<3rTh*jpEb?C_0wWSS-$uw33esJ=Xw~=S3deGzVQ9aIeD91 zs@E&z`i{%aL*QdM@-ckN(AESA!?74OTo4B({(JP}@9NoELhOU)bhkoS_$pG^xAHrN z`KiizHS*@UUFuWkekl$d+Oy#Fchv=_&)17H@yW@fCv+NmuYN z)WrZ+>pGr6G#c47OHJrH+l0_s(K5dtkE32}!jr0jDdO#*o*C#Jdkz4&S1ROSr$ zX5fwFOV$h7O&8^Bp$h6UYUOEEH$x)PTKT)eYF`GRMWZ~qUxh@K2JH{fLi;1Ch)`dH zs)@!tDD^n1SfmC|IxJ({8^6~B(RTWvUs+09VC*>sTJoIKj# zCBH?l@qSJt_691QW1fO2*}8v2bt`uoDtab`x#lI*ptt`RDwTxWa+`WuAW zg|Vn&r{l)eupcJgku(OOgUKyz5;1bb9z~@eLe&OQuBp2oDyb|sRzU|tUL_1JA+WEG z8e3rp46ShyqY?WZ5dBZ6au8)@od?ySbQ%vpFXsYQ2;(ai`-Zr&zhZYKjc>yam_OHa zah^A(jPC*OV&9uuMU33~=P?w1qe8hN){6#x0M#?}x757=l~UFlzkuG)P8)?$2OaEi zZ``;7b};2lNu#BLZ^i~3fTKT#>Q^LMTlX4NowC~C<9HFU(k+Zru-~EG6BYVl7;gcH zEzpm_d>f|Lt8)Q=ff=2XpjrPu!$tBmpmVa!7SY8L2|FuxBo zx>5ZZk+|q#;!b69R(>?K-F7{vkWVe`Z0~4ao@x!ywxyjN%i%9u)((8>HNtZrLOk!{b2be}WqTJFyDdV9N_D->-vy{<4mZsoImNJ4{!Le5JMtl#3LZ?Q68 z7#M2zvfIQoGkvRv!P7SKA3|+Az1_|9Qan)Za_o1Sm^ zB~LhcU)bg_dWllrb4K%aHbrb>Pv5`>G1!0W29X)FToKMxWG&wkz8NSlR8GEF@`Yd6 zX6HRL;S9jn+32^q0iOvn$HSadKV_MFNK6|N2ek_~{YC^~_d zKGJ^Ha&ezPTsCmAFUyy~8p)!qr@z1F4s&4Bog2)-JGO2xO_3STnnlYW6QJai3jk}F zdyIRhZwAT>6>cf^gc!52`a;GW$yuWp9Vcgtf{R&aoxC&(*kMlE%$LSPBP6h0x8Rz5 z)FM-I&0w2`OCthedd>q_B&z94k^Y58oh#th-aF9Kiyv8VX~t_^x!wq3k>K`0jdNq= z_B{^`toW!4Hd75V3UQ_$7N!FFyXc@)c!{x8u7&i;dmiP}#PHTM55kKG3-bqgRG}dm z>H!~du7P(ZW-5-saha?eAV{b||3+xuy}tV5wwBiquKaOHS(0>X?3U-W^lyGrzUqTN zKQgEJ^x@7gzxhsm^Ap!(Tm1b_%k_sx&Yqe-mOPf3-JIO%v~*1F(_^o%^$S~PHy=Mc z+LB2PRH=uY^HGA_7i6<6V-I{+m>kE_rSmOu16l zPFwEy|IFd-^!^_l=^zE*3GwV~ALD|NU`iQ3v@c{|Y-|__9GiQ=#!iNZKX8202S=*O z&TvFj#XYyO)oMdTtDO;FrzQ4i+7@kLpVkM3o0Y%f|iBjjF$sEekwnL($`s1rZeY8eZ2773>ibw@zdiZG0&y3Z?7JWx*L zFa&30+bhsmM&C=JUiBn&4e%$RaVEC$V~lzqG|tAhz0g=m-(;v)-3N`2jJB=NgZGp#uCaG_sxfAOWLN7SqRoWeK>_=LZB!2Ez7} zfrksR^vlw}hdu_ZeAlmqUq6liTKLmkv9ikVukx=5ee7dcHdnQGR{7+f&X1SGEsVO> zxEbbS-mipt={+lFw)1XdnqdsP;5soP%n{eNQ3n@6bh3SXwFZ7B_@os%f4sO%gx%X= Qz+GB#VZiMOXD!5k06TSL>i_@% literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_unset.c b/srcs/builtin/ft_unset.c index 1936c4d..d960005 100644 --- a/srcs/builtin/ft_unset.c +++ b/srcs/builtin/ft_unset.c @@ -3,29 +3,32 @@ /* ::: :::::::: */ /* ft_unset.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 22:51:02 by kichan #+# #+# */ -/* Updated: 2023/08/07 19:22:32 by eunwolee ### ########.fr */ +/* Updated: 2023/08/07 15:08:19 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void ft_unset(t_data *data, t_leaf *cur_root); +void ft_unset(t_data *data, t_leaf *cur_root); -void ft_unset(t_data *data, t_leaf *cur_root) +void ft_unset(t_data *data, t_leaf *cur_root) { - char **cmd; - int arg_cnt; - int i; + char **cmd; + int arg_cnt; + int i; + + cmd = join_cmd(cur_root->left_child->right_child); + arg_cnt = count_args(cmd); + i = 1; - cmd = join_cmd(cur_root->left_child->right_child); - arg_cnt = count_args(cmd); - i = 1; - while (i < arg_cnt) - { - env_remove(data, cmd[i]); - ++i; - } + while (i < arg_cnt) + { + env_remove(data, cmd[i]); + ++i; + } } + + diff --git a/srcs/builtin/ft_unset.o b/srcs/builtin/ft_unset.o new file mode 100644 index 0000000000000000000000000000000000000000..6ca2c2425741c3f9c2d0d464fbd5a7008d2d11d2 GIT binary patch literal 4520 zcmb_fYitzP6}~&WWA9_UUSk6WUbL#wjF0U<0OLpt!aPB&8k3yJLIe_0D!? z*4Ro!QAjH)MNLpswN+nHnpUN1tEvxC|ESsusi8EF(nnOKFGor%M^!{rH42at`h7EZ zY~uzseO&Fi=bZ1Jd+xbs#^;Qmzw+u^nh+6z!6^osjbh4zFjjy@so!8ciOn2wZo~-n zYRIG{K@45@%t5ETrczRvXK(Az9=bnIlg0ji zCjG6E`!Bphe|~&rBfr?+tBd@-{to?lQ{}h4Z=KB7Pvosu$oFvmy8i1kr|Np%9!FfB zUMU^5N(EityJKzj zW3y+zv~n~eHWGj0gnnrjdtQkipN>pfm*|JKaaGiD@87OnTYmL{ZKrYmsUJu67b10$ zThsMwH2u(n>5CspXO=gm>mp04aKTOyP4BMXy5g?X-6;hriLL>#C6z)ZVzJ2X`e-_p z;+ha@3szPk;Z?10x1_48F`DMeZ7a5-oK>qrk-+YH6t2$e)I_Zynp_4J>_V>VBlFI+ z8b1#D+k~@fA~;%z^v$r}2)&k3rBYiU3J(t>couR0v1)=(xfgT{#PRWf`7BS!i(4vjEgsYy|9SP)w;)e+MqqmoP;{^f|EV7;+R0I*N?{1#`5nS~)d&(U;C+ zu2vq+d;)JuwC+y`D6Tvj|1`Dw7XvN!Icg0&A8X>v)Rs~ciRUpTU&QoxkWxs!3D%|D zrzzOE9i$u88O?yq6BNBs8w2Or%8{)0UGP4fp%^XNI`FqB54CA0 zz(NleLaVrmB|>r!`uWt25qH@JWNTA}R><=bK!Pxn2v#6^Na;$=+9i1bQ(7hsyQMSB7KJYc0uXqO@Xm2!7XB!2^eUaM9oXCTf%RCgtL0mc|xRzorU z2F*q7KLEw66H&au$uy=`!iQ3KfVC+5w9VlD)%%3DEtKCM)AmF5Bk#xi6XF9I%?#zi z2F(uT1C4%~eLwfC(k4UvU{;83cFJtNXp}~>6Q<)@b}8H5+1l2+A=~1k>)SiqHbC#_ zXa(NBPPk6q%?(woqGy$I!|V~R>9yuXZm%`u7|v8~hdE&u?Xv0Qw%g<5MyaqDb$`&d zi*9aU#~wGg&&cl|IMnJE#>4_KcfiH*ITI}hrly&jaPxM-)Q{TEn2Tm)=Jr`7%N;d~ zMKPkAla{Bup5awoVU;{#>OqX1;gd4E3V~P^L$NW_+2HcgLO;xtw&v zaf~V9*fyN#Mbj9jZ?dxCn25A!BEbBpRV)a{8W{~`ngkwkT?FI>mn>U2(bIkA1`Pe$ zM+$IUwhBU$?xEKf3* zmwa|UU<@(K_}KGwpSc0Ur-3;sMorw_&g;WPV`N^jil(p~L|w2-Qm~O`2CbJWlLY}m+_gBs`zgKdfNMTLsy#?|0_HabR~01?Ia zli*qSUJ+=JVksz}{nUdO{#e`e)Ve~mQ*Aa^J-f~Ofcwbrz1TgO*H?{Z4u0?9H@5$B zNz=<$Mw4e9{(fLQR^ZCH#?ft~`L0kPu!0rVOuisUZ?vHP$pu>uW&Dxi}f_QP+1 z*njX7d|+$9G1veJu_y9+7%b9+SiYC}h~F&@Iq7Iysn?joV*q_2^AU+n0#VuO~x*y{7hik@Ksti;owSuhvms7&X3<_X0WWE@*;yAp%>h;1!yak;|Y01LuFkv8YJE zHW<;mh}w{hcdIv5^{VgcRa3ocqE}s6wMVT5P}8ecSDjE3d({lIhF*0EmLF0Zs~-04 zZ|PNUq7keUXVl1kMZ;qW{EmX*;PtnIBbfDBaFm_(HaJYGwt^#=^jfKd`FI~6DAu<@ zPfK51+e{rbEBybDOSKEuS3+N)3h5VUFj(rau7ocZ%kn~dp@*3i`t>ay-Jw$Q&__pH cp|hhp=D0m!3jKZ?t&Pp1=#7`#{kcv26C`}@@&Et; literal 0 HcmV?d00001 diff --git a/srcs/execute/checkbulitin.o b/srcs/execute/checkbulitin.o new file mode 100644 index 0000000000000000000000000000000000000000..f96f73dec3f8b36f4696da4583181580b19ddb0b GIT binary patch literal 4696 zcmb_fe{2-T6`tF>J)duH&u1{k#5i0U0wxJQW86Z45*skZ2NY_X;G{`5=exCU1$^B~B2{FkExS^=;oD85kXz_XFzBWooW^$N-QD{PzB8}3g%dC!pMz{+2%C) zx9#sA+8zvxfajbxmaC$Tb4vrGjxSfOmQ16Zn=&2DsONi%hmAJsEAd@T8uRM9e3h|>@|;r7 z_jk#+T(1A%WAb_NRde}zzQr-0DBxR$kFKs=H$Hc^dfokQlzcDARa^fpU%oPhxLl)F ze%LA(3}e@}Yo0InmzH3x$$zh-c)#-1*Tv_5eKMG8?3_|a*$5}-}Sh#=av`2$>)COwDH1~N47kR{T%yM*!XRz zIdofcp&Cved^Gu&FDFxr+mp?q1;{8$uLvgx7v8mGgSJsqaKz!|05)qHPBsz=4K55P zHH~99&rXai#S4t`B{p<{b3wGPEu7@=$|WSh%Ta|Qp}~bhH1=NO#+w9Dtrf~&Cq!al zX#N?x?uA3f^>}15gb0Lax&`ys!A~(bP1_7p?7@Eh?195WO9*~EpMxBvi}qDtdHoyc zl~d?G3kgLU`GI&X{4$gpiA+Gf0*NTi>RTL9-$54=;j>T;k*G`r!b_>4sXqY?he;Mw zo=jcxyc6gfl_wM5#8((rIVR%YL#I8D?g~UHBqE5lPq|mupl^mK_X)if`gYp)$8(qOo&(j|3){jE-sY-smh~J7y;bwHvP&@;r zZ9vxnQF;=~q0-8o`W?^?p)R3wj%R0LdN1r5;@v4d2kiyArcK1j5&sf8?Fc%0%BsW` zsFbo?&q8~TUm^58fxR-K-w)ek=!}Utjrfb`wBMkcg(#a62cWu@Ui}H^c5dcVLjPJ| zuZ!v53hebM{RC|9DW7hek8?v>{~_=+*KX_-adKwh`S+7*KX5&Ullz z>90Y%T(n*2OQ5~!J7W4LV0$4Cru5qbJc|REg`*utcaB6`66c{3%4Yp7=o5gIKA|hn zzoy+E5!!Pw{(!;gGVSLu--W5}(71t1Fe9x=noVapU8Gc~SVR0xDD7Qz>j;k~HbZqP zyY&HRZ|i%7zB8~tAJIo)dyx;}`w8&jlwJ<(krsU>u=llj$L#Uky;OfZ!1t$x=x1$B z=S#WrM0(n^9jj7Kuj%dT?pmAf^w8C7db`)c@9F6RzGjth?7WjPXUu%fH8c65nV%f1 zl`PjPcjZN9mo;YR?AgpVbJ{Fbs-~UUTA7;4l?%I2Ek-Jpl9L(Uw$sV%&gJ(Ek9IkQ zNpY2#+2psiv8kcJh^iX*^u9Cmob9Gqc+&TTam|mBfT$&RDMDxH-4x2&?Q0 z(-^}lQ7b#vMAggqC>v$hA;cmZSmLqq-d7{i124j3c%>>V%+k)J9U)tp-tpyUhmfZQ058uvuk z@RZ{#+$zi&Q8cmpO5PYRsL0;^e03L+76uT)H0i4hWMzaaIR5W^VcwI%okeF}8Z% zkI?>;Ijl{KAuS|BW2IqyVO&U%5Il^}V(sFUo;O~iNeG{Xn~gxt6N@1E^fw-T{mrKK zXI2$D>;|(V`sx<<3(nEsxskh5?=3B+_W$JYKenD-(Ei8E6CLjyZ*Bj|FDE-bd1m}_ z_kkl?Wp7J+YS!wgDYvCw{raXKoy)hhyGN~#OJ{l?JEdk`Ng#-2kRHeYWE3(9c?@z4 z@(kps5a!a~L;ea0odmv+w8srG%Daa2XtULG=KCmQ4vUPZDDKlo0bIA*M}9&qPd!xmnUPMH6DqmJ6AF2{9{6h{=@@^Q~OS zv`dJ2Sk7X>AjBFXXR(wJVr`MLcz+xxvHzk z4I`n~@~&^!l|H;Pe?CU>`=7IMo_@*&&VNrLVO$t_u563cbo@PaMKr74nN`k(R8Q_Qqoe)dkVRY8$YQtQyX$i!h@xngtd+>`ldtHh4E<#;sYk zF{`#>#!`5Vm}YlYS>OHn^Jq zi(zf_E@&jRk literal 0 HcmV?d00001 diff --git a/srcs/execute/execve.c b/srcs/execute/execve.c index 3b1c8cc..5f36470 100644 --- a/srcs/execute/execve.c +++ b/srcs/execute/execve.c @@ -23,7 +23,7 @@ void execute(t_data *data) { count_pipe(data); heredoc_flag(data->root,data); //heredoc 이 있는 지판별해준다 - data->info->heredoc_file= (char **)ft_calloc(data->info->heredoc_flag+1,sizeof(char *)); + data->info->heredoc_file= (char **)ft_calloc(data->info->heredoc_flag+1, sizeof(char *)); if (!data->info->heredoc_file) // 파이프 기준으로 <info->pipe_num && !data->info->heredoc_flag)//단일 커맨들일때 히어독도 x diff --git a/srcs/execute/execve.o b/srcs/execute/execve.o new file mode 100644 index 0000000000000000000000000000000000000000..83c3ec0f95ce25dbfae0bd4806810be19ffd4ca1 GIT binary patch literal 7968 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 MxlTR%FxBFJ05j^NB>(^b literal 0 HcmV?d00001 diff --git a/srcs/execute/freepipe.c b/srcs/execute/freepipe.c index 25a0b6f..45888a9 100644 --- a/srcs/execute/freepipe.c +++ b/srcs/execute/freepipe.c @@ -16,16 +16,25 @@ void get_input(t_data *data) { + t_pipe *pipe; + t_info *info; + data->input = readline("minishell$ "); if (!data->input) { printf("exit\n"); + free(data->input); + free(data); exit(0); } add_history(data->input); lexer(data); syntax(data); parser(data); + pipe_init(&pipe); + info_init(&info); + data->pipe= pipe; + data->info= info; } void close_pipe(int i, t_pipe *base,t_data *data) diff --git a/srcs/execute/freepipe.o b/srcs/execute/freepipe.o new file mode 100644 index 0000000000000000000000000000000000000000..2faa72377a07d63169558f82635ce8576f5fdea8 GIT binary patch literal 5984 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 literal 0 HcmV?d00001 diff --git a/srcs/execute/pipe.c b/srcs/execute/pipe.c index 5748cf9..4dd15e4 100644 --- a/srcs/execute/pipe.c +++ b/srcs/execute/pipe.c @@ -29,7 +29,6 @@ void wait_child_processes(t_data *data) while (i < data->info->pipe_num + 1) { waitpid(-1, &status, 0); - i++; } if (WIFSIGNALED(status)) // signal 에 의해 종료가 되었는지 아닌지 확인 @@ -37,4 +36,5 @@ void wait_child_processes(t_data *data) data->error_code = WTERMSIG(status); // 시그널로 종료시 시그널 번호를 저장 예 ctrl +c경우 2 번 ft_putendl_fd("", STDERR_FILENO); // 빈문자열 출력을 위한 ctrl+c 이런거 눌렀을때 바로 새줄 } + } diff --git a/srcs/execute/pipe.o b/srcs/execute/pipe.o new file mode 100644 index 0000000000000000000000000000000000000000..ced5409083b4fb8f98c8279bd65839d8afa6c55b GIT binary patch literal 5968 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 literal 0 HcmV?d00001 diff --git a/srcs/execute/pipeutils.c b/srcs/execute/pipeutils.c index 7df3b39..9c5ab73 100644 --- a/srcs/execute/pipeutils.c +++ b/srcs/execute/pipeutils.c @@ -10,7 +10,7 @@ void count_pipe(t_data*data) } if(data->info->pipe_num!=0) data->info->pipe_num--; // 파이프가 1나일때 2개가됨 - data->pipe->com = (t_pid *)ft_calloc(data->info->pipe_num+1,sizeof(t_pid));// 하나를 여유롭게 생성하는이유는 herdoc 때문에 하나를 여유롭게생성 + data->pipe->com = (t_pid *)ft_calloc(data->info->pipe_num+1, sizeof(t_pid));// 하나를 여유롭게 생성하는이유는 herdoc 때문에 하나를 여유롭게생성 if(!data->pipe->com) program_error_exit("bash"); } diff --git a/srcs/execute/pipeutils.o b/srcs/execute/pipeutils.o new file mode 100644 index 0000000000000000000000000000000000000000..3be8a48e6d1b12441da7e33bc6bf9f28eed540a2 GIT binary patch literal 6064 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 literal 0 HcmV?d00001 diff --git a/srcs/execute/setpath.o b/srcs/execute/setpath.o new file mode 100644 index 0000000000000000000000000000000000000000..479b3b9909f779374862a78595e522b399330395 GIT binary patch literal 7336 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 +#+ +:+ +#+ */ +/* By: donghong < donghong@student.42seoul.kr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:52 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 11:27:12 by eunwolee ### ########.fr */ +/* Updated: 2023/08/03 16:16:49 by donghong ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,16 +18,10 @@ void env_init(t_data *data, char **envp); //필요하신 초기화 내용 여기 넣어주시면 됩니당 void init(t_data **data, char **envp) { - t_pipe *pipe; - t_info *info; *data = (t_data *)ft_calloc(1, sizeof(t_data)); if (!*data) program_error_exit("bash"); - pipe_init(&pipe); - info_init(&info); - (*data)->pipe = pipe; - (*data)->info = info; env_init(*data, envp); } @@ -49,19 +43,22 @@ void env_init(t_data *data, char **envp) } } -void pipe_init(t_pipe **pipe) + +void pipe_init(t_pipe **pipe) { - *pipe = (t_pipe *)ft_calloc(sizeof(t_pipe)); + *pipe = (t_pipe *)malloc(sizeof(t_pipe)); if (!*pipe) program_error_exit("bash"); (*pipe)->cmd_path = NULL; (*pipe)->command = NULL; (*pipe)->cmd_abs = NULL; + } + void info_init(t_info **info) { - *info = (t_info *)ft_calloc(1, sizeof(t_info)); + *info = (t_info *)malloc(sizeof(t_info)); if (!*info) program_error_exit("bash"); (*info)->index = 0; @@ -71,5 +68,5 @@ void info_init(t_info **info) (*info)->oristdout = dup(STDOUT_FILENO); (*info)->pipe_num = 0; (*info)->pipe_index = 0; - (*info)->parent = 0; + (*info)->parent =0; } diff --git a/srcs/init/init.o b/srcs/init/init.o new file mode 100644 index 0000000000000000000000000000000000000000..b0b527eb8de173d5df0fcde4a7eb9ce00bb942e8 GIT binary patch literal 6144 zcmbtY4Qw366`tF>-Mh`%=X2~h4zZg<3gA@O=QyE+{17{T*p3r|6M`YMoAceq-sXIF zx?LxZlBTW=g-S?iL{KY%fVNa6ZG~DyMMFy))K)|VRG>d<=?|b%2x<_mplSk2)9;&| zjqQ_F3XJZ}`<*v$W@qQUykOjP$XZ=AzKDa`xcpkd+x6EZh4S?}nSY`ZrzFe@+c}R!M$a;Sb^&E(3o~VNa1m zD*g4SJ$*;vuW_@`Vhutl*R%S=qNQD>ztw8|chsn3!NyB#*;V+HUjvy}28ZGR13OUQ_+b}h?5D!-S+_(~+trdcgdIg>@jy79G zeE#{%I|ZA{%Jrtyem$#3jm@Q%5CiZhU)~CT9nkT;@pT9$><7f*l<&qkzPh{TBUWG@ zmu&zx#uq>gG~vUx3zOo7^9Mu6 pUx|uyuZG3Blo)?86dQjLzK)%acAi6U=ZIq= zg81j@=mVFW65?vaTo0Qs1CG*`yl>wLKNttu`GZ}@F~`x9Ve5Ane#W`9%l%YmLd=_HzhD}D=`^}o zoS43b!HhdBLbajG5_NhwF>xsI_U9AH`3n=Zp}DwLwdEq5=&4(~U}bz&T*G@1UJSvt z@i>luBogYW3n$`n>V(i+plQM_VAP17IwZ3Opm4%h#_B>-mS(kdO3exkoD+f{yik|I z{%Y`5oFX2-7G!lBBAaV;Hu`?9Sg;o9HK7Yl2{^81`3zRPja$RNFmNoeOyA-vWMvqFaT@L;nuxPshyb5R{}plQjE49|mYvqq!4!lJxGBc|Y*Gq%$pM zJp%kXgB)x(3&4z1%dQZ{84zK5GC~F?h=wuZ0<|4617u3O(yRtvO-F6QtPSXN%xnPN zMR|MDTn{V*UD_xN`Y<-3i{5~)37{>BEe1+zi_I&6<@A>eb7??d5i!?-mL6JS!XRPX z2}$&Bbh`lB>ewJqySChPfM28NQ^G6-^wlx*U_h@(ns0EqA*+X3|uK+>Vx%6$qYz^oeBIZiaGQxhGpFqAn zX>JSX9rfld0exem+-B)#XOo!?HZ>di#dWZhA{5d;Ru-HaE9dOe51bx|la@qqc#mZKwCS*<#MN z_7}^0T~s}GdJATAhwXe`3|aP=<5{kk@kU+Y6g**DgBT@73$8O%uyZNOHg)xF-zawU z-?&kDRxaaZgzF=xP#X0_b~sZOUU9EoaG}pTt_QtDrLrvw{B)37D1GcI%z93g?VMA# zQHx2AC9+-EM{wC$nQ}REK$MF`II;3}W)FQ6l`>@;vE}VOo|PST@;Om!EU(8y2@|mG2#>v~F zSVq)2r=W-;wwXa&h0zh8@EzFYaP`ICv`iMfdiu zZXR%cW)Z3YY?Ou6hYV>R>kDYiWUqV2ir3u!)k6=j-Z%M$YhU{{H12$LrZea<*40kJh#r< z<=*utFS0ZFucqPTO^@C7@AWUvUHIC2L(P9X*0Au4Pws8L>eQb1+Q;vV7q`_fOdfEW zN43k6&)vQH(O+ll7kYO&&1X+7KYT(@KU0MuP=<*Pz(&9TU@w688?(?ufX4y91pFEB z4?q}u*8o@oSPi%yFbEh0+zH@)`3QjbAk4)Xz+wOzD+Y>KL~wa%%xV-d-{HH1jpYSJ zEOZYsJqVkmE7&LPmn;Wg9Vs2}{3)>q2_{ zoY*6J*yz<`y~bue3c`3o7hz`t!f@k+UNx!5A)MQ*YrT31CgMpwGAA~sYnycwibSt& zK0%#nyeo&tq#OF!HK9k0@Z}SF?$xU>8?34!i}mW!3D^!u+a(iv-K4$% z@hFQaNdUf#=hPq~!P`AoZm%+iL)YkW6+Rc)zn?Z(*zW?E7opiJIqMKSq zD5HR&)zP!&<`fWx9*95akF?o)WH!c7XVg&pec#O3}t zW4FSc3a1nXl74#pIE{P2CqM`7dh*z#;Q!ep75taTW8uO7XDRSC7$4k6pHzHszpPX| zkZf0>r+sigWx!9HUS_4~{GJLub<_1bEBH>I*MbXkUxgmeWX5=5p|;Gs9*ZTbR4xvc zGb5H?a)n% VX_xiMyf;$n5bT%Az8!(0{TGG~6y5*; literal 0 HcmV?d00001 diff --git a/srcs/lexer/expand.c b/srcs/lexer/expand.c index a376e00..2ca04d1 100644 --- a/srcs/lexer/expand.c +++ b/srcs/lexer/expand.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:20:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 11:27:39 by eunwolee ### ########.fr */ +/* Updated: 2023/08/08 16:25:12 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,7 +23,7 @@ t_bool expand(t_data *data, t_token *token, int *i, t_bool quote) char *name; *i += 1; - name = NULL; + name = ft_strdup(""); if (check_heredoc(data, token, i) == TRUE) return (TRUE); if (check_blank(data, token, i, quote) == TRUE) @@ -88,6 +88,7 @@ static t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote) { if (data->input[*i] == '\"') { + if (quote == TRUE) { token->str = ft_strncat(token->str, "$", 1); @@ -122,25 +123,31 @@ static void replace(t_data *data, t_token *token, char *name) int j; t_list *tmp; + printf("name_j: %p, name_j: %s\n", name, name); tmp = env_search(data, name); - if (!tmp) - { - token->str = ft_strncat(token->str, "$", 1); - if (!token->str) - program_error_exit("bash"); - token->str = ft_strncat(token->str, name, ft_strlen(name)); - if (!token->str) - program_error_exit("bash"); - } - else - { + // if (!tmp) + // { + // token->str = ft_strncat(token->str, "$", 1); + // if (!token->str) + // program_error_exit("bash"); + // token->str = ft_strncat(token->str, name, ft_strlen(name)); + // if (!token->str) + // program_error_exit("bash"); + // } + // else + // { j = 0; while (tmp->env[j] != '=') j++; + printf("token->str_ptr: %p, token->str: %s\n", token->str, token->str); + printf("name_j: %p, name_j: %s\n", name, name); token->str = ft_strncat(token->str, \ &tmp->env[j + 1], ft_strlen(&tmp->env[j + 1])); + printf("token->str_ptr: %p, token->str: %s\n", token->str, token->str); if (!token->str) program_error_exit("bash"); - } + // } + printf("name_ptr: %p, name: %s\n", name, name); free(name); + printf("token_ptr: %p", token); } diff --git a/srcs/lexer/expand.o b/srcs/lexer/expand.o new file mode 100644 index 0000000000000000000000000000000000000000..d61184845af6ebcd0f7ef3621f1032ccc29c1bc0 GIT binary patch literal 9864 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 TLEmVTKtL|HNgyC;8;J7%TMBSP literal 0 HcmV?d00001 diff --git a/srcs/lexer/lexer.c b/srcs/lexer/lexer.c index a21a25c..a30c911 100644 --- a/srcs/lexer/lexer.c +++ b/srcs/lexer/lexer.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 16:24:37 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 16:14:38 by eunwolee ### ########.fr */ +/* Updated: 2023/08/08 15:10:45 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/lexer/lexer.o b/srcs/lexer/lexer.o new file mode 100644 index 0000000000000000000000000000000000000000..10fe78837af43a3c9ffb7d5f457366846d8f931c GIT binary patch literal 6096 zcmb_ge{3AZ6`tL@xjWz8p3gtxIC0!uLJYQueYWF(Ljti$4DrS(!3iXRw%hgH=Df}M z?z+1UF`=z<4m1@=)PkyipbCUgmHY!$Rke^7MCcENwo#QLA+>@wp{)pilon_Up@sB& zyR-KBk`!7xx;O95H#6V7nc1B;d%t@B&mYDalNb_ZK}bJkDG1UM$kPGWykw@=dGK!P zgXEXPut{PBB59gq9B@3_EAJfIy>q_oTO(pD;*$YBzlgC~stmGeQhw63jO|!vAtwM$ zTgd10a8dsRIa85{yE187))<@2Y5LfhW$Y(^H}4u8y=kt=t-`P03*=Z8AK(R)KA&0G zTcj@4eBENbzAbo>fP91F+|mTz2`4) z77XfAJ>Pb*{_Di^G7UaTG1k4WsTbKysqo@DG= zjM0cXa$%O*P&vY;>yK_){xsP~XSDYs(!lv+o3y7pIIBAbJaVGreqigs^Tl(EA6qDf;_s&9K(hdn`#c_xtNR-ww|@ zxaRlgKR@&ItXE3qvo@yN<4mfP+7b;skSO1i_{&!k$;B;+I;kG7r`*Q^iQ$HgORkHp zkI8tq1FHbs5R2iJ4hE&+hCm_~qdL6Q?WkFXlP%N*y86&Sb09%AS1s9yI3MOr7Qk== zW0AfE#hU6aj74i1HHIR16vcIohUmxe2?^dHoUcIpYf(;;qp{cxFxlfc z*SwI3rxz*C=mZ;rOi>Z(u&3OdqPzSZm^VYDV2wBwG56;H@L(_p^#UX)*YTI38Gi+t z!~!oug@bgex#qG-PTxulYX{UPC6vr>Q#zz6yBDdqdH9kTUyWi|9lTBNaVrX2C@Ya_}-zTKZx9)<0WvaWgF&+AgkG2kZkUEj{4#2x!Imf|U(@}lSz zl@BBPA(gkrUw}%9hJ_d~VI+mwya?$oz4WyrU04JxCsUC&4H{P_5eq%!W?I~x_tw{L59 zm)YgHeVKC5$9JVzl=eJIHEfXXjHygsFXU4D4a+u*g;Y;pS9jN%RJ)6I_VjhHLAkfL z3wTclv#pGs&Km~|%gehmEIne5S-Lfq-fZkQ^2HLWHWeo(^g?z7m!F-*V%|>g*u2$F zZ__ik?AYC9XZNuRGku$lk<$k5U1(|;>HT)5m^HM!iq<|GH!>r=%`BMqxRKAZoMs#_ z9nE%hXVPY7!C{6rhF)y4V4JyukxdbH)8NRCA+~e$wjt(v$};0dW}lWB*DaRS9i2Iv zt87o1h0>&hHmG%q`;3B(`n+j7%=T2tGFX8=cHCN2dfFD6ZlKIEvZiI=_UM-AQg0OY zlh~ALx@GB8%qkW^qU8;JFL9G9>6QVH^Tu8W{+anKv&`JMZ&MSG5z~f4jyKtoi4h&m zRko*ad3BL2h)ZUc3DF!}JhQrm8!f?Z5i7K&7uMb^>IO$g2lr?@hVK~CcJA3eq-iWO zk=07NGtNLsd*}lC7_BzGd>qYHwx@7UHV&|H1G6t?w7q#fH(xOG1}j?dI%^h$QN%Kn z(^_G2!ZSPq!?KE&Mw`w|wq?iQ7CfKs0*99fliceoV;7L{K(jOVeY4@{hW#@? z{mE}@>9$VapION35NiJbfs8>WAx9vOK%Rt9Ou~;*fLaBOL_v`t(lk9JI=Bg+4OHL3)90AdF zhoBrpa8Z;eh=R7@qWDh`T?j-+irxfKKo_kjt`kIoUbI3AsG64FKW zYq4NK=8h&w|4b-MLPA3t%PeHx_ht=b}5xtj!aiz+GWjHc}VO0*V18^L(if!d}0Gd_4 zSmiO5x2XII(3XjFjmmpf8sZvMQRl-S-Fao1x0U(TZqFW-x2b%s+c}EPv`UwBONLvQ za0FvUQA7SET^9qGbLd{a96-CuyHwt%^7Sge&b1rLoMVz$W)m3zFh z>>orFIxE|gU0KF|BMZtmSC#Qj(j8FKvsv% +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 07:46:30 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 11:29:16 by eunwolee ### ########.fr */ +/* Updated: 2023/07/16 20:16:29 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,18 +15,18 @@ void single_quote(char *input, t_token *token, int *i); void double_quote(char *input, t_token *token, int *i, t_data *data); static t_bool find_next_quote(char *input, t_token *token, int i, char quote); -static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next); -static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next); +static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next_quote); +static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next_quote); void single_quote(char *input, t_token *token, int *i) { - t_bool next; + t_bool next_quote; *i += 1; - next = find_next_quote(input, token, *i, '\''); + next_quote = find_next_quote(input, token, *i, '\''); while (input[*i] != '\'' && input[*i] != '\0') { - if (s_check_char(input, token, i, next) == TRUE) + if (s_check_char(input, token, i, next_quote) == TRUE) return ; *i += 1; } @@ -36,19 +36,19 @@ void single_quote(char *input, t_token *token, int *i) void double_quote(char *input, t_token *token, int *i, t_data *data) { - t_bool next; + t_bool next_quote; *i += 1; - next = find_next_quote(input, token, *i, '\"'); + next_quote = find_next_quote(input, token, *i, '\"'); while (input[*i] != '\"' && input[*i] != '\0') { if (input[*i] == '$') { - if (input[*i + 1] != '\'' && next == TRUE) + if (input[*i + 1] != '\'' && next_quote == TRUE) if (expand(data, token, i, TRUE) == TRUE) return ; } - if (d_check_char(input, token, i, next) == TRUE) + if (d_check_char(input, token, i, next_quote) == TRUE) return ; *i += 1; } @@ -59,14 +59,12 @@ void double_quote(char *input, t_token *token, int *i, t_data *data) static t_bool find_next_quote(char *input, t_token *token, int i, char quote) { if (quote == '\"') - { while (input[i] != quote && input[i] != '\0') { if (input[i] == '\\' && input[i + 1] == quote) i++; i++; } - } else while (input[i] != quote && input[i] != '\0') i++; @@ -80,9 +78,9 @@ static t_bool find_next_quote(char *input, t_token *token, int i, char quote) return (TRUE); } -static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next) +static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next_quote) { - if (next == FALSE \ + if (next_quote == FALSE \ && (input[*i] != ' ' || input[*i] != '\t')) { *i -= 1; @@ -95,9 +93,9 @@ static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next) return (FALSE); } -static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next) +static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next_quote) { - if (next == FALSE \ + if (next_quote == FALSE \ && (input[*i] != ' ' || input[*i] != '\t')) { *i -= 1; @@ -113,4 +111,4 @@ static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next) if (!token->str) program_error_exit("bash"); return (FALSE); -} +} \ No newline at end of file diff --git a/srcs/lexer/quote.o b/srcs/lexer/quote.o new file mode 100644 index 0000000000000000000000000000000000000000..87259a9cd5ae442c26aac395f99b37d636798174 GIT binary patch literal 8184 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:26:13 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 09:06:12 by eunwolee ### ########.fr */ +/* Updated: 2023/08/08 15:16:43 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/lexer/tokenizer.o b/srcs/lexer/tokenizer.o new file mode 100644 index 0000000000000000000000000000000000000000..978aa7c578cccc10264abdf91f92c2d6e47b553b GIT binary patch literal 7336 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 +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/07 17:17:15 by kichlee ### ########.fr */ +/* Updated: 2023/08/08 13:28:20 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,19 +16,22 @@ int main(int argc, char **argv, char **envp) { t_data *data; - // atexit(check_leak); - (void)argc; (void)argv; init(&data, envp); init_base(argc); + while (TRUE) { sig(); + // system("leaks minishell"); get_input(data); + print_token(data); execute(data); input_free(data); } - // data_free(data); + // system("leaks minishell"); + data_free(data); + // atexit(check_leak); return (0); } diff --git a/srcs/minishell.o b/srcs/minishell.o new file mode 100644 index 0000000000000000000000000000000000000000..2d6cba25c330b6d323ed09d119d45678a860cf50 GIT binary patch literal 4552 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 SgkxEv;1w&YW!-}*#XkXwAKn@O literal 0 HcmV?d00001 diff --git a/srcs/parser/parser.o b/srcs/parser/parser.o new file mode 100644 index 0000000000000000000000000000000000000000..48be3080998e266384acf03d2afc52f17d37b1b3 GIT binary patch literal 6152 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/07 22:24:38 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 11:31:02 by eunwolee ### ########.fr */ +/* Updated: 2023/07/17 06:40:42 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -50,7 +50,7 @@ static t_bool syntax_none(t_data *data, t_list *cur) if (cur->token->type == T_WORD) cur->token->type = T_CMD; else if (cur->token->type == T_PIPE) - return (error_back_readline(data, E_SYNTAX_PIPE, 258, 0)); + return (error_back_readline(data, E_SYNTAX_PIPE, 258,0)); return (TRUE); } @@ -72,26 +72,26 @@ static t_bool syntax_redirect(t_data *data, t_list *cur) if (cur->pre->token->type == T_REDIRECT) { if (cur->token->redirect_type == T_INPUT) - return (error_back_readline(data, E_SYNTAX_INPUT, 258, 0)); + return (error_back_readline(data, E_SYNTAX_INPUT, 258,0)); if (cur->token->redirect_type == T_OUTPUT) - return (error_back_readline(data, E_SYNTAX_OUTPUT, 258, 0)); + return (error_back_readline(data, E_SYNTAX_OUTPUT, 258,0)); if (cur->token->redirect_type == T_HEREDOC) - return (error_back_readline(data, E_SYNTAX_HEREDOC, 258, 0)); + return (error_back_readline(data, E_SYNTAX_HEREDOC, 258,0)); if (cur->token->redirect_type == T_APPEND) - return (error_back_readline(data, E_SYNTAX_APPEND, 258, 0)); + return (error_back_readline(data, E_SYNTAX_APPEND, 258,0)); } if (!cur->next) - return (error_back_readline(data, E_SYNTAX_NEWLINE, 258, 0)); + return (error_back_readline(data, E_SYNTAX_NEWLINE, 258,0)); return (TRUE); } static t_bool syntax_pipe(t_data *data, t_list *cur) { if (cur->pre->token->type == T_PIPE) - return (error_back_readline(data, E_SYNTAX_PIPE, 258, 0)); + return (error_back_readline(data, E_SYNTAX_PIPE, 258,0)); if (cur->pre->token->type == T_REDIRECT) - return (error_back_readline(data, E_SYNTAX_PIPE, 258, 0)); + return (error_back_readline(data, E_SYNTAX_PIPE, 258,0)); if (!cur->next) - return (error_back_readline(data, E_SYNTAX_NEWLINE, 258, 0)); + return (error_back_readline(data, E_SYNTAX_NEWLINE, 258,0)); return (TRUE); } diff --git a/srcs/parser/syntax.o b/srcs/parser/syntax.o new file mode 100644 index 0000000000000000000000000000000000000000..70730d1bb307c333afb5d40cce2f24df200c3ae4 GIT binary patch literal 8040 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 +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/08/08 11:31:19 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 11:51:34 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - #include "../../incs/minishell.h" + int fork_heredoc(t_data *data) { - int status; + int status; - data->pipe->com[data->info->pipe_index].pid = fork(); //인덱스 부여해주기 pid가 겹치지않게 가장 마지막 인덱스 주기 + data->pipe->com[data->info->pipe_index].pid =fork(); //인덱스 부여해주기 pid 갚곂치지않게 가장 마지막 인덱스 주기 if (data->pipe->com[data->info->pipe_index].pid == 0) { - signal(SIGINT, child_handler); + signal (SIGINT, child_handler); mk_heredoc_pipe(data); - execute_cmd(data, 1); // heredoc 실행후 다시 커맨드 확인해주러가기 - program_error_exit("bash");// 전역변수 + execute_cmd(data,1); // heredoc 실행후 다시 커맨드 확인해주러가기 + exit(0); } else { - signal(SIGINT, SIG_IGN); + signal (SIGINT, SIG_IGN); data->info->pipe_index++; - waitpid(data->pipe->com[data->info->pipe_index].pid, &status, 0); + waitpid(data->pipe->com[data->info->pipe_index].pid,&status,0); if (WIFSIGNALED(status)) // signal 에 의해 종료가 되었는지 아닌지 확인 { - data->error_code = WTERMSIG(status); //시그널로 종료시 시그널 번호를 저장 예 ctrl +c경우 2 번 + data->error_code= WTERMSIG (status);//시그널로 종료시 시그널 번호를 저장 예 ctrl +c경우 2 번 ft_putendl_fd("", STDERR_FILENO); // 빈문자열 출력을 위한 ctrl+c 이런거 눌렀을때 바로 새줄 return (1); } + else + data->error_code= (status); } return (1); -} - -void do_heredoc(t_leaf *leaf, t_data *data) -{ - int fd; - t_leaf *temp; - - temp = leaf; - while (temp) - { - if (temp->token->redirect_type == T_HEREDOC) - { - fd = open(data->info->heredoc_file[data->info->index], \ - O_WRONLY | O_CREAT | O_TRUNC, 0644); - write_str(temp->left_child->token->str, fd, data); - } - temp = temp ->left_child; - } -} +} \ No newline at end of file diff --git a/srcs/redirect/heredoc.o b/srcs/redirect/heredoc.o new file mode 100644 index 0000000000000000000000000000000000000000..fad3e78d97a40827afcdf4e7468977a7eb6a2f44 GIT binary patch literal 5168 zcmb_ge{3AZ6@IsOyT0Vk>+_E|Hjd$3CB$yA&v8r%A%G2Wnw&#P;{bs|m-F4)-sXH~ zcGn3JDMU_a1EPYosYFE)RN{|NRTZj=>ZGj{lp+ua5VYctmQtvo3V-y6gir}pO22P+ zHg>K-Ep11B^WJ15ZTArvY5oBm)2F*nX<0SXR;VU8gds0Lwa; zFXB;j@=HCM8ESGbE|yiY$7d(4!uYsr@20;SZyMgd>FkhcMf8S3o~_{nd=6#A=Ts)D zoKnlTMU5`1v;Dpi5I1=B{g=#2Ftx5w~8K zSYvFJ*{sLSxqaqe?lCjVJIuyd6C#Q>C~ZiNdS5x!F=%?B%w9xzl9e4ZB#LdzYJBEFg&UxXN$r5 z?7L6q*z_L(#S`pUsy&!_KWK5el=fiyTlj6ogGpi>2bO*o)rSzRRR1y5kamk{fTfQ< z-YR%RBI{}2mNajV?5|`@8}_rrtv0g?{Q~XVv*u5sufQ5wq1)_*evkHezxfSldZZQC ziLn-g;%QVy%(xmVok!IM(FW=-g34-_m={AIAk-)3XCph8G;^>I5%15Kw?YSwu4xm4 z9L6_Mr5{FhDMah3zY;2=tu#lVgXJ$4lLG^Lb;8^UJ7DNeib2D81y%YtsC;h^La7vi|osi=8?!=moXoQ9WYVFND)~+(S;M0J$Au-Ruex3GkLeeK-ya~X#DE%VLcVOz9)7-%OFcYl}G&6tTaA|}{ zvd;K3RQfck0m3`$FNf;Zt~0rdVC&n&+!WbgN|>JvG zV-9$3Tw(5u@SCzC!@LP(i{(OPGP~P$J*Qg9t{Lp>?^~Pg4$$5;gZ*pK9vJ8YzNSY! zx9H_uyX3fb(a%lUFssGBqU5$Z<8Hy-o7-sbw#(HS+s$2Dot`dKN?VcFc2uinFE_Sv z)XQC0C|*Cdv(GE-l0|0j1`o^UY@}2Swe8$)uUIYF)}E@n%R{oYbJsZ)$D6XtWtp_> zJ00Kh{DMF0iBs{#w#G3_W-FdES+Pr5Vw;Ayj*ZBU?Kh0b1V}99s+0S(Qra$$0z;goHuy70Q>RFqN0G1F zRoCJJ7xh#(j}33e&xOB_K%zS%v6zH6=8sXHTD7m?=!V?~)&buPVU*^Wdmt=~&}=hv zutdDXSZaC6`Dw;5Pc4VEkPL-chyKNJeM+cLAg;wcMz5JvIENQ7uGI*Q{3pvG#q4+X zz4~TD#}hrJPPfkPG+w&K|FZYM8-C)(%m*u`GB^F?;NPx&t*PUkk0v|cJ<{6o^#VDbY%8AowM4i%uC5abcak09j6pD+QfghpY~Bg8z& z?V&I*6Jp424Uiy15@O0!5Mv}EhE4_X`4eKuRP+qOgcz3R*SC&YxWCNet{V!~FVn70Wrk*iT?slw|GirRt# zp_<`KLWVgt7W+HyZBQIaz^N3yb5p^8lK^tFo|^+zdA4Nd3hwm(%;D|z{vRBt=}SD7vD3d$BlUExZXSpBd<4LeB78b z4j6GaZ^WDCM)f6t+w*$L_?g}ab9r9x$m?BseKoK-eQjQkAJ^-QQA1nVq_-Le^@K5} zx8!w+J9*ggw&Mr%<@dtM1C5vF;A{NCIX!kj%itZ5OK=q-4{jk>8^j}ib-dWR@;F=@Wx!0Yt)yK<4cvrBdke|yon!NZF%3|@VBi8iU>rQw% s0Fzyu^=%8eU93F?$LICH!j%IT9~%@F?*ivslgj?|%z&_76V(0kPh(1Ar~m)} literal 0 HcmV?d00001 diff --git a/srcs/redirect/heredoc_parser.c b/srcs/redirect/heredoc_parser.c deleted file mode 100644 index 91b4ba9..0000000 --- a/srcs/redirect/heredoc_parser.c +++ /dev/null @@ -1,78 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* heredoc_parser.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/08/08 11:43:30 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 11:53:27 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../../incs/minishell.h" - -void heredoc_parser(t_data *data, int fd, char *str); -char *heredoc_expand(t_data *data, char *str, char *tmp, int *i); - -void heredoc_parser(t_data *data, int fd, char *str) -{ - int i; - char *tmp; - - i = -1; - tmp = ft_strdup(""); - while (str[++i]) - { - if (str[i] == '$') - tmp = heredoc_expand(data, str, tmp, &i); - else - tmp = ft_strncat(tmp, &str[i], 1); - } - write(fd, tmp, ft_strlen(tmp)); - write(fd, "\n", 1); - free(str); -} - -char *heredoc_expand(t_data *data, char *str, char *tmp, int *i) -{ - char *name; - t_list *env; - int j; - - *i += 1; - name = ft_strdup(""); - while (str[*i] != '\0' && str[*i] != ' ' && str[*i] != '\t') - { - name = ft_strncat(name, &str[*i], 1); - *i += 1; - } - env = env_search(data, name); - if (!env) - { - tmp = ft_strncat(tmp, "$", 1); - if (!tmp) - program_error_exit("bash"); - tmp = ft_strncat(tmp, name, ft_strlen(name)); - if (!tmp) - program_error_exit("bash"); - } - else - { - j = 0; - while (env->env[j] != '=') - j++; - tmp = ft_strncat(tmp, \ - &env->env[j + 1], ft_strlen(&env->env[j + 1])); - if (!tmp) - program_error_exit("bash"); - } - if (str[*i] != '\0') - *i -= 1; - return (tmp); -} - -static char *get_env_name(char *str, int *i) -{ - -} \ No newline at end of file diff --git a/srcs/redirect/heredocutils.c b/srcs/redirect/heredocutils.c index 46766ec..0724afa 100644 --- a/srcs/redirect/heredocutils.c +++ b/srcs/redirect/heredocutils.c @@ -1,89 +1,180 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* heredocutils.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/08/08 11:33:58 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 11:49:25 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - #include "../../incs/minishell.h" +void heredoc_parser(t_data *data, int fd, char *str); +char *heredoc_expand(t_data *data, char *str, char *tmp, int *i); + void write_str(char *content, int fd, t_data *data) { char *str; + data->env_array=env_to_array(data); //환경변수 가져오기 추후에 필요할 수있음 while (1) { str = readline ("> "); if (!str \ - || (!ft_strncmp(content, str, ft_strlen(content)) \ - && (ft_strlen(content) == (ft_strlen(str))))) + || (!ft_strncmp (content, str,ft_strlen(content)) && \ + (ft_strlen(content) == (ft_strlen(str))))) { - free(str); - close(fd); + free (str); + close (fd); return ; } heredoc_parser(data, fd, str); } } -void mk_num(char *str, int num) +void heredoc_parser(t_data *data, int fd, char *str) +{ + int i; + char *tmp; + + i = -1; + tmp = ft_strdup(""); + while (str[++i]) + { + if (str[i] == '$') + tmp = heredoc_expand(data, str, tmp, &i); + else + tmp = ft_strncat(tmp, &str[i], 1); + } + write (fd, tmp, ft_strlen(tmp)); + write (fd, "\n", 1); + free (str); +} + +char *heredoc_expand(t_data *data, char *str, char *tmp, int *i) +{ + char *name; + t_list *env; + int j; + + *i += 1; + name = ft_strdup(""); + while (str[*i] != '\0' && str[*i] != ' ' && str[*i] != '\t') + { + name = ft_strncat(name, &str[*i], 1); + *i += 1; + } + env = env_search(data, name); + if (!env) + { + tmp = ft_strncat(tmp, "$", 1); + if (!tmp) + program_error_exit("bash"); + tmp = ft_strncat(tmp, name, ft_strlen(name)); + if (!tmp) + program_error_exit("bash"); + } + else + { + j = 0; + while (env->env[j] != '=') + j++; + tmp = ft_strncat(tmp, \ + &env->env[j + 1], ft_strlen(&env->env[j + 1])); + if (!tmp) + program_error_exit("bash"); + } + if (str[*i] != '\0') + *i -= 1; + return (tmp); +} + +void mk_num(char *str, int num) { - int i; - int j; - i = 0; - j = 1; - while (i < 3) + int i=0; + int j=1; + while(i<3) { - if (i == 0) + if (i ==0) { - str[13 + i++] = num / 100 + '0'; - num %= 100; + str[13+i++]= num/100 +'0'; + num %=100; } - str[13 + i++] = num / (100 / (j * 10)) + '0'; - num %= (100 / (j * 10)); - j *= 10; + str[13+ i++] = num /(100/(j *10)) + '0'; + num%= (100 / (j*10)); + j*=10; } + } -// doc000 doc100 doc 200 순으로접근 유효성검사 -char *mk_filename(void) +char *mk_filename() // 파일이름 유니크줘서만들어주기 { - char *str; - int exist; - int i; + char *str; + int exist; + int i; str = ft_strdup("/tmp/here_doc000"); - i = 0; - exist = 0; - while (exist == 0) + i=0; + exist=0; + while(exist ==0) + { + mk_num(str,i++); // doc000 doc100 doc 200 순으로접근 유효성검사 + exist =access(str,F_OK); //access 가 가능하면 1리턴해줘서 while문 탈출 . + if (!exist) + unlink(str); + } + return (str); +} + + + +void do_heredoc(t_leaf *leaf,t_data *data) +{ + int fd; + t_leaf *temp; + temp = leaf; + + while(temp) { - mk_num(str, i++); - exist = access(str, F_OK); - if (!exist) - unlink(str); + + if(temp->token->redirect_type==T_HEREDOC) + { + fd = open(data->info->heredoc_file[data->info->index], O_WRONLY | O_CREAT | O_TRUNC, 0644); //임시파일오픈 + write_str(temp->left_child->token->str,fd,data); //limiter 들고가서 작성하기 + } + temp = temp ->left_child; //순회하기 } - return (str); + } -void mk_heredoc_pipe(t_data *data) + +// void mk_heredoc(t_data *data) +// { +// t_leaf *temp; +// int fd; +// // herdoc_signal(); +// temp =data->root->left_child -> left_child; +// while(temp) +// { +// data->info->heredoc_file[data->info->index] = mk_filename(); //설명했듯이 이중 배열 +// if(temp->token->redirect_type == T_HEREDOC) +// { +// fd = open(data->info->heredoc_file[data->info->index], O_WRONLY | O_CREAT | O_TRUNC, 0644); //임시파일오픈 +// write_str(temp->left_child->str,fd,data); //limiter 들고가 +// // do_heredoc(temp,data); // 실제 here _doc 이 나왔을경우 만들러가기 +// data->info->index++; //순회하면서 heredoc 찾기 +// } +// temp = temp ->left_child; +// } +// } + + +void mk_heredoc_pipe(t_data *data) { - t_leaf *pipe; + + + // herdoc_signal(); - pipe = data->root; - while (pipe) + t_leaf *pipe = data->root; + while(pipe) { - data->info->heredoc_file[data->info->index] = mk_filename(); - if (pipe->left_child->left_child \ - && pipe->left_child->left_child->token->redirect_type == T_HEREDOC) + data->info->heredoc_file[data->info->index] = mk_filename(); //설명했듯이 이중 배열 + if(pipe->left_child->left_child && pipe->left_child->left_child->token->redirect_type == T_HEREDOC) { - do_heredoc(pipe->left_child->left_child, data); - data->info->index++; + do_heredoc(pipe->left_child->left_child,data); // 실제 here _doc 이 나왔을경우 만들러가기 + data->info->index++; //순회하면서 heredoc 찾기 } pipe = pipe->right_child; } diff --git a/srcs/redirect/heredocutils.o b/srcs/redirect/heredocutils.o new file mode 100644 index 0000000000000000000000000000000000000000..77c49b6b926c813f435b6fe2d8c64f158c8de397 GIT binary patch literal 9816 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 +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/08/08 11:36:30 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 11:40:20 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - #include "../../incs/minishell.h" -void do_input_redirect(t_leaf *leaf, t_data *data) +void do_input_redirect(t_leaf *leaf,t_data *data) { int fd; - t_leaf *temp; + t_leaf *temp; fd = 0; - temp = leaf; + temp =leaf; + if (temp->token->redirect_type == T_HEREDOC) // heredoc 일경우 전에만들어 준 heredoc 으로 접근해줘야함 { - fd = open (data->info->heredoc_file[data->info->index - 1], O_RDONLY);// 만들어지면 바로 ++을해줘서 인덱스 -1 로 접근을해야 전에 만들어진 heredoc으로 접근 - dup2(fd, STDIN_FILENO); + fd = open (data->info->heredoc_file[data->info->index-1], O_RDONLY);// 만들어지면 바로 ++을해줘서 인덱스 -1 로 접근을해야 전에 만들어진 heredoc으로 접근 + dup2 (fd, STDIN_FILENO); return ; } - else if (temp->token->redirect_type == T_INPUT) - fd = open(temp->left_child->token->str, O_RDONLY); - check_file (fd, data); - dup2(fd, STDIN_FILENO); - close(fd); + else if (temp->token->redirect_type == T_INPUT) // 그냥 인풋 + { + fd = open (temp->left_child->token->str, O_RDONLY); + } + check_file (fd,data); + dup2 (fd, STDIN_FILENO); + close (fd); } -void do_output_redirect(t_leaf *leaf, t_data *data) +void do_output_redirect(t_leaf *leaf,t_data *data) { - int fd; - t_leaf *temp; - + int fd; + t_leaf *temp =leaf; fd = 0; - temp = leaf; + if (temp->token->redirect_type == T_APPEND) - fd = open (temp->left_child->token->str, \ - O_WRONLY | O_APPEND | O_CREAT, 0644); + fd = open (temp->left_child->token->str, O_WRONLY | O_APPEND | O_CREAT, 0644); else if (temp->token->redirect_type == T_OUTPUT) - fd = open (temp->left_child->token->str, \ - O_WRONLY | O_TRUNC | O_CREAT, 0644); - check_file(fd, data); + { + fd = open (temp->left_child->token->str, O_WRONLY | O_TRUNC | O_CREAT, 0644); + } + check_file (fd,data); dup2 (fd, STDOUT_FILENO); close (fd); } -void check_redirect(t_leaf *leaf, t_data *data) + + + +void check_redirect(t_leaf *leaf,t_data *data) { - t_leaf *temp; + + t_leaf *temp = leaf->left_child->left_child; - *temp = leaf->left_child->left_child; - while (temp) + while(temp) { - if (temp->token->redirect_type == T_INPUT \ - || temp->token->redirect_type == T_HEREDOC) + if(temp->token->redirect_type == T_INPUT ||temp->token->redirect_type == T_HEREDOC) { - do_input_redirect(temp, data); + do_input_redirect(temp,data); // input or heredoc } - else if (temp->token->redirect_type == T_OUTPUT \ - || temp->token->redirect_type == T_APPEND) - do_output_redirect(temp, data); - temp = temp->left_child; + else if (temp->token->redirect_type == T_OUTPUT ||temp->token->redirect_type == T_APPEND) + do_output_redirect(temp,data); // output or append + temp=temp->left_child; } } diff --git a/srcs/redirect/redirection.o b/srcs/redirect/redirection.o new file mode 100644 index 0000000000000000000000000000000000000000..1a954cc5d6d7761a6407abc96c2abcf17bbc6ecd GIT binary patch literal 6096 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 XeEWGJva`dbB_dxLDlJxZlaAwG@L)%9 literal 0 HcmV?d00001 diff --git a/srcs/signal/signal.c b/srcs/signal/signal.c index fc695c4..a2fb8d8 100644 --- a/srcs/signal/signal.c +++ b/srcs/signal/signal.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* signal.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/15 18:40:34 by kichlee #+# #+# */ -/* Updated: 2023/08/07 18:06:52 by kichlee ### ########.fr */ +/* Updated: 2023/08/08 12:42:41 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,7 +21,8 @@ void init_base(int ac) if(tcgetattr(STDIN_FILENO,&termi)== -1) exit(1); termi.c_lflag &= ~(ECHOCTL); - if (tcsetattr(STDIN_FILENO,TCSANOW, &termi) == -1) + if (tcsetattr(STDIN_FILENO, TCSANOW, &termi) == (-1) + || tgetent (NULL, "xterm-256color") == -1) exit(1); } @@ -31,7 +32,7 @@ void handle_sigint(int sig) // printf("handle function !"); printf("\n"); rl_on_new_line(); - rl_replace_line("", 0); + // rl_replace_line("", 0); rl_redisplay(); // printf("after sig\n"); (void) sig; diff --git a/srcs/signal/signal.o b/srcs/signal/signal.o new file mode 100644 index 0000000000000000000000000000000000000000..fb6fa079a971eca4297bbc9a59bd111cc517f78a GIT binary patch literal 4304 zcmbVPeQX>@6`#4iU7vmDJ3DscI7sP53P~e+ceZ0vt8EfnbxPtmC9+eRq(zhU-sXJu z-bZiGj!i5uXQ{PBtJo+=6|F@7s6-qgD6LebUm{fyC_+G~_>?LXP*DvCC?67b!GzzN zolVXcLjzBG^X7fbZ{FiigfY%Q)C9pj)WpG{cJM__cGqoo*L&t;GzR4B zb?6g^$p{jnY)_WGzNa7Ef9&WD-S4GkCX5kY0LJ-7#x|2P$Yx0RB!uObOWAxz8H8Ai z=i@Xh|LeLx(vyT;O+uvYk@1W$M@CBa1m)ZRP~Xt~*F(ltUO!Wo@7LhLyav+8%jQoN zXh<#Ipo%`HaGy6k;FD3tRCirGELsNE;$2nmXjb9%ggm^ewg%5E79CsU&7AEbs20ys z>-(Alcul?M55p^rJZe!)EnZA5YMTPcG*lsZ-T$0l(X?vucGcj0;TG}AQ^j@H`;fwm ztLOKP55=rR-u`p4d7Ip| z>s?lOdsTi%P_#rZ08g3L;B~>b3GDe$L>d@GL1e#(ajlTcF~)ulNp*SzOhm7qnDV68 z?$ z=eM%|j=4B1maB6O@%rCWexoWs!d^Xd|0345a7hzCy*A6RM!vX;T%Nmp`$hQY!7^`( z_2T;$5qAsm-r85sd~0!4V+*}lPj${Gp>M@HJj^%G)BKZVyOc|GeSEi7a0(^Xz<4wN zXtYJwqLu0BpFS6DYWqmEnQy?(4sfWv5ae*%1lRM6v|kS(43ffv!G z03NKretBt^V9f9Kgu4()CbNs{h74p-=bx86iL(p z=D8oB4QvSo7N&nEdmd`5Op~!~GUgrf?4+1!N^Pf%Y3NZgcgh$!x->QTounbw_Q-VHsghX3N4Yo8@trW%Fe)^bymw*(fH&Wr*y^ZjEN0wD4>t1|u^q zMzxmp+Jeh0kv-*@8CJGPh%y_`)6(p8+$rFj#1aMRwuJOUcYNJqmQ@{ZjhZE#_I*P` zeaFS{!4vz%(c?$<3qe!3McYm@*sx2=h%VaKAdpgQBB9Sx)J1&&(%i+`RT}~ zA_#&*7v{pBeV?_TzjtEx@%O{ud8za1-#h}l1D*yy34Rt#`;o@}7)(U_oOJRNQGJn4 zg-Aquob(q+0Z}E9eu5N`pDWpjYID5?`d?yjOfzD-!iZ>nv}O$#S5RG8WTWRoH#^}I z)v12R%v^ZxeCQX?ef4`QS1z{pUwQ1i&zD|)Yvp10$#;I)@TKWF#61K4I`~a6J%{(e zAAlRNh)a;P7OG{cauC%nndq3nNk-HQolI0xDvAn^OjJ@EDTXmBDKb&HDif6@nW$9N zKpH@%nHwgmQZiBXs)5ivde;*{U-zZ5%i{~SoBY*B*LwcyV{1MC-N+>wdy}qL5Du&iNU}(;O9x}AsD*ATVLlteTqSqVRMtB|_&|3_x4bgwq zyNrsi8MB6#spy8*{;IwMX5;gQHVT-{13Ev1Te4%Lp_zZtb)!MsS~)bR^TRrO!_YqE znLbvT)!7k4d*D?)fQVg{*Dxv&!lS}}54ef3#GsN?;n=`~{hr*@4T(E3aVI3c=n{88 zVr7HdJh>+biBGx&J&!2lKe1$rTZW{#zj<;GZD@SkC0>VYK>gFl3*@J%fC>L;NbKUo zIY>Ya&U4=cG360ykAtVkJCE>jd8AZpZA=0rxy8Vf+fJvvTkLWVE+W!XWNYMXIKMp;HSbzWH8A{!+ zm$OQTkW@iS@qRtv8iCl zC^@2Jr*X$P<`h%6oqq$0a>g#(xC-T+$;8^bQ&#x;sxQFIY0yN*cGH@dkR4} zt~Cbpm^fu-9Y%BD8$e1Xiui{wpJL+1T}+7;@*;1a7V>9k4MJwzETx%K&K0|4+sV9X Kljy+M!Tt@wS(*p{ literal 0 HcmV?d00001 diff --git a/srcs/utils/env.c b/srcs/utils/env.c index 9000e80..a441a5b 100644 --- a/srcs/utils/env.c +++ b/srcs/utils/env.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 06:38:21 by eunwolee #+# #+# */ -/* Updated: 2023/08/06 22:27:25 by eunwolee ### ########.fr */ +/* Updated: 2023/08/08 16:26:27 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,9 +33,11 @@ void env_print(t_data *data) t_list *env_search(t_data *data, char *key) { char *tmp; + char *temp; t_list *cur; - tmp = ft_strncat(key, "=", 1); + temp = ft_strdup(key); + tmp = ft_strncat(temp, "=", 1); cur = data->envs; while (cur) { diff --git a/srcs/utils/env.o b/srcs/utils/env.o new file mode 100644 index 0000000000000000000000000000000000000000..463a5238e3a3cdba8c9dddb86107d941b950c6ff GIT binary patch literal 6488 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 e*0|`#)9GwNq;cv7U)bBfUrn_D6_9y@R*YnMP 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 = NULL; tree_clear(data->root); data->root = NULL; + free(data->pipe); + free(data->info); } //정상종료 시 사용 diff --git a/srcs/utils/utils.o b/srcs/utils/utils.o new file mode 100644 index 0000000000000000000000000000000000000000..7074c7f49160c14677cd0dbc6217bea1f1e992bb GIT binary patch literal 5552 zcmb_gYiu0V6+S!r@IJ=tO&o^=V`Y&7aa!zk9JdJ&g6+f*Cr&YWknrkcy*sv-tarCF zW0NS9q8K5lQh`ONDzz2)K`Wv{OX&lGD223@XbY++6{=cVB`s8;Dr%*cl7K?`eRu98 z&SI(bapiN*Io~<=+5t+WsCu(<(6Y{t z7sS!ak_V!*NBgm7BbHUPM<&Ot{K$x7Pci=b9erD_IqR}Uuj^MDIan7DFqeC_1@TIi z(JI0Ecp2^e8~tp@WB$;mv0p9D84sIQj`i{Wtk?5`9@U@pp;^k|#vTarJ6SfPd z`gq@n`y(II0m6;5BKhK+@v0-Y6=<%Hwq3H>f`OJi}&hBjOXpG z&AH!)b-dvDz58$D6{-_hmuF2@ZZB1emNm3qZ%wgX_^86ZZ=Fs$#lgCqX>JLqF9&zx&gar*rEg7wYzzr;;SXkO@&baOPE-hW5>ub)e2E@(~9 z3(d!^VDv~hJ=lEp;ww^DrVPBs@KOM4Qz^W?NF+4a98RZFw24I9VY#RYmq{nW&5!ji z3a4pVwwU8_H%G)UvyxxmGiG{+De!yfC6r7Xh(78#>MztO~tj3&;AuIvc^~La9 z1-*%@OQqIAl-F?h{d12uk7f!_=m2OhRkXW(rh4Aq#uE^)1%)CBeMw@&&jE-=BE0sG zf+EJe=xg8-eH~p$!aoITi0B(s#3MR!9DTUuG6ZcfX7(%v54Z5tH5m72?o-+mzGi+K z-$%HGv%(gC_N*pxMq*nE3QfF&KAfeG8lUBOiGK+lTMZPN;6}sC=%Z#_#u+8zXr0$AcD zbb}zHJ2ecJH7+xEfJYgqQ_PzKITtr~K~56y%9vk(tQNXrkt7)-*#t}CLUg0hjOD2c zSjJdtPJyfGFBNlNATNuUe8MV1dt8zflGiiBE$F@m%~+Fq46MuOF~0-;IAG(GVm=ed ztK#NQ0(o`Ddv5aY^rNiufwDb8{f-Jb|=O1%x1HP)N|0Dqse zTqEXMaP^2c#7%Ow&cTd%U4U=Iu6gk%Qs_=HP=D$JFw^g6BGGLaR>=}sFE{3aZ=ce33 zwP;(nSDoE1vb3GsT&k4Zal2fWG0Wal@+{ZOdy}q|DxTQZ2u8_d#Vw6h>|&PKHGM-{ z2V~op?E_*vPSvqS@`c@&W9N%1L)V<@n3JEdd>aEIQf<<+MjhLhV&2R9lIMpeAfBa| z>oesph4H*2UUj!!abYi)Tu)q|)f`(YESZ%RMxVQyvyKtRE|we{HHgw!8rqd9lFQD@ zJ5GMDIMphGSYjTT|++p?waMr-TfO#{}p8;1uhO9~T3tCsi1 z1tIym6_6j{i$US+S&F$nLz!jok#QT_t`@A(a(?WbQYzb0b+FuGsiKAIq`!8nGC83( zfhY{%zcZc>Q86}b?c0DaQdmKgbfqQ4LMX=1=mu4la7<(U-T&P5=$fhNLszXk`u#PX z2hOynUcCi)8FUBe0O%{A;~>VVfY_MRs5AMo@&2bCWCe2SZ_tRwJVX6?5L>WTVr+A* z^*`}pYQ6x3YEU)YADAzOeMXV4Y4zvlo|#lxB@^XOGCmeop-B0HDpCsBhwgag_f4&j zEHAb>4R%}X<$mvG_rU93U7ma6jeE05m*Zp#S>l^QlwY_<8Ve36V*xmMt7f0Xg zy6fIlb$CH*W^bu&(zqn^@`G!he6_Hk)jLpXJNaVIokya%pPSh55>Pj20JIad8+0d# zDen=`Q=p%Leh2y+D2!WbA!s>h4TyL02xt;?FX+plZ-SWQ@F&c8%vTW&;iJQYXZF zUJvATPl)%w_F|$U#N4I5n8FA#r)jUFPzkZv;Oj+WaYcytyk06(D^KRG`d>8vH8_5ab^KWCOa$~h2#!m&g9!t_eLL<2$FKE{VQ^fs z9Yf#39!8PeTsc zQtEh}{6)rgKWMgoA9ZYW7bau76VwFX;QP5%>$I`)zgM&e-yg$L*WaF}8vg;L4 sKmqko30hjN;Xjq$sOWO>{8AEC$=SkDm4<%hSoS7r-NJr_>h(qRFIiWLLjV8( literal 0 HcmV?d00001 From ccfd892f93a1c0a57f19acb0c65196e0531905c7 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Tue, 8 Aug 2023 21:29:38 +0900 Subject: [PATCH 16/57] . --- .DS_Store | Bin 6148 -> 6148 bytes Libft/ft_atoi.o | Bin 880 -> 0 bytes Libft/ft_bzero.o | Bin 584 -> 0 bytes Libft/ft_calloc.o | Bin 696 -> 0 bytes Libft/ft_isalnum.o | Bin 688 -> 0 bytes Libft/ft_isalpha.o | Bin 632 -> 0 bytes Libft/ft_isascii.o | Bin 592 -> 0 bytes Libft/ft_isdigit.o | Bin 592 -> 0 bytes Libft/ft_isprint.o | Bin 592 -> 0 bytes Libft/ft_itoa.o | Bin 1128 -> 0 bytes Libft/ft_memchr.o | Bin 648 -> 0 bytes Libft/ft_memcmp.o | Bin 680 -> 0 bytes Libft/ft_memcpy.o | Bin 680 -> 0 bytes Libft/ft_memmove.o | Bin 784 -> 0 bytes Libft/ft_memset.o | Bin 608 -> 0 bytes Libft/ft_putchar_fd.o | Bin 624 -> 0 bytes Libft/ft_putendl_fd.o | Bin 856 -> 0 bytes Libft/ft_putnbr_fd.o | Bin 1048 -> 0 bytes Libft/ft_putstr_fd.o | Bin 680 -> 0 bytes Libft/ft_split.o | Bin 1976 -> 0 bytes Libft/ft_strchr.o | Bin 672 -> 0 bytes Libft/ft_strdup.o | Bin 736 -> 0 bytes Libft/ft_striteri.o | Bin 624 -> 0 bytes Libft/ft_strjoin.o | Bin 888 -> 0 bytes Libft/ft_strlcat.o | Bin 840 -> 0 bytes Libft/ft_strlcpy.o | Bin 768 -> 0 bytes Libft/ft_strlen.o | Bin 624 -> 0 bytes Libft/ft_strmapi.o | Bin 792 -> 0 bytes Libft/ft_strncat.c | 2 +- Libft/ft_strncat.o | Bin 928 -> 0 bytes Libft/ft_strncmp.o | Bin 776 -> 0 bytes Libft/ft_strnstr.o | Bin 936 -> 0 bytes Libft/ft_strrchr.o | Bin 672 -> 0 bytes Libft/ft_strtrim.o | Bin 1320 -> 0 bytes Libft/ft_substr.o | Bin 1000 -> 0 bytes Libft/ft_tolower.o | Bin 600 -> 0 bytes Libft/ft_toupper.o | Bin 600 -> 0 bytes Libft/get_next_line.o | Bin 2936 -> 0 bytes Libft/get_next_line_utils.o | Bin 808 -> 0 bytes Libft/libft.a | Bin 35288 -> 0 bytes Makefile | 5 ++-- incs/.DS_Store | Bin 6148 -> 0 bytes incs/bulitin.h | 6 ++-- incs/execute.h | 20 +++++++++++++ incs/minishell.h | 9 +++--- incs/pipe.h | 1 - libft.a | Bin 35288 -> 0 bytes minishell | Bin 87174 -> 0 bytes srcs/.DS_Store | Bin 6148 -> 0 bytes srcs/builtin/.DS_Store | Bin 6148 -> 0 bytes srcs/builtin/builtin.o | Bin 6128 -> 0 bytes srcs/builtin/builtin_utils.c | 6 ++-- srcs/builtin/builtin_utils.o | Bin 7936 -> 0 bytes srcs/builtin/ft_atolong.c | 38 +++++++++++++++++++++++++ srcs/builtin/ft_cd.c | 2 +- srcs/builtin/ft_cd.o | Bin 6552 -> 0 bytes srcs/builtin/ft_echo.c | 3 +- srcs/builtin/ft_echo.o | Bin 4752 -> 0 bytes srcs/builtin/ft_env.o | Bin 5488 -> 0 bytes srcs/builtin/ft_exit.c | 43 ++++++++++++++++++++++------ srcs/builtin/ft_exit.o | Bin 5992 -> 0 bytes srcs/builtin/ft_export.c | 8 +++--- srcs/builtin/ft_export.o | Bin 8416 -> 0 bytes srcs/builtin/ft_pwd.o | Bin 5184 -> 0 bytes srcs/builtin/ft_unset.o | Bin 4520 -> 0 bytes srcs/execute/checkbulitin.o | Bin 4696 -> 0 bytes srcs/execute/execve.c | 2 +- srcs/execute/execve.o | Bin 7968 -> 0 bytes srcs/execute/freepipe.c | 53 +++++++++-------------------------- srcs/execute/freepipe.o | Bin 5984 -> 0 bytes srcs/execute/pipe.c | 2 +- srcs/execute/pipe.o | Bin 5968 -> 0 bytes srcs/execute/pipeutils.c | 6 ++-- srcs/execute/pipeutils.o | Bin 6064 -> 0 bytes srcs/execute/setpath.o | Bin 7336 -> 0 bytes srcs/init/init.c | 28 ++++++++++++++++-- srcs/init/init.o | Bin 6144 -> 0 bytes srcs/lexer/expand.c | 34 +++++++++------------- srcs/lexer/expand.o | Bin 9864 -> 0 bytes srcs/lexer/lexer.c | 2 +- srcs/lexer/lexer.o | Bin 6096 -> 0 bytes srcs/lexer/quote.o | Bin 8184 -> 0 bytes srcs/lexer/tokenizer.c | 2 +- srcs/lexer/tokenizer.o | Bin 7336 -> 0 bytes srcs/minishell.c | 32 +++++++++++++++++++-- srcs/minishell.o | Bin 4552 -> 0 bytes srcs/parser/parser.o | Bin 6152 -> 0 bytes srcs/parser/syntax.o | Bin 8040 -> 0 bytes srcs/redirect/heredoc.o | Bin 5168 -> 0 bytes srcs/redirect/heredocutils.o | Bin 9816 -> 0 bytes srcs/redirect/redirection.o | Bin 6096 -> 0 bytes srcs/signal/signal.c | 3 +- srcs/signal/signal.o | Bin 4304 -> 0 bytes srcs/utils/env.c | 12 ++++---- srcs/utils/env.o | Bin 6488 -> 0 bytes srcs/utils/list.o | Bin 3672 -> 0 bytes srcs/utils/list_clear.o | Bin 3184 -> 0 bytes srcs/utils/temp.o | Bin 8640 -> 0 bytes srcs/utils/tree.c | 11 ++++++-- srcs/utils/tree.o | Bin 4288 -> 0 bytes srcs/utils/utils.c | 11 ++++++-- srcs/utils/utils.o | Bin 5552 -> 0 bytes tester | 1 + 103 files changed, 226 insertions(+), 116 deletions(-) delete mode 100644 Libft/ft_atoi.o delete mode 100644 Libft/ft_bzero.o delete mode 100644 Libft/ft_calloc.o delete mode 100644 Libft/ft_isalnum.o delete mode 100644 Libft/ft_isalpha.o delete mode 100644 Libft/ft_isascii.o delete mode 100644 Libft/ft_isdigit.o delete mode 100644 Libft/ft_isprint.o delete mode 100644 Libft/ft_itoa.o delete mode 100644 Libft/ft_memchr.o delete mode 100644 Libft/ft_memcmp.o delete mode 100644 Libft/ft_memcpy.o delete mode 100644 Libft/ft_memmove.o delete mode 100644 Libft/ft_memset.o delete mode 100644 Libft/ft_putchar_fd.o delete mode 100644 Libft/ft_putendl_fd.o delete mode 100644 Libft/ft_putnbr_fd.o delete mode 100644 Libft/ft_putstr_fd.o delete mode 100644 Libft/ft_split.o delete mode 100644 Libft/ft_strchr.o delete mode 100644 Libft/ft_strdup.o delete mode 100644 Libft/ft_striteri.o delete mode 100644 Libft/ft_strjoin.o delete mode 100644 Libft/ft_strlcat.o delete mode 100644 Libft/ft_strlcpy.o delete mode 100644 Libft/ft_strlen.o delete mode 100644 Libft/ft_strmapi.o delete mode 100644 Libft/ft_strncat.o delete mode 100644 Libft/ft_strncmp.o delete mode 100644 Libft/ft_strnstr.o delete mode 100644 Libft/ft_strrchr.o delete mode 100644 Libft/ft_strtrim.o delete mode 100644 Libft/ft_substr.o delete mode 100644 Libft/ft_tolower.o delete mode 100644 Libft/ft_toupper.o delete mode 100644 Libft/get_next_line.o delete mode 100644 Libft/get_next_line_utils.o delete mode 100644 Libft/libft.a delete mode 100644 incs/.DS_Store create mode 100644 incs/execute.h delete mode 100644 libft.a delete mode 100755 minishell delete mode 100644 srcs/.DS_Store delete mode 100644 srcs/builtin/.DS_Store delete mode 100644 srcs/builtin/builtin.o delete mode 100644 srcs/builtin/builtin_utils.o create mode 100644 srcs/builtin/ft_atolong.c delete mode 100644 srcs/builtin/ft_cd.o delete mode 100644 srcs/builtin/ft_echo.o delete mode 100644 srcs/builtin/ft_env.o delete mode 100644 srcs/builtin/ft_exit.o delete mode 100644 srcs/builtin/ft_export.o delete mode 100644 srcs/builtin/ft_pwd.o delete mode 100644 srcs/builtin/ft_unset.o delete mode 100644 srcs/execute/checkbulitin.o delete mode 100644 srcs/execute/execve.o delete mode 100644 srcs/execute/freepipe.o delete mode 100644 srcs/execute/pipe.o delete mode 100644 srcs/execute/pipeutils.o delete mode 100644 srcs/execute/setpath.o delete mode 100644 srcs/init/init.o delete mode 100644 srcs/lexer/expand.o delete mode 100644 srcs/lexer/lexer.o delete mode 100644 srcs/lexer/quote.o delete mode 100644 srcs/lexer/tokenizer.o delete mode 100644 srcs/minishell.o delete mode 100644 srcs/parser/parser.o delete mode 100644 srcs/parser/syntax.o delete mode 100644 srcs/redirect/heredoc.o delete mode 100644 srcs/redirect/heredocutils.o delete mode 100644 srcs/redirect/redirection.o delete mode 100644 srcs/signal/signal.o delete mode 100644 srcs/utils/env.o delete mode 100644 srcs/utils/list.o delete mode 100644 srcs/utils/list_clear.o delete mode 100644 srcs/utils/temp.o delete mode 100644 srcs/utils/tree.o delete mode 100644 srcs/utils/utils.o create mode 160000 tester diff --git a/.DS_Store b/.DS_Store index 997a84f9289766fc946b5d009238499d5efb7e05..b3a3a66a39e3014115afe12069b421d6d369ca54 100644 GIT binary patch delta 481 zcmZoMXfc=|#>B!ku~2NHo+2a1#(>?7iytsEF>*}iVUp$zWME)0{|^QX43lM;Wv%xk zivZc|3^@#$3`q=W3?&SD42hmO`N>H+`AI+-0U)+!U|?j0>vv;TuGdA=&&`kv)Sm~$ z@jw$&8H&MVQBrwv0o0stNd-BX#U%y?HyD|iSyuu5=%;p zof3=U1!RIVQ&N)>i^4NgN-{!H^IUUM%Tn|Fi+mDGQj4NNibE!sGC9?QnE{C<89=oh z$_|MSfNo-7;N;+p7m%#3HZ-ub)KM@uw5Zils5Un@&`~fkHmj}Wx- Ai2wiq delta 337 zcmZoMXfc=|#>B)qu~2NHo+2ar#(>?7jO>$nSft%885kIB{zCzf&BBn$kjIeBP@Gg= zT#%HLp9B=!kyMbASzKaZaE+0PnT3^&or9f&nGD~clW zk5!eo8AZf^O^So@BSdI(0NZxPjSX!~o7p+|Ie-DSS&-v9^JIPzM-HF@kliesBSh9P F0{}S+U#9>7 diff --git a/Libft/ft_atoi.o b/Libft/ft_atoi.o deleted file mode 100644 index 6af93fb94d9f00580a48389b4dde722c5e961288..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 880 zcmbVKze~eV5Wck4rdEwmAsUw~LhGc0idzQ-1qYE1-5#YX7VQrqVi%#};@Zuvqb`mP z+3KX5xH!91Qo%o<4%Y9|y!3~iJaX^dyYKG1yO;O!{q-|Wq!5Ic5cG%*6AGDyI<7T* zxp6azuDxBJ!w6>$cxggd2W6|vAw+63o$8*YRqo-Fxh@u>ij3i1h-@)m%498ZRyfZU z_J!El=*1+`R`|5P&)$Z2Y1tAqF@aJ^+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710W6Ja|1EV4v-oU z2I&Qka^N;VM%6WsHdj0+yj@uS>ON=lNy2a${wQsYu}Ib z9Cy;g*r$GwrRde9C^XB_Teck0<@`0~T?GbWMmd^G(MM?Bto4YtuxI|>FN_wz0dl%0 zjh+;B52a6f?ocDOw?2>J&dw0~^&bp=(dSg}C7*xFs_<~9q6J2>C`rtjT?gmn!paKZ w94@ZrP#*sBL|){COZexeeBxt|-MV{L_lVt^<23CgWRIoexvdS7RURMq17ML_N&o-= diff --git a/Libft/ft_isalnum.o b/Libft/ft_isalnum.o deleted file mode 100644 index 8311ad73435a78ccf372be4688ce3871f566087b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 688 zcmb7CJxjw-6uq(43eoD2L0!xu6tti&Iw~qSIEZv`yM#tbGrtu!Qc8_$9=2%U4OodZ)X*#d2kCYvp0S2 z#*NJmyxaE~eoDWSzGrOt8B0h}ELvckr6^r^jV*%nazGsm;5-hR+_T))RH`rkO)6D7 hof98N?47&bi5F?@RD+uTrNfFt)yNN5)Vi!6OCOCqO%MP8 diff --git a/Libft/ft_isalpha.o b/Libft/ft_isalpha.o deleted file mode 100644 index f936134384ebac76d78e8c6def92e55f0fe03b61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 632 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg{|11j7BHi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJHe0cC*9gXskeu`o2i)PU&t_~iWDg2d#K_|m-c%)FHNcpn#J zd6+p0FhQVU%s{pRkcK)H#dss2oCFX<!C2I2r91_6*7 z5C-W5*+CBY@62%V0XM_W7u*gzIanDBUo4+51q^p{pqV0Iu}q-Y@%d7~a6yQ*LezO6 zi@gMjU7s(t0;*Sop&{r6Kf_L-yF~s2X^?pj_#Jiv?VEUjIsO{Vt>Ewy0DA)_1gC*| w*o1*RK9C2Y02DfWKu^QM86?GzB+n3^RuZ3CoS0LPk;sr!l3QR1CJkWv0U(J-hX4Qo diff --git a/Libft/ft_isascii.o b/Libft/ft_isascii.o deleted file mode 100644 index 6895e02eb9b0f074c0d3d2b35b63434a98217467..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 592 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P08wF5<5+(=K!zK*m@PQl-1t4GZ0X+lr h8%T;DNuD7-tt39PII%c6Gm{~wB)7m2Od7!S0{}(4JCpzb diff --git a/Libft/ft_isdigit.o b/Libft/ft_isdigit.o deleted file mode 100644 index 922557d07d952d8a42f60e7d36dfb72bb195ae68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 592 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P08wF5<5+(=K!zK*m@PQl-1t4GZ0X+lr h8%T;DNuD7-tt39PxS%LAuY@6|B)7m2Od7!S0|2AlJTw3R diff --git a/Libft/ft_itoa.o b/Libft/ft_itoa.o deleted file mode 100644 index 853a82d120c8aa5ad2a5be249327b6184fbacfa5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1128 zcma)6O=uHQ5T5Ne$!=o}g+jHc8}L$)LhZ!}9u}fdr3WcJc=8cae-`pnVWmPT1ab-J zCFn`PimgTU!r;henL?o87nB2o@YNZ{C|X-#0(J&8MH=exD#x z2*S%a^geIWP{?Vh=kNZ#m}7yz<}(n5=LFoW@|uLO?>w?24k1>r-CB*#;qI5@VLrz0 zsFGuxDq##;A@b$odMK3@Zd*ZLcXXpKVlK62VXi z*T8-cxEO2(16qJhLT^G@n3t8YJU`h2cKdma-I@yNnC8^gQ zYj)1LPUp6($7sq^^=*C2d^$&!J=)S=@O?KyJuhMQG=;uv@&Hy_W zVA*$Fsq9TmetdodHEYVmf%bvwU%~lGZMcVOa{CGDdyV>*tP2^R1F_6~I2g=uZ>`Qt z7x^9=sFBYOdgGkUsyOOzW?PtH{kD%RS2ZjN-z6HQB=t?g6}FPjA?p4qtZ^ zas^v}=Fh-_Vm=+%I1HcT=V4C<-0bq-D4#>#vwY8wU4F3B*rrC}@gL!1U;+{Ok}cM( edzMY2m@5>@c@lSRVcF#z73|{rMStZ_#g{+$EZs){ diff --git a/Libft/ft_memchr.o b/Libft/ft_memchr.o deleted file mode 100644 index a0a51afb13a7db7b5870c94d8eaad50fab46323f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 648 zcmbVKJx{|h5WVz+qzV*?R!ZrT{)EB;-8{g?z|eusLZPS#QX&)tBO?O?{RLeaS-T~8OM=W)hv4B>fMuTGWdDyv~HWpEls`#~(v2Ny?!11Wd5 z^7^d_TE;gptO&jdZ?^ht{5rG-@S`oE7=UpR=Y{Ey;5l}IU4V^i7~IR>_>ZNJ^gO9i z^6Jz0&80-uM51hXUyPMc9n7vPS0t4(&8E;Di)P9jHJt)&Xw4SLiO$p)9mlF1D|^(u zqq(L$N^l=_#dT#G^6d9C^-|=yf8vP*dl)_x9tMYa+E;eO2rY7NF@CNegJ{3BjE!8 zgDwPd6^P13aJ*S|!;ugKlf0cb^JZpuZ}0y7?PHS2As8cWl|UAw19a>QsTwZ4G-VqvN={6D9Jbb9&I(m2z`E zuiu!UX8bCKx!^5$bJQQ>m!Zu9U)mIk0T>r?e%th4!gCw|TL2r^Fu0fZ_>X0G^f;)H zdJajw1fp}dnOHpDivuogzh^uN~>4%zDp}w^8|8YZRiTM2=6_Z+sf83}Oxc e8kO;}?EA13=5&&KiHzHE6nE(;iMvaBZO|tV&tNV9 diff --git a/Libft/ft_memcpy.o b/Libft/ft_memcpy.o deleted file mode 100644 index 432a71542dd2a40a3eb37fb4330688e9c6f1b691..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmbVKyH3L}6uluWDGIa_trY0g5iu1O=#~LC28IsZ3<^a>A|*o*urYR|U(g?5=qDiY z0l>msm=Yw0j%Fa7>)L9Nn7GpMeVu!3$9ekt{9Y!q2*yhR=yA{hVCz7lqQ94CT^=X} zB9l9)GZu7Th`4(l>jX}S_I{^5&rNi%1J*OMs#Ks`!(lH(a1lnwK`bu&S7-ebArAKP z{jp9O+V4WlM%;ndNBt$gjounC>#cwcz?j7KBRziy&$$a60&L7-@GS4~AIl!;Wl|;i zRw4QBl1!?;ELk*7oKbzlq8(`0lFGa`pjj>RNaBrZ%ugK5fs@!I72oycQjw-9^puu2 zs`reRt$M>0+>+(DQpcB@MH+rU1N*h6S>`EC=(EzCj9_ICSg$k diff --git a/Libft/ft_memmove.o b/Libft/ft_memmove.o deleted file mode 100644 index 9d5e31641ef589af73b037128240e95a73f0b95e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 784 zcmbVJJx>Bb5S`=D15q%6L#`LfiqSo@;$F)FQG_TH@Cqf+T&DRZ2 zDNf#j%!WUJjYs^T-$88+I<2js84BSh&JSb!J8TJY26_l(;T~4T@{IpTbWe|?JgMg# zsh12XnfFx6qKS0+#SM#g!CjEKS*}CVT;!6%?gj3b4shs^Hmu{R(B}U1tGw+OJBew( z=E-;}y+D%?bMy?iUu>8ez=Ws+*G*YoB?QkH@us!Z#U7PO6uEiK`wI_d^g`@nc(xFa zv7_P99K1K~!2Zbf6yBjXw8fKoL;a6s{k$giZGl Sy6?9x>vSIY?QMOQ4gL#Ewtlk! diff --git a/Libft/ft_memset.o b/Libft/ft_memset.o deleted file mode 100644 index 3524c0760ee6ccd2ade520ebc4f7777a2b686b43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 608 zcmbVKJxc>Y5S=rLADreygo{?`B398xuF4e(78VvM>;_3rB6u<2ik6mX^9%eP=>&g( z*jPuajUX7XISbD>=Pq8r%7M4@@n#;o!#;ezeJv6>1e2o(bR?((ur)wu(ceekl>3 z$0Swb-=SAPybMuu)hYRHa24Q(TS7AclP0NG5Xk&KyyPx$2#86KKxU=qKbGFp+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*TVsc4*XM+jxbm+v!^8!jY5FJf4;wKUdwMn$I@GBtN2#3+mB1MW6!XVzMf%A-dApx6%`~d^@o?YS} zFm{4JK(r7`wMt`egs5*WdzhS!18?5EnccV9z1)Ake+?3K5kgWJs7VnA5EHK!K}FdGM2vmq=7 z5VA=66%_J5<1o>{13(IpkZ&N6y>j;sW9a|H_Z>YnPrIwl5|!Oj?Bg;St5uR*>+7PU z`t`-+KG8D#$3_9^*Q0b(De*@=LJb#;GtOTlTH`H5S1(cRMzo7{*mE{TRGud1QF`Lh zJYB2eyz*^`pZWtoPJIWtPDkiay+pHHV0dh1TD&T6AbkytyU&7T-n#@IM&XB)!+03w zPxApiBN}h(fF&k@k+%JP&~1{U0Zk^);SWZJ@(ZQxjqFov={-i-uM6jq}A%loRw~N0usA)`}D2VXDrDFqy zj&V%ZE={&d9MnbHp*Wf?D&0j$)9<{ThtJf42hKfz-}&x+_nmus^ZQRLkwy?+8lZW0 z0#L|PXw<4&;Xli?)Xv1(aWjytF6mIpSlTvj+m)J~d^>v^+g`xI_Xx=sAkewkKqebo zlv?;;q~eKplBnmidAw4;W-^D=g#^C$>&dwVLv1Fu;)zA2ViOKH4am6ylGJf7{MP%&S9glZs;_WrBRf7o1nrE@8MG2qaT$WEms+*^nTHw zFS)5uc8?WwjW){PGQJg}Veod0K(ob6{$g+LtFEtK%Qe?3H76D^~ox{DPzq{10P6$JPfp+jWZnqs$M@lRts+OVTM(p-2i z7mczn1tsnk%=5Z>7sr?xdmh^mw>kLutvEuWHPwfQLTW1&Hyu2L;y$2gw2Y3zT`9zyJUM diff --git a/Libft/ft_putstr_fd.o b/Libft/ft_putstr_fd.o deleted file mode 100644 index e34149bfbdabb9b249a3d3fc46968974ecf735e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmb7Bze_?<6h8VagUSLOszsY>5vrwCvbKf>hqgob6a_W2D+(^bTU-VAY}5XMbPM_e zqNTZ--V!uwVD+8bee{Bs4t(eP&X0TEJ@?(ezkVzb1qdcC1QbLh0N5(vYW25kn{-=G zAoAic@`9kLGpk%vnE=F`IXKSz#GbN^ka==;8BWg#(S_F|%$z+fS5LBv>y<{aVlyA^ z`|AZ0Bn-b{o&}x2FmqKs)|6=nVg>lFEutBKNt5I^A!fi$@D_L;I0D3^M<8eA8>0Vf zpLg^yZ3PEYhdMncKE6uFhy64U=K^%*-dwI>pIyw4;a|lh??!3VcX;fEY0?AZd)?=7 zYVu;y^;0x8l34nut-S$ecWy0y^xw(6bI6|)EjuBZOo6dW5+r-gZh#}Qps{su1dDp_ u97Vk3tBdr7gnR#riSvrjRjrh(5I1T?mD8DOT_MSNn@Xx&-PT^7o4x>P!Baf| diff --git a/Libft/ft_split.o b/Libft/ft_split.o deleted file mode 100644 index 0274283b48990647c87703b37087a4f2885a4d9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1976 zcma)7y-!n76hDs&ZT+B8h$yIq4NPjpLFr&pttJi(#4xy+3zn*lrBr;x8e;Mi784w7 zWHg~Twf+Tt6C^BbL}HASDd5l!CK@#XlUjf0e#nC^p5(rB&&NIIch0%JUH|>{&ru?a zK>Rs`Rpw1E7U(qAkhDs%>2rz?fIev-Bm1G_p3O)h;c?eM!DqZAOyJBvzm5x_^!FTjL_S&+X4Qcb! zZq*;#4OsNO>R;@BL39OJI+y3dJ7I7>2is$|flC|Cy~4`#c|ME6caOt&J3;wI54jcS zmXQCg&L22LgM7ZKW3zp;C+70`0`j1zot%?n6(RG!Fei5Ev+)vY%dhyv$Hpq5#+Fij z4mHAODIP92I>=?;B76f@EGlt!Ep|WjDV$2b5-r6=Iba1JF@`mbLE2g=&-vPQz9Rgr zv(&-3Dk1c&1GRI{kf#=MToo@kZ!m5(8eJ9m)Mu}kfKTB(FpJF)?QRK*ZtFgWErq!n z;-2qeUTamDm3}2!6Dz1^KW1qI<|<Dj=JR}MT&p=WC5MctDCIVXy%;WF-OXAN-_mf$?+<2e16>PNq>VIB1^!(Yy8Rh0M5 zYmVn-mFjWIS5W&V@Ub6e%=hqd4YHY+xfeWt&P%|?_TO0p*}5}{+wqS3Cugr?<4!0{tRl_^dqiiQ-9*X`MWHm5c7_6>X0Y@Fl3KN z{A2OTT&Gt)c|ay{-xg1@>6A?(nM;~2D`)QEpNd2xgFQBBaY4!H+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|z0xH}AHi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJIp1j+!J2h$4{Vqs{2sR7aP@yYqQ1&PTe@uhj?nRzMk@jfod z@++Vm1t@I*G>jR@4gk_nr=l2d1eB8iVu&0sP%#h#0Z0)@JOZk}14x7T+&~-v#2^4t z1HvG^AUntb|C<>uKHz5f`H-Js=L>#^oiFqmEP>{Uyx?~D$-(Gg$-&4__(FWX6bBQ7 zIYRt^}0RzA^#=r**Bv`zFr1+8K8RFAQ;)_d) Rk~4}Ja!PUw48f!U0|4h5Suy|s diff --git a/Libft/ft_strdup.o b/Libft/ft_strdup.o deleted file mode 100644 index ada19c5ee0486eb467f07cc0d4dbe8f7ba0b764c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 736 zcmb7CJxjw-6uoWQrlne!4(ejTrJ@DvqGJ#R2M31^ZqJfd6w)?mib@dzS-KY79PHTs z3I%_F=-?c;I5@a9Le+EA7p>yrf&0$6pYP_8ySJD338DxAe8gY}EOIbl2Id9o@1rZj z?O*~?=&OjcMP*(Ht9oil2P8ykbGP*Ehsu_M=W%Zyhr+QK*-RmX&>JTKuyC&xk+3K1GtFeTM!9w54;9W!**Z{u3_U|-Zj`4 z{2zSW(*3X%?GGL5xM}j;wC1D#!d1zCRy99Q_QOJ)I&_}84B`s;o}&552)%mh)ohz+ z758Vaow-2@>>~Gs86JA0+=p3Q-$S13x{eqOTkCz?+qqH1W4Nn568szdz#cq&S78Yp z2WP=3DuDRA6Gd=_A3$OeoWY~m(&yKl8q2dBbI0C()G+@mPh#H^$JUXdn`fb}G|f;N U)jEk<*)SS98CK0K2In%-C!!=_w*UYD diff --git a/Libft/ft_striteri.o b/Libft/ft_striteri.o deleted file mode 100644 index a0a8a3eb480b1c2684ca86ec97c56499edd8e498..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 624 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg{|0V>=9Hi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJHe0A+y8gXskeu`o2i)PU&t_~iWDg2d#K_|m-c%)FHNcpn#J zd6+p0P{AKS^O%8b380}+r=l2d1d;<{h#W6aF%Sa*ND)X}0muO94*=2%K$;uG24WBZ zsR3b-UXU7c!2iPx7yni>t^C`}FmXY%{Evs+3_t(#GwcMKDYBwD{>MxHhMgRYoZTFZ z4wf8@423Vm=Su;@$Q&g9g4^Ne1Ad2{D}m}>0o5roa&+FyGC6ysoJ5PShN=l%cx z;(x21Rs!vrcz`+n8qAH*Z~{d;1^}APCIS@Y19=Pz_<%GY(6g}c1xfKE$uq>KmBbg9 V6lIpA7G*Nzl;jo|f=L6YegJtAPvQUo diff --git a/Libft/ft_strjoin.o b/Libft/ft_strjoin.o deleted file mode 100644 index de774eabb4c94570e4232da47ad82f2dc58cd1aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 888 zcmb7Cze`(D6h5!lG(XxJ1RrwX><{{2W`Q@!NI}pB58`Y`C;29Ed(KuMaUFz zb1RD5pR0j%jV>zgTw~S}(s|S-y*X_B^1+vsYLYlOs|k z_@;HPT-;dAS$ebddA;;T>%~`oj+pgy(%$A*Pv-~FOHuxh&4Nw9hq))X6b@q%_Z^TB zZ~@I^fsf!za2jjqJj-6m|JVA;IPX2adDeUJJ8u_D{#fex)H;iN8JZI zv6nnGhIQPJLa&AUneRaBCQ&`?s@TE%kc@S4K4Zk{Q-;ic@AnhbveDOlTHL2r2jB58 zTI{=nyCO!ko`OE(ee}&cnlY5Z(0>??N;d3ega9*C~Ra7D~DUwX+bhuyP48q7Y-$69pR~jbIh9PwX!K zgLIa5Vk4GfAs58L?jpqaX0xX!SU4~{Z|CF9?#|wQynPNZ#u=VrDigvfoH#!mLaZ&Vul?);ln(Jx?JX9`5n*RR4p|}cd%NXa-VsNo z~UirciCu_)VbAz$X`=!>}O+uY`CF5p34wShYr+|D-8dlLI=^afYxGZc!`)I(c*v@J&*ItRsk&iTfL5-U2p diff --git a/Libft/ft_strlcpy.o b/Libft/ft_strlcpy.o deleted file mode 100644 index b280b25b58ee194985258aabecda6f07dcdacef9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 768 zcmb7Cu}eZ>5Wm;co?__|SQ06;NDx#*;U-jDLxe-yN0?!tX7!@NMR0LU2x`+&`w!fN zmbPe#hK5%VJcouhUtspT=l9Zvh7RuTclX`>zI*q*`_K2UF(QQ^Y+TSZg9sEd1vPE- zhp{_}%F_3lh%}V5j>tA4^wgO?;1D9QzMUAv4tkb=`M9?XV^h1R=+v+mB6*O_?<93` zk~`hc?FzB6HhgZ#AR>JlJSy;o!#5bsu2_Pdg!VsU9K}!w&%pU>0N%|Ld=%aX-Gs7m z4J-HZ9eoafe@IVN9=Zj!(Y>WgO$~Qm0%X1V$T9+P3pAI8MwaP|TONfzOsyKK6RqH$ z2~&$(^-{Pq3v9=z_b9Cx>JH6dHRPq@R$HSc-mqWK9By!2RYNB7lB0R2(6ZC-byKB{ z`#nlL)=))f4)G0UiYgSdXW)L!_SWkK>o^Z{Ue3WBwUX#`3#$!$Q>CSf$Kf@|_vKao zl4(TP-8?73F**b92XKVnz>g&xGQmfIp>uw%p%6dFo-U5{qf9b?{)1CF%IMkrqHPy! Frf*NVcrE|{ diff --git a/Libft/ft_strlen.o b/Libft/ft_strlen.o deleted file mode 100644 index e5563189f7ffb9f76d73eb6efd9f398b04828652..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 624 zcmbVKp-uxq5S^oiD>>+;grrb)5(yZBI{~f&QBgM`r38}pD6oV|5=;|R9j?Dpi6a`hzWdZqgSy Cv`MJ| diff --git a/Libft/ft_strmapi.o b/Libft/ft_strmapi.o deleted file mode 100644 index 8eef3c68ca51aaefaa12c673617b608def692e64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 792 zcmb7Cze_?<6h5z~sZ>f3ymHZ&s6nWfY)YuMhK7c=o0yT{uj)mC1P@w*mV}0&A;7MOPl?D zv{m}VRv>a>AM)&dsxE|?J~UMT5Mph4eeEZ9*pnix$Fmj=Tf;+^)59o4s*o!tQ>NI@ zA7t{ILaZ#g>kSn|6>dO82R{Rzd zpAgOA?vb10NIL@T8C2u=8uKrPRr70sQ@@s&NB@pAuEJ9L?w6rNr)eZ=RrIycH=b$5 zNn5D1HqTLJDlSp?dudog^R?GAoEmFJG@9r58u#*jm1EKFmKLk{FXdZZ)ZIH!@5-Oo zFPlV!WQ=!=-Nm>Ft^NsM5X7-4NDzx{s06-Q3c2b`U7_nO)qvPC#h$sFP3K9`T(X!U UkxOQ?g%oAYTye%e`E`lD082u9{Qv*} diff --git a/Libft/ft_strncat.c b/Libft/ft_strncat.c index 9985563..e8fd047 100644 --- a/Libft/ft_strncat.c +++ b/Libft/ft_strncat.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 07:51:04 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 16:19:58 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 16:19:01 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/Libft/ft_strncat.o b/Libft/ft_strncat.o deleted file mode 100644 index e83c7199da55dd89dc4e29fa72bcfeddab8ad349..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 928 zcmb7Cy-QnB6hGG&?Mq*6C z*{{j;A86iY$&yX%;OuzQ;@}pA^!0aM-ZiPXc;I(F?)mr~?!7117k?iS34*YS0dwpO z0+45b4!yh8$FP%VE3zhjfO1Ah)TWe|UGrKql$x1(KhuhhC)?(6uZFTX8KVLlBTBi8 z3riW-Q>*!}^Z8Foy`3~Uwr0*?bXYZWFf5`ltA!O~&`*J8t{bEPgp2sxMqd}~9PBGt z2Y3gta1Dcdc~{1LC9uS4W8Eq>Dzv@7IZ!{a2I_~E{__5&s$v)@^wo3 z@lJZ8t@wA^kl%)=@QZ8C9l8n<J}F z84=!PM8YCD(g)iK3&Zc$^#b-W93yFt@u<1C)#F@pX9g?*fK diff --git a/Libft/ft_strncmp.o b/Libft/ft_strncmp.o deleted file mode 100644 index 0aae7fcd7d331337772487cb0551dd5b7ff10a15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 776 zcmbVKu}%U(5FI!W@RTbsImLz&I_<5}-}=_fj>LM0b&o z_c^39(ova|-qEc$(U7vSz2BJZ<0zBRi)#&+p>`0@E&3o;s^MMnv!1ww+MvXJdyzzC-M1XRIlMH*xSG^z{WWYuH_#8vA{~b4wuP) zcgg=Kk*}A9uN`<7-X%~UL5or3>Ih( z&)Yfl8(y7BGujJ z%>h}a&-sop*Cn_(n=kjDbJXtZ4@pb&UdRnU#C=`#dXITt!`Dzz_i*(XciK90)sOW3 z+xNw1-Y1xsZ-2gwEWY7<(OMP(8lHn4hm*)N#`w@ho1@95aQ<&nq3|`OV^JRiwIA$N Wp|^giQcL{uR#nPDrM76+1^EXv5v9Wb diff --git a/Libft/ft_strrchr.o b/Libft/ft_strrchr.o deleted file mode 100644 index 13f006b4b3c7ee1284c5c581ec3c11f49aba071a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 672 zcmbVIyH3ME5L_n#8v#iHk|9l8QUVQf=K>@O3W^kTCuBfDkPyrvC?nC(<_qF7zmU#< zfM}>gcNF;mQ($JDyEsTlNUSusyEA)pkC)HM*9wtE2wo~ciwh4xYyv8;eqRzzKj#ia zrnkW}N?I2}o&DZ03ua~1hsgS>KkRp*Z2(hk6~h36hnPRs`+LY9`eo(-4xVA~UOwYLkv-AtxJK!_ zOQX!DRJp-OHOPnOx~c`KV+For(XDa^b*Dso1)umI4c3;fls%{qsn8UBW^)VFSMZ-? znLG9Sd*9d&QrxSbl*OBQQ_O{zKi5#RjI$Qk&{a{G;9sobb7D=fRGZUDTu5;zqbO`e ObS>N6oqXNa0 zmBUg9r&_KR99OJVR+lUHgt&2aI<6Y$rLzSb{3weJvIMEoLgPHvli;ZRF(iROoW%Z% zs52qoK;|J+;9FoOxI*UIxYQy3iN?D2K4|E@V3*n*eQq>Nli$(B2q2q#x2cVD*!D8i zXWuYw`|RhuE^NenFJt%3I6d@q+c#dHd8&Md247}t7T@p!=9?KH&h?DR80?d^Cp_KU zHrMTEIokL@>*jNg50b!60#l=XFS#|_k~puLb0eI=%mA?$JVVq!#E1cdYq_qAJnqqH zic!$G(!)O6JG%Hd-X-ie)(e{0FLH({^7qh-bGyhjGV8udSq$C+r3%RTh}A9L*gZH}NZnE`wGMPDP0uhefO z{e<&pIuu{S!7)9F#G&|0#Bn#Rc`4r^F9CZK66a{~)5Kl3<{^<{@tw!}wd}}FWTk}Q zc!HnqaVU!TwXm(`yd-Tk*G;zhG09hV7HWE`p8sd2%ut`UPalY1KVXx%?}|rmz2wv$ uL$6oMyi{D}cZzkTmX<0?b?eJznSHn5JRngnluA{HN^ZG!E?oIMn0^9Qn*u!m diff --git a/Libft/ft_substr.o b/Libft/ft_substr.o deleted file mode 100644 index d1abcbe0e1551f4589d91ffc49d0148a08dd3dff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1000 zcma)5F>ljQ5I)xpwh0hbtuSZ63BR!Y*+x++pZij;v$ znIbVDF*Gna{RPPcQhxw~fw^qYjTpMwNWpw(`zdL}(39`oy?6J0clJAf`}6znB_fR= zyo^HE*eO6E*P$}@{=c+iB+-6q)!sll>qrU{!d-ps_Bn)DTv%G{@0IsqfRC|`p7eyq zsw#)A5XFu1=1S2OJC)t_$_pVLKNyTFoVv| zuK|~VZNuJz%|f3*SvZH4v0UQ}G4|(?sHT1I?PXfM`&y%^=Yvm2Q|-_CRNx&gw`G>X zrY-{Tyq8%gG&SnVcL$UEM02P)5#=bn3hU|1fix)eklO-|G^-wCj6Md~7&Dx63=Z6V z!U3OoS^b<7PE+;AOokft*80eN$2Nu1jyX@I(eL9+Eg#_9Ohn^|1BY6t(nfqVsmXkD z+zDIg)6}f4oI9AbsQT15s53p(m$~lW1O65By^&fNo{I}NVXweZlIJ}JMa?OPaszSvlWI<5h&{9? k@zNFBJI}Y>t;BV=N~;wT<&{!tqevyUym>obc~~L;034LLZU6uP diff --git a/Libft/ft_tolower.o b/Libft/ft_tolower.o deleted file mode 100644 index 6feae5c437e7a3858d479fa91e0d6b7aeab4b71f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 600 zcmb7ByG{a85FG@CWR=xufmHhmYNI8I+EG|g&`k_rBmox9HBf42>laY^4cl4T5gTo{ z+{PcUP|pl^a7}ESX7y*vad)(pg_PjWv`1p;Ps2t6y@#hFzuGzUJvQ~2MlC&N*0zyV j+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T0Tu25o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNe&jdCVX-&`_vTQH(bNN=X1QM2;7z7>I!YqzEL=0c3#mTL5VVAk7WL0YD4_ zAT=Ni(hIf&NRtZwJ2PB-z|FAp1-HXaj#kFP7t7~M0pr0OXr>5Q>?Kg_`h2Mq3`k;) z423WF8Fm8W46Fvk2C09*@30eS-oyjU@z-GP0EdSF*qJaPI1SXpCJf~9fjj^OAm8%= kJp~I#kQ6_XJVSh1Nqk9uX+c415kpQ%Zh;|~G=S*`08)TIf&c&j diff --git a/Libft/get_next_line.o b/Libft/get_next_line.o deleted file mode 100644 index dcf776a4686982b7a8e2055048374f2b6a5d706e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2936 zcmb7GO>7%Q6rRn-@wzE>f+D#jQXGkkb6C_?2vVdVrwLLIIYd>2ICUEA4GuVVNsNjV zRWiy2DLoJY5)wZ(f`c9P&|B9hK)&RF1XLC3(YdWFD&S@#1@pc6vDdq4fsw~=-pu>` z-u&!Oe?9*DG-C!sqrYKvmj*NFXwRX~iB-Xd{@NpQ>YGRwkkw=WlLrYX+3_rG?dn{)CPL>b<68p^0EhoM(!g z*Vi&7{$An6Mj^}j@={L`107dIO{QR&>{VinMdTcX+iMpvI*Ts-JOg2LG!mluL+FhW zJ;m5v&{6aibZQhcb<%~Hz!BtswQhs`a=bHCJKkmcmBpl6UF5E1uy?(Cw}A-V z_-;4Zeiig5?S9W>(c;`|L zIPHIL@?ZUUHAh+JD9-BMsK^5`1>zc#`84C{y1*;2?#K5<<+lY}DT8&$w~ob%sa%1d zrEJRl)Abf?TSn|1!oR9=((xyiP12{>9(TKmkREJa4#Y_^*iaH4T}W>8I?~fUM4*Ek_Nj-b!FJ2WS8QUJaD0Ui@huNy|&v_ayo9Y_mqtV zqkM&ISPVLdTl>X1pZF1V(Yh2biT89Y0SwXSJ|?i{+KX9%xDuXgmF{`G@j|bKy_|}$4!s9rY@lwKOR9TeFxLM4h`2;MhfRP+p9up^&FgQ4 z(0We2j!RF_zoQ;!x}4EM`roQY_Kx%#TDS1sfTz^HI^)Me`3pY5r$P=kJ2T zwOs+F^)KZ7@@JCHXF=iGo&$v|8}EhCKd08ql8#(cG_B~2q97zcQUg7Mfo>lV4}i1I}C9id38eVq~n(zoD*X{9ARGGnZFU8 zM{UX{Zg6hT5V;I;ULCw-5fHf^P=jxqsS&<4Ht#zxuzM!`wsFyU4byM#yK8E l`+EQ4>fAcz+*CxJoLiQtf>pF^OO-1HDcYs#mN#ySd;{UChS2~3 diff --git a/Libft/libft.a b/Libft/libft.a deleted file mode 100644 index db4ac599d9b94cac192a4a5d55b6c8bba46ae0d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35288 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 diff --git a/incs/bulitin.h b/incs/bulitin.h index 659b09f..6b7e957 100644 --- a/incs/bulitin.h +++ b/incs/bulitin.h @@ -18,7 +18,8 @@ void ft_exit(t_data *data, t_leaf *cur_root); void ft_pwd(t_data *data, t_leaf *cur_root); void ft_unset(t_data *data, t_leaf *cur_root); void ft_export(t_data *data, t_leaf *cur_root); -void ft_env(t_data *data, t_leaf *cur_root); +void ft_env(t_data *data, t_leaf *cur_root); +long long ft_atolong(const char *str, int *flag); /*builtin utils*/ char **join_cmd(t_leaf * com_leaf); @@ -27,7 +28,4 @@ t_list *create_env_node(char *key, char *value); void add_env_back(t_data *head, char *key, char *value); void update_env(t_data *data, char *key, char *value); -/*execute*/ -void get_input(t_data *data); - #endif \ No newline at end of file diff --git a/incs/execute.h b/incs/execute.h new file mode 100644 index 0000000..1312fb8 --- /dev/null +++ b/incs/execute.h @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* execute.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/08 17:49:19 by eunwolee #+# #+# */ +/* Updated: 2023/08/08 17:54:41 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef EXECUTE_H +# define EXECUTE_H + +# include "struct.h" + +t_bool get_input(t_data *data); + +#endif \ No newline at end of file diff --git a/incs/minishell.h b/incs/minishell.h index 32997ad..f910b25 100644 --- a/incs/minishell.h +++ b/incs/minishell.h @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* minishell.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:05:33 by eunwolee #+# #+# */ -/* Updated: 2023/08/07 14:53:16 by kichlee ### ########.fr */ +/* Updated: 2023/08/08 17:52:44 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,11 +20,12 @@ # include # include # include +# include "struct.h" # include "init.h" # include "parse.h" -# include "struct.h" -# include "utils.h" # include "bulitin.h" +# include "execute.h" +# include "utils.h" # include "pipe.h" # include "message.h" # include "../Libft/libft.h" diff --git a/incs/pipe.h b/incs/pipe.h index adb1c25..7ffcaa8 100644 --- a/incs/pipe.h +++ b/incs/pipe.h @@ -26,6 +26,5 @@ void close_pipe(int i, t_pipe *base,t_data *data); void wait_child_processes(t_data *data); char *search_path(t_pipe *base); void execute(t_data *data); -void get_input(t_data *data); #endif \ No newline at end of file diff --git a/libft.a b/libft.a deleted file mode 100644 index db4ac599d9b94cac192a4a5d55b6c8bba46ae0d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35288 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 E0O=4FmH+?% diff --git a/srcs/.DS_Store b/srcs/.DS_Store deleted file mode 100644 index 21ae4fd7d18ae537e6136c7ac28da42f6acc6f6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~L2uJA6vv;tc1b8mJ%HE+DH7Ldbn6&YyOc5xTnT~$pwcuEi^!6yNmrz*Qm(*v z;45&1Pr`TM1pjAykfiL$#E@TQ{~i0i*!?B8V?j#kJr3Sg&|-F{A&bw?poy295Xkj()>+*wD7X<0BPrkG?do7{Y5tQ zW9j|HpT<#^ce~$2W24#Hv~0_6+poOibm8UWe4Y)*vlo2zG)-gwtUUIgMd4!9x&AOs z@^O@eGZ_#CAzWTQkCGr=4AXfMWHQ!M4Yp%Dqt4CcvbWpccK7eCw%uiauZv>uV6}4W z8@KNqJ{i4@Pm=V#95x9oQPQqyJ(CY8)DWC{vm{QFH)!D~i$Z#bGy$fZLbbsC0`wUk zRX`Q*5}>bjK$c^*t-k}vk$|?A%l!jT>D|Bkn^1qRMu-W(&L#8_jWq@}LQP)yk@6}V zaSM@UHZ8nliq5R&$$gYP+jOGunb9#~V*GY!Qj7Xti`t|qjcG<1B5FM}_-U4Vu;CX{ zfL>T9^|8wr|5NG3Z^@_6(p*Lv zR4yIJ4zw0ZQ3Ep{0uqDC41o(J@Dt~h@dE$= diff --git a/srcs/builtin/.DS_Store b/srcs/builtin/.DS_Store deleted file mode 100644 index c6f166f562757e467a33ba7d207173a0f2640bfb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKOHRWu5PdF{=x0HfY>;w-O57k+Wx<*Q6!k+virR{{&}H@<0f{Sc4X(thys@Vx zP0SV{n32ZMvFFA1i|mO3xZZkv4s-xC=z{eYi-<|Tc*SbkB0T5cvBEuO=wfu0RidrI z6fgyTn*y?Tn;2rvotvSsf9IoNHXpKAj)pgSck7Kc;H1PDkT2W}%dqV<> zzzE}Nv^y(BH#K^~_&dxajOP-gv1iQi7>R#j{CilE=5L5=e6c3yd*2a@%k1y9MtSzD!`mA z)@TQ`(iAWSOo6=uay}$v)LQ#^1~pUL@`y&1G0za0+kr3POlg) z(Al17T&kD{40JfXd^jE1=?%sC(fR(whr^`-tuzHpfkOq3!edAB|K<1h|3i{JnF6N3 zpHjfp``7&*m!!G1vN*}L3H^pHCUJQ{Php|y*jFSKpVGatFOdo{Rm=mjg=RkjUIr^n Ifge@i6Y9j6%K!iX diff --git a/srcs/builtin/builtin.o b/srcs/builtin/builtin.o deleted file mode 100644 index 4ded32f2c5172973f934cfefa69922320c6d174c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6128 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 diff --git a/srcs/builtin/builtin_utils.c b/srcs/builtin/builtin_utils.c index 99e369e..1bcb144 100644 --- a/srcs/builtin/builtin_utils.c +++ b/srcs/builtin/builtin_utils.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/22 13:20:41 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 15:06:01 by eunwolee ### ########.fr */ +/* Updated: 2023/08/06 14:35:21 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -79,7 +79,7 @@ t_list *create_env_node(char *key, char *value) new_node->token->type = T_CMD; // 환경 변수는 T_CMD로 설정 new_node->token->redirect_type = 0; // 환경 변수의 리다이렉션 타입은 0으로 설정 new_node->token->str = key; // key 값을 환경 변수 노드의 token의 str에 할당 - key_equal = (char *)ft_calloc(ft_strlen(key) + 2, sizeof(char)); + key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key) + 2); key_equal = ft_strdup(key); key_equal[ft_strlen(key)] = '='; key_equal[ft_strlen(key) + 1] = '\0'; @@ -113,7 +113,7 @@ void update_env(t_data *data, char *key, char *value) else { free(tmp->env); - key_equal = (char *)ft_calloc(ft_strlen(key) + 2, sizeof(char)); + key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key) + 2); key_equal = ft_strdup(key); key_equal[ft_strlen(key)] = '='; key_equal[ft_strlen(key) + 1] = '\0'; diff --git a/srcs/builtin/builtin_utils.o b/srcs/builtin/builtin_utils.o deleted file mode 100644 index f89a3d0ce9b24267665cedada5b57c5ca510ee83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7936 zcmcIpdvH|Oc|Uvao_$sfyBBF;wX5!~ zc*IUkC7dB~CPZU0lS$GTJZ_6!|B+@qV<1WEj4~NAwa2xSxSdYMl~e5EHfdcqnIalW zf4_6j)nltp($^V%=X-zWJLlYczjL&&-}=SBR|?@1Xzcue&Fo?Tw1t4nrXpwUuFrSH zhvIwdWZV#WN&Z5InI3B54LshoHY4B=Vhps5@J_)Qsogd zLVEEsxg&WRl*ju}x^CBX+=S)wU5njy12=0tOj;S1$9qfrAJ%)-T#g$sWp`$mG(t-Pt}h6(Jh+dR@@M(|Av~ zHD|HEdh5&P>pp+kOwOT8`FyYGc#HM(5?kN~{wCt-M{-8I7O3k0uC5A$1JGzh`DOU= z)va41#0_A+r(FOx@7-md_%;arXi@cBw>vw;8{i`Wd~e)-%>Vpt(>Hp-Tza!n zobJ9fw&e09)4qA5T1+ThAtqGJ>Zx(UuzSB+T*0{Rc+`cpKKRTc_`3O3w_ZU`8z=o? zqvDP|a+&#YtiMN2m%xXauNi(pe5UnjpYQaWSd{bQbH&7sxl?h^3U|Ce8(DgDHRoRe zT@66CPP`90j5XoSL5)ehUYn4qbEVA76>AnU%H-4Hy)gET%Z;b*zNyAx?iE;*X}M$H zYYFdR4$Sis^5VD`M(mrnA8UUe>pSZ@UmRI-6Z88LV3hL|{@*;`4$c>2EX5oZmSRE} zt{-_3)@$X>4f}xajM|@Z>M;)2ZM}{YhTSggBi8H+{kbMfrMSX9=UT1---t0TfLA$& z#ON}i^Te~^$;Uz8!2a|3@??DG!aniTrJ#!cF{Q7VrpF$H{bDra3qOVVDE<4U80G$9 ztjTp5N8F1ekErq09IMRr;Fy&o6lnZ z`HWoDYg_)DE;K^3 z7=s z{Xj9}Bh~}J3}!S7tJ|aFA?qOM8p_v3tuw$3XsoLfL6ziuNJ7idJxr4|VFxH`th5Gz zIc;N=unHc%+Hai(ts*prCeO{PDEsnfp)#xKRB4QczOT4%fvYk`{XZmEL!F3tB^;j( z;Tw3Gn#Ht(*Wl}ldlOXvUfFtJa|ykwjB_y#Z7y{qo~vu1F6LUEi!LX(jGTyEh8>$5 z|LgSHHU^&YSJQ4ACjhSho=J}J*O6XO!=T4VKOC~s9{otv z%7Equ8g`vk1kDXI9*tQifxp86la1Ctfb%|mw%Qe%7g%RrUJHtTD^8yToo zSbqxoAn7*02m!=15CoQnIzj#cNVzM-#9jjFpC2VzlcKqp^F4?{!C)R-=+o%_1-x-6 zd<&@2*lYQ`DRl`e=+O`Qty<73^X`zf%#-hrT6cSNPp!4VqYu=n{Z&iziN)4dPkt~a zL>uo+u~ash>x&(C3dKx57hAWXd2RFhSfi3Qt=q76J@}TEX2{pA5ye8P81Eg*WJ{Tx zhwY(KCR=PyiFjwGw~#EHinlw*oos&4Da3c=2L_V4bSJI>J^6gL7~kK%rx@RxOzqo$ zsJWOvCZ>_`14ZNzcW?uNspG_t7gH!{_KAGqSP^#|S_@pB3AhHkc>uv|yv6p>Y_xEfcsYW#we&J-M6vlPeMFN&^6<%e=5J6Y%}ilg~V&Q1-ag+Wv* zq`iOlLmhU{C%ZaqTVV0*!DOkQ%fV+)36i~hO7OpnlC4nDMY!oYCou(VOFm^E$tL@z zm`v6Y`2vTpOBY&M88cQ)ro(b4kWJ$9Avw8E-thzx{PM-7N9R52t zTn8K*)$txk{TG38O#C0gug?ig72hd!{^G4Y1fU=P=`shvs{zO5jlbmoM6~pUOv8|I zSF{jx8h(_jt$%J!y5ah*zJ}Zw%gAd-`m}&1)Ne_g9Piqwk)dU!RJ7`SDK`zwpyKO!OYWHo${` zG~fi_^MKz6d=oGRcnk18;Mag^On}FXj{HM(;}YlDB^KV$6_U>h&5VUvC2@yvZF;j5KzPuf)=q> zQ^fMEV=*j6eSnn!G#&*h;@MC;@{~&v&jA>Lja8T;mSt_lYDf`_q!zL4QN&89N8|~G zA|5QXh!vG07FzAdb2CLbfF6-cM-j{3N&p&!OY0-ega(O>kRkcL@-5K#FLQT!@k zwjo&=u*_G)uv|W(W^M)cVx+4ukZ0655;1Dwvz#K}d7O?bvXGv;M92*?cvQopei(*( z6uB~i{GfoeIw2P&WD~d*;93%L;V@9jDQq*(c-ZWJw80xls}BxGEN6Xpv~ zKxV#$)MJp{gBVB+Msv9-ooY;Xo-%BOhEzJWDq&$h3)gVK9Ea~J*A@GPm4=>4h=BQx zCm;xz@4{ly9t@C>n}+3dzo54FKa#HhrF0FSeH z91nPn5KWH)qtZ6DYWxx4DEJsKs&G@SmRADfKk-e!#!C_e{xL8rb<+i4{MV=HJTQJ* zYI+=a9`H$ExOA3Wyfv-$ytGo^1B}1UE*EdTiIIfk@_vb%#-C1r-!DWVz$IT24>v90LEYEt1jO9bF2mZPrx3cz$T5~b@hQK zHQuN3$6=3h5m^OH`_mdfs&T8vF^z$g-2v_YHuwl=uQig#nBMPxKhgZ3VDZ>~0HFSL z&GYg~-uwOSb!`p3$6VNbg<*)wmCIJi$ +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/08 16:41:29 by kichlee #+# #+# */ +/* Updated: 2023/08/08 18:49:11 by kichlee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +// long long ft_atolong(const char *str, int *flag) +// { +// unsigned long long res; +// int sign; + +// res = 0; +// sign = 1; +// while ((*str >= 9 && *str <= 13) || *str == 32) +// str++; +// if (*str == '+' || *str == '-') +// { +// if (*str == '-') +// sign *= -1; +// str++; +// } + +// while (*str >= '0' && *str <= '9') +// { +// res = (res * 10) + (*str++ - '0'); + +// if (((res > 9223372036854775807ULL) && (sign == 1)) +// || ((res > 9223372036854775808ULL) && (sign == -1))) +// *flag = 0; +// } +// return (res * sign); +// } diff --git a/srcs/builtin/ft_cd.c b/srcs/builtin/ft_cd.c index e3783dd..20ecd83 100644 --- a/srcs/builtin/ft_cd.c +++ b/srcs/builtin/ft_cd.c @@ -6,7 +6,7 @@ /* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:31:18 by kichan #+# #+# */ -/* Updated: 2023/08/07 14:34:30 by kichlee ### ########.fr */ +/* Updated: 2023/08/08 18:32:08 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/builtin/ft_cd.o b/srcs/builtin/ft_cd.o deleted file mode 100644 index 571017fa8d1bb019d6b8787caff142b5f5c9f114..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6552 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 diff --git a/srcs/builtin/ft_echo.c b/srcs/builtin/ft_echo.c index 0930aca..a11a469 100644 --- a/srcs/builtin/ft_echo.c +++ b/srcs/builtin/ft_echo.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:30:59 by kichan #+# #+# */ -/* Updated: 2023/08/08 13:26:37 by eunwolee ### ########.fr */ +/* Updated: 2023/08/06 18:21:16 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,7 +28,6 @@ void ft_echo(t_leaf *cur_root) i = 1; flag = FALSE; check_flag(cmd, &i, &flag); - printf("%p\n", cmd[i]); while (cmd[i]) { print_line(cmd[i]); diff --git a/srcs/builtin/ft_echo.o b/srcs/builtin/ft_echo.o deleted file mode 100644 index 709adf0588c08cc0087e977064414252c882eb43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4752 zcmb7IZ*Wvs6+iF2y_=V8^73ba5GZA>{8@%38z8o!1z89nSyG`um43j-X7`bOWV5^M zZc-@K;znnfaYjvTXY4p5*m1_hPmUutsoFB&IMiB|5BkCJLv+Sz!q~A=bP_P)@4R4gMfCM=S84UIgjk*_l&W zHmSt>ot)D((yCQ=fhQ5HaH~t=A!w(y67RM&y6mhZQLM%VDf?F7#dEo|WoF_7Rso$V z@m`YgeO&_F@+NWta7nyu@96}0sl&fm5FiI>O@z^|e?n0e05Bu%qtZ&@t#gKAegDV4fG#7nL>x*XMt`E&PQ z+Rj*PQW1xUFP`M_0NrO5_Cpas{5y2zqINGxqT~fxvws$k^Oq_{{7}r4YERKrmFtC z&D{B}F~mP|RWpBo|2o~AY^K>i1!?xr^)$;dPBqhn<5zQZcDnh(1jpt1T#feWdYZWC z`M#*n)$RHfcWkfU0Y%1G-cO+4gmQ-GUBI+H zeF-1t`$+thoHra>%cg?S37)GdVBf-AO*cm;cr46w<1}Kv6^zbyE71v-yA_(4u8+=! z!QVt*%+vgQ&7D`r=7!yU^A_fvedhh+>;a|vE4mWh?)f;Sx$)1pv;QOR9Hr#kxNRn{ zcccFHLVTX@$b)(O8rbt5o6>5&58oE;v+}+0NBBHy4n$ zjM59n-(EBtnpYc*N|PVC*Fl=m9o*IOMBvGQiY(ODLGj5z0Lka`DcwQM2n4tdS3npo z57iU-+W^<(kFL}VZrRwf3pa9=AXO^5gUI2IMPjvU^4^Or3sy+vN+9HXJ+XQ13NRO* zs4l21cwy8z4)egBd_c6|^l%RYOg~C3@iEg4`aFv$e3W>FuVD2@kUj-ceAV->2<;ja z!sqJ)`vu6SHVWrn6_bz@(%uED@?pl@!hDSnZqLRIt!#o@RP6>p)DE4JeV?&613UZ@_u0&SAcbCWq-IxI>0obW z2_r3Y#%+}&HN46_+gPHSP96be9Hb2Jk)uV~?{9IR=skSr{odnP1WrI#o8k{h-GN1b zXKIJB3Y^ndeT_-vp^ogp4A16+BU&3{!xy1K07X z{WU%ZKt3M2_w~Scp6oPaHaW zysePzr?P6~nF2MICQyi3bBf_bcLgF@}E_lhEm02u&NIvu{aG`#W^WeoXf1@^p^0v z+N|QVmsot-vWgR!V}G#d+`L4i)H~-TwJ(0VvO)Qox0L-I;QE}aLQ#}^xLCk=D3D@j z5`{&F0XCVPv)WSJioHIVD7y89GlDm&Porw)PSJvjXsnqLtNk&tF(&kwKxMiApr`?d z_k$AlUaq{T}@)z+4vt%kNPCaRqV!+%FKL1Dy%20)3{;KG++ zccKJfZCzSJO>Nwk#2 z!!Z$xi5ADZDvo(rG`KSeS1>iCz5e1GLet(RZp0j45z5nQEf)E=SfM(i)?b0+jOn@I z@|}0EYOMbN9GTbiSC{X+D)m1F#}4h`I~089H^K3MXvLe&u}gvjs^_H3cOC%8ZfOmJ z<2Os|L*O{!S~v0r!_e=z?SB3-&hjpBJZX##QjSUD@`A@R z;E?x!hp24#@}el)@1PGC3&j2ZDdo>dc}B{7YL?@fEF&=Qcjd<+*O&Q&_c!}HU$_oZ zy)5r><@xr`3YpBsccGcc4&qvi=lcqjHrx2dF}=$Vm)QL6XFAv4DRQ}c4VtI3cE;oz a$hB@?j@2O)d^e6GH+G-K_7{_QvPC z>+YVh1q9cjC6!RARjR6Lt5PXdgH*Lrp=#-eNctI-BEBRfq_zZ=O6HHMd{rg13H|+c zXJhAx1pOH4&3o@RZ{EC_o1ORUXW#qlg`^M>fyOQhTF)*GLR$>_vFeML?Gp6?e2{a{ zLcInuDM1j;Fg$C*3*M!)OQjSMs;mm;3_xxrUd26sTY?yEBj{ryy0e@mWiBM%F07WOKX0;p z+5Mi9{!YtXwdgX?IaambTxkq(c}Aspw_VH|M*sFXQz4Gyqhjmvdm+x^67#2yH(k6a zRsMqeSFno~r&RCvjP$on&Pq1~j$7bQUd>DVbz!pZ0;)Zl<AP6J$seohId>8|@kfst@1DPB>tpacb4oQ{n(zNn*u080 zX5l}s!GEn>18dG=J!0WHC*?Zy$2c}~t&29NZi>%{Py6v`K|CB2^aG+NWNwVU zUsuIUdqmLYi=Y|WJ_i4@^;7%WZxT=9y#4s;D-!w=(pObH_?bUwo4ouQJQot@gnRg~ zSi(8;&(bQ6Z%D6jH>7VZrQJ$yBt2votaQmq=WWNzc_n9Zfmq>+NJC_W-l(bi^u7Au z?$=XSwCW9!g}59_w@~$+jawFPNZg!Iuv>LGfX#^nE>$!d+1aS-i3G=Rwc0VV1UVzd zyiwBup9^C>EvnApm5b>F--sp@3GKvlSlfMxx}bUzry%XnG}#OmIK%aBjLa>p*ZDDW zne~XHK7z22Sw05)bJWM+lrwR?8}e_6ccyd`+z)PTi%8H%;%Rirm(XnhDXZ$Xf~Az@dKTPY@*1J<3FVbh zormjtXpf5og+v{KOSYh!#E`PFZVIeZ>DC_vw*f0R3jGVAye_VPHI&z<^lwA1=@X%RTZ@0pK7RWW{WBqcAT2~ME0=VxU>1kdo%fU9b>d zZp1F+g<}togfdM6kJvc^@`C-AZLH`SK63+xLdr+-a9puG;KEn{XvAj_>y%7PI{26_~9OQwc3ik}3xdB7XW=)6@ z3%f7njG=-#Jf|T2iIRh;^L9}RC7dvWHj0(8KnNUIj#F|B{_esXD~nvkG5n)KC}PL{ z-W~XQ{JIaH2@*-rh(%;og?laDM?1N3{MdJ{zVSjavgim4$pKIv^f-w2OhIgX+Nl#~ zW4fU3|B(S6u1SoodQGnNpV%-VUI9Xx=r`_zv8$*Oqw=pit`!BbPGlL)IV_*K7R%H| z&>~PS{pEX~|5JVIiB=LV{d~0ThBHI&bxs{ml=e2YrY7ySin1d0%$GL);Kf{1tM`!I_U@VPqfcs?r;`X` zDX0t72RaBE1sw&=fKGsZ1o|E5kDxa|e2khwt3Vq;dq9Jr3g|e9>GFFZ=0%wMd^tE8 zb0VR7ble^q-*7^F&YFG1PoRXDQ6Ni$x0|CMf>AXs1Dh_$Cch~*EVVUYC2ginb1Tl!)tKoF=c0shhIe#@%p1w>|Kso)YwX zRcu;)>i%g&t^P`6l_c(qzhho$yv1uC;Kf0mJ{9myhb4Xp9LLkocME(I6Gt5OtZ{3= zmw@9K*Zd3K=tsUu{qI1>(5C0W@%FAc0Z#iVaJ<87mVndG6X39ml_lQ-j(-v9*GN4r zIhb#ED~xGB4qb;3wyUWl!0`WTV^V)k+VE?hKW^~$Gl;& ztx8{Ar86(VUI{VN>S6Ojn +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:23:29 by kichan #+# #+# */ -/* Updated: 2023/08/07 14:36:52 by kichlee ### ########.fr */ +/* Updated: 2023/08/08 18:49:29 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,14 +15,32 @@ static int is_num_str(char *str); static void exit_not_num(t_data *data, t_leaf *cur_root); + + + + + +/** + * 1. 두번째 인자 + * 1) exit 다음 숫자는 long long 형 범위까지이다. + * -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 + * 까지는 정상적으로 종료가 되어야 한다. + * 2) longlong 형범위를 초과해서 입력해주는 경우에는 255 error가 발생한다. + * 2. + * + * +*/ + void ft_exit(t_data *data, t_leaf *cur_root) { - int status; - char **cmd; - int count; - + long long status; + char **cmd; + int count; + int flag; + cmd = join_cmd(cur_root->left_child->right_child); count = count_args(cmd); + flag = 1; status = 0; if (count == 1) { @@ -31,11 +49,17 @@ void ft_exit(t_data *data, t_leaf *cur_root) } else if (count == 2) { - if (is_num_str(cmd[1])) + if (is_num_str(cmd[1]) && ft_strlen(cmd[1]) < 20) { - status = ft_atoi(cmd[1]); - printf("exit\n"); - exit(status); + status = ft_atoi(cmd[1]);// ft_atolong(cmd[1], &flag); + if(flag == 1) + { + printf("exit\n"); + data->error_code = status % 256; + exit(status % 256); + } + else + exit_not_num(data, cur_root); } else exit_not_num(data, cur_root); @@ -69,5 +93,6 @@ static void exit_not_num(t_data *data, t_leaf *cur_root) printf("exit\n"); printf("bash: exit: %s: numeric argument required\n", cur_root->left_child->right_child->token->str); + data->error_code = 255; exit(255); } diff --git a/srcs/builtin/ft_exit.o b/srcs/builtin/ft_exit.o deleted file mode 100644 index 427a53f4fc4bbf846aaca9eb32932e2068f22f40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5992 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 diff --git a/srcs/builtin/ft_export.c b/srcs/builtin/ft_export.c index ed39018..975dc93 100644 --- a/srcs/builtin/ft_export.c +++ b/srcs/builtin/ft_export.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* ft_export.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:25:07 by kichan #+# #+# */ -/* Updated: 2023/08/08 15:06:24 by eunwolee ### ########.fr */ +/* Updated: 2023/08/07 14:38:53 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -89,7 +89,7 @@ int check_name(char *str) char **sort_bubble(char **str, int size) { - char **res = (char **)ft_calloc((size + 1), sizeof(char *)); + char **res = (char **)ft_calloc(sizeof(char *), (size + 1)); int sorted = 0; int i = 0; char *tmp; @@ -135,7 +135,7 @@ static void print_export_order(t_data *data) i = 0; lst_size = ft_lstsize(data->envs); cur = data->envs; - order_copy = (char **)ft_calloc(lst_size + 1, sizeof(char *)); + order_copy = (char **)ft_calloc(sizeof(char *), lst_size + 1); while (cur) { order_copy[i] = ft_strdup(cur->env); diff --git a/srcs/builtin/ft_export.o b/srcs/builtin/ft_export.o deleted file mode 100644 index fa099c14fd9d23d52798a0c872329832144d0ae0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8416 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 Qz+GB#VZiMOXD!5k06TSL>i_@% diff --git a/srcs/builtin/ft_unset.o b/srcs/builtin/ft_unset.o deleted file mode 100644 index 6ca2c2425741c3f9c2d0d464fbd5a7008d2d11d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4520 zcmb_fYitzP6}~&WWA9_UUSk6WUbL#wjF0U<0OLpt!aPB&8k3yJLIe_0D!? z*4Ro!QAjH)MNLpswN+nHnpUN1tEvxC|ESsusi8EF(nnOKFGor%M^!{rH42at`h7EZ zY~uzseO&Fi=bZ1Jd+xbs#^;Qmzw+u^nh+6z!6^osjbh4zFjjy@so!8ciOn2wZo~-n zYRIG{K@45@%t5ETrczRvXK(Az9=bnIlg0ji zCjG6E`!Bphe|~&rBfr?+tBd@-{to?lQ{}h4Z=KB7Pvosu$oFvmy8i1kr|Np%9!FfB zUMU^5N(EityJKzj zW3y+zv~n~eHWGj0gnnrjdtQkipN>pfm*|JKaaGiD@87OnTYmL{ZKrYmsUJu67b10$ zThsMwH2u(n>5CspXO=gm>mp04aKTOyP4BMXy5g?X-6;hriLL>#C6z)ZVzJ2X`e-_p z;+ha@3szPk;Z?10x1_48F`DMeZ7a5-oK>qrk-+YH6t2$e)I_Zynp_4J>_V>VBlFI+ z8b1#D+k~@fA~;%z^v$r}2)&k3rBYiU3J(t>couR0v1)=(xfgT{#PRWf`7BS!i(4vjEgsYy|9SP)w;)e+MqqmoP;{^f|EV7;+R0I*N?{1#`5nS~)d&(U;C+ zu2vq+d;)JuwC+y`D6Tvj|1`Dw7XvN!Icg0&A8X>v)Rs~ciRUpTU&QoxkWxs!3D%|D zrzzOE9i$u88O?yq6BNBs8w2Or%8{)0UGP4fp%^XNI`FqB54CA0 zz(NleLaVrmB|>r!`uWt25qH@JWNTA}R><=bK!Pxn2v#6^Na;$=+9i1bQ(7hsyQMSB7KJYc0uXqO@Xm2!7XB!2^eUaM9oXCTf%RCgtL0mc|xRzorU z2F*q7KLEw66H&au$uy=`!iQ3KfVC+5w9VlD)%%3DEtKCM)AmF5Bk#xi6XF9I%?#zi z2F(uT1C4%~eLwfC(k4UvU{;83cFJtNXp}~>6Q<)@b}8H5+1l2+A=~1k>)SiqHbC#_ zXa(NBPPk6q%?(woqGy$I!|V~R>9yuXZm%`u7|v8~hdE&u?Xv0Qw%g<5MyaqDb$`&d zi*9aU#~wGg&&cl|IMnJE#>4_KcfiH*ITI}hrly&jaPxM-)Q{TEn2Tm)=Jr`7%N;d~ zMKPkAla{Bup5awoVU;{#>OqX1;gd4E3V~P^L$NW_+2HcgLO;xtw&v zaf~V9*fyN#Mbj9jZ?dxCn25A!BEbBpRV)a{8W{~`ngkwkT?FI>mn>U2(bIkA1`Pe$ zM+$IUwhBU$?xEKf3* zmwa|UU<@(K_}KGwpSc0Ur-3;sMorw_&g;WPV`N^jil(p~L|w2-Qm~O`2CbJWlLY}m+_gBs`zgKdfNMTLsy#?|0_HabR~01?Ia zli*qSUJ+=JVksz}{nUdO{#e`e)Ve~mQ*Aa^J-f~Ofcwbrz1TgO*H?{Z4u0?9H@5$B zNz=<$Mw4e9{(fLQR^ZCH#?ft~`L0kPu!0rVOuisUZ?vHP$pu>uW&Dxi}f_QP+1 z*njX7d|+$9G1veJu_y9+7%b9+SiYC}h~F&@Iq7Iysn?joV*q_2^AU+n0#VuO~x*y{7hik@Ksti;owSuhvms7&X3<_X0WWE@*;yAp%>h;1!yak;|Y01LuFkv8YJE zHW<;mh}w{hcdIv5^{VgcRa3ocqE}s6wMVT5P}8ecSDjE3d({lIhF*0EmLF0Zs~-04 zZ|PNUq7keUXVl1kMZ;qW{EmX*;PtnIBbfDBaFm_(HaJYGwt^#=^jfKd`FI~6DAu<@ zPfK51+e{rbEBybDOSKEuS3+N)3h5VUFj(rau7ocZ%kn~dp@*3i`t>ay-Jw$Q&__pH cp|hhp=D0m!3jKZ?t&Pp1=#7`#{kcv26C`}@@&Et; diff --git a/srcs/execute/checkbulitin.o b/srcs/execute/checkbulitin.o deleted file mode 100644 index f96f73dec3f8b36f4696da4583181580b19ddb0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4696 zcmb_fe{2-T6`tF>J)duH&u1{k#5i0U0wxJQW86Z45*skZ2NY_X;G{`5=exCU1$^B~B2{FkExS^=;oD85kXz_XFzBWooW^$N-QD{PzB8}3g%dC!pMz{+2%C) zx9#sA+8zvxfajbxmaC$Tb4vrGjxSfOmQ16Zn=&2DsONi%hmAJsEAd@T8uRM9e3h|>@|;r7 z_jk#+T(1A%WAb_NRde}zzQr-0DBxR$kFKs=H$Hc^dfokQlzcDARa^fpU%oPhxLl)F ze%LA(3}e@}Yo0InmzH3x$$zh-c)#-1*Tv_5eKMG8?3_|a*$5}-}Sh#=av`2$>)COwDH1~N47kR{T%yM*!XRz zIdofcp&Cved^Gu&FDFxr+mp?q1;{8$uLvgx7v8mGgSJsqaKz!|05)qHPBsz=4K55P zHH~99&rXai#S4t`B{p<{b3wGPEu7@=$|WSh%Ta|Qp}~bhH1=NO#+w9Dtrf~&Cq!al zX#N?x?uA3f^>}15gb0Lax&`ys!A~(bP1_7p?7@Eh?195WO9*~EpMxBvi}qDtdHoyc zl~d?G3kgLU`GI&X{4$gpiA+Gf0*NTi>RTL9-$54=;j>T;k*G`r!b_>4sXqY?he;Mw zo=jcxyc6gfl_wM5#8((rIVR%YL#I8D?g~UHBqE5lPq|mupl^mK_X)if`gYp)$8(qOo&(j|3){jE-sY-smh~J7y;bwHvP&@;r zZ9vxnQF;=~q0-8o`W?^?p)R3wj%R0LdN1r5;@v4d2kiyArcK1j5&sf8?Fc%0%BsW` zsFbo?&q8~TUm^58fxR-K-w)ek=!}Utjrfb`wBMkcg(#a62cWu@Ui}H^c5dcVLjPJ| zuZ!v53hebM{RC|9DW7hek8?v>{~_=+*KX_-adKwh`S+7*KX5&Ullz z>90Y%T(n*2OQ5~!J7W4LV0$4Cru5qbJc|REg`*utcaB6`66c{3%4Yp7=o5gIKA|hn zzoy+E5!!Pw{(!;gGVSLu--W5}(71t1Fe9x=noVapU8Gc~SVR0xDD7Qz>j;k~HbZqP zyY&HRZ|i%7zB8~tAJIo)dyx;}`w8&jlwJ<(krsU>u=llj$L#Uky;OfZ!1t$x=x1$B z=S#WrM0(n^9jj7Kuj%dT?pmAf^w8C7db`)c@9F6RzGjth?7WjPXUu%fH8c65nV%f1 zl`PjPcjZN9mo;YR?AgpVbJ{Fbs-~UUTA7;4l?%I2Ek-Jpl9L(Uw$sV%&gJ(Ek9IkQ zNpY2#+2psiv8kcJh^iX*^u9Cmob9Gqc+&TTam|mBfT$&RDMDxH-4x2&?Q0 z(-^}lQ7b#vMAggqC>v$hA;cmZSmLqq-d7{i124j3c%>>V%+k)J9U)tp-tpyUhmfZQ058uvuk z@RZ{#+$zi&Q8cmpO5PYRsL0;^e03L+76uT)H0i4hWMzaaIR5W^VcwI%okeF}8Z% zkI?>;Ijl{KAuS|BW2IqyVO&U%5Il^}V(sFUo;O~iNeG{Xn~gxt6N@1E^fw-T{mrKK zXI2$D>;|(V`sx<<3(nEsxskh5?=3B+_W$JYKenD-(Ei8E6CLjyZ*Bj|FDE-bd1m}_ z_kkl?Wp7J+YS!wgDYvCw{raXKoy)hhyGN~#OJ{l?JEdk`Ng#-2kRHeYWE3(9c?@z4 z@(kps5a!a~L;ea0odmv+w8srG%Daa2XtULG=KCmQ4vUPZDDKlo0bIA*M}9&qPd!xmnUPMH6DqmJ6AF2{9{6h{=@@^Q~OS zv`dJ2Sk7X>AjBFXXR(wJVr`MLcz+xxvHzk z4I`n~@~&^!l|H;Pe?CU>`=7IMo_@*&&VNrLVO$t_u563cbo@PaMKr74nN`k(R8Q_Qqoe)dkVRY8$YQtQyX$i!h@xngtd+>`ldtHh4E<#;sYk zF{`#>#!`5Vm}YlYS>OHn^Jq zi(zf_E@&jRk diff --git a/srcs/execute/execve.c b/srcs/execute/execve.c index 5f36470..3b1c8cc 100644 --- a/srcs/execute/execve.c +++ b/srcs/execute/execve.c @@ -23,7 +23,7 @@ void execute(t_data *data) { count_pipe(data); heredoc_flag(data->root,data); //heredoc 이 있는 지판별해준다 - data->info->heredoc_file= (char **)ft_calloc(data->info->heredoc_flag+1, sizeof(char *)); + data->info->heredoc_file= (char **)ft_calloc(data->info->heredoc_flag+1,sizeof(char *)); if (!data->info->heredoc_file) // 파이프 기준으로 <info->pipe_num && !data->info->heredoc_flag)//단일 커맨들일때 히어독도 x diff --git a/srcs/execute/execve.o b/srcs/execute/execve.o deleted file mode 100644 index 83c3ec0f95ce25dbfae0bd4806810be19ffd4ca1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7968 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 MxlTR%FxBFJ05j^NB>(^b diff --git a/srcs/execute/freepipe.c b/srcs/execute/freepipe.c index 45888a9..46ee4d8 100644 --- a/srcs/execute/freepipe.c +++ b/srcs/execute/freepipe.c @@ -1,41 +1,16 @@ -#include "../../incs/minishell.h" - -// void free_cmd(t_pipe *base) -// { -// int i; +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* freepipe.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/08 17:49:42 by eunwolee #+# #+# */ +/* Updated: 2023/08/08 18:36:43 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ -// i = 0; -// while (base->cmd_abs[i]) -// { -// free(base->cmd_abs[i]); -// i++; -// } -// free(base->cmd_path); -// free(base->com); -// } - -void get_input(t_data *data) -{ - t_pipe *pipe; - t_info *info; - - data->input = readline("minishell$ "); - if (!data->input) - { - printf("exit\n"); - free(data->input); - free(data); - exit(0); - } - add_history(data->input); - lexer(data); - syntax(data); - parser(data); - pipe_init(&pipe); - info_init(&info); - data->pipe= pipe; - data->info= info; -} +#include "../../incs/minishell.h" void close_pipe(int i, t_pipe *base,t_data *data) { @@ -55,8 +30,8 @@ void check_file(int fd,t_data *data) if (fd < 0) { close(fd); - g_exit_status = 1; + data->error_code = 1; if (data->info->parent ==0) // 자식에서 종료 or 부모에서 종료 확인해주기 - exit(1); + program_error_exit("bash"); } } diff --git a/srcs/execute/freepipe.o b/srcs/execute/freepipe.o deleted file mode 100644 index 2faa72377a07d63169558f82635ce8576f5fdea8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5984 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 diff --git a/srcs/execute/pipe.c b/srcs/execute/pipe.c index 4dd15e4..1256e07 100644 --- a/srcs/execute/pipe.c +++ b/srcs/execute/pipe.c @@ -31,7 +31,7 @@ void wait_child_processes(t_data *data) waitpid(-1, &status, 0); i++; } - if (WIFSIGNALED(status)) // signal 에 의해 종료가 되었는지 아닌지 확인 + if (WIFSIGNALED(status))// ==1 //&& data->info->heredoc_flag!=0) // signal 에 의해 종료가 되었는지 아닌지 확인 { data->error_code = WTERMSIG(status); // 시그널로 종료시 시그널 번호를 저장 예 ctrl +c경우 2 번 ft_putendl_fd("", STDERR_FILENO); // 빈문자열 출력을 위한 ctrl+c 이런거 눌렀을때 바로 새줄 diff --git a/srcs/execute/pipe.o b/srcs/execute/pipe.o deleted file mode 100644 index ced5409083b4fb8f98c8279bd65839d8afa6c55b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5968 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 diff --git a/srcs/execute/pipeutils.c b/srcs/execute/pipeutils.c index 9c5ab73..c6d5209 100644 --- a/srcs/execute/pipeutils.c +++ b/srcs/execute/pipeutils.c @@ -10,7 +10,7 @@ void count_pipe(t_data*data) } if(data->info->pipe_num!=0) data->info->pipe_num--; // 파이프가 1나일때 2개가됨 - data->pipe->com = (t_pid *)ft_calloc(data->info->pipe_num+1, sizeof(t_pid));// 하나를 여유롭게 생성하는이유는 herdoc 때문에 하나를 여유롭게생성 + data->pipe->com = (t_pid *)ft_calloc(data->info->pipe_num+1,sizeof(t_pid));// 하나를 여유롭게 생성하는이유는 herdoc 때문에 하나를 여유롭게생성 if(!data->pipe->com) program_error_exit("bash"); } @@ -31,8 +31,6 @@ void heredoc_flag(t_leaf *leaf,t_data *data) heredoc_flag(leaf->right_child,data); } - - void recover_std(t_data *data) { if (dup2(data->info->oristdin,STDIN_FILENO)== -1) @@ -41,4 +39,4 @@ void recover_std(t_data *data) if (dup2(data->info->oristdout,STDOUT_FILENO)== -1) error_back_readline(data,"Bad file descriptor",EBADF,1); close(data->info->oristdin); -} \ No newline at end of file +} diff --git a/srcs/execute/pipeutils.o b/srcs/execute/pipeutils.o deleted file mode 100644 index 3be8a48e6d1b12441da7e33bc6bf9f28eed540a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6064 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 diff --git a/srcs/execute/setpath.o b/srcs/execute/setpath.o deleted file mode 100644 index 479b3b9909f779374862a78595e522b399330395..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7336 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 +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:52 by eunwolee #+# #+# */ -/* Updated: 2023/08/03 16:16:49 by donghong ### ########.fr */ +/* Updated: 2023/08/08 17:54:36 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -55,6 +55,30 @@ void pipe_init(t_pipe **pipe) } +t_bool get_input(t_data *data) +{ + t_pipe *pipe; + t_info *info; + + data->input = readline("minishell$ "); + if (!data->input) + { + printf("exit\n"); + free(data->input); + free(data); + exit(0); + } + add_history(data->input); + lexer(data); + if (syntax(data) == FALSE) + return (FALSE); + parser(data); + pipe_init(&pipe); + info_init(&info); + data->pipe= pipe; + data->info= info; + return (TRUE); +} void info_init(t_info **info) { diff --git a/srcs/init/init.o b/srcs/init/init.o deleted file mode 100644 index b0b527eb8de173d5df0fcde4a7eb9ce00bb942e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6144 zcmbtY4Qw366`tF>-Mh`%=X2~h4zZg<3gA@O=QyE+{17{T*p3r|6M`YMoAceq-sXIF zx?LxZlBTW=g-S?iL{KY%fVNa6ZG~DyMMFy))K)|VRG>d<=?|b%2x<_mplSk2)9;&| zjqQ_F3XJZ}`<*v$W@qQUykOjP$XZ=AzKDa`xcpkd+x6EZh4S?}nSY`ZrzFe@+c}R!M$a;Sb^&E(3o~VNa1m zD*g4SJ$*;vuW_@`Vhutl*R%S=qNQD>ztw8|chsn3!NyB#*;V+HUjvy}28ZGR13OUQ_+b}h?5D!-S+_(~+trdcgdIg>@jy79G zeE#{%I|ZA{%Jrtyem$#3jm@Q%5CiZhU)~CT9nkT;@pT9$><7f*l<&qkzPh{TBUWG@ zmu&zx#uq>gG~vUx3zOo7^9Mu6 pUx|uyuZG3Blo)?86dQjLzK)%acAi6U=ZIq= zg81j@=mVFW65?vaTo0Qs1CG*`yl>wLKNttu`GZ}@F~`x9Ve5Ane#W`9%l%YmLd=_HzhD}D=`^}o zoS43b!HhdBLbajG5_NhwF>xsI_U9AH`3n=Zp}DwLwdEq5=&4(~U}bz&T*G@1UJSvt z@i>luBogYW3n$`n>V(i+plQM_VAP17IwZ3Opm4%h#_B>-mS(kdO3exkoD+f{yik|I z{%Y`5oFX2-7G!lBBAaV;Hu`?9Sg;o9HK7Yl2{^81`3zRPja$RNFmNoeOyA-vWMvqFaT@L;nuxPshyb5R{}plQjE49|mYvqq!4!lJxGBc|Y*Gq%$pM zJp%kXgB)x(3&4z1%dQZ{84zK5GC~F?h=wuZ0<|4617u3O(yRtvO-F6QtPSXN%xnPN zMR|MDTn{V*UD_xN`Y<-3i{5~)37{>BEe1+zi_I&6<@A>eb7??d5i!?-mL6JS!XRPX z2}$&Bbh`lB>ewJqySChPfM28NQ^G6-^wlx*U_h@(ns0EqA*+X3|uK+>Vx%6$qYz^oeBIZiaGQxhGpFqAn zX>JSX9rfld0exem+-B)#XOo!?HZ>di#dWZhA{5d;Ru-HaE9dOe51bx|la@qqc#mZKwCS*<#MN z_7}^0T~s}GdJATAhwXe`3|aP=<5{kk@kU+Y6g**DgBT@73$8O%uyZNOHg)xF-zawU z-?&kDRxaaZgzF=xP#X0_b~sZOUU9EoaG}pTt_QtDrLrvw{B)37D1GcI%z93g?VMA# zQHx2AC9+-EM{wC$nQ}REK$MF`II;3}W)FQ6l`>@;vE}VOo|PST@;Om!EU(8y2@|mG2#>v~F zSVq)2r=W-;wwXa&h0zh8@EzFYaP`ICv`iMfdiu zZXR%cW)Z3YY?Ou6hYV>R>kDYiWUqV2ir3u!)k6=j-Z%M$YhU{{H12$LrZea<*40kJh#r< z<=*utFS0ZFucqPTO^@C7@AWUvUHIC2L(P9X*0Au4Pws8L>eQb1+Q;vV7q`_fOdfEW zN43k6&)vQH(O+ll7kYO&&1X+7KYT(@KU0MuP=<*Pz(&9TU@w688?(?ufX4y91pFEB z4?q}u*8o@oSPi%yFbEh0+zH@)`3QjbAk4)Xz+wOzD+Y>KL~wa%%xV-d-{HH1jpYSJ zEOZYsJqVkmE7&LPmn;Wg9Vs2}{3)>q2_{ zoY*6J*yz<`y~bue3c`3o7hz`t!f@k+UNx!5A)MQ*YrT31CgMpwGAA~sYnycwibSt& zK0%#nyeo&tq#OF!HK9k0@Z}SF?$xU>8?34!i}mW!3D^!u+a(iv-K4$% z@hFQaNdUf#=hPq~!P`AoZm%+iL)YkW6+Rc)zn?Z(*zW?E7opiJIqMKSq zD5HR&)zP!&<`fWx9*95akF?o)WH!c7XVg&pec#O3}t zW4FSc3a1nXl74#pIE{P2CqM`7dh*z#;Q!ep75taTW8uO7XDRSC7$4k6pHzHszpPX| zkZf0>r+sigWx!9HUS_4~{GJLub<_1bEBH>I*MbXkUxgmeWX5=5p|;Gs9*ZTbR4xvc zGb5H?a)n% VX_xiMyf;$n5bT%Az8!(0{TGG~6y5*; diff --git a/srcs/lexer/expand.c b/srcs/lexer/expand.c index 2ca04d1..3b9bab4 100644 --- a/srcs/lexer/expand.c +++ b/srcs/lexer/expand.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:20:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 16:25:12 by eunwolee ### ########.fr */ +/* Updated: 2023/08/03 17:41:06 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,7 +23,7 @@ t_bool expand(t_data *data, t_token *token, int *i, t_bool quote) char *name; *i += 1; - name = ft_strdup(""); + name = NULL; if (check_heredoc(data, token, i) == TRUE) return (TRUE); if (check_blank(data, token, i, quote) == TRUE) @@ -123,31 +123,25 @@ static void replace(t_data *data, t_token *token, char *name) int j; t_list *tmp; - printf("name_j: %p, name_j: %s\n", name, name); tmp = env_search(data, name); - // if (!tmp) - // { - // token->str = ft_strncat(token->str, "$", 1); - // if (!token->str) - // program_error_exit("bash"); - // token->str = ft_strncat(token->str, name, ft_strlen(name)); - // if (!token->str) - // program_error_exit("bash"); - // } - // else - // { + if (!tmp) + { + token->str = ft_strncat(token->str, "$", 1); + if (!token->str) + program_error_exit("bash"); + token->str = ft_strncat(token->str, name, ft_strlen(name)); + if (!token->str) + program_error_exit("bash"); + } + else + { j = 0; while (tmp->env[j] != '=') j++; - printf("token->str_ptr: %p, token->str: %s\n", token->str, token->str); - printf("name_j: %p, name_j: %s\n", name, name); token->str = ft_strncat(token->str, \ &tmp->env[j + 1], ft_strlen(&tmp->env[j + 1])); - printf("token->str_ptr: %p, token->str: %s\n", token->str, token->str); if (!token->str) program_error_exit("bash"); - // } - printf("name_ptr: %p, name: %s\n", name, name); + } free(name); - printf("token_ptr: %p", token); } diff --git a/srcs/lexer/expand.o b/srcs/lexer/expand.o deleted file mode 100644 index d61184845af6ebcd0f7ef3621f1032ccc29c1bc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9864 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 TLEmVTKtL|HNgyC;8;J7%TMBSP diff --git a/srcs/lexer/lexer.c b/srcs/lexer/lexer.c index a30c911..a21a25c 100644 --- a/srcs/lexer/lexer.c +++ b/srcs/lexer/lexer.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 16:24:37 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 15:10:45 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 16:14:38 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/lexer/lexer.o b/srcs/lexer/lexer.o deleted file mode 100644 index 10fe78837af43a3c9ffb7d5f457366846d8f931c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6096 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:26:13 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 15:16:43 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 09:06:12 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/lexer/tokenizer.o b/srcs/lexer/tokenizer.o deleted file mode 100644 index 978aa7c578cccc10264abdf91f92c2d6e47b553b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7336 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 +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 13:28:20 by eunwolee ### ########.fr */ +/* Updated: 2023/08/07 17:17:15 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" +// int main(int argc, char **argv, char **envp) +// { +// t_data *data; + +// (void)argc; +// (void)argv; +// init(&data, envp); +// init_base(argc); + + + +// char *str = get_next_line(0); +// data->input = ft_substr(str, 0, ft_strlen(str) - 1); //-1 개행 떼기 + +// sig(); +// get_input(data); +// system("leaks minishell"); +// execute(data); +// input_free(data); + +// // data_free(data); +// // atexit(check_leak); +// return (0); +// } + + + int main(int argc, char **argv, char **envp) { t_data *data; @@ -26,7 +53,6 @@ int main(int argc, char **argv, char **envp) sig(); // system("leaks minishell"); get_input(data); - print_token(data); execute(data); input_free(data); } diff --git a/srcs/minishell.o b/srcs/minishell.o deleted file mode 100644 index 2d6cba25c330b6d323ed09d119d45678a860cf50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4552 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 SgkxEv;1w&YW!-}*#XkXwAKn@O diff --git a/srcs/parser/parser.o b/srcs/parser/parser.o deleted file mode 100644 index 48be3080998e266384acf03d2afc52f17d37b1b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6152 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 diff --git a/srcs/redirect/heredocutils.o b/srcs/redirect/heredocutils.o deleted file mode 100644 index 77c49b6b926c813f435b6fe2d8c64f158c8de397..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9816 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 XeEWGJva`dbB_dxLDlJxZlaAwG@L)%9 diff --git a/srcs/signal/signal.c b/srcs/signal/signal.c index a2fb8d8..295093c 100644 --- a/srcs/signal/signal.c +++ b/srcs/signal/signal.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/15 18:40:34 by kichlee #+# #+# */ -/* Updated: 2023/08/08 12:42:41 by eunwolee ### ########.fr */ +/* Updated: 2023/08/08 17:57:11 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,7 +26,6 @@ void init_base(int ac) exit(1); } - void handle_sigint(int sig) { // printf("handle function !"); diff --git a/srcs/signal/signal.o b/srcs/signal/signal.o deleted file mode 100644 index fb6fa079a971eca4297bbc9a59bd111cc517f78a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4304 zcmbVPeQX>@6`#4iU7vmDJ3DscI7sP53P~e+ceZ0vt8EfnbxPtmC9+eRq(zhU-sXJu z-bZiGj!i5uXQ{PBtJo+=6|F@7s6-qgD6LebUm{fyC_+G~_>?LXP*DvCC?67b!GzzN zolVXcLjzBG^X7fbZ{FiigfY%Q)C9pj)WpG{cJM__cGqoo*L&t;GzR4B zb?6g^$p{jnY)_WGzNa7Ef9&WD-S4GkCX5kY0LJ-7#x|2P$Yx0RB!uObOWAxz8H8Ai z=i@Xh|LeLx(vyT;O+uvYk@1W$M@CBa1m)ZRP~Xt~*F(ltUO!Wo@7LhLyav+8%jQoN zXh<#Ipo%`HaGy6k;FD3tRCirGELsNE;$2nmXjb9%ggm^ewg%5E79CsU&7AEbs20ys z>-(Alcul?M55p^rJZe!)EnZA5YMTPcG*lsZ-T$0l(X?vucGcj0;TG}AQ^j@H`;fwm ztLOKP55=rR-u`p4d7Ip| z>s?lOdsTi%P_#rZ08g3L;B~>b3GDe$L>d@GL1e#(ajlTcF~)ulNp*SzOhm7qnDV68 z?$ z=eM%|j=4B1maB6O@%rCWexoWs!d^Xd|0345a7hzCy*A6RM!vX;T%Nmp`$hQY!7^`( z_2T;$5qAsm-r85sd~0!4V+*}lPj${Gp>M@HJj^%G)BKZVyOc|GeSEi7a0(^Xz<4wN zXtYJwqLu0BpFS6DYWqmEnQy?(4sfWv5ae*%1lRM6v|kS(43ffv!G z03NKretBt^V9f9Kgu4()CbNs{h74p-=bx86iL(p z=D8oB4QvSo7N&nEdmd`5Op~!~GUgrf?4+1!N^Pf%Y3NZgcgh$!x->QTounbw_Q-VHsghX3N4Yo8@trW%Fe)^bymw*(fH&Wr*y^ZjEN0wD4>t1|u^q zMzxmp+Jeh0kv-*@8CJGPh%y_`)6(p8+$rFj#1aMRwuJOUcYNJqmQ@{ZjhZE#_I*P` zeaFS{!4vz%(c?$<3qe!3McYm@*sx2=h%VaKAdpgQBB9Sx)J1&&(%i+`RT}~ zA_#&*7v{pBeV?_TzjtEx@%O{ud8za1-#h}l1D*yy34Rt#`;o@}7)(U_oOJRNQGJn4 zg-Aquob(q+0Z}E9eu5N`pDWpjYID5?`d?yjOfzD-!iZ>nv}O$#S5RG8WTWRoH#^}I z)v12R%v^ZxeCQX?ef4`QS1z{pUwQ1i&zD|)Yvp10$#;I)@TKWF#61K4I`~a6J%{(e zAAlRNh)a;P7OG{cauC%nndq3nNk-HQolI0xDvAn^OjJ@EDTXmBDKb&HDif6@nW$9N zKpH@%nHwgmQZiBXs)5ivde;*{U-zZ5%i{~SoBY*B*LwcyV{1MC-N+>wdy}qL5Du&iNU}(;O9x}AsD*ATVLlteTqSqVRMtB|_&|3_x4bgwq zyNrsi8MB6#spy8*{;IwMX5;gQHVT-{13Ev1Te4%Lp_zZtb)!MsS~)bR^TRrO!_YqE znLbvT)!7k4d*D?)fQVg{*Dxv&!lS}}54ef3#GsN?;n=`~{hr*@4T(E3aVI3c=n{88 zVr7HdJh>+biBGx&J&!2lKe1$rTZW{#zj<;GZD@SkC0>VYK>gFl3*@J%fC>L;NbKUo zIY>Ya&U4=cG360ykAtVkJCE>jd8AZpZA=0rxy8Vf+fJvvTkLWVE+W!XWNYMXIKMp;HSbzWH8A{!+ zm$OQTkW@iS@qRtv8iCl zC^@2Jr*X$P<`h%6oqq$0a>g#(xC-T+$;8^bQ&#x;sxQFIY0yN*cGH@dkR4} zt~Cbpm^fu-9Y%BD8$e1Xiui{wpJL+1T}+7;@*;1a7V>9k4MJwzETx%K&K0|4+sV9X Kljy+M!Tt@wS(*p{ diff --git a/srcs/utils/env.c b/srcs/utils/env.c index a441a5b..2ec547f 100644 --- a/srcs/utils/env.c +++ b/srcs/utils/env.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* env.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 06:38:21 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 16:26:27 by eunwolee ### ########.fr */ +/* Updated: 2023/08/08 17:43:50 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,15 +33,15 @@ void env_print(t_data *data) t_list *env_search(t_data *data, char *key) { char *tmp; - char *temp; + char *env; t_list *cur; - temp = ft_strdup(key); - tmp = ft_strncat(temp, "=", 1); + tmp = ft_strdup(key); + env = ft_strncat(tmp, "=", 1); cur = data->envs; while (cur) { - if (!ft_strncmp(cur->env, tmp, ft_strlen(tmp))) + if (!ft_strncmp(cur->env, env, ft_strlen(env))) return (cur); cur = cur->next; } diff --git a/srcs/utils/env.o b/srcs/utils/env.o deleted file mode 100644 index 463a5238e3a3cdba8c9dddb86107d941b950c6ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6488 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 e*0|`#)9GwNq;cv7U)bBfUrn_D6_9y@R*YnMP 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:48:39 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 08:36:07 by eunwolee ### ########.fr */ +/* Updated: 2023/08/08 18:27:14 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -62,9 +62,14 @@ t_bool tree_add_right(t_leaf *parent, t_token *new_token, int leaf_type) //토큰은 환경변수 리스트에서 삭제하기 때문에 트리의 큰 틀만 삭제 void tree_clear(t_leaf *leaf) { + t_leaf *left; + t_leaf *right; + if (!leaf) return ; + left = leaf->left_child; + right = leaf->right_child; free(leaf); - tree_clear(leaf->left_child); - tree_clear(leaf->right_child); + tree_clear(left); + tree_clear(right); } diff --git a/srcs/utils/tree.o b/srcs/utils/tree.o deleted file mode 100644 index e057e1ea26c1f7d47424960839c6defe88217a2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4288 zcmcInTWnlM8J=^_p1pYO^=<1*lgO*oG>$~P>(r%}SdC4R5<5;vV@Kox^|0POwzpaD zuJ#-|i4qm7n}?B z9A7qWp%VPkKmTp!n}6oa{ImP+-9P@TRtQai*aW~!2ATvI)DE7c{TcLF)C+_;5ain- z=;RtYL6+s(=Uq?t?9n4_*wFFY(+9rES-HTj3p4`}c?ch?gl&AurdOE}Y91 zvX(V`cs+S2U26Yll`~Z*1V8zY{qyG?M-}CMdFL;mE7){auXj%2T~Yb{6nLcTz*DX* z-(x>wZD23P$-M#WME?zpBjm{jAxe;3?ny9-eaN^n@+^MNbw!WuY3-(XZ}p-+zgiJj z7NcV2!+Noh5VP-V!P)mQ;-y7HtSlM*D`8FiWhwOX{m%>W2y%_TS?O4gK`zzzFMN!6 zSG!nPiuSKaUGv6tm`X-GIfpSEd#z$EuU`D>Jm$V~!?1q6W@yO4m|ul`&FEN04lBQJ z6$^8QwJhgtefj<+H81A7Hwn)#wO=SB@kRK#Ka30P>0j5@ek66|^9gkB$?C;{`8Av!en+iQ`%JAqfvApSZFIu%L^O)i90+KG%|RMU5YdB6#XBVgb_G-`cuQF}&eH@{JRw`YIQr{QzXsL`~nU$5SV~?3mniJ z&0j$Z^LJ=8Vc=|vP$0;%9(oqdB3SPWe*}@zdn12>e3!1Th{&hD{zy2&S|R<9HbiQn zb6)+iwnz)~52!z$h#ZB!3#=dL5gCf%7>w5wb z7T89x-W3)>LK}zB1hvo!V4Ps!zV)Z(GF;l!X?BViphxu=8kqgMRm(h$IOnO=Ul8A; z)xw^lhGR+B!P?X~BfFV-RKHS^7`qi>+Ye-nD+GRABJNg*;j4^wdWe0{NgkrhNNNjW zY71g&3u0;u;(m!(_cw)j2B_Lpg@^}{L--Y`$v$F$&vYV_PZuT=jNq<0PluT;55#W!vt~h~#i?teh@iNFKIl?0m6gmy?Hz zQ&Z_eb{NmiXt9W{BZrSU$>ZtF*GJBDJK3{hlbSs3VB(~WmkwQRJ2~TIidow_S1g}( z@CMq+TfYYd~rbiv6@6zpt*z9$EUM~;ZmQ>Tvz z*UH=Jap8EPlrGzd=k0OV%1q|+Sy9eSO!_)|T71EUTRdwQFxHcfk}_1bv$?X3hgn+u zy_A_umj%*tT#S&(a9^xU*-pE*H?MT0vsqZ<=*2KCIk{(MFnL)N>~mx_pO>M`|LDj7 z?}p&dFfx7vOQKK1E4rqLPO5xgC;A5V%=OJw?tcF_^*?{+Y^LLhr!RjK{yg{+_&eaM zU>;uLHstVZ8;Ft`pz@xSB3|j(bANFN+Sk+!Nnil(vg+ zE-~B1zl)>-@(t27?Vqta0l_@MTCR|BHdPb+P|TI=?n%aQt)?@sr>i2v!xk_^L>)RD zgScik)r4O+gTWy)6g&p`hG_&VW^={V;c6T*8{nlH8-h4yHbJFqhOAK`4FkldW~e57 z&Wr(|={Zxu=oK^K!RSL~ZSam6=P)7+nmdNg2Rti`i4;`*klCu#``E2wYX3{@Hig}? zf&F*neP?~$A#bsD=*JZz>rJW_Jf=5b_pytl1hx^saQ5*BBJRgNZaU>o#6pmbh{F|p z6Ak5*l6#drh<;%qVh=(x{w*c@l}soJA>$)TW+7u3;M3Ezak>5fGmWt85%XB_qW$ +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/12 19:40:44 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 08:45:57 by eunwolee ### ########.fr */ +/* Updated: 2023/08/08 18:34:06 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,13 +38,20 @@ void program_error_exit(char *str) //input 한번 끝났을 때 사용 void input_free(t_data *data) { + int i; + ft_lstclear(&data->tokens); data->tokens = NULL; free(data->input); data->input = NULL; - tree_clear(data->root); + tree_clear(data->root); data->root = NULL; free(data->pipe); + free(data->pipe->com); + i = -1; + while(++i < data->info->heredoc_flag) + free(data->info->heredoc_file[i]); + free(data->info->heredoc_file); free(data->info); } diff --git a/srcs/utils/utils.o b/srcs/utils/utils.o deleted file mode 100644 index 7074c7f49160c14677cd0dbc6217bea1f1e992bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5552 zcmb_gYiu0V6+S!r@IJ=tO&o^=V`Y&7aa!zk9JdJ&g6+f*Cr&YWknrkcy*sv-tarCF zW0NS9q8K5lQh`ONDzz2)K`Wv{OX&lGD223@XbY++6{=cVB`s8;Dr%*cl7K?`eRu98 z&SI(bapiN*Io~<=+5t+WsCu(<(6Y{t z7sS!ak_V!*NBgm7BbHUPM<&Ot{K$x7Pci=b9erD_IqR}Uuj^MDIan7DFqeC_1@TIi z(JI0Ecp2^e8~tp@WB$;mv0p9D84sIQj`i{Wtk?5`9@U@pp;^k|#vTarJ6SfPd z`gq@n`y(II0m6;5BKhK+@v0-Y6=<%Hwq3H>f`OJi}&hBjOXpG z&AH!)b-dvDz58$D6{-_hmuF2@ZZB1emNm3qZ%wgX_^86ZZ=Fs$#lgCqX>JLqF9&zx&gar*rEg7wYzzr;;SXkO@&baOPE-hW5>ub)e2E@(~9 z3(d!^VDv~hJ=lEp;ww^DrVPBs@KOM4Qz^W?NF+4a98RZFw24I9VY#RYmq{nW&5!ji z3a4pVwwU8_H%G)UvyxxmGiG{+De!yfC6r7Xh(78#>MztO~tj3&;AuIvc^~La9 z1-*%@OQqIAl-F?h{d12uk7f!_=m2OhRkXW(rh4Aq#uE^)1%)CBeMw@&&jE-=BE0sG zf+EJe=xg8-eH~p$!aoITi0B(s#3MR!9DTUuG6ZcfX7(%v54Z5tH5m72?o-+mzGi+K z-$%HGv%(gC_N*pxMq*nE3QfF&KAfeG8lUBOiGK+lTMZPN;6}sC=%Z#_#u+8zXr0$AcD zbb}zHJ2ecJH7+xEfJYgqQ_PzKITtr~K~56y%9vk(tQNXrkt7)-*#t}CLUg0hjOD2c zSjJdtPJyfGFBNlNATNuUe8MV1dt8zflGiiBE$F@m%~+Fq46MuOF~0-;IAG(GVm=ed ztK#NQ0(o`Ddv5aY^rNiufwDb8{f-Jb|=O1%x1HP)N|0Dqse zTqEXMaP^2c#7%Ow&cTd%U4U=Iu6gk%Qs_=HP=D$JFw^g6BGGLaR>=}sFE{3aZ=ce33 zwP;(nSDoE1vb3GsT&k4Zal2fWG0Wal@+{ZOdy}q|DxTQZ2u8_d#Vw6h>|&PKHGM-{ z2V~op?E_*vPSvqS@`c@&W9N%1L)V<@n3JEdd>aEIQf<<+MjhLhV&2R9lIMpeAfBa| z>oesph4H*2UUj!!abYi)Tu)q|)f`(YESZ%RMxVQyvyKtRE|we{HHgw!8rqd9lFQD@ zJ5GMDIMphGSYjTT|++p?waMr-TfO#{}p8;1uhO9~T3tCsi1 z1tIym6_6j{i$US+S&F$nLz!jok#QT_t`@A(a(?WbQYzb0b+FuGsiKAIq`!8nGC83( zfhY{%zcZc>Q86}b?c0DaQdmKgbfqQ4LMX=1=mu4la7<(U-T&P5=$fhNLszXk`u#PX z2hOynUcCi)8FUBe0O%{A;~>VVfY_MRs5AMo@&2bCWCe2SZ_tRwJVX6?5L>WTVr+A* z^*`}pYQ6x3YEU)YADAzOeMXV4Y4zvlo|#lxB@^XOGCmeop-B0HDpCsBhwgag_f4&j zEHAb>4R%}X<$mvG_rU93U7ma6jeE05m*Zp#S>l^QlwY_<8Ve36V*xmMt7f0Xg zy6fIlb$CH*W^bu&(zqn^@`G!he6_Hk)jLpXJNaVIokya%pPSh55>Pj20JIad8+0d# zDen=`Q=p%Leh2y+D2!WbA!s>h4TyL02xt;?FX+plZ-SWQ@F&c8%vTW&;iJQYXZF zUJvATPl)%w_F|$U#N4I5n8FA#r)jUFPzkZv;Oj+WaYcytyk06(D^KRG`d>8vH8_5ab^KWCOa$~h2#!m&g9!t_eLL<2$FKE{VQ^fs z9Yf#39!8PeTsc zQtEh}{6)rgKWMgoA9ZYW7bau76VwFX;QP5%>$I`)zgM&e-yg$L*WaF}8vg;L4 sKmqko30hjN;Xjq$sOWO>{8AEC$=SkDm4<%hSoS7r-NJr_>h(qRFIiWLLjV8( diff --git a/tester b/tester new file mode 160000 index 0000000..eafb1b8 --- /dev/null +++ b/tester @@ -0,0 +1 @@ +Subproject commit eafb1b837133c03cc819ffac07fc695acaee4c51 From 9622f0ef1835a9e2d8792ce156fc9a3d47171c8c Mon Sep 17 00:00:00 2001 From: eunwoo Date: Fri, 11 Aug 2023 06:37:53 +0900 Subject: [PATCH 17/57] 8.10 --- .DS_Store | Bin 6148 -> 6148 bytes Makefile | 2 + incs/bulitin.h | 13 +- incs/freepipe.c | 37 +++ incs/struct.h | 6 +- makefileeee | 124 +++++++ srcs/builtin/builtin.c | 9 +- srcs/builtin/builtin_utils.c | 18 +- srcs/builtin/ft_atolong.c | 83 +++-- srcs/builtin/ft_cd.c | 75 +++-- srcs/builtin/ft_echo.c | 4 +- srcs/builtin/ft_env.c | 75 ++--- srcs/builtin/ft_exit.c | 113 +++---- srcs/builtin/ft_exit_two.c | 38 +++ srcs/builtin/ft_export.c | 187 ++++------- srcs/builtin/ft_export_two.c | 80 +++++ srcs/builtin/ft_pasterror.c | 6 - srcs/builtin/ft_pwd.c | 53 ++- srcs/builtin/ft_unset.c | 33 +- srcs/execute/execve.c | 4 +- srcs/execute/freepipe.c | 6 +- srcs/execute/pipe.c | 2 +- srcs/execute/setpath.c | 2 +- srcs/init/init.c | 13 +- srcs/minishell.c | 41 +-- srcs/signal/signal.c | 7 +- srcs/utils/env.c | 2 +- test case/echo.txt | 460 +++++++++++++++++++++++++ test case/export.txt | 76 +++++ test case/something.txt | 120 +++++++ test case/test_cmds.txt | 629 +++++++++++++++++++++++++++++++++++ test case/unset.txt | 3 + tester | 1 - 33 files changed, 1909 insertions(+), 413 deletions(-) create mode 100644 incs/freepipe.c create mode 100644 makefileeee create mode 100644 srcs/builtin/ft_exit_two.c create mode 100644 srcs/builtin/ft_export_two.c delete mode 100644 srcs/builtin/ft_pasterror.c create mode 100644 test case/echo.txt create mode 100644 test case/export.txt create mode 100644 test case/something.txt create mode 100644 test case/test_cmds.txt create mode 100644 test case/unset.txt delete mode 160000 tester diff --git a/.DS_Store b/.DS_Store index b3a3a66a39e3014115afe12069b421d6d369ca54..ff401bb0b00fc5263b925bc084dd6b6ab7948766 100644 GIT binary patch delta 155 zcmZoMXfc=|#>B)qu~2NHo+2aL#(>?7jBJy6SVAZFvzVwSGGsHPGNdtNGUNbhF!apH zPfp6oPhwzT5CG!!3=E8XlQr0k)j1hTfGUcCqyj@SLn4rsimH}T7NmA_0NZxPjSW`J io7p+|Ie=Dg7UcNOJegm_kppNP10w?i%jO7?HOv6Ds380R delta 471 zcmZoMXfc=|#>B!ku~2NHo+2a1#(>?7iw&5W7&#{MFoi0!GvqL2G9)piF_bXqF(i8C zTPvOFbDv#H3I`9>*O#d`}$0VJfOOGpsG}cVlY{hR9;*FRr@WeASbi9#K7PN zBNH)&Fmcf9KdMXtjPSGc{0C< RBL~nFCZH0A%@HDNm;oO*c~JlW diff --git a/Makefile b/Makefile index 59caec5..b154979 100644 --- a/Makefile +++ b/Makefile @@ -31,9 +31,11 @@ SRCS = $(SRCS_DIR)/minishell.c \ $(SRCS_DIR)/builtin/ft_cd.c \ $(SRCS_DIR)/builtin/ft_echo.c \ $(SRCS_DIR)/builtin/ft_exit.c \ + $(SRCS_DIR)/builtin/ft_exit_two.c \ $(SRCS_DIR)/builtin/ft_pwd.c \ $(SRCS_DIR)/builtin/ft_unset.c \ $(SRCS_DIR)/builtin/ft_export.c \ + $(SRCS_DIR)/builtin/ft_export_two.c \ $(SRCS_DIR)/builtin/ft_env.c \ $(SRCS_DIR)/builtin/ft_atolong.c \ $(SRCS_DIR)/execute/checkbulitin.c \ diff --git a/incs/bulitin.h b/incs/bulitin.h index 6b7e957..57c9f4e 100644 --- a/incs/bulitin.h +++ b/incs/bulitin.h @@ -3,6 +3,8 @@ # include "struct.h" +#define LLONG_MAX 9223372036854775807 +#define LLONG_MIN (-LLONG_MAX - 1) /*signal*/ void sig(void); void handle_sigint(int sig); @@ -19,8 +21,15 @@ void ft_pwd(t_data *data, t_leaf *cur_root); void ft_unset(t_data *data, t_leaf *cur_root); void ft_export(t_data *data, t_leaf *cur_root); void ft_env(t_data *data, t_leaf *cur_root); -long long ft_atolong(const char *str, int *flag); - +char *check_keyval(t_data *data, char *str); +void abs_init(t_data *data); +char **sort_bubble(char **str, int size); +int check_name(char *str); +int check_underbar(char ch); +char **sort_bubble(char **str, int size); +long long char_to_long_long(char *str, int *flag); +int is_num_str(char *str); +void exit_not_num(t_data *data, char *str); /*builtin utils*/ char **join_cmd(t_leaf * com_leaf); int count_args(char **args); diff --git a/incs/freepipe.c b/incs/freepipe.c new file mode 100644 index 0000000..39ccbcf --- /dev/null +++ b/incs/freepipe.c @@ -0,0 +1,37 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* freepipe.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: kichlee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/08 17:49:42 by eunwolee #+# #+# */ +/* Updated: 2023/08/08 23:07:36 by kichlee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +void close_pipe(int i, t_pipe *base,t_data *data) +{ + if (i == data->info->pipe_num) + close(base->com[i - 1].fd[0]); + else if (i == 0) + close(base->com[i].fd[1]); + else + { + close(base->com[i - 1].fd[0]); + close(base->com[i].fd[1]); + } +} + +void check_file(int fd,t_data *data) +{ + if (fd < 0) + { + close(fd); + data->error_code = 1; + if (data->info->parent ==1) // 자식에서 종료 or 부모에서 종료 확인해주기 + program_error_exit("bash"); + } +} diff --git a/incs/struct.h b/incs/struct.h index f7e42dd..e6842cf 100644 --- a/incs/struct.h +++ b/incs/struct.h @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* struct.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: donghong < donghong@student.42seoul.kr> +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:24:15 by eunwolee #+# #+# */ -/* Updated: 2023/08/03 17:12:05 by donghong ### ########.fr */ +/* Updated: 2023/08/09 14:26:54 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -97,6 +97,8 @@ typedef struct s_data t_pipe *pipe; t_info *info; int error_code; + char *abs_home; } t_data; + #endif \ No newline at end of file diff --git a/makefileeee b/makefileeee new file mode 100644 index 0000000..460b374 --- /dev/null +++ b/makefileeee @@ -0,0 +1,124 @@ +SHELL = /bin/bash +SPINNER = /-\|/ +IDX = 0 + +NAME = minishell + +LIBS_DIR := ./libs +LIBFT_DIR := ${LIBS_DIR}/libft +LIBFT_INCS_DIR := ${LIBFT_DIR}/incs +LIBFT := ${LIBFT_DIR}/libft.a +LIBREADLINE_DIR := ${LIBS_DIR}/libreadline +LIBREADLINE_INCS_DIR := ${LIBREADLINE_DIR}/include/readline +LIBREADLINE := ${LIBREADLINE_DIR}/lib/libreadline.8.dylib + +INCS_DIR = ./incs +SRCS_DIR = ./srcs +OBJS_DIR = ./objs + +CC = cc +CFLAGS = -Wall -Wextra -Werror -I${INCS_DIR} -I${LIBFT_INCS_DIR} -I${LIBREADLINE_INCS_DIR} -MD +LDFLAGS = -L${LIBREADLINE_DIR}/lib -lreadline -L${LIBFT_DIR} -lft +AR = ar rcs +RM = rm -f + +SRCS = minishell.c \ + builtin/cd.c \ + builtin/echo.c \ + builtin/env.c \ + builtin/exit.c \ + builtin/export.c \ + builtin/pwd.c \ + builtin/unset.c \ + execute/execute.c \ + execute/exec_builtin.c \ + execute/exec_extern.c \ + execute/redirection.c \ + lexer/lexer.c \ + lexer/expand.c \ + lexer/ifs.c \ + lexer/meta.c \ + lexer/quote.c \ + lexer/token.c \ + lexer/tokenizer.c \ + parser/parser.c \ + parser/create_cmd_list.c \ + parser/here_doc.c \ + parser/syntax_err_occurred.c \ + subsystem/subsystem.c \ + subsystem/signal.c \ + subsystem/termios.c \ + utils/convert_path.c \ + utils/ft_getenv.c \ + utils/path.c \ + utils/print_err.c + +SRCS := ${addprefix ${SRCS_DIR}/, ${SRCS}} +OBJS := ${SRCS:${SRCS_DIR}/%.c=${OBJS_DIR}/%.o} +DEPS := ${OBJS:.o=.d} + + +all: ${NAME} + + +${NAME}: ${OBJS} + @printf "\bdone\n" + ${eval IDX = 0} + @${CC} ${LDFLAGS} -g -o ${NAME} ${OBJS} + @echo "Build ${NAME}: done" + + +${OBJS}: ${LIBFT} + + +${LIBFT}: + @make -C ${LIBFT_DIR} + + +${OBJS_DIR}/%.o: ${SRCS_DIR}/%.c | ${OBJS_DIR} + ${eval IDX = ${shell expr ${IDX} + 1}} + ${eval T_IDX = ${shell expr ${IDX} % 32}} + ${eval T_IDX = ${shell expr ${T_IDX} / 8 + 1}} + ${eval CHR = ${shell echo ${SPINNER} | cut -c ${T_IDX}}} + @if [ ${IDX} = 1 ]; then\ + echo -n "Build dependencies in ${NAME} ... ";\ + fi + @printf "\b${CHR}" + @${CC} ${CFLAGS} -g -c $< -o $@ + + +${OBJS_DIR}: + @echo "Build ${NAME}" + @mkdir -p ${OBJS_DIR} + @mkdir -p ${OBJS_DIR}/builtin + @mkdir -p ${OBJS_DIR}/execute + @mkdir -p ${OBJS_DIR}/lexer + @mkdir -p ${OBJS_DIR}/parser + @mkdir -p ${OBJS_DIR}/subsystem + @mkdir -p ${OBJS_DIR}/utils + + +clean: + @echo "Remove dependencies in ${NAME}" + @make -C ${LIBFT_DIR} clean + @rm -rf ${OBJS_DIR} + + +fclean: + @echo "Remove dependencies in ${NAME}" + @make -C ${LIBFT_DIR} fclean + @echo "Remove ${NAME}" + @rm -rf ${OBJS_DIR} + @${RM} ${NAME} + + +re: + @echo "Re-build ${NAME}" + @make fclean + @make all + + +.PHONY: all clean fclean re bonus + + +-include ${DEPS} \ No newline at end of file diff --git a/srcs/builtin/builtin.c b/srcs/builtin/builtin.c index 8533c3b..8801461 100644 --- a/srcs/builtin/builtin.c +++ b/srcs/builtin/builtin.c @@ -6,13 +6,13 @@ /* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/21 17:42:18 by eunwolee #+# #+# */ -/* Updated: 2023/08/07 13:50:39 by kichlee ### ########.fr */ +/* Updated: 2023/08/10 21:22:19 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -int check_bulitin_func(char *name) +int check_bulitin_func(char *name) { if (!ft_strncmp(name, "cd", 3)) return (1); @@ -30,9 +30,10 @@ int check_bulitin_func(char *name) return (7); return (0); } -void exec_bulitin(int bulitnum,t_data *data , t_leaf *leaf) + +void exec_bulitin(int bulitnum, t_data *data, t_leaf *leaf) { - if (bulitnum == 1) + if (bulitnum == 1) ft_cd(data, leaf); else if (bulitnum == 2) ft_echo(leaf); diff --git a/srcs/builtin/builtin_utils.c b/srcs/builtin/builtin_utils.c index 1bcb144..82d1034 100644 --- a/srcs/builtin/builtin_utils.c +++ b/srcs/builtin/builtin_utils.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* builtin_utils.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/22 13:20:41 by eunwolee #+# #+# */ -/* Updated: 2023/08/06 14:35:21 by eunwolee ### ########.fr */ +/* Updated: 2023/08/10 21:59:09 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -89,7 +89,15 @@ t_list *create_env_node(char *key, char *value) return new_node; } -void add_env_back(t_data *head, char *key, char *value) +void ft_lstadd_front(t_list **lst, t_list *new) +{ + if (!lst || !new) + return ; + new -> next = *lst; + *lst = new; +} + +void add_env_front(t_data *head, char *key, char *value) { if (head->envs == NULL) { @@ -99,7 +107,7 @@ void add_env_back(t_data *head, char *key, char *value) else { printf("\nenv exit!\n"); - ft_lstadd_back(&(head->envs), create_env_node(key, value)); + ft_lstadd_front(&(head->envs), create_env_node(key, value)); } } @@ -109,7 +117,7 @@ void update_env(t_data *data, char *key, char *value) char *key_equal; tmp = env_search(data, key); if (!tmp) - add_env_back(data, key, value); + add_env_front(data, key, value); else { free(tmp->env); diff --git a/srcs/builtin/ft_atolong.c b/srcs/builtin/ft_atolong.c index 9f00222..e5ef585 100644 --- a/srcs/builtin/ft_atolong.c +++ b/srcs/builtin/ft_atolong.c @@ -5,34 +5,65 @@ /* +:+ +:+ +:+ */ /* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2023/08/08 16:41:29 by kichlee #+# #+# */ -/* Updated: 2023/08/08 18:49:11 by kichlee ### ########.fr */ +/* Created: 2023/08/10 20:31:59 by kichlee #+# #+# */ +/* Updated: 2023/08/10 20:38:53 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ -// long long ft_atolong(const char *str, int *flag) -// { -// unsigned long long res; -// int sign; - -// res = 0; -// sign = 1; -// while ((*str >= 9 && *str <= 13) || *str == 32) -// str++; -// if (*str == '+' || *str == '-') -// { -// if (*str == '-') -// sign *= -1; -// str++; -// } +#include "../../incs/minishell.h" -// while (*str >= '0' && *str <= '9') -// { -// res = (res * 10) + (*str++ - '0'); +char *pass_blank_sign(char *str, int *sign) +{ + while ((*str >= 9 && *str <= 13) || *str == 32) + ++str; + if (*str == '+' || *str == '-') + { + if (*str == '-') + *sign *= -1; + str++; + } + return (str); +} -// if (((res > 9223372036854775807ULL) && (sign == 1)) -// || ((res > 9223372036854775808ULL) && (sign == -1))) -// *flag = 0; -// } -// return (res * sign); -// } +int check_overflow(long long result, char ch) +{ + if (result > LLONG_MAX / 10 || \ + (result == LLONG_MAX / 10 && (ch - '0') > LLONG_MAX % 10)) + return (1); + return (0); +} + +int check_underflow(long long result, char ch) +{ + if (result > -(LLONG_MIN / 10) || \ + (result == -(LLONG_MIN / 10) && (ch - '0') > -(LLONG_MIN % 10))) + return (1); + return (0); +} + +long long char_to_long_long(char *str, int *flag) +{ + long long result; + int sign; + int i; + + result = 0; + sign = 1; + i = -1; + str = pass_blank_sign(str, &sign); + while (ft_isdigit(str[++i])) + { + if (check_overflow(result, str[i])) + { + if ((sign == 1 && check_overflow(result, str[i])) || \ + (sign == -1 && check_underflow(result, str[i]))) + { + *flag = 0; + return (0); + } + } + result = result * 10 + (str[i] - '0'); + } + *flag = 1; + return (result * sign); +} diff --git a/srcs/builtin/ft_cd.c b/srcs/builtin/ft_cd.c index 20ecd83..e689f71 100644 --- a/srcs/builtin/ft_cd.c +++ b/srcs/builtin/ft_cd.c @@ -5,55 +5,66 @@ /* +:+ +:+ +:+ */ /* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/19 02:31:18 by kichan #+# #+# */ -/* Updated: 2023/08/08 18:32:08 by kichlee ### ########.fr */ +/* Created: 2023/07/19 02:31:18 by kichlee #+# #+# */ +/* Updated: 2023/08/10 21:12:29 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void ft_cd(t_data *data, t_leaf *cur_root); -static int change_directory(t_data *data, char *path); +int change_directory(t_data *data, char *path); -void ft_cd(t_data *data, t_leaf *cur_root) +void ft_cd(t_data *data, t_leaf *cur_root) { - char *option; - char pwd[1024]; - option = NULL; - - if(!(cur_root->left_child->right_child->right_child)) - change_directory(data, "~"); - else if(change_directory(data,cur_root->left_child->right_child->right_child->token->str) != 0) - { - option = cur_root->left_child->right_child->right_child->token->str; - printf("bash: %s: No such file or directory\n", option); - data->error_code = 1; - } - else - { - getcwd(pwd, 1024); - printf("current directory : %s\n",pwd); + char *option; + char pwd[1024]; + + option = NULL; + if (!(cur_root->left_child->right_child->right_child)) + change_directory(data, "HOME"); + else if (change_directory(data, \ + cur_root->left_child->right_child->right_child->token->str) != 0) + { + option = cur_root->left_child->right_child->right_child->token->str; + printf("bash: %s: No such file or directory\n", option); + data->error_code = 1; + } + else + { + getcwd(pwd, 1024); + printf("current directory : %s\n", pwd); update_env(data, "OLDPWD", env_search(data, "PWD")->env); update_env(data, "PWD", pwd); - } + } +} + +int change_home(t_data *data, char *path) +{ + (void) data; + (void) path; + printf("bash: cd: HOME not set\n"); + return (-1); } -static int change_directory(t_data *data, char *path) +int change_directory(t_data *data, char *path) { char *buf; int res; - char pwd[1024]; - - if (!ft_strncmp(path, "~", 1)) - buf = ft_strdup(env_search(data, "HOME")->env + 5); - else if (!ft_strncmp(path, "-", 1)) - buf = ft_strdup(env_search(data, "OLDPWD")->env + 7); + char pwd[1024]; + + if (!ft_strncmp(path, "HOME", 5)) + { + if (env_search(data, "HOME") == NULL) + return (change_home(data, path)); + else + buf = ft_strdup(env_search(data, "HOME")->env + 5); + } else buf = ft_strdup(path); if (!buf) - exit(1); + perror("ft_strdup fail!\n"); res = chdir(buf); - getcwd(pwd, 1024); - free(buf); + getcwd(pwd, 1024); + free(buf); return (res); } diff --git a/srcs/builtin/ft_echo.c b/srcs/builtin/ft_echo.c index a11a469..d3173a6 100644 --- a/srcs/builtin/ft_echo.c +++ b/srcs/builtin/ft_echo.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* ft_echo.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:30:59 by kichan #+# #+# */ -/* Updated: 2023/08/06 18:21:16 by eunwolee ### ########.fr */ +/* Updated: 2023/08/10 22:21:47 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/builtin/ft_env.c b/srcs/builtin/ft_env.c index 454bb26..3e7cdfb 100644 --- a/srcs/builtin/ft_env.c +++ b/srcs/builtin/ft_env.c @@ -3,7 +3,7 @@ /* ::: :::::::: */ /* ft_env.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/21 19:15:04 by kichlee #+# #+# */ /* Updated: 2023/08/07 14:49:51 by kichlee ### ########.fr */ @@ -11,58 +11,45 @@ /* ************************************************************************** */ #include "../incs/minishell.h" -void ft_env(t_data *data, t_leaf *cur_root); + +void ft_env(t_data *data, t_leaf *cur_root); char *check_keyval(t_data *data, char *str) { - t_list *tmp; + t_list *tmp; + tmp = env_search(data, str); - if(tmp == NULL) + if (tmp == NULL) return (NULL); else return (tmp->env); } -/** - * 1. cmd cnt 를 해주고 cmd가 1개 인경우는 - * -> env_print 실행 - * 2. cmd cnt 가 1개가 아닐때 - * -> $가 있을때 - * $뒤 path가 존재 할때 $뒤를 검색한 다음에 해당하는 path만 반환 - * $뒤 path가 존재 없을때 env_print 실행 - * -> $가 없을때 해당 문자열 - * env: 문자열: No such file or directory - * - * - * export $kichlee 있는 거면 kichlee - * export $aaa 없는 거면 $aaaa -*/ -void ft_env(t_data *data, t_leaf *cur_root) +void ft_env(t_data *data, t_leaf *cur_root) { - char **cmd; + char **cmd; - cmd = join_cmd(cur_root->left_child->right_child); - - if(!cmd[1]) - env_print(data); - else - { - if(cmd[1][0] == '$') - { - if(ft_strlen(cmd[1]) == 1) - { - printf("env: %s: No such file or directory\n", cmd[1]); - data->error_code = 127; - } - else if(check_keyval(data, cmd[1]) == NULL) - env_print(data); - else - printf("%s", env_search(data, cmd[1])->env); - } - else - { - printf("env: %s: No such file or directory\n", cmd[1]); - data->error_code = 127; - } - } + cmd = join_cmd(cur_root->left_child->right_child); + if (!cmd[1]) + env_print(data); + else + { + if (cmd[1][0] == '$') + { + if (ft_strlen(cmd[1]) == 1) + { + printf("env: %s: No such file or directory\n", cmd[1]); + data->error_code = 127; + } + else if (check_keyval(data, cmd[1]) == NULL) + env_print(data); + else + printf("%s", env_search(data, cmd[1])->env); + } + else + { + printf("env: %s: No such file or directory\n", cmd[1]); + data->error_code = 127; + } + } } diff --git a/srcs/builtin/ft_exit.c b/srcs/builtin/ft_exit.c index 7091a50..1afdd42 100644 --- a/srcs/builtin/ft_exit.c +++ b/srcs/builtin/ft_exit.c @@ -3,43 +3,66 @@ /* ::: :::::::: */ /* ft_exit.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/19 16:23:29 by kichan #+# #+# */ -/* Updated: 2023/08/08 18:49:29 by kichlee ### ########.fr */ +/* Created: 2023/07/19 16:23:29 by kichlee #+# #+# */ +/* Updated: 2023/08/11 06:30:45 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -static int is_num_str(char *str); -static void exit_not_num(t_data *data, t_leaf *cur_root); - - - +void arg_over_two(t_data *data, int count, char **cmd, int flag) +{ + int status; + int i; + i = 1; + status = char_to_long_long(cmd[1], &flag); + (void)status; + while (i < count) + { + if (flag && is_num_str(cmd[i]) && ft_strlen(cmd[i]) <= 20) + { + printf("bash: exit: too many arguments\n"); + data->error_code = 1; + break ; + } + else + exit_not_num(data, cmd[i]); + ++i; + } +} +void arg_over_one(t_data *data, int count, char **cmd, int flag) +{ + int status; -/** - * 1. 두번째 인자 - * 1) exit 다음 숫자는 long long 형 범위까지이다. - * -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 - * 까지는 정상적으로 종료가 되어야 한다. - * 2) longlong 형범위를 초과해서 입력해주는 경우에는 255 error가 발생한다. - * 2. - * - * -*/ + if (count == 2) + { + status = char_to_long_long(cmd[1], &flag); + if (flag && is_num_str(cmd[1]) && ft_strlen(cmd[1]) <= 20) + { + printf("exit\n"); + data->error_code = status % 256; + exit(status % 256); + } + else + exit_not_num(data, cmd[1]); + } + else + arg_over_two(data, count, cmd, flag); +} void ft_exit(t_data *data, t_leaf *cur_root) { long long status; - char **cmd; + char **cmd; int count; int flag; - cmd = join_cmd(cur_root->left_child->right_child); - count = count_args(cmd); + cmd = join_cmd(cur_root->left_child->right_child); + count = count_args(cmd); flag = 1; status = 0; if (count == 1) @@ -47,52 +70,6 @@ void ft_exit(t_data *data, t_leaf *cur_root) printf("exit\n"); exit(status); } - else if (count == 2) - { - if (is_num_str(cmd[1]) && ft_strlen(cmd[1]) < 20) - { - status = ft_atoi(cmd[1]);// ft_atolong(cmd[1], &flag); - if(flag == 1) - { - printf("exit\n"); - data->error_code = status % 256; - exit(status % 256); - } - else - exit_not_num(data, cur_root); - } - else - exit_not_num(data, cur_root); - } else - { - printf("bash: exit: too many arguments\n"); - data->error_code = 1; - } -} - -static int is_num_str(char *str) -{ - int i; - - i = 0; - if (str[0] == '-' || str[0] == '+') - i++; - while (str[i]) - { - if (!('0' <= str[i] && str[i] <= '9')) - return (0); - i++; - } - return (1); -} - -static void exit_not_num(t_data *data, t_leaf *cur_root) -{ - (void)data; - - printf("exit\n"); - printf("bash: exit: %s: numeric argument required\n", cur_root->left_child->right_child->token->str); - data->error_code = 255; - exit(255); + arg_over_one(data, count, cmd, flag); } diff --git a/srcs/builtin/ft_exit_two.c b/srcs/builtin/ft_exit_two.c new file mode 100644 index 0000000..6375179 --- /dev/null +++ b/srcs/builtin/ft_exit_two.c @@ -0,0 +1,38 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_exit_two.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: kichlee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/10 21:28:16 by kichlee #+# #+# */ +/* Updated: 2023/08/10 21:34:56 by kichlee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../incs/minishell.h" + +int is_num_str(char *str) +{ + int i; + + i = 0; + if (str[0] == '-' || str[0] == '+') + i++; + while (str[i]) + { + if (!('0' <= str[i] && str[i] <= '9')) + return (0); + i++; + } + return (1); +} + +void exit_not_num(t_data *data, char *str) +{ + (void)data; + printf("exit\n"); + printf("bash: exit: %s: numeric argument required\n", str); + data->error_code = 255; + exit(255); +} diff --git a/srcs/builtin/ft_export.c b/srcs/builtin/ft_export.c index 975dc93..070d6cb 100644 --- a/srcs/builtin/ft_export.c +++ b/srcs/builtin/ft_export.c @@ -5,149 +5,78 @@ /* +:+ +:+ +:+ */ /* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/19 16:25:07 by kichan #+# #+# */ -/* Updated: 2023/08/07 14:38:53 by kichlee ### ########.fr */ +/* Created: 2023/07/19 16:25:07 by kichlee #+# #+# */ +/* Updated: 2023/08/10 21:46:40 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void ft_export(t_data *data, t_leaf *cur_root); -static int check_underbar(char ch); -static int check_name(char *str); -static char **sort_bubble(char **str, int size); -static void print_export_order(t_data *data); +static void check_env(t_data *data, char **cmd, int arg_cnt); +static void print_export_order(t_data *data); -void ft_export(t_data *data, t_leaf *cur_root) +void ft_export(t_data *data, t_leaf *cur_root) { - char **cmd; - char **tmp; - int arg_cnt; - int i; + char **cmd; + int arg_cnt; - i = 1; - cmd = join_cmd(cur_root->left_child->right_child); - arg_cnt = count_args(cmd); - if (arg_cnt == 1) - print_export_order(data); - else - { - while (i < arg_cnt) - { - printf("\nft_export while loop start!\n"); - if (!ft_isalpha(cmd[1][0]) && !check_underbar(cmd[1][0]) && !check_name(cmd[i])) - { - printf("bash: export: `%s': not a valid identifier\n", cmd[i]); - data->error_code = 1; - } - else if (!ft_strchr(cmd[i], '=')) // = 가 없는 경우 - { - ++i; - continue; - } - else - { - tmp = ft_split(cmd[i], '='); - update_env(data, tmp[0], tmp[1]); - free(tmp); - } - ++i; - } - } + cmd = join_cmd(cur_root->left_child->right_child); + arg_cnt = count_args(cmd); + if (arg_cnt == 1) + print_export_order(data); + else + check_env(data, cmd, arg_cnt); } -int check_underbar(char ch) +static void check_env(t_data *data, char **cmd, int arg_cnt) { - if (ch == '_') - return (1); - return (0); -} - -int check_name(char *str) -{ - int i; - - i = 0; - while (str[i] && str[i] != '=') - { - if (str[i] != '_' && ft_isalnum(str[i])) - return (0); - ++i; - } - return (1); -} -/** - * @brief bash 환경변수 명명 규칙 - * - * 변수 이름은 문자 (a-z, A-Z) 또는 밑줄(_)로 시작해야 합니다. - 첫 문자 이후에는 문자, 숫자 (0-9), 또는 밑줄(_)을 포함할 수 있습니다. - 변수 이름은 대소문자를 구분합니다. 예를 들어, MY_VAR와 my_var는 서로 다른 변수로 간주됩니다. - 변수 이름에 공백이나 특수 문자 (예: !, @, #, $ 등)는 사용할 수 없습니다. - 환경 변수 이름의 길이에는 제한이 있으며, 일반적으로 많은 시스템에서는 최대 길이가 있습니다. - * - */ - -char **sort_bubble(char **str, int size) -{ - char **res = (char **)ft_calloc(sizeof(char *), (size + 1)); - int sorted = 0; - int i = 0; - char *tmp; - tmp = NULL; - if (!res) - program_error_exit("Memory allocation error!"); - while (str[i]) - { - res[i] = ft_strdup(str[i]); - if (!res[i]) - program_error_exit("Memory allocation error!"); - ++i; - } - res[i] = NULL; + int i; + char **tmp; - while (!sorted) - { - sorted = 1; - i = 0; - while (res[i + 1]) - { - if (ft_strncmp(res[i], res[i + 1], ft_strlen(res[i])) > 0) - { - tmp = res[i]; - res[i] = res[i + 1]; - res[i + 1] = tmp; - sorted = 0; - } - ++i; - } - } - return res; + i = 0; + while (i < arg_cnt) + { + if (!ft_isalpha(cmd[1][0]) && \ + !check_underbar(cmd[1][0]) && !check_name(cmd[i])) + { + printf("bash: export: `%s': not a valid identifier\n", cmd[i]); + data->error_code = 1; + } + else if (!ft_strchr(cmd[i], '=')) + { + ++i; + continue ; + } + else + { + tmp = ft_split(cmd[i], '='); + update_env(data, tmp[0], tmp[1]); + free(tmp); + } + ++i; + } } -static void print_export_order(t_data *data) +static void print_export_order(t_data *data) { - int i; - int lst_size; - char **order_set; - char **order_copy; - t_list *cur; + int i; + int lst_size; + char **order_set; + char **order_copy; + t_list *cur; - i = 0; - lst_size = ft_lstsize(data->envs); - cur = data->envs; - order_copy = (char **)ft_calloc(sizeof(char *), lst_size + 1); - while (cur) - { - order_copy[i] = ft_strdup(cur->env); - cur = cur->next; - ++i; - } - order_set = sort_bubble(order_copy, lst_size); - int j = 0; - while (order_set[j]) - { - printf("%s\n", order_set[j]); - ++j; - } + i = 0; + lst_size = ft_lstsize(data->envs); + cur = data->envs; + order_copy = (char **)ft_calloc(sizeof(char *), lst_size + 1); + while (cur) + { + order_copy[i] = ft_strdup(cur->env); + cur = cur->next; + ++i; + } + order_set = sort_bubble(order_copy, lst_size); + i = -1; + while (order_set[++i]) + printf("declare -x %s\n", order_set[i]); } - diff --git a/srcs/builtin/ft_export_two.c b/srcs/builtin/ft_export_two.c new file mode 100644 index 0000000..93f4602 --- /dev/null +++ b/srcs/builtin/ft_export_two.c @@ -0,0 +1,80 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_export_two.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: kichlee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/09 19:33:40 by kichlee #+# #+# */ +/* Updated: 2023/08/10 22:01:54 by kichlee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../incs/minishell.h" + +int check_underbar(char ch) +{ + if (ch == '_') + return (1); + return (0); +} + +int check_name(char *str) +{ + int i; + + i = 0; + while (str[i] && str[i] != '=') + { + if (str[i] != '_' && ft_isalnum(str[i])) + return (0); + ++i; + } + return (1); +} + +char **check_sort(char **res, int sorted) +{ + int i; + char *tmp; + + i = 0; + while (!sorted) + { + sorted = 1; + i = -1; + while (res[++i + 1]) + { + if (ft_strncmp(res[i], res[i + 1], ft_strlen(res[i])) > 0) + { + tmp = res[i]; + res[i] = res[i + 1]; + res[i + 1] = tmp; + sorted = 0; + } + } + } + return (res); +} + +char **sort_bubble(char **str, int size) +{ + char **res; + int sorted; + int i; + + sorted = 0; + i = -1; + res = (char **)ft_calloc(sizeof(char *), (size + 1)); + if (!res) + program_error_exit("Memory allocation error!"); + while (str[++i]) + { + res[i] = ft_strdup(str[i]); + if (!res[i]) + program_error_exit("Memory allocation error!"); + } + res[i] = NULL; + res = check_sort(res, sorted); + return (res); +} diff --git a/srcs/builtin/ft_pasterror.c b/srcs/builtin/ft_pasterror.c deleted file mode 100644 index a147198..0000000 --- a/srcs/builtin/ft_pasterror.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "../incs/minishell.h" - -void ft_pasterror(t_data *data) -{ - printf("bash : %d: command not found\n", data->error_code); -} \ No newline at end of file diff --git a/srcs/builtin/ft_pwd.c b/srcs/builtin/ft_pwd.c index f8d0156..c20faaf 100644 --- a/srcs/builtin/ft_pwd.c +++ b/srcs/builtin/ft_pwd.c @@ -5,39 +5,36 @@ /* +:+ +:+ +:+ */ /* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/19 16:24:31 by kichan #+# #+# */ -/* Updated: 2023/08/07 14:29:41 by kichlee ### ########.fr */ +/* Created: 2023/07/19 16:24:31 by kichlee #+# #+# */ +/* Updated: 2023/08/10 20:50:16 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void ft_pwd(t_data *data, t_leaf *cur_root); - -void ft_pwd(t_data *data, t_leaf *cur_root) +void ft_pwd(t_data *data, t_leaf *cur_root) { - (void)data; - (void)cur_root; - - char *buf; - size_t buf_size; + char *buf; + size_t buf_size; - buf = NULL; - buf_size = BUF_SIZE; - while (1) - { - buf = (char *)ft_calloc(buf_size, sizeof(char)); - if (!buf) - program_error_exit("ft_calloc fail!"); - if (getcwd(buf, buf_size) != NULL) - { - printf("%s\n", buf); - free(buf); - return ; - } - free(buf); - if (errno != ERANGE) - program_error_exit("get_cwd fail!"); - buf_size *= 2; - } + (void)data; + (void)cur_root; + buf = NULL; + buf_size = BUF_SIZE; + while (1) + { + buf = (char *)ft_calloc(buf_size, sizeof(char)); + if (!buf) + program_error_exit("ft_calloc fail!"); + if (getcwd(buf, buf_size) != NULL) + { + printf("%s\n", buf); + free(buf); + return ; + } + free(buf); + if (buf_size > SIZE_MAX / 2) + program_error_exit("get_cwd fail!"); + buf_size *= 2; + } } diff --git a/srcs/builtin/ft_unset.c b/srcs/builtin/ft_unset.c index d960005..bbf6517 100644 --- a/srcs/builtin/ft_unset.c +++ b/srcs/builtin/ft_unset.c @@ -5,30 +5,27 @@ /* +:+ +:+ +:+ */ /* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/19 22:51:02 by kichan #+# #+# */ -/* Updated: 2023/08/07 15:08:19 by kichlee ### ########.fr */ +/* Created: 2023/07/19 22:51:02 by kichlee #+# #+# */ +/* Updated: 2023/08/09 19:29:16 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void ft_unset(t_data *data, t_leaf *cur_root); +void ft_unset(t_data *data, t_leaf *cur_root); -void ft_unset(t_data *data, t_leaf *cur_root) +void ft_unset(t_data *data, t_leaf *cur_root) { - char **cmd; - int arg_cnt; - int i; - - cmd = join_cmd(cur_root->left_child->right_child); - arg_cnt = count_args(cmd); - i = 1; + char **cmd; + int arg_cnt; + int i; - while (i < arg_cnt) - { - env_remove(data, cmd[i]); - ++i; - } + cmd = join_cmd(cur_root->left_child->right_child); + arg_cnt = count_args(cmd); + i = 1; + while (i < arg_cnt) + { + env_remove(data, cmd[i]); + ++i; + } } - - diff --git a/srcs/execute/execve.c b/srcs/execute/execve.c index 3b1c8cc..b1e003a 100644 --- a/srcs/execute/execve.c +++ b/srcs/execute/execve.c @@ -22,6 +22,7 @@ void do_cmd(t_data *data) void execute(t_data *data) { count_pipe(data); + data->env_array = env_to_array(data); heredoc_flag(data->root,data); //heredoc 이 있는 지판별해준다 data->info->heredoc_file= (char **)ft_calloc(data->info->heredoc_flag+1,sizeof(char *)); if (!data->info->heredoc_file) // 파이프 기준으로 <pipe; if(!data->root->left_child->right_child) return ; - data->env_array = env_to_array(data); abs_path(data); base->command = set_path(data ,data->root->left_child->right_child); if (!base->command) @@ -63,7 +63,7 @@ void execute_cmd(t_data *data,int flag) // flag 는 자식이랑 부모 차이 i = data->info->pipe_index; t_pipe *base = data->pipe; t_leaf *head = data->root; - + while (i < data->info->pipe_num + 1) { signal (SIGINT, SIG_IGN); diff --git a/srcs/execute/freepipe.c b/srcs/execute/freepipe.c index 46ee4d8..988d743 100644 --- a/srcs/execute/freepipe.c +++ b/srcs/execute/freepipe.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* freepipe.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/08 17:49:42 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 18:36:43 by eunwolee ### ########.fr */ +/* Updated: 2023/08/08 23:07:39 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,7 +31,7 @@ void check_file(int fd,t_data *data) { close(fd); data->error_code = 1; - if (data->info->parent ==0) // 자식에서 종료 or 부모에서 종료 확인해주기 + if (data->info->parent ==1) // 자식에서 종료 or 부모에서 종료 확인해주기 program_error_exit("bash"); } } diff --git a/srcs/execute/pipe.c b/srcs/execute/pipe.c index 1256e07..778f594 100644 --- a/srcs/execute/pipe.c +++ b/srcs/execute/pipe.c @@ -31,7 +31,7 @@ void wait_child_processes(t_data *data) waitpid(-1, &status, 0); i++; } - if (WIFSIGNALED(status))// ==1 //&& data->info->heredoc_flag!=0) // signal 에 의해 종료가 되었는지 아닌지 확인 + if (WIFSIGNALED(status) ==1 && data->info->heredoc_flag!=0) // signal 에 의해 종료가 되었는지 아닌지 확인 { data->error_code = WTERMSIG(status); // 시그널로 종료시 시그널 번호를 저장 예 ctrl +c경우 2 번 ft_putendl_fd("", STDERR_FILENO); // 빈문자열 출력을 위한 ctrl+c 이런거 눌렀을때 바로 새줄 diff --git a/srcs/execute/setpath.c b/srcs/execute/setpath.c index d76fe1c..147fa5a 100644 --- a/srcs/execute/setpath.c +++ b/srcs/execute/setpath.c @@ -27,7 +27,7 @@ void abs_path(t_data *data) char *temp; i = 0; - data->env_array = env_to_array(data); // 환경 변수 array에 담아주기 + // 환경 변수 array에 담아주기 pipe->cmd_abs = get_path_envp(data->env_array); if (!pipe->cmd_abs) program_error_exit("bash"); diff --git a/srcs/init/init.c b/srcs/init/init.c index 80c8994..df1183c 100644 --- a/srcs/init/init.c +++ b/srcs/init/init.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:52 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 17:54:36 by eunwolee ### ########.fr */ +/* Updated: 2023/08/11 06:32:40 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -62,16 +62,21 @@ t_bool get_input(t_data *data) data->input = readline("minishell$ "); if (!data->input) + program_error_exit("bash"); + if (!data->input[0]) { - printf("exit\n"); free(data->input); - free(data); - exit(0); + return (FALSE); } add_history(data->input); lexer(data); if (syntax(data) == FALSE) + { + tree_clear(data->root); + ft_lstclear(&data->tokens); + free(data->input); return (FALSE); + } parser(data); pipe_init(&pipe); info_init(&info); diff --git a/srcs/minishell.c b/srcs/minishell.c index a13189a..5648689 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -3,41 +3,16 @@ /* ::: :::::::: */ /* minishell.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/07 17:17:15 by kichlee ### ########.fr */ +/* Updated: 2023/08/11 06:36:58 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -// int main(int argc, char **argv, char **envp) -// { -// t_data *data; - -// (void)argc; -// (void)argv; -// init(&data, envp); -// init_base(argc); - - - -// char *str = get_next_line(0); -// data->input = ft_substr(str, 0, ft_strlen(str) - 1); //-1 개행 떼기 - -// sig(); -// get_input(data); -// system("leaks minishell"); -// execute(data); -// input_free(data); - -// // data_free(data); -// // atexit(check_leak); -// return (0); -// } - - +char *abs_home; int main(int argc, char **argv, char **envp) { @@ -48,14 +23,20 @@ int main(int argc, char **argv, char **envp) init(&data, envp); init_base(argc); + abs_home = ft_strdup(env_search(data, "HOME")->env + 5); + + sig(); while (TRUE) { - sig(); + // abs_init(data); // system("leaks minishell"); - get_input(data); + // printf("abs home : %s\n", data->abs_home); + if (get_input(data) == FALSE) + continue ; execute(data); input_free(data); } + // free(data->abs_home); // system("leaks minishell"); data_free(data); // atexit(check_leak); diff --git a/srcs/signal/signal.c b/srcs/signal/signal.c index 295093c..46ea5a9 100644 --- a/srcs/signal/signal.c +++ b/srcs/signal/signal.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/15 18:40:34 by kichlee #+# #+# */ -/* Updated: 2023/08/08 17:57:11 by eunwolee ### ########.fr */ +/* Updated: 2023/08/11 06:30:57 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,8 @@ void init_base(int ac) { - struct termios termi; + + struct termios termi; if (ac != 1) exit(1); @@ -28,12 +29,10 @@ void init_base(int ac) void handle_sigint(int sig) { - // printf("handle function !"); printf("\n"); rl_on_new_line(); // rl_replace_line("", 0); rl_redisplay(); - // printf("after sig\n"); (void) sig; } diff --git a/srcs/utils/env.c b/srcs/utils/env.c index 2ec547f..93cc39d 100644 --- a/srcs/utils/env.c +++ b/srcs/utils/env.c @@ -6,7 +6,7 @@ /* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 06:38:21 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 17:43:50 by kichlee ### ########.fr */ +/* Updated: 2023/08/10 17:26:25 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/test case/echo.txt b/test case/echo.txt new file mode 100644 index 0000000..8530956 --- /dev/null +++ b/test case/echo.txt @@ -0,0 +1,460 @@ +echo 00\\\'pp +echo 00\\\\\'pp +echo ';;' +echo ";;;" +echo 00\\\\'pp' +echo “./hello”. +echo ./hello +echo \n ' \n this is the; "first line"' +echo "and right here;;; 'We have the second'" +echo and" a fe"'w 'here'; with some slash and quotes .' '\' +echo '\\' +echo "\\" +echo "\"" +echo \\ +echo \' +echo \" "\\" "\"" \\ \' \" +echo | cd .. | pwd +echo DOET HET NIET > test1 | cat test1 +echo hallo >x1 >x2 >x3 | echo hoi +echo "hallo$" +echo "\poep" +echo "123\"456" +echo \"test\" +echo" +echo + +echo /$"123$USER" +echo $POEP hallo +echo $1 234 +echo $2$4 +echo $/ +echo $ +echo $? +echo $TEST +echo $PWD +echo $HOME +echo "$PWD" +echo '$PWD' +echo "$HOME" +echo 'how are you' + +echo > ilovewords.txt count me | wc ilovewords.txt +echo > "hardesttest.txt" + +echo adding stuff >> working.txt | echo more stuff >> working.txt | echo > working.txt +cat working.txt | grep stuff | echo tim + +echo dit > test1 gaat > test2 goed > test3 +echo dit > test1 gaat > test2 goed > test3 > test4 + +echo > doethet | echo hoi >> doethet "of niet" +echo clear > "doethet" + +echo test > working.txt +echo > newfile.txt hardertest +echo hallo daar | echo hoi maran +echo echo hallo daar +"echo" hallo daar +echo "hallo daar" +echo hallo daar | echo hoi maran +echo hallo daar +echo hoi maran + +echo hallo >file1 >file2 | echo hallo >file1 >file2 maran | echo hallo >file1 >file2 >>file3 maran siemons | echo hallo file2 + +echo $USER"" +echo $USER" +echo $USER_ +echo 123$USER---- +echo 123$USER----$ +echo abc$USERdef +echo abc$USER123 +echo abc$POEPdef +echo $USER "$USER" '$USER' +echo $POEP +echo $POEP $MEERPOEP +echo hallo $POEP +echo $POEP hallo +echojhdfjhjdkh +echo | poep +echo hallo 'ma\"ran' siemons +echo hallo 'ma\'ran' siemons +echo hallo 'ma\'ran'' siemons +echo 'ma\' Hij ziet de \ niet als escape, print gewoon \ +echo 'hallo$USER' +echo 'hallo\$USER' +echo '\$?' +echo '\$USER' +echo '"\$USER"' +echo "hallo"maran" +echo "\poep" +echo \poep +echo "poep\"" +echo "poep\'" +echo "poep\" +echo "hallo\"\poep" +echo hallo"" +echo "hoi$USERmaran" + +ls filedoesnotexist | grep notme | echo "TEST" + +echo "'\$USER'" +echo "\$USER" +echo "123\"456" +echo "\poep" +echo "123\'456" +echo "hallo$" +echo \" +echo \$? +echo '$USER'$USER +echo '$USER'$USER\$USER/"$USER" +echo hallo"1234"maran"$USER"'/$USER'"/$USER"'poep''poep2'"maran"'ellende'END +echo "$USER"'/$USER' +echo 'poep''poep2'"maran"'ellende'END +echo 'poep2'"maran"'ellende' +echo 123"hallo$"456 +echo $1234 +echo $_1234 + +echo $USERhallo +echo $2$* +echo $hallo"poep" +echo $222 +echo hallo$USER***$USER$2$ +echo $a5aap +echo "$####jgklj" +echo hallo$\abc +echo hallo$\\abc +echo hallo$"USER" +echo hallo$"POEP" +echo hallo$'USER' +echo $halllo### +echo $USER9582309582529 +echo $USER' +echo $%%%%jlkjtwejt +echo %%$ +echo $####jgklj$USER +echo $@@@lkgj +echo $"USERhallo" +echo "$2$*" +echo "$222" +echo "$_poep" +echo "$a5aap" +echo "$halllo###" +echo "$USER9582309582529" +echo "$" +echo hallo"$"abc +echo hallo"$POEP"abc +echo hallo"$USER"abc +echo "$USER_" +echo $"hallo" +echo "hallo\"\poep" +echo $"etet" +echo “$\hallo” +echo $"\hallo" +echo "\\hallo" +echo "hallo\\hoi" +echo "\\$USER" +echo "123\"456" +echo "123\$456" +echo "123\`456" +echo "123\\456" +echo "123\!456" +echo "1234" +echo "12\34" +echo "1234\" +echo \"1234" +echo "1\a234" +echo \1 +echo "\1234" +echo "1234" \; echo hoi +echo "1234\\" +echo \a +echo \b +echo \c +echo \d +echo \e +echo \! +echo \" +echo \# +echo \$ +echo \% +echo \& +echo \' +echo \( +echo \) +echo \* +echo \+ +echo \, +echo \- +echo \. +echo \/ +echo \0 +echo \1 +echo \2 +echo \3 +echo \4 +echo \5 +echo \6 +echo \7 +echo \8 +echo \9 +echo \: +echo \; +echo \< +echo \= +echo \> +echo \? +echo \@ +echo \A +echo \B +echo \C +echo \D +echo \E +echo \F +echo \G +echo \H +echo \I +echo \J +echo \K +echo \L +echo \M +echo \N +echo \O +echo \P +echo \Q +echo \R +echo \S +echo \T +echo \U +echo \V +echo \W +echo \X +echo \Y +echo \Z +echo \[ +echo \\ +echo \] +echo \^ +echo \_ +echo \` +echo \a +echo \b +echo \c +echo \d +echo \e +echo \f +echo \g +echo \h +echo \i +echo \j +echo \k +echo \l +echo \m +echo \n +echo \o +echo \p +echo \q +echo \r +echo \s +echo \t +echo \u +echo \v +echo \w +echo \x +echo \y +echo \z +echo \{ +echo \| +echo \} +echo \~ +echo "\!" +echo "\"" +echo "\#" +echo "\$" +echo "\%" +echo "\&" +echo "\'" +echo "\(" +echo "\)" +echo "\*" +echo "\+" +echo "\," +echo "\-" +echo "\." +echo "\/" +echo "\0" +echo "\1" +echo "\2" +echo "\3" +echo "\4" +echo "\5" +echo "\6" +echo "\7" +echo "\8" +echo "\9" +echo "\:" +echo "\;" +echo "\<" +echo "\=" +echo "\>" +echo "\?" +echo "\@" +echo "\A" +echo "\B" +echo "\C" +echo "\D" +echo "\E" +echo "\F" +echo "\G" +echo "\H" +echo "\I" +echo "\J" +echo "\K" +echo "\L" +echo "\M" +echo "\N" +echo "\O" +echo "\P" +echo "\Q" +echo "\R" +echo "\S" +echo "\T" +echo "\U" +echo "\V" +echo "\W" +echo "\X" +echo "\Y" +echo "\Z" +echo "\[" +echo "\\" +echo "\]" +echo "\^" +echo "\_" +echo "\`" +echo "\a" +echo "\b" +echo "\c" +echo "\d" +echo "\e" +echo "\f" +echo "\g" +echo "\h" +echo "\i" +echo "\j" +echo "\k" +echo "\l" +echo "\m" +echo "\n" +echo "\o" +echo "\p" +echo "\q" +echo "\r" +echo "\s" +echo "\t" +echo "\u" +echo "\v" +echo "\w" +echo "\x" +echo "\y" +echo "\z" +echo "\{" +echo "\|" +echo "\}" +echo "\~" +echo '\!' +echo '\"' +echo '\#' +echo '\$' +echo '\%' +echo '\&' +echo '\'' +echo '\(' +echo '\)' +echo '\*' +echo '\+' +echo '\,' +echo '\-' +echo '\.' +echo '\/' +echo '\0' +echo '\1' +echo '\2' +echo '\3' +echo '\4' +echo '\5' +echo '\6' +echo '\7' +echo '\8' +echo '\9' +echo '\:' +echo '\;' +echo '\<' +echo '\=' +echo '\>' +echo '\?' +echo '\@' +echo '\A' +echo '\B' +echo '\C' +echo '\D' +echo '\E' +echo '\F' +echo '\G' +echo '\H' +echo '\I' +echo '\J' +echo '\K' +echo '\L' +echo '\M' +echo '\N' +echo '\O' +echo '\P' +echo '\Q' +echo '\R' +echo '\S' +echo '\T' +echo '\U' +echo '\V' +echo '\W' +echo '\X' +echo '\Y' +echo '\Z' +echo '\[' +echo '\\' +echo '\]' +echo '\^' +echo '\_' +echo '\`' +echo '\a' +echo '\b' +echo '\c' +echo '\d' +echo '\e' +echo '\f' +echo '\g' +echo '\h' +echo '\i' +echo '\j' +echo '\k' +echo '\l' +echo '\m' +echo '\n' +echo '\o' +echo '\p' +echo '\q' +echo '\r' +echo '\s' +echo '\t' +echo '\u' +echo '\v' +echo '\w' +echo '\x' +echo '\y' +echo '\z' +echo '\{' +echo '\|' +echo '\}' +echo '\~' +echo -nn -nnnnnnn -n -nnnn -nnnh diff --git a/test case/export.txt b/test case/export.txt new file mode 100644 index 0000000..ee1b814 --- /dev/null +++ b/test case/export.txt @@ -0,0 +1,76 @@ +env +export a="\\" +export b='\\' +export c="\b" +env +export a=hijdoehet +export +export test=working +export +export test1 +export +export test1= +export +export 1test +export _TEST=DOethetwelmetunderscore +env +env +echo +export a=hijdoehet +echo +env +echo +export test=working;echo ;env +echo +export test1; export; echo +env +echo +export test1= +echo +env +export +export ZZZ +export ZZZ= +export +export a="\\" +export b='\\' +export c="\b" +export +export LS="ls -la" +ls +export TEST="evenchecken" +export | grep -e "PWD=" +export | grep -e "HOME=" +export PATH="test:working:multiplepath:directory1:directory2" +export +echo hi +echo +echo +echo +export +env +echo +echo +echo +echo working +echo $PWD +export kip=ei=koe===melk +export TEST=/Users/maran/Desktop/minishell +export TEST_$USER=hallo$LOGNAME +export +export ZZZ +export ZZZ= +export ZZZ=new_value +export ZZZ======new +export ZZZ=new YYY=new2 XXX===new3 +export $USER +export TEST=$USER4857987345 +export 123$USER--- +export MARANSIEMONS +export MARANSIEMONS=lief +export = +export += +export hello=hi hello+=wow +export $HULLO=there; echo $HULLO +export potato=tomato orange=doorhinge; +export po1=yes po2=no; echo $po1 $po2; diff --git a/test case/something.txt b/test case/something.txt new file mode 100644 index 0000000..f78d3e1 --- /dev/null +++ b/test case/something.txt @@ -0,0 +1,120 @@ +/bin/ls +/bin/pwd +ls -la +pwd +/bin/chmod +/bin/ls -la +/bin/ls +/bin/ls doesnotexist +ctrl-C +ctrl-D +ctrl-\ +asdf ctrl-C +asdf ctrl-D +cat ctrl-C +asdf ctrl-\ +cat ctrl-D +hoi +" +hallo$ +unset a ; env ; unset test ; unset test1 ; env +unset PATH +ls +wc +awk +cd .. +pwd +/bin/ls +cd .. +pwd +/bin/ls +cd notworking +cd . +cd .. ;pwd;/bin/ls;cd .. ; pwd ;/bin/ls; cd notworking; cd . +cd ~ +cd $IETSONBESTAANDS +cd $GEK .. +cd $NOTHING $MORENOTHING .. +pwd +pwd . +pwd .. +cd ../Desktop +ls -la +awk '{ print }' /etc/passwd +cat < test4 +< test4 cat +> newfile ; > working.txt +< working.txt +< notworking.txt +cat | cat -e | cat +cd +cd ~/ +hallo +hallo +cd $IETSONBESTAANDS +cd $IETSONBESTAANDS +cd $POEP $MEERPOEP .. +cd poep +ls +"ls" +test +/bin/ls +/binn/ls +hallo ma\"ran siemons +Multiple line error +hallo ma\ran siemons Hij ziet de \ niet als escape, print gewoon \ +ma\ +hallo$USER +hallo\$USER +\$? +$USER +\$USER +"\$USER" +\poep +poep +poep" +poep\' +hallo"\poep +hallo +maran +'$USER' +$USER +123"456 +\poep +123\'456 +hallo$ +" +$USERmaran +$USERmaran$USER/maran +hallo1234maranmaran/$USER/maranpoeppoep2maranellendeEND +maran/$USER +poeppoep2maranellendeEND +poep2maranellende +123hallo$456 +echt bash +cat x1 | grep Makefile +ls > x1 ; cat x1 | grep main +hallo$abc +hallo$\abc +halloUSER +halloPOEP +halloUSER +"hallo$USER" +hallo$abc +“$rewtwet” +$" +$' +\hallo +\hallo +hallo\hoi +\maran +123"456 +123$456 +123`456 +123\456 +123\!456 +mkdir test; cd test; rm -rf ../test; +pwd; cd .. +$TEST$TEST$TEST$TEST +cp minishell test; chmod u-x test; +./test; echo $? diff --git a/test case/test_cmds.txt b/test case/test_cmds.txt new file mode 100644 index 0000000..ea0fefe --- /dev/null +++ b/test case/test_cmds.txt @@ -0,0 +1,629 @@ +/bin/ls +exit a aa a +echo ";;;;;" +/bin/pwd +ls -la +pwd +/bin/chmod +/bin/ls -la +echo 00\\\'pp ; echo 00\\\\\'pp +echo 00\\\\'pp' ; echo “./hello”. ; echo ./hello ; echo ello +Echo ; echo \n ' \n this is the; "first line"' ; echo "and right here;;; 'We have the second'" ; echo and" a fe"'w 'here'; with some slash and quotes .' '\' ; echo '\\' ; echo "\\" ; echo "\"" ; echo \\ ; echo \' ; echo \" "\\" "\"" \\ \' \" +echo /$"123$USER" +echo | cd .. | pwd +echo DOET HET NIET > test1 | cat test1 +echo hallo >x1 >x2 >x3 | echo hoi +echo $POEP hallo +echo "hallo$" +echo "\poep" +echo $/ +echo $ +echo "123\"456" +exit 123 123 123 +exit 1234 +echo $? +/bin/ls +echo $? +/bin/ls doesnotexist +echo $? +echo hi ; echo ; echo ; echo ; export ; env ; echo ; echo ; echo ; echo working ; echo $PWD +ctrl-C +ctrl-D +ctrl-\ +asdf ctrl-C +asdf ctrl-D +cat ctrl-C +asdf ctrl-\ +cat ctrl-D +echo \"test\" +echo" +hoi +" +echo +hallo$ +env +export ; export a="\\" ; export b='\\' ; export c="\b" ; export +env +export a=hijdoehet ; export +export test=working ; export +export test1 +export +export test1= +export +export 1test +export _TEST=DOethetwelmetunderscore +env +env ; echo ; export a=hijdoehet ; echo ; env ; echo ; export test=working;echo ;env ; echo ; export test1; export; echo ; env ; echo ; export test1= ; echo ; env +export +export ZZZ +export ZZZ= +export ; export a="\\" ; export b='\\' ; export c="\b" ; export +export LS="ls -la" ; ls +export TEST="evenchecken" +echo $TEST +unset a ; env ; unset test ; unset test1 ; env +unset PATH +ls +wc +awk +echo $PWD ; echo $HOME ; echo "$PWD" ; echo '$PWD' ; echo "$HOME" +cd .. +pwd +/bin/ls +cd .. +pwd +/bin/ls +cd notworking +cd . +cd .. ;pwd;/bin/ls;cd .. ; pwd ;/bin/ls; cd notworking; cd . +cd ~ +cd $IETSONBESTAANDS +cd $GEK .. +cd $NOTHING $MORENOTHING .. +pwd +pwd . +pwd .. +cd ../Desktop +ls -la +echo > ilovewords.txt count me ; wc ilovewords.txt +awk '{ print }' /etc/passwd +export PATH="test:working:multiplepath:directory1:directory2" +export +echo 'how are you' +echo '$PWD' +echo > "hardesttest.txt" +echo adding stuff >> working.txt +echo more stuff >> working.txt +echo > working.txt +echo dit > test1 gaat > test2 goed > test3 +echo dit > test1 gaat > test2 goed > test3 > test4 +cat < test4 +< test4 cat +> newfile ; > working.txt +< working.txt +< notworking.txt +echo > doethet ; echo hoi >> doethet "of niet" ; echo clear > "doethet" ; echo test > working.txt ; echo > newfile.txt hardertest +export | grep -e "HOME=" +echo hallo daar | echo hoi maran +cat working.txt | grep stuff | echo tim +cat | cat -e | cat +ls filedoesnotexist | grep notme | echo "TEST" +export | grep -e "PWD=" +echo +echo hallo daar +"echo" hallo daar +echo "hallo daar" +echo hallo daar | echo hoi maran +echo hallo daar ; echo hoi maran +echo hallo >file1 >file2 +echo hallo >file1 >file2 maran +echo hallo >file1 >file2 >>file3 maran siemons +echo hallo file2 +echo $USER"" +echo $USER" +echo $USER_ +cd +export +export ZZZ +export ZZZ= +export ZZZ=new_value +export ZZZ======new +export ZZZ=new YYY=new2 XXX===new3 +export $USER +export TEST=$USER4857987345 +export 123$USER--- +export MARANSIEMONS +export MARANSIEMONS=lief +echo $ +echo 123$USER---- +echo 123$USER----$ +echo abc$USERdef +echo abc$USER123 +echo abc$POEPdef +echo $USER "$USER" '$USER' +export TEST_$USER=hallo$LOGNAME +echo $POEP +echo $POEP $MEERPOEP +echo hallo $POEP +hallo +echo $POEP hallo +hallo +export TEST=/Users/maran/Desktop/minishell +cd $IETSONBESTAANDS +cd $IETSONBESTAANDS +cd $POEP $MEERPOEP .. +echojhdfjhjdkh +echo | poep + echo | cd .. | pwd + echo +echo +echo hoi +cd poep +ls +"ls" +test +exit +exit 99 +exit 3 a +exit 55 99 +/bin/ls +/binn/ls +echo hallo 'ma\"ran' siemons +hallo ma\"ran siemons +echo hallo 'ma\'ran' siemons +Multiple line error +echo hallo 'ma\'ran'' siemons +hallo ma\ran siemons Hij ziet de \ niet als escape, print gewoon \ +echo 'ma\' Hij ziet de \ niet als escape, print gewoon \ +ma\ +echo 'hallo$USER' +hallo$USER +echo 'hallo\$USER' +hallo\$USER +echo '\$?' +\$? +echo '$USER' +$USER +echo '\$USER' +\$USER +echo '"\$USER"' +"\$USER" +echo "hallo"maran" +echo "\poep" +\poep +echo \poep +poep +echo "poep\"" +poep" +echo "poep\'" +poep\' +echo "poep\" +echo "hallo\"\poep" +hallo"\poep +echo hallo"" +hallo +echo "hoi$USERmaran" +echo "$USER" +maran +echo "'\$USER'" +'$USER' +echo "\$USER" +$USER +echo "123\"456" +123"456 +echo "\poep" +\poep +echo "123\'456" +123\'456 +echo "hallo$" +hallo$ +echo \" +" +echo \$? +echo '$USER'$USER +$USERmaran +echo '$USER'$USER\$USER/"$USER" +$USERmaran$USER/maran +echo hallo"1234"maran"$USER"'/$USER'"/$USER"'poep''poep2'"maran"'ellende'END +hallo1234maranmaran/$USER/maranpoeppoep2maranellendeEND +echo "$USER"'/$USER' +maran/$USER +echo 'poep''poep2'"maran"'ellende'END +poeppoep2maranellendeEND +echo 'poep2'"maran"'ellende' +poep2maranellende +echo 123"hallo$"456 +export kip=ei=koe===melk +echo $_1234 +echo hallo +echo hallo | echo hoi +echo hallo ; echo hoi +echo hallo >x1 >x2 >x3 | echo hoi +echo hallo >x1 >x2 >x3 ; echo hoi +echo hallo | echo poep >x1 >x2 +echo hallo ; echo poep >x1 >x2 +echo hallo | echo hoi | cat +echo hallo | echo hoi > y1 >y2 | cat -e +echo hoi > y1 >y2 ; cat -e +echo hallo | echo hoi > y1 >y2 ; cat -e +echt bash +echo "hello | this is some stuff > touch this file" | grep more +env | leaks +cat x1 | grep Makefile +ls > x1 ; cat x1 | grep main +echo $USERhallo +echo $hallo"poep" +echo /$"123$USER" +echo $a5aap +echo $_poep +echo hallo$\abc +hallo$abc +echo hallo$\\abc +hallo$\abc +echo hallo$"USER" +halloUSER +echo hallo$"POEP" +halloPOEP +echo hallo$'USER' +halloUSER +echo $halllo### +echo $USER9582309582529 +echo $ +echo $USER +echo $USER' +echo 123$USER---- +echo 123$USER----$ +echo abc$USERdef +echo abc$USER123 +echo abc$POEPdef +echo $%%%%jlkjtwejt +echo %%$ +echo $"USERhallo" +echo "$222" +echo "hallo$USER***$USER$2$" +echo "$_poep" +echo "$a5aap" +echo "$halllo###" +echo "$USER9582309582529" +"hallo$USER" +echo "$" +echo hallo"$"abc +hallo$abc +echo hallo"$POEP"abc +echo hallo"$USER"abc +echo "$USER" +echo "$USER'" +echo "$USER_" +echo "abc$USERdef" +echo "abc$USER123" +echo "abc$POEPdef" +echo "$%%%%jlkjtwejt" +echo "%%$" +echo $"hallo" +echo $hallo +echo $hallo"poep" +echo "hallo\"\poep" +echo $"etet" +“$rewtwet” +echo "$53535" +$" +$' +echo “$\hallo” +echo $"\hallo" +\hallo +echo "\\hallo" +\hallo +echo "hallo\\hoi" +hallo\hoi +echo "\\$USER" +\maran +echo "123\"456" +123"456 +echo "123\$456" +echo "123\\456" +123\456 +echo "123\!456" +123\!456 +echo "1234" +echo "12\34" +echo "1234\" +echo \"1234" +echo "1\a234" +echo \1 +echo "\1234" +echo "1234\\" +echo '1234\\' +echo '1234' +echo '12\34' +echo '1234\' +echo \'1234' +echo '1\a234' +echo '\1234' +echo '1234\\' +echo '1234\\' +echo \a +echo \b +echo \c +echo \d +echo \e +echo \! +echo \" +echo \# +echo \$ +echo \% +echo \& +echo \' +echo \( +echo \) +echo \* +echo \+ +echo \, +echo \- +echo \. +echo \/ +echo \0 +echo \1 +echo \2 +echo \3 +echo \4 +echo \5 +echo \6 +echo \7 +echo \8 +echo \9 +echo \: +echo \= +echo \? +echo \@ +echo \A +echo \B +echo \C +echo \D +echo \E +echo \F +echo \G +echo \H +echo \I +echo \J +echo \K +echo \L +echo \M +echo \N +echo \O +echo \P +echo \Q +echo \R +echo \S +echo \T +echo \U +echo \V +echo \W +echo \X +echo \Y +echo \Z +echo \[ +echo \\ +echo \] +echo \^ +echo \_ +echo \a +echo \b +echo \c +echo \d +echo \e +echo \f +echo \g +echo \h +echo \i +echo \j +echo \k +echo \l +echo \m +echo \n +echo \o +echo \p +echo \q +echo \r +echo \s +echo \t +echo \u +echo \v +echo \w +echo \x +echo \y +echo \z +echo \{ +echo \} +echo \~ +echo "\!" +echo "\"" +echo "\#" +echo "\$" +echo "\%" +echo "\&" +echo "\'" +echo "\(" +echo "\)" +echo "\*" +echo "\+" +echo "\," +echo "\-" +echo "\." +echo "\/" +echo "\0" +echo "\1" +echo "\2" +echo "\3" +echo "\4" +echo "\5" +echo "\6" +echo "\7" +echo "\8" +echo "\9" +echo "\:" +echo "\<" +echo "\=" +echo "\>" +echo "\?" +echo "\@" +echo "\A" +echo "\B" +echo "\C" +echo "\D" +echo "\E" +echo "\F" +echo "\G" +echo "\H" +echo "\I" +echo "\J" +echo "\K" +echo "\L" +echo "\M" +echo "\N" +echo "\O" +echo "\P" +echo "\Q" +echo "\R" +echo "\S" +echo "\T" +echo "\U" +echo "\V" +echo "\W" +echo "\X" +echo "\Y" +echo "\Z" +echo "\[" +echo "\\" +echo "\]" +echo "\^" +echo "\_" +echo "\a" +echo "\b" +echo "\c" +echo "\d" +echo "\e" +echo "\f" +echo "\g" +echo "\h" +echo "\i" +echo "\j" +echo "\k" +echo "\l" +echo "\m" +echo "\n" +echo "\o" +echo "\p" +echo "\q" +echo "\r" +echo "\s" +echo "\t" +echo "\u" +echo "\v" +echo "\w" +echo "\x" +echo "\y" +echo "\z" +echo "\{" +echo "\|" +echo "\}" +echo "\~" +echo '\!' +echo '\"' +echo '\#' +echo '\$' +echo '\%' +echo '\&' +echo '\'' +echo '\(' +echo '\)' +echo '\*' +echo '\+' +echo '\,' +echo '\-' +echo '\.' +echo '\/' +echo '\0' +echo '\1' +echo '\2' +echo '\3' +echo '\4' +echo '\5' +echo '\6' +echo '\7' +echo '\8' +echo '\9' +echo '\:' +echo '\<' +echo '\=' +echo '\>' +echo '\?' +echo '\@' +echo '\A' +echo '\B' +echo '\C' +echo '\D' +echo '\E' +echo '\F' +echo '\G' +echo '\H' +echo '\I' +echo '\J' +echo '\K' +echo '\L' +echo '\M' +echo '\N' +echo '\O' +echo '\P' +echo '\Q' +echo '\R' +echo '\S' +echo '\T' +echo '\U' +echo '\V' +echo '\W' +echo '\X' +echo '\Y' +echo '\Z' +echo '\[' +echo '\\' +echo '\]' +echo '\^' +echo '\_' +echo '\a' +echo '\b' +echo '\c' +echo '\d' +echo '\e' +echo '\f' +echo '\g' +echo '\h' +echo '\i' +echo '\j' +echo '\k' +echo '\l' +echo '\m' +echo '\n' +echo '\o' +echo '\p' +echo '\q' +echo '\r' +echo '\s' +echo '\t' +echo '\u' +echo '\v' +echo '\w' +echo '\x' +echo '\y' +echo '\z' +echo '\{' +echo '\|' +echo '\}' +echo '\~' +echo '\;' +echo "\;" +echo '\>' +echo "\>" +echo '\<' +echo "\<" +echo '\|' +echo "\|" diff --git a/test case/unset.txt b/test case/unset.txt new file mode 100644 index 0000000..b696660 --- /dev/null +++ b/test case/unset.txt @@ -0,0 +1,3 @@ +unset a ; env ; unset test ; unset test1 ; env +unset PATH +unset po1 1op 2 po2; echo $? $po1 $po2 diff --git a/tester b/tester deleted file mode 160000 index eafb1b8..0000000 --- a/tester +++ /dev/null @@ -1 +0,0 @@ -Subproject commit eafb1b837133c03cc819ffac07fc695acaee4c51 From 4d11af6ebcb9e38f4dd9239933559aefb106e981 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Fri, 11 Aug 2023 12:21:08 +0900 Subject: [PATCH 18/57] =?UTF-8?q?=ED=8C=8C=EC=8B=B1=20=EC=88=98=EC=A0=95?= =?UTF-8?q?=20=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Libft/ft_atoi.o | Bin 0 -> 880 bytes Libft/ft_bzero.o | Bin 0 -> 584 bytes Libft/ft_calloc.o | Bin 0 -> 696 bytes Libft/ft_isalnum.o | Bin 0 -> 688 bytes Libft/ft_isalpha.o | Bin 0 -> 632 bytes Libft/ft_isascii.o | Bin 0 -> 592 bytes Libft/ft_isdigit.o | Bin 0 -> 592 bytes Libft/ft_isprint.o | Bin 0 -> 592 bytes Libft/ft_itoa.o | Bin 0 -> 1128 bytes Libft/ft_memchr.o | Bin 0 -> 648 bytes Libft/ft_memcmp.o | Bin 0 -> 680 bytes Libft/ft_memcpy.o | Bin 0 -> 680 bytes Libft/ft_memmove.o | Bin 0 -> 784 bytes Libft/ft_memset.o | Bin 0 -> 608 bytes Libft/ft_putchar_fd.o | Bin 0 -> 624 bytes Libft/ft_putendl_fd.o | Bin 0 -> 856 bytes Libft/ft_putnbr_fd.o | Bin 0 -> 1048 bytes Libft/ft_putstr_fd.o | Bin 0 -> 680 bytes Libft/ft_split.o | Bin 0 -> 1976 bytes Libft/ft_strchr.o | Bin 0 -> 672 bytes Libft/ft_strdup.o | Bin 0 -> 736 bytes Libft/ft_striteri.o | Bin 0 -> 624 bytes Libft/ft_strjoin.o | Bin 0 -> 888 bytes Libft/ft_strlcat.o | Bin 0 -> 840 bytes Libft/ft_strlcpy.o | Bin 0 -> 768 bytes Libft/ft_strlen.o | Bin 0 -> 624 bytes Libft/ft_strmapi.o | Bin 0 -> 792 bytes Libft/ft_strncat.c | 26 ++-- Libft/ft_strncat.o | Bin 0 -> 968 bytes Libft/ft_strncmp.o | Bin 0 -> 776 bytes Libft/ft_strnstr.o | Bin 0 -> 936 bytes Libft/ft_strrchr.o | Bin 0 -> 672 bytes Libft/ft_strtrim.o | Bin 0 -> 1320 bytes Libft/ft_substr.o | Bin 0 -> 1000 bytes Libft/ft_tolower.o | Bin 0 -> 600 bytes Libft/ft_toupper.o | Bin 0 -> 600 bytes Libft/get_next_line.o | Bin 0 -> 2936 bytes Libft/get_next_line_utils.o | Bin 0 -> 808 bytes Libft/libft.a | Bin 0 -> 35328 bytes incs/bulitin.h | 4 +- incs/parse.h | 8 +- incs/struct.h | 6 +- libft.a | Bin 0 -> 35328 bytes minishell | Bin 0 -> 89046 bytes srcs/builtin/builtin.c | 20 +-- srcs/builtin/builtin.o | Bin 0 -> 6200 bytes srcs/builtin/builtin_utils.o | Bin 0 -> 8296 bytes srcs/builtin/ft_atolong.o | Bin 0 -> 4112 bytes srcs/builtin/ft_cd.o | Bin 0 -> 6880 bytes srcs/builtin/ft_echo.c | 121 +++++++++++++----- srcs/builtin/ft_echo.o | Bin 0 -> 4656 bytes srcs/builtin/ft_env.o | Bin 0 -> 5512 bytes srcs/builtin/ft_exit.o | Bin 0 -> 6336 bytes srcs/builtin/ft_exit_two.o | Bin 0 -> 5120 bytes srcs/builtin/ft_export.o | Bin 0 -> 6616 bytes srcs/builtin/ft_export_two.o | Bin 0 -> 4376 bytes srcs/builtin/ft_pwd.o | Bin 0 -> 5184 bytes srcs/builtin/ft_unset.o | Bin 0 -> 4560 bytes srcs/execute/checkbulitin.c | 2 +- srcs/execute/checkbulitin.o | Bin 0 -> 4720 bytes srcs/execute/execve.c | 2 +- srcs/execute/execve.o | Bin 0 -> 7992 bytes srcs/execute/freepipe.o | Bin 0 -> 5144 bytes srcs/execute/pipe.o | Bin 0 -> 6088 bytes srcs/execute/pipeutils.o | Bin 0 -> 6104 bytes srcs/execute/setpath.o | Bin 0 -> 7320 bytes srcs/init/init.c | 3 +- srcs/init/init.o | Bin 0 -> 7272 bytes srcs/lexer/expand.c | 46 +++++-- srcs/lexer/expand.o | Bin 0 -> 10456 bytes srcs/lexer/lexer.c | 6 +- srcs/lexer/lexer.o | Bin 0 -> 6128 bytes srcs/lexer/quote.c | 21 ++- srcs/lexer/quote.o | Bin 0 -> 8640 bytes srcs/lexer/tokenizer.c | 11 +- srcs/lexer/tokenizer.o | Bin 0 -> 7408 bytes srcs/minishell.c | 2 +- srcs/minishell.o | Bin 0 -> 4952 bytes srcs/parser/parser.o | Bin 0 -> 6192 bytes srcs/parser/syntax.c | 22 ++-- srcs/parser/syntax.o | Bin 0 -> 8240 bytes srcs/redirect/heredoc.o | Bin 0 -> 5208 bytes srcs/redirect/heredocutils.o | Bin 0 -> 9848 bytes srcs/redirect/redirection.o | Bin 0 -> 6136 bytes srcs/signal/signal.o | Bin 0 -> 4304 bytes srcs/utils/env.o | Bin 0 -> 6520 bytes srcs/utils/list.o | Bin 0 -> 3688 bytes srcs/utils/list_clear.o | Bin 0 -> 3200 bytes srcs/utils/temp.o | Bin 0 -> 8680 bytes srcs/utils/tree.o | Bin 0 -> 4376 bytes srcs/utils/utils.o | Bin 0 -> 5832 bytes "\352\263\265\353\260\261\354\235\264" | 0 "\354\235\264\352\261\260" | 0 ...4\221\352\260\204\353\266\200\355\204\260" | 0 "\354\266\234\353\240\245" | 0 ...5\274\355\225\230\353\212\224\353\215\260" | 0 96 files changed, 196 insertions(+), 104 deletions(-) create mode 100644 Libft/ft_atoi.o create mode 100644 Libft/ft_bzero.o create mode 100644 Libft/ft_calloc.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_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 create mode 100644 Libft/ft_strmapi.o create mode 100644 Libft/ft_strncat.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 Libft/get_next_line.o create mode 100644 Libft/get_next_line_utils.o create mode 100644 Libft/libft.a create mode 100644 libft.a create mode 100755 minishell create mode 100644 srcs/builtin/builtin.o create mode 100644 srcs/builtin/builtin_utils.o create mode 100644 srcs/builtin/ft_atolong.o create mode 100644 srcs/builtin/ft_cd.o create mode 100644 srcs/builtin/ft_echo.o create mode 100644 srcs/builtin/ft_env.o create mode 100644 srcs/builtin/ft_exit.o create mode 100644 srcs/builtin/ft_exit_two.o create mode 100644 srcs/builtin/ft_export.o create mode 100644 srcs/builtin/ft_export_two.o create mode 100644 srcs/builtin/ft_pwd.o create mode 100644 srcs/builtin/ft_unset.o create mode 100644 srcs/execute/checkbulitin.o create mode 100644 srcs/execute/execve.o create mode 100644 srcs/execute/freepipe.o create mode 100644 srcs/execute/pipe.o create mode 100644 srcs/execute/pipeutils.o create mode 100644 srcs/execute/setpath.o create mode 100644 srcs/init/init.o create mode 100644 srcs/lexer/expand.o create mode 100644 srcs/lexer/lexer.o create mode 100644 srcs/lexer/quote.o create mode 100644 srcs/lexer/tokenizer.o create mode 100644 srcs/minishell.o create mode 100644 srcs/parser/parser.o create mode 100644 srcs/parser/syntax.o create mode 100644 srcs/redirect/heredoc.o create mode 100644 srcs/redirect/heredocutils.o create mode 100644 srcs/redirect/redirection.o create mode 100644 srcs/signal/signal.o create mode 100644 srcs/utils/env.o create mode 100644 srcs/utils/list.o create mode 100644 srcs/utils/list_clear.o create mode 100644 srcs/utils/temp.o create mode 100644 srcs/utils/tree.o create mode 100644 srcs/utils/utils.o create mode 100644 "\352\263\265\353\260\261\354\235\264" create mode 100644 "\354\235\264\352\261\260" create mode 100644 "\354\244\221\352\260\204\353\266\200\355\204\260" create mode 100644 "\354\266\234\353\240\245" create mode 100644 "\354\266\234\353\240\245\353\217\274\354\225\274\355\225\230\353\212\224\353\215\260" diff --git a/Libft/ft_atoi.o b/Libft/ft_atoi.o new file mode 100644 index 0000000000000000000000000000000000000000..6af93fb94d9f00580a48389b4dde722c5e961288 GIT binary patch literal 880 zcmbVKze~eV5Wck4rdEwmAsUw~LhGc0idzQ-1qYE1-5#YX7VQrqVi%#};@Zuvqb`mP z+3KX5xH!91Qo%o<4%Y9|y!3~iJaX^dyYKG1yO;O!{q-|Wq!5Ic5cG%*6AGDyI<7T* zxp6azuDxBJ!w6>$cxggd2W6|vAw+63o$8*YRqo-Fxh@u>ij3i1h-@)m%498ZRyfZU z_J!El=*1+`R`|5P&)$Z2Y1tAqF@aJ^+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710W6Ja|1EV4v-oU z2I&Qka^N;VM%6WsHdj0+yj@uS>ON=lNy2a${wQsYu}Ib z9Cy;g*r$GwrRde9C^XB_Teck0<@`0~T?GbWMmd^G(MM?Bto4YtuxI|>FN_wz0dl%0 zjh+;B52a6f?ocDOw?2>J&dw0~^&bp=(dSg}C7*xFs_<~9q6J2>C`rtjT?gmn!paKZ w94@ZrP#*sBL|){COZexeeBxt|-MV{L_lVt^<23CgWRIoexvdS7RURMq17ML_N&o-= literal 0 HcmV?d00001 diff --git a/Libft/ft_isalnum.o b/Libft/ft_isalnum.o new file mode 100644 index 0000000000000000000000000000000000000000..8311ad73435a78ccf372be4688ce3871f566087b GIT binary patch literal 688 zcmb7CJxjw-6uq(43eoD2L0!xu6tti&Iw~qSIEZv`yM#tbGrtu!Qc8_$9=2%U4OodZ)X*#d2kCYvp0S2 z#*NJmyxaE~eoDWSzGrOt8B0h}ELvckr6^r^jV*%nazGsm;5-hR+_T))RH`rkO)6D7 hof98N?47&bi5F?@RD+uTrNfFt)yNN5)Vi!6OCOCqO%MP8 literal 0 HcmV?d00001 diff --git a/Libft/ft_isalpha.o b/Libft/ft_isalpha.o new file mode 100644 index 0000000000000000000000000000000000000000..f936134384ebac76d78e8c6def92e55f0fe03b61 GIT binary patch literal 632 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg{|11j7BHi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJHe0cC*9gXskeu`o2i)PU&t_~iWDg2d#K_|m-c%)FHNcpn#J zd6+p0FhQVU%s{pRkcK)H#dss2oCFX<!C2I2r91_6*7 z5C-W5*+CBY@62%V0XM_W7u*gzIanDBUo4+51q^p{pqV0Iu}q-Y@%d7~a6yQ*LezO6 zi@gMjU7s(t0;*Sop&{r6Kf_L-yF~s2X^?pj_#Jiv?VEUjIsO{Vt>Ewy0DA)_1gC*| w*o1*RK9C2Y02DfWKu^QM86?GzB+n3^RuZ3CoS0LPk;sr!l3QR1CJkWv0U(J-hX4Qo literal 0 HcmV?d00001 diff --git a/Libft/ft_isascii.o b/Libft/ft_isascii.o new file mode 100644 index 0000000000000000000000000000000000000000..6895e02eb9b0f074c0d3d2b35b63434a98217467 GIT binary patch literal 592 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P08wF5<5+(=K!zK*m@PQl-1t4GZ0X+lr h8%T;DNuD7-tt39PII%c6Gm{~wB)7m2Od7!S0{}(4JCpzb literal 0 HcmV?d00001 diff --git a/Libft/ft_isdigit.o b/Libft/ft_isdigit.o new file mode 100644 index 0000000000000000000000000000000000000000..922557d07d952d8a42f60e7d36dfb72bb195ae68 GIT binary patch literal 592 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P08wF5<5+(=K!zK*m@PQl-1t4GZ0X+lr h8%T;DNuD7-tt39PxS%LAuY@6|B)7m2Od7!S0|2AlJTw3R literal 0 HcmV?d00001 diff --git a/Libft/ft_itoa.o b/Libft/ft_itoa.o new file mode 100644 index 0000000000000000000000000000000000000000..853a82d120c8aa5ad2a5be249327b6184fbacfa5 GIT binary patch literal 1128 zcma)6O=uHQ5T5Ne$!=o}g+jHc8}L$)LhZ!}9u}fdr3WcJc=8cae-`pnVWmPT1ab-J zCFn`PimgTU!r;henL?o87nB2o@YNZ{C|X-#0(J&8MH=exD#x z2*S%a^geIWP{?Vh=kNZ#m}7yz<}(n5=LFoW@|uLO?>w?24k1>r-CB*#;qI5@VLrz0 zsFGuxDq##;A@b$odMK3@Zd*ZLcXXpKVlK62VXi z*T8-cxEO2(16qJhLT^G@n3t8YJU`h2cKdma-I@yNnC8^gQ zYj)1LPUp6($7sq^^=*C2d^$&!J=)S=@O?KyJuhMQG=;uv@&Hy_W zVA*$Fsq9TmetdodHEYVmf%bvwU%~lGZMcVOa{CGDdyV>*tP2^R1F_6~I2g=uZ>`Qt z7x^9=sFBYOdgGkUsyOOzW?PtH{kD%RS2ZjN-z6HQB=t?g6}FPjA?p4qtZ^ zas^v}=Fh-_Vm=+%I1HcT=V4C<-0bq-D4#>#vwY8wU4F3B*rrC}@gL!1U;+{Ok}cM( edzMY2m@5>@c@lSRVcF#z73|{rMStZ_#g{+$EZs){ literal 0 HcmV?d00001 diff --git a/Libft/ft_memchr.o b/Libft/ft_memchr.o new file mode 100644 index 0000000000000000000000000000000000000000..a0a51afb13a7db7b5870c94d8eaad50fab46323f GIT binary patch literal 648 zcmbVKJx{|h5WVz+qzV*?R!ZrT{)EB;-8{g?z|eusLZPS#QX&)tBO?O?{RLeaS-T~8OM=W)hv4B>fMuTGWdDyv~HWpEls`#~(v2Ny?!11Wd5 z^7^d_TE;gptO&jdZ?^ht{5rG-@S`oE7=UpR=Y{Ey;5l}IU4V^i7~IR>_>ZNJ^gO9i z^6Jz0&80-uM51hXUyPMc9n7vPS0t4(&8E;Di)P9jHJt)&Xw4SLiO$p)9mlF1D|^(u zqq(L$N^l=_#dT#G^6d9C^-|=yf8vP*dl)_x9tMYa+E;eO2rY7NF@CNegJ{3BjE!8 zgDwPd6^P13aJ*S|!;ugKlf0cb^JZpuZ}0y7?PHS2As8cWl|UAw19a>QsTwZ4G-VqvN={6D9Jbb9&I(m2z`E zuiu!UX8bCKx!^5$bJQQ>m!Zu9U)mIk0T>r?e%th4!gCw|TL2r^Fu0fZ_>X0G^f;)H zdJajw1fp}dnOHpDivuogzh^uN~>4%zDp}w^8|8YZRiTM2=6_Z+sf83}Oxc e8kO;}?EA13=5&&KiHzHE6nE(;iMvaBZO|tV&tNV9 literal 0 HcmV?d00001 diff --git a/Libft/ft_memcpy.o b/Libft/ft_memcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..432a71542dd2a40a3eb37fb4330688e9c6f1b691 GIT binary patch literal 680 zcmbVKyH3L}6uluWDGIa_trY0g5iu1O=#~LC28IsZ3<^a>A|*o*urYR|U(g?5=qDiY z0l>msm=Yw0j%Fa7>)L9Nn7GpMeVu!3$9ekt{9Y!q2*yhR=yA{hVCz7lqQ94CT^=X} zB9l9)GZu7Th`4(l>jX}S_I{^5&rNi%1J*OMs#Ks`!(lH(a1lnwK`bu&S7-ebArAKP z{jp9O+V4WlM%;ndNBt$gjounC>#cwcz?j7KBRziy&$$a60&L7-@GS4~AIl!;Wl|;i zRw4QBl1!?;ELk*7oKbzlq8(`0lFGa`pjj>RNaBrZ%ugK5fs@!I72oycQjw-9^puu2 zs`reRt$M>0+>+(DQpcB@MH+rU1N*h6S>`EC=(EzCj9_ICSg$k literal 0 HcmV?d00001 diff --git a/Libft/ft_memmove.o b/Libft/ft_memmove.o new file mode 100644 index 0000000000000000000000000000000000000000..9d5e31641ef589af73b037128240e95a73f0b95e GIT binary patch literal 784 zcmbVJJx>Bb5S`=D15q%6L#`LfiqSo@;$F)FQG_TH@Cqf+T&DRZ2 zDNf#j%!WUJjYs^T-$88+I<2js84BSh&JSb!J8TJY26_l(;T~4T@{IpTbWe|?JgMg# zsh12XnfFx6qKS0+#SM#g!CjEKS*}CVT;!6%?gj3b4shs^Hmu{R(B}U1tGw+OJBew( z=E-;}y+D%?bMy?iUu>8ez=Ws+*G*YoB?QkH@us!Z#U7PO6uEiK`wI_d^g`@nc(xFa zv7_P99K1K~!2Zbf6yBjXw8fKoL;a6s{k$giZGl Sy6?9x>vSIY?QMOQ4gL#Ewtlk! literal 0 HcmV?d00001 diff --git a/Libft/ft_memset.o b/Libft/ft_memset.o new file mode 100644 index 0000000000000000000000000000000000000000..3524c0760ee6ccd2ade520ebc4f7777a2b686b43 GIT binary patch literal 608 zcmbVKJxc>Y5S=rLADreygo{?`B398xuF4e(78VvM>;_3rB6u<2ik6mX^9%eP=>&g( z*jPuajUX7XISbD>=Pq8r%7M4@@n#;o!#;ezeJv6>1e2o(bR?((ur)wu(ceekl>3 z$0Swb-=SAPybMuu)hYRHa24Q(TS7AclP0NG5Xk&KyyPx$2#86KKxU=qKbGFp+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*TVsc4*XM+jxbm+v!^8!jY5FJf4;wKUdwMn$I@GBtN2#3+mB1MW6!XVzMf%A-dApx6%`~d^@o?YS} zFm{4JK(r7`wMt`egs5*WdzhS!18?5EnccV9z1)Ake+?3K5kgWJs7VnA5EHK!K}FdGM2vmq=7 z5VA=66%_J5<1o>{13(IpkZ&N6y>j;sW9a|H_Z>YnPrIwl5|!Oj?Bg;St5uR*>+7PU z`t`-+KG8D#$3_9^*Q0b(De*@=LJb#;GtOTlTH`H5S1(cRMzo7{*mE{TRGud1QF`Lh zJYB2eyz*^`pZWtoPJIWtPDkiay+pHHV0dh1TD&T6AbkytyU&7T-n#@IM&XB)!+03w zPxApiBN}h(fF&k@k+%JP&~1{U0Zk^);SWZJ@(ZQxjqFov={-i-uM6jq}A%loRw~N0usA)`}D2VXDrDFqy zj&V%ZE={&d9MnbHp*Wf?D&0j$)9<{ThtJf42hKfz-}&x+_nmus^ZQRLkwy?+8lZW0 z0#L|PXw<4&;Xli?)Xv1(aWjytF6mIpSlTvj+m)J~d^>v^+g`xI_Xx=sAkewkKqebo zlv?;;q~eKplBnmidAw4;W-^D=g#^C$>&dwVLv1Fu;)zA2ViOKH4am6ylGJf7{MP%&S9glZs;_WrBRf7o1nrE@8MG2qaT$WEms+*^nTHw zFS)5uc8?WwjW){PGQJg}Veod0K(ob6{$g+LtFEtK%Qe?3H76D^~ox{DPzq{10P6$JPfp+jWZnqs$M@lRts+OVTM(p-2i z7mczn1tsnk%=5Z>7sr?xdmh^mw>kLutvEuWHPwfQLTW1&Hyu2L;y$2gw2Y3zT`9zyJUM literal 0 HcmV?d00001 diff --git a/Libft/ft_putstr_fd.o b/Libft/ft_putstr_fd.o new file mode 100644 index 0000000000000000000000000000000000000000..e34149bfbdabb9b249a3d3fc46968974ecf735e1 GIT binary patch literal 680 zcmb7Bze_?<6h8VagUSLOszsY>5vrwCvbKf>hqgob6a_W2D+(^bTU-VAY}5XMbPM_e zqNTZ--V!uwVD+8bee{Bs4t(eP&X0TEJ@?(ezkVzb1qdcC1QbLh0N5(vYW25kn{-=G zAoAic@`9kLGpk%vnE=F`IXKSz#GbN^ka==;8BWg#(S_F|%$z+fS5LBv>y<{aVlyA^ z`|AZ0Bn-b{o&}x2FmqKs)|6=nVg>lFEutBKNt5I^A!fi$@D_L;I0D3^M<8eA8>0Vf zpLg^yZ3PEYhdMncKE6uFhy64U=K^%*-dwI>pIyw4;a|lh??!3VcX;fEY0?AZd)?=7 zYVu;y^;0x8l34nut-S$ecWy0y^xw(6bI6|)EjuBZOo6dW5+r-gZh#}Qps{su1dDp_ u97Vk3tBdr7gnR#riSvrjRjrh(5I1T?mD8DOT_MSNn@Xx&-PT^7o4x>P!Baf| literal 0 HcmV?d00001 diff --git a/Libft/ft_split.o b/Libft/ft_split.o new file mode 100644 index 0000000000000000000000000000000000000000..0274283b48990647c87703b37087a4f2885a4d9d GIT binary patch literal 1976 zcma)7y-!n76hDs&ZT+B8h$yIq4NPjpLFr&pttJi(#4xy+3zn*lrBr;x8e;Mi784w7 zWHg~Twf+Tt6C^BbL}HASDd5l!CK@#XlUjf0e#nC^p5(rB&&NIIch0%JUH|>{&ru?a zK>Rs`Rpw1E7U(qAkhDs%>2rz?fIev-Bm1G_p3O)h;c?eM!DqZAOyJBvzm5x_^!FTjL_S&+X4Qcb! zZq*;#4OsNO>R;@BL39OJI+y3dJ7I7>2is$|flC|Cy~4`#c|ME6caOt&J3;wI54jcS zmXQCg&L22LgM7ZKW3zp;C+70`0`j1zot%?n6(RG!Fei5Ev+)vY%dhyv$Hpq5#+Fij z4mHAODIP92I>=?;B76f@EGlt!Ep|WjDV$2b5-r6=Iba1JF@`mbLE2g=&-vPQz9Rgr zv(&-3Dk1c&1GRI{kf#=MToo@kZ!m5(8eJ9m)Mu}kfKTB(FpJF)?QRK*ZtFgWErq!n z;-2qeUTamDm3}2!6Dz1^KW1qI<|<Dj=JR}MT&p=WC5MctDCIVXy%;WF-OXAN-_mf$?+<2e16>PNq>VIB1^!(Yy8Rh0M5 zYmVn-mFjWIS5W&V@Ub6e%=hqd4YHY+xfeWt&P%|?_TO0p*}5}{+wqS3Cugr?<4!0{tRl_^dqiiQ-9*X`MWHm5c7_6>X0Y@Fl3KN z{A2OTT&Gt)c|ay{-xg1@>6A?(nM;~2D`)QEpNd2xgFQBBaY4!H+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|z0xH}AHi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJIp1j+!J2h$4{Vqs{2sR7aP@yYqQ1&PTe@uhj?nRzMk@jfod z@++Vm1t@I*G>jR@4gk_nr=l2d1eB8iVu&0sP%#h#0Z0)@JOZk}14x7T+&~-v#2^4t z1HvG^AUntb|C<>uKHz5f`H-Js=L>#^oiFqmEP>{Uyx?~D$-(Gg$-&4__(FWX6bBQ7 zIYRt^}0RzA^#=r**Bv`zFr1+8K8RFAQ;)_d) Rk~4}Ja!PUw48f!U0|4h5Suy|s literal 0 HcmV?d00001 diff --git a/Libft/ft_strdup.o b/Libft/ft_strdup.o new file mode 100644 index 0000000000000000000000000000000000000000..ada19c5ee0486eb467f07cc0d4dbe8f7ba0b764c GIT binary patch literal 736 zcmb7CJxjw-6uoWQrlne!4(ejTrJ@DvqGJ#R2M31^ZqJfd6w)?mib@dzS-KY79PHTs z3I%_F=-?c;I5@a9Le+EA7p>yrf&0$6pYP_8ySJD338DxAe8gY}EOIbl2Id9o@1rZj z?O*~?=&OjcMP*(Ht9oil2P8ykbGP*Ehsu_M=W%Zyhr+QK*-RmX&>JTKuyC&xk+3K1GtFeTM!9w54;9W!**Z{u3_U|-Zj`4 z{2zSW(*3X%?GGL5xM}j;wC1D#!d1zCRy99Q_QOJ)I&_}84B`s;o}&552)%mh)ohz+ z758Vaow-2@>>~Gs86JA0+=p3Q-$S13x{eqOTkCz?+qqH1W4Nn568szdz#cq&S78Yp z2WP=3DuDRA6Gd=_A3$OeoWY~m(&yKl8q2dBbI0C()G+@mPh#H^$JUXdn`fb}G|f;N U)jEk<*)SS98CK0K2In%-C!!=_w*UYD literal 0 HcmV?d00001 diff --git a/Libft/ft_striteri.o b/Libft/ft_striteri.o new file mode 100644 index 0000000000000000000000000000000000000000..a0a8a3eb480b1c2684ca86ec97c56499edd8e498 GIT binary patch literal 624 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg{|0V>=9Hi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJHe0A+y8gXskeu`o2i)PU&t_~iWDg2d#K_|m-c%)FHNcpn#J zd6+p0P{AKS^O%8b380}+r=l2d1d;<{h#W6aF%Sa*ND)X}0muO94*=2%K$;uG24WBZ zsR3b-UXU7c!2iPx7yni>t^C`}FmXY%{Evs+3_t(#GwcMKDYBwD{>MxHhMgRYoZTFZ z4wf8@423Vm=Su;@$Q&g9g4^Ne1Ad2{D}m}>0o5roa&+FyGC6ysoJ5PShN=l%cx z;(x21Rs!vrcz`+n8qAH*Z~{d;1^}APCIS@Y19=Pz_<%GY(6g}c1xfKE$uq>KmBbg9 V6lIpA7G*Nzl;jo|f=L6YegJtAPvQUo literal 0 HcmV?d00001 diff --git a/Libft/ft_strjoin.o b/Libft/ft_strjoin.o new file mode 100644 index 0000000000000000000000000000000000000000..de774eabb4c94570e4232da47ad82f2dc58cd1aa GIT binary patch literal 888 zcmb7Cze`(D6h5!lG(XxJ1RrwX><{{2W`Q@!NI}pB58`Y`C;29Ed(KuMaUFz zb1RD5pR0j%jV>zgTw~S}(s|S-y*X_B^1+vsYLYlOs|k z_@;HPT-;dAS$ebddA;;T>%~`oj+pgy(%$A*Pv-~FOHuxh&4Nw9hq))X6b@q%_Z^TB zZ~@I^fsf!za2jjqJj-6m|JVA;IPX2adDeUJJ8u_D{#fex)H;iN8JZI zv6nnGhIQPJLa&AUneRaBCQ&`?s@TE%kc@S4K4Zk{Q-;ic@AnhbveDOlTHL2r2jB58 zTI{=nyCO!ko`OE(ee}&cnlY5Z(0>??N;d3ega9*C~Ra7D~DUwX+bhuyP48q7Y-$69pR~jbIh9PwX!K zgLIa5Vk4GfAs58L?jpqaX0xX!SU4~{Z|CF9?#|wQynPNZ#u=VrDigvfoH#!mLaZ&Vul?);ln(Jx?JX9`5n*RR4p|}cd%NXa-VsNo z~UirciCu_)VbAz$X`=!>}O+uY`CF5p34wShYr+|D-8dlLI=^afYxGZc!`)I(c*v@J&*ItRsk&iTfL5-U2p literal 0 HcmV?d00001 diff --git a/Libft/ft_strlcpy.o b/Libft/ft_strlcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..b280b25b58ee194985258aabecda6f07dcdacef9 GIT binary patch literal 768 zcmb7Cu}eZ>5Wm;co?__|SQ06;NDx#*;U-jDLxe-yN0?!tX7!@NMR0LU2x`+&`w!fN zmbPe#hK5%VJcouhUtspT=l9Zvh7RuTclX`>zI*q*`_K2UF(QQ^Y+TSZg9sEd1vPE- zhp{_}%F_3lh%}V5j>tA4^wgO?;1D9QzMUAv4tkb=`M9?XV^h1R=+v+mB6*O_?<93` zk~`hc?FzB6HhgZ#AR>JlJSy;o!#5bsu2_Pdg!VsU9K}!w&%pU>0N%|Ld=%aX-Gs7m z4J-HZ9eoafe@IVN9=Zj!(Y>WgO$~Qm0%X1V$T9+P3pAI8MwaP|TONfzOsyKK6RqH$ z2~&$(^-{Pq3v9=z_b9Cx>JH6dHRPq@R$HSc-mqWK9By!2RYNB7lB0R2(6ZC-byKB{ z`#nlL)=))f4)G0UiYgSdXW)L!_SWkK>o^Z{Ue3WBwUX#`3#$!$Q>CSf$Kf@|_vKao zl4(TP-8?73F**b92XKVnz>g&xGQmfIp>uw%p%6dFo-U5{qf9b?{)1CF%IMkrqHPy! Frf*NVcrE|{ literal 0 HcmV?d00001 diff --git a/Libft/ft_strlen.o b/Libft/ft_strlen.o new file mode 100644 index 0000000000000000000000000000000000000000..e5563189f7ffb9f76d73eb6efd9f398b04828652 GIT binary patch literal 624 zcmbVKp-uxq5S^oiD>>+;grrb)5(yZBI{~f&QBgM`r38}pD6oV|5=;|R9j?Dpi6a`hzWdZqgSy Cv`MJ| literal 0 HcmV?d00001 diff --git a/Libft/ft_strmapi.o b/Libft/ft_strmapi.o new file mode 100644 index 0000000000000000000000000000000000000000..8eef3c68ca51aaefaa12c673617b608def692e64 GIT binary patch literal 792 zcmb7Cze_?<6h5z~sZ>f3ymHZ&s6nWfY)YuMhK7c=o0yT{uj)mC1P@w*mV}0&A;7MOPl?D zv{m}VRv>a>AM)&dsxE|?J~UMT5Mph4eeEZ9*pnix$Fmj=Tf;+^)59o4s*o!tQ>NI@ zA7t{ILaZ#g>kSn|6>dO82R{Rzd zpAgOA?vb10NIL@T8C2u=8uKrPRr70sQ@@s&NB@pAuEJ9L?w6rNr)eZ=RrIycH=b$5 zNn5D1HqTLJDlSp?dudog^R?GAoEmFJG@9r58u#*jm1EKFmKLk{FXdZZ)ZIH!@5-Oo zFPlV!WQ=!=-Nm>Ft^NsM5X7-4NDzx{s06-Q3c2b`U7_nO)qvPC#h$sFP3K9`T(X!U UkxOQ?g%oAYTye%e`E`lD082u9{Qv*} literal 0 HcmV?d00001 diff --git a/Libft/ft_strncat.c b/Libft/ft_strncat.c index e8fd047..761d08c 100644 --- a/Libft/ft_strncat.c +++ b/Libft/ft_strncat.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 07:51:04 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 16:19:01 by eunwolee ### ########.fr */ +/* Updated: 2023/08/11 10:29:43 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,26 +19,24 @@ char *ft_strncat(char *dest, char *src, int n) int i; int j; + if (!dest || !src) + return (NULL); size = ft_strlen(dest) + n; res = (char *)ft_calloc(size + 1, sizeof(char)); + if (!res) + return (NULL); i = 0; - if (dest) + while (dest[i]) { - while (dest[i]) - { - res[i] = dest[i]; - i++; - } - free(dest); + res[i] = dest[i]; + i++; } + free(dest); j = 0; - if (src) + while (j < n) { - while (j < n) - { - res[i + j] = src[j]; - j++; - } + res[i + j] = src[j]; + j++; } return (res); } diff --git a/Libft/ft_strncat.o b/Libft/ft_strncat.o new file mode 100644 index 0000000000000000000000000000000000000000..9548586b43d63ff5f27709b1586807476c394701 GIT binary patch literal 968 zcmb7CzfTlV5T3^qcF#jj1Ig+Yf*nUfL>r~sL}?6#1qI#9Wj%uNI1XH+2{E~ZhU6NF z_ID-t516gg*w_&)td;7Wh6KAilVkbj?Y``V&@kDVdGqU=**EXt|MBT4ksuI@E8tZ= zOo2hSz}lQH7CWYr=)882&ODTsDHT@Ugc*iXOAE_OnQc#|Hw?z(+Ut@C9}m`GWl5=E zeXU*&LiMWl`g!e{Qj3pmjJ3s?N}VSFW1MM-bYwf4$+!=B6P(1ZAsGzfB=*mtZUp)r z^h4-8_$io)bC|i7doW*?Vkr*$TXMhujdt5|virM0y(5pJJ*m2`pnuwH6|sj0=rN%S ze$V)vR&giwecqnzE+E!MK6-!9UL$hJZR&A~^td18hUtcuxsUYLe}9J>KRD-?Lp|+W zjD`D{h#iW!AJ5QnfG2WISNQYjy}|Q*7s)*5;~ilBL4HYGZB7fCM~}$m{=hqqW6#bQ z%LHFbKk9hM5xE!oQ>*9>W&hccS>FWLkNzV6iOA_<5}-}=_fj>LM0b&o z_c^39(ova|-qEc$(U7vSz2BJZ<0zBRi)#&+p>`0@E&3o;s^MMnv!1ww+MvXJdyzzC-M1XRIlMH*xSG^z{WWYuH_#8vA{~b4wuP) zcgg=Kk*}A9uN`<7-X%~UL5or3>Ih( z&)Yfl8(y7BGujJ z%>h}a&-sop*Cn_(n=kjDbJXtZ4@pb&UdRnU#C=`#dXITt!`Dzz_i*(XciK90)sOW3 z+xNw1-Y1xsZ-2gwEWY7<(OMP(8lHn4hm*)N#`w@ho1@95aQ<&nq3|`OV^JRiwIA$N Wp|^giQcL{uR#nPDrM76+1^EXv5v9Wb literal 0 HcmV?d00001 diff --git a/Libft/ft_strrchr.o b/Libft/ft_strrchr.o new file mode 100644 index 0000000000000000000000000000000000000000..13f006b4b3c7ee1284c5c581ec3c11f49aba071a GIT binary patch literal 672 zcmbVIyH3ME5L_n#8v#iHk|9l8QUVQf=K>@O3W^kTCuBfDkPyrvC?nC(<_qF7zmU#< zfM}>gcNF;mQ($JDyEsTlNUSusyEA)pkC)HM*9wtE2wo~ciwh4xYyv8;eqRzzKj#ia zrnkW}N?I2}o&DZ03ua~1hsgS>KkRp*Z2(hk6~h36hnPRs`+LY9`eo(-4xVA~UOwYLkv-AtxJK!_ zOQX!DRJp-OHOPnOx~c`KV+For(XDa^b*Dso1)umI4c3;fls%{qsn8UBW^)VFSMZ-? znLG9Sd*9d&QrxSbl*OBQQ_O{zKi5#RjI$Qk&{a{G;9sobb7D=fRGZUDTu5;zqbO`e ObS>N6oqXNa0 zmBUg9r&_KR99OJVR+lUHgt&2aI<6Y$rLzSb{3weJvIMEoLgPHvli;ZRF(iROoW%Z% zs52qoK;|J+;9FoOxI*UIxYQy3iN?D2K4|E@V3*n*eQq>Nli$(B2q2q#x2cVD*!D8i zXWuYw`|RhuE^NenFJt%3I6d@q+c#dHd8&Md247}t7T@p!=9?KH&h?DR80?d^Cp_KU zHrMTEIokL@>*jNg50b!60#l=XFS#|_k~puLb0eI=%mA?$JVVq!#E1cdYq_qAJnqqH zic!$G(!)O6JG%Hd-X-ie)(e{0FLH({^7qh-bGyhjGV8udSq$C+r3%RTh}A9L*gZH}NZnE`wGMPDP0uhefO z{e<&pIuu{S!7)9F#G&|0#Bn#Rc`4r^F9CZK66a{~)5Kl3<{^<{@tw!}wd}}FWTk}Q zc!HnqaVU!TwXm(`yd-Tk*G;zhG09hV7HWE`p8sd2%ut`UPalY1KVXx%?}|rmz2wv$ uL$6oMyi{D}cZzkTmX<0?b?eJznSHn5JRngnluA{HN^ZG!E?oIMn0^9Qn*u!m literal 0 HcmV?d00001 diff --git a/Libft/ft_substr.o b/Libft/ft_substr.o new file mode 100644 index 0000000000000000000000000000000000000000..d1abcbe0e1551f4589d91ffc49d0148a08dd3dff GIT binary patch literal 1000 zcma)5F>ljQ5I)xpwh0hbtuSZ63BR!Y*+x++pZij;v$ znIbVDF*Gna{RPPcQhxw~fw^qYjTpMwNWpw(`zdL}(39`oy?6J0clJAf`}6znB_fR= zyo^HE*eO6E*P$}@{=c+iB+-6q)!sll>qrU{!d-ps_Bn)DTv%G{@0IsqfRC|`p7eyq zsw#)A5XFu1=1S2OJC)t_$_pVLKNyTFoVv| zuK|~VZNuJz%|f3*SvZH4v0UQ}G4|(?sHT1I?PXfM`&y%^=Yvm2Q|-_CRNx&gw`G>X zrY-{Tyq8%gG&SnVcL$UEM02P)5#=bn3hU|1fix)eklO-|G^-wCj6Md~7&Dx63=Z6V z!U3OoS^b<7PE+;AOokft*80eN$2Nu1jyX@I(eL9+Eg#_9Ohn^|1BY6t(nfqVsmXkD z+zDIg)6}f4oI9AbsQT15s53p(m$~lW1O65By^&fNo{I}NVXweZlIJ}JMa?OPaszSvlWI<5h&{9? k@zNFBJI}Y>t;BV=N~;wT<&{!tqevyUym>obc~~L;034LLZU6uP literal 0 HcmV?d00001 diff --git a/Libft/ft_tolower.o b/Libft/ft_tolower.o new file mode 100644 index 0000000000000000000000000000000000000000..6feae5c437e7a3858d479fa91e0d6b7aeab4b71f GIT binary patch literal 600 zcmb7ByG{a85FG@CWR=xufmHhmYNI8I+EG|g&`k_rBmox9HBf42>laY^4cl4T5gTo{ z+{PcUP|pl^a7}ESX7y*vad)(pg_PjWv`1p;Ps2t6y@#hFzuGzUJvQ~2MlC&N*0zyV j+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T0Tu25o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNe&jdCVX-&`_vTQH(bNN=X1QM2;7z7>I!YqzEL=0c3#mTL5VVAk7WL0YD4_ zAT=Ni(hIf&NRtZwJ2PB-z|FAp1-HXaj#kFP7t7~M0pr0OXr>5Q>?Kg_`h2Mq3`k;) z423WF8Fm8W46Fvk2C09*@30eS-oyjU@z-GP0EdSF*qJaPI1SXpCJf~9fjj^OAm8%= kJp~I#kQ6_XJVSh1Nqk9uX+c415kpQ%Zh;|~G=S*`08)TIf&c&j literal 0 HcmV?d00001 diff --git a/Libft/get_next_line.o b/Libft/get_next_line.o new file mode 100644 index 0000000000000000000000000000000000000000..dcf776a4686982b7a8e2055048374f2b6a5d706e GIT binary patch literal 2936 zcmb7GO>7%Q6rRn-@wzE>f+D#jQXGkkb6C_?2vVdVrwLLIIYd>2ICUEA4GuVVNsNjV zRWiy2DLoJY5)wZ(f`c9P&|B9hK)&RF1XLC3(YdWFD&S@#1@pc6vDdq4fsw~=-pu>` z-u&!Oe?9*DG-C!sqrYKvmj*NFXwRX~iB-Xd{@NpQ>YGRwkkw=WlLrYX+3_rG?dn{)CPL>b<68p^0EhoM(!g z*Vi&7{$An6Mj^}j@={L`107dIO{QR&>{VinMdTcX+iMpvI*Ts-JOg2LG!mluL+FhW zJ;m5v&{6aibZQhcb<%~Hz!BtswQhs`a=bHCJKkmcmBpl6UF5E1uy?(Cw}A-V z_-;4Zeiig5?S9W>(c;`|L zIPHIL@?ZUUHAh+JD9-BMsK^5`1>zc#`84C{y1*;2?#K5<<+lY}DT8&$w~ob%sa%1d zrEJRl)Abf?TSn|1!oR9=((xyiP12{>9(TKmkREJa4#Y_^*iaH4T}W>8I?~fUM4*Ek_Nj-b!FJ2WS8QUJaD0Ui@huNy|&v_ayo9Y_mqtV zqkM&ISPVLdTl>X1pZF1V(Yh2biT89Y0SwXSJ|?i{+KX9%xDuXgmF{`G@j|bKy_|}$4!s9rY@lwKOR9TeFxLM4h`2;MhfRP+p9up^&FgQ4 z(0We2j!RF_zoQ;!x}4EM`roQY_Kx%#TDS1sfTz^HI^)Me`3pY5r$P=kJ2T zwOs+F^)KZ7@@JCHXF=iGo&$v|8}EhCKd08ql8#(cG_B~2q97zcQUg7Mfo>lV4}i1I}C9id38eVq~n(zoD*X{9ARGGnZFU8 zM{UX{Zg6hT5V;I;ULCw-5fHf^P=jxqsS&<4Ht#zxuzM!`wsFyU4byM#yK8E l`+EQ4>fAcz+*CxJoLiQtf>pF^OO-1HDcYs#mN#ySd;{UChS2~3 literal 0 HcmV?d00001 diff --git a/Libft/libft.a b/Libft/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..ef2239479a0b448ba1fb95512cdd47183047482a GIT binary patch literal 35328 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 J*_dbje*sd_Rd4_R literal 0 HcmV?d00001 diff --git a/incs/bulitin.h b/incs/bulitin.h index 57c9f4e..734d747 100644 --- a/incs/bulitin.h +++ b/incs/bulitin.h @@ -12,10 +12,10 @@ void init_base(int ac); void child_handler(int signum); /*builtin*/ -void exec_bulitin(int bulitnum,t_data *data , t_leaf *leaf); +void exec_bulitin(int bulitnum,t_data *data); int check_bulitin_func(char *name); void ft_cd(t_data *data, t_leaf *cur_root); -void ft_echo(t_leaf *cur_root); +void ft_echo(t_leaf *cmd); void ft_exit(t_data *data, t_leaf *cur_root); void ft_pwd(t_data *data, t_leaf *cur_root); void ft_unset(t_data *data, t_leaf *cur_root); diff --git a/incs/parse.h b/incs/parse.h index 79b03b2..d1b4ff3 100644 --- a/incs/parse.h +++ b/incs/parse.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/04 07:53:54 by eunwolee #+# #+# */ -/* Updated: 2023/08/03 17:34:30 by eunwolee ### ########.fr */ +/* Updated: 2023/08/11 10:14:22 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,11 +17,11 @@ void tokenizer(t_data *data, t_token **token, int *i); t_token *token_create(void); -void token_add_list(t_list **head, t_token **token, t_bool token_flag); +void token_add_list(t_list **head, t_token **token, t_bool create_flag); void token_redirect(t_data *data, t_token *token, int *i); void single_quote(char *input, t_token *token, int *i); -void double_quote(char *input, t_token *token, int *i, t_data *data); +void double_quote(char *input, t_token **token, int *i, t_data *data); void lexer(t_data *data); @@ -29,6 +29,6 @@ t_bool syntax(t_data *data); void parser(t_data *data); -t_bool expand(t_data *data, t_token *token, int *i, t_bool quote); +t_bool expand(t_data *data, t_token **token, int *i, t_bool quote); #endif \ No newline at end of file diff --git a/incs/struct.h b/incs/struct.h index e6842cf..ec2267c 100644 --- a/incs/struct.h +++ b/incs/struct.h @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* struct.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:24:15 by eunwolee #+# #+# */ -/* Updated: 2023/08/09 14:26:54 by kichlee ### ########.fr */ +/* Updated: 2023/08/11 10:43:45 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,6 +38,8 @@ typedef struct s_token int type; int redirect_type; char *str; + t_bool print; //환경변수 출력 여부 (싱글쿼트 사이에 있거나 더블쿼트 사이에 $+공백+문자열 형태로 있을 때) + t_bool blank; } t_token; //tokens와 envs에서 통용되는 리스트 구조체 diff --git a/libft.a b/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..ef2239479a0b448ba1fb95512cdd47183047482a GIT binary patch literal 35328 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 J*_dbje*sd_Rd4_R literal 0 HcmV?d00001 diff --git a/minishell b/minishell new file mode 100755 index 0000000000000000000000000000000000000000..caca88e664b261e03d05e0798a7e9aafb79eeb72 GIT binary patch literal 89046 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 YPsRq```elK9CmH;nfo62_Uz~WKR{oHj{pDw literal 0 HcmV?d00001 diff --git a/srcs/builtin/builtin.c b/srcs/builtin/builtin.c index 8801461..3830fa5 100644 --- a/srcs/builtin/builtin.c +++ b/srcs/builtin/builtin.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* builtin.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/21 17:42:18 by eunwolee #+# #+# */ -/* Updated: 2023/08/10 21:22:19 by kichlee ### ########.fr */ +/* Updated: 2023/08/11 07:54:45 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,20 +31,20 @@ int check_bulitin_func(char *name) return (0); } -void exec_bulitin(int bulitnum, t_data *data, t_leaf *leaf) +void exec_bulitin(int bulitnum, t_data *data) { if (bulitnum == 1) - ft_cd(data, leaf); + ft_cd(data, data->root); else if (bulitnum == 2) - ft_echo(leaf); + ft_echo(data->root->left_child->right_child); else if (bulitnum == 3) - ft_exit(data, leaf); + ft_exit(data, data->root); else if (bulitnum == 4) - ft_pwd(data, leaf); + ft_pwd(data, data->root); else if (bulitnum == 5) - ft_unset(data, leaf); + ft_unset(data, data->root); else if (bulitnum == 6) - ft_export(data, leaf); + ft_export(data, data->root); else if (bulitnum == 7) - ft_env(data, leaf); + ft_env(data, data->root); } diff --git a/srcs/builtin/builtin.o b/srcs/builtin/builtin.o new file mode 100644 index 0000000000000000000000000000000000000000..d0dea3f128d7c98eea6a2360eb4dca11bdbeb903 GIT binary patch literal 6200 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 nv)563Fp literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_atolong.o b/srcs/builtin/ft_atolong.o new file mode 100644 index 0000000000000000000000000000000000000000..2d0409f10e9d96fdb55184779cc54198bae33679 GIT binary patch literal 4112 zcmcInZ){sv6~FI2-{)sLvGb2M$-2ht(lr^4owQ}N{Hv=KXkRl{tsNVv(!;S|lSdre z^K;To%QVkvr=k^&XhQ;l)O;gFLr6#nITfN)h3Gz^fdt}Pix72&fUV*~0xIEm?z_*8 zO~$ql9O>Tk&fj~^x#!+%|N5VQ{dXH<3Ios-z^H4O;uwHFj47hu2VM(%0)q?zJ{`n2 z4Jl@pRkoiklZFSDb^7y9pZ2MHI4jp8e=68ZQN}ol1FS;G2g}OZ6SI?6dSaqv&oTHv z`qYspzTk_Q@8^=_hGY; zZ&2E&BKI80uPyzF_=@RFtG_cX{<0s^U-`M>mibnszY8*$iy!DOQTe}E|-9dz?AMu3|zi!R7vA3j1Ue{}bT<>T>@ut30t9V>P2y{u1QdFZb6WlXkTmj6Kru!Pz2Y z>wn(Z*xp#{N1n}p`T8mNLByc8#31>;{%Rz({;-m&8HmYH!qY=aW9@ZAu1D+NL~h7; z@tS7+PUMZ8Zyjcb>abtEt^VX2-@SFmP(pvH|Ne6SkiTZD4Dl@cIUl}uDD);`)IvWr zUP!%W+|S;l+AK3K-XX+OA7C}~Q_lvlh+!aA`@hEUz(|YOsDCeY=W2qS{cOiQb7-YGktv zU*uRzyz^qHZ{bFCLSBsLuo<35=v&fk$S;xC^@;${?t>A$sEhENAnb`=? zyVneSG1kWD1{%kxU=Y0GAu-cys{Rb0U&K%XA-Wj_XukyF0eM5>x&)~d-omWLPQo!) z7km4F8&t>rg38dM0n#QokD(O)fLYx^E5NE_7wPRdgBet8SWr(2t9hCMo>d)R>R^-A zV3XCLu+sfoF$-&DhE`VhO1+|paIY8dtG#<^t-TasP<_>lBSD&=+C=n8S`CyjMw+8U zF@sjo!kBbLive-N5P~E0Y{xUXbbc~EXO~>3kdKcYNQ@@-$A<)WWbDA`e$e~&CBPpW zW^O6tCMRZ{T-nJd&z7xpxsWU5CleW#9Cs#4>C$t_qxPJgD-`Wg^3lS~Ogf(($1`-g zP{_H-Q%6s@$;Z-}$4@<-aI@2F(`WKY7Xc(~yns-(?c|)BDP(QyT%k1W;%&5(k2!hA zow9Q|Hfh<1g|#RQFXi4hs6iP0}3;izQ0v$-})PQ$sBg<)RAMTp!nTKKa=FsDc(i}FWd%z zYEC-zP4C^8f871Y<-z0%?e-b)a~Sg&moUDMK}|+>)I0>#)I?MF z6Nm-|epgWVEeuTZ6-iTT6a6Jg`>_&_V5?X^iVmGD8n}xD&^P6*p&9|a`kQm#J@m{s zM=KX2nfSNo$DwCo(63EuKZ=K%b`Tgq$COyql9ENeN-Szz$pYnrIGS<)(D+=hK17N7 zZ6Tj0m;XcVd!%Cs2#9&p6vSo*SPC3PQT`QeCq$|kij&W{O{W7tg`A?Dm?CM@L7|Qa zs4PTS0FESA!&iAkH+k6PF_ZUHd2f|(H~9{eKX`}lsq%+R{&9S-Xa$q2TBpf1eSxbr z9vtU7%pxZ5s`71B{xOsHn_RDQLqE@hkhGaRSmhkrVNiiPP(Q)dt2~Su45q)#b*$a4 zukf8!;WdoU9aSE$@&`>mVDg8nuz5+>CP=KsvHk*A7C8HP!|;JB4`6`^3}H1`<$DmS z$rIA>tHN+-lVK=q9O1#MJg~rfPasr83@HNZ0q#ZqD?9{-$+zkM;5)(FW%8X!!~`FC zMZxK=^4(QFV)8MQ=4~c_WTla22V$>M!IGkE-6qzkas7fQF~>UEdERz{ccV`Ci5xLw z39O9ztGYIe`fBZDRYloI(d4K(0#ft^wFCPuHttWNAK1tnz&HydWrA;$So9%De@)_)#Bqs%gdg8-5_HrHg+we(H2$mk{}<>Up!4SU zHGLB8KW&|o_Rqyln literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_cd.o b/srcs/builtin/ft_cd.o new file mode 100644 index 0000000000000000000000000000000000000000..4392a301290e08c649480c019141c7384394c37f GIT binary patch literal 6880 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 C9kX%( literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_echo.c b/srcs/builtin/ft_echo.c index d3173a6..1c6c8ff 100644 --- a/srcs/builtin/ft_echo.c +++ b/srcs/builtin/ft_echo.c @@ -3,73 +3,132 @@ /* ::: :::::::: */ /* ft_echo.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:30:59 by kichan #+# #+# */ -/* Updated: 2023/08/10 22:21:47 by kichlee ### ########.fr */ +/* Updated: 2023/08/11 10:47:12 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void ft_echo(t_leaf *cur_root); -static void check_flag(char **av, int *idx, int *flag); -static void print_line(char *line); +void ft_echo(t_leaf *cmd); +// static void check_flag(char **av, int *idx, int *flag); +// static void print_line(char *line); +static void check_flag(t_leaf *cmd, int *cnt, int *flag); +static void print_line(t_leaf *cmd); -void ft_echo(t_leaf *cur_root) +// void ft_echo(t_leaf *cmd) +// { +// int i; +// int flag; +// int blank; +// char **cmd; + +// cmd = join_cmd(cmd->left_child->right_child); +// blank = count_args(cmd); +// i = 1; +// flag = FALSE; +// check_flag(cmd, &i, &flag); +// while (cmd[i]) +// { +// print_line(cmd[i]); +// if(i < blank - 1) +// printf(" "); +// i++; +// } +// if (flag == FALSE) +// printf("\n"); +// } + +// static void check_flag(char **av, int *idx, int *flag) +// { +// int i; +// int j; + +// i = 1; + // while (av[i] && av[i][0] == '-' && av[i][1] == 'n') +// { +// j = 1; +// while (av[i][j] != '\0') +// { +// if (av[i][j] != 'n') +// return ; +// j++; +// } +// i++; +// *idx += 1; +// *flag = TRUE; +// } +// } + +// static void print_line(char *line) +// { +// int i; + +// i = 0; +// while (line[i]) +// { +// if (line[i] == '$' && line[i + 1] != '\0') +// break ; +// printf("%c", line[i]); +// i++; +// } +// } + +void ft_echo(t_leaf *cmd) { - int i; + int cnt; int flag; - int blank; - char **cmd; - cmd = join_cmd(cur_root->left_child->right_child); - blank = count_args(cmd); - i = 1; + cnt = 0; flag = FALSE; - check_flag(cmd, &i, &flag); - while (cmd[i]) + cmd = cmd->right_child; + check_flag(cmd, &cnt, &flag); + while (cnt--) + cmd = cmd->right_child; + while (cmd) { - print_line(cmd[i]); - if(i < blank - 1) + print_line(cmd); + if (cmd->token->blank == TRUE) printf(" "); - i++; + cmd = cmd->right_child; } if (flag == FALSE) printf("\n"); } -static void check_flag(char **av, int *idx, int *flag) +static void check_flag(t_leaf *cmd, int *cnt, int *flag) { int i; - int j; - i = 1; - while (av[i] && av[i][0] == '-' && av[i][1] == 'n') + while (cmd && cmd->token->str[0] == '-' && cmd->token->str[1] == 'n') { - j = 1; - while (av[i][j] != '\0') + i = 1; + while (cmd->token->str[i] != '\0') { - if (av[i][j] != 'n') + if (cmd->token->str[i] != 'n') return ; - j++; + i++; } - i++; - *idx += 1; + cmd = cmd->right_child; + *cnt += 1; *flag = TRUE; } } -static void print_line(char *line) +static void print_line(t_leaf *cmd) { int i; i = 0; - while (line[i]) + while (cmd->token->str[i]) { - if (line[i] == '$' && line[i + 1] != '\0') + if (cmd->token->str[i] == '$' \ + && cmd->token->print == FALSE \ + && cmd->token->str[i + 1] != '\0') break ; - printf("%c", line[i]); + printf("%c", cmd->token->str[i]); i++; } } diff --git a/srcs/builtin/ft_echo.o b/srcs/builtin/ft_echo.o new file mode 100644 index 0000000000000000000000000000000000000000..d8786e9f80ed6cee577100cb668d4680f42097d3 GIT binary patch literal 4656 zcmb7IeQX>@6`%c>y*;13KG*rMo0Oc?v~f!9OB_>@Hcl=$3Gvz`X+9uG!1lae+uNM) z+`Dt?kdRpCR*C>ASS^D7l?ozZ^GA^opg0mDY7q)TQ9(i#LKQL*6?UUSX;b8c8uNRz zv*+_Af->^#``CHEdGF15)K3Yev7U3HF|kbugxOoNUlS zIRc(~jFf1OQ}o7)0UyXm_Z>gFEQg#f=OR26%CWe_(Aju6hN$DXg<{^%4oaotti%g( z$Omd)3YkC@*pd~*ar(W!(LpEO*O&KB68_#V>^Z!@JR~Ol`lHmiRd`U7yX6+*`PqRS zDXa0`mUxD=>NEq>-y&Wfu=m76(Bf@1-c4!rqF71Bx@rQDif0vGdSoQyIob5ESHPfZ zyt6XCZ%KeR!-ZT1yeD3+?-`edRO4APzKzm;K<=Amxa#~>_&1VvtMS^a@V@>r@rtKL z?iugrCEjkCzgPb!o|_wnUqxp$`<$Qccbwk66|u1IMg!?-seG@FFk(&+-M)dCgm3kjTlyAd z)F_j&2#9K9poIE}fw!~AJ5S2*r~B4e%`$1!e35jmLymY4&6>wi;#)8W@)_tW z?B*lmGp0YkUBrVtnfLIaJVxSUPl%jjyNWeI{u&7T9m)-1)7l~4cVemA-AZbP=H84k z-3ptT$9lGaUd7mQeqN{jpiVC$U$0DTSolTPhRfvh)P%DT=3%<);$>5be#2B!J3?R2 z^T3b0#!)BJ8CST28FXyB(-j!o7UarAhSi8wNt>%Y_ zi}q@H?@R%Uax;Z^t|Q*X)1R4MdOg?^30A`%a+%VgJY+R;%_^O-{(jDiuU%&~DEAqt zs}81F-Hp4OACEl|Q&E-LMksd0VkkykSGpTDD;A@7xDs0MW_>+lMjPPnGg3{OMQ=7W z@5T)s;Y^i^?ncyZ#|kkTnEdrz^Rg9VHPt{k1L_%>*RBBx;2EoHRF=K4>V(5I@pd{e zRGbXBr_r!nXtj)voo@86k%)FaAmT|^vicLSpG8;ns5}M{_G?gZT^|Jb6}qlAaBZKG9@#f~Uh$ z-I=gTpdS+7*}`Ik9eWv%+DmwJk@}N$Js?f$M(YTuKzNv0$3uRTZViB+M^{@+D+emj zHpi_qA^*rK7W*3n?HN1_rS@}hV-&2qIws=ULmv_eH9D{`q|__(ed1&T${_1y?$Rloj;Y_>z(v6xe+g) z?8*%fr?dUNxD}7)a+yN%$ljhp^2xM&@W}DDLjMU?!6uItFniL&g^Zz|mpoZ;bN!z4 zTrPj2fUDX|KIv!u!jPBAutCQg^NUWQm@bYMn4c{&&*_5|8_gE{!K~MxAl?2wy+`)3 zqlb^}W713J4teegXCRXvWFz?eEIQ)Cc8B{JST8-m3IQ2O=RF`~JQ%t|ex{%0{lTG- zr;!eQim+ntgqMYFKns$JS9!1B&wKd75E6a(xkKrEFfA;EyM4&|35Hk-Mdo5Y;h4`3 z9NBXKDYApt227IYS?(zLQ=2rsPO@}z(yb$-Mx^(*ihZ#8mZ;TMw>T7 zDsiTL|6GadhV~~`;?ap^+kM=4ipOAL(4dPLq#4=`3{oaI`#D!@J`~t>=1v|j@zpk8 zZ}Yg#AGG-+@AK9YZ@2jlo449LWozF#_dZv(c}84`b3?nyY_9e28o<}ve2vZTw|R}t zAAq*RP2+hH-YT0n+1#}GIy}j2qK9igA7y^DVq3{U1QF zxq5#e(9S8TzXXbE?|mhpo#UV|ZQTM2;}b&VLdG6l%xqsLBzP@ zl70o0$~bHZFeHcd(IMrq9^xd!k?{Wx$E0k?ubll-Hl=*9YJ7@h1RnlwTno9rVt!)L z)v(|m4P-oJb5>qy8K;eI3@5y|a0!(!E=Sy411zAy4VEbmkF>MEstpXpt)U18B4wDd F{{Vq`A$0%% literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_env.o b/srcs/builtin/ft_env.o new file mode 100644 index 0000000000000000000000000000000000000000..5147ea8900ed035cb51ff20d585d2f599300c2ac GIT binary patch literal 5512 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 literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_export_two.o b/srcs/builtin/ft_export_two.o new file mode 100644 index 0000000000000000000000000000000000000000..3c1e01d6c8e84eeec7cf53e515cb1f95403d4fd2 GIT binary patch literal 4376 zcmb7HZ){sv6+iDiU)zaOJ5558rbtP(vZiB+lP<7sgf(5tNMBl3wFUBF;^8>2$)k?# z*-o0!jt09D{ZOq7un&`lk|9k>s(s)Cn&QCLN}bpwkfu(6)NcU^;S3>QT2TTD;dk!4 zuW`Jfjw9bc=il$1bKbr0KEMC3zy7C&NFxw;KD5K!wV{Fbpe-44x??w5?TUxk2juYq z%(;bF2(ql4J(Y9kE`RnbLua>mZ`PyMVmuwfTVW!^$AQi8;E`p;v$>3u9906#+K%Vp zaQsZyIG8eG>~gZK5qo%I)QSxcXY5Ii_t-a&o_^-O$w?L0H6?ky0uSPCkRG0sJeOjZ zO1!%YFD)xi)E#tz+ag4Mce*1Ul9t*^yyL=kYE^izRk?gwUx61(rxUi7jE&n_7**np zsUY4^0Jqe0eh^-2_&ag7sl;ng_1doh65htx0{q|crDO3*yu%fEFMUe9+;n=!e4kTz z=TtmDe;{5wHIBG))W3@y-!^r8LLSy3iyvEC_ zR9N+?X|td1tVHRFQuNjn!56gWOM$tT1)|3hPeVJ+oGwMEhQXXB#2xKW_ll@P6aHl56Qr5C1<$Tv ztt}eX(m|}b2pNyTyUrSX|H1JO2-kN(+RZHmr=2zAzV7m_AKRA#o@{Q3V8c27A<(z} zM}uyxpvL!eeit>-cfgEz{#%%fSo4N4x70rU$QtUh?()`>i5T1OKC*Tbxo}+U5 zpnC~zmTh=lZd`{|qp!$yTLor$?H0=NTs3BjUR@a5Pi3atVu?g59?LnYWSgDIq%!+R+pT>rTrZ4p{!;jFm&3J9 zd&9f6I=rFv9x}qm>yPYtGW4a8j&p77hv2DD2*=qMq2u*Lq7&YA{y$&d)7NZ-+3vs| z_P{kGNLL~@47i4sR>7WaR+K;`-4_^20IDH=)jW$5YEJIJ1|VSO3XucB$bDt-k@ zGVq{C_YXZkIgHok&hZ*=Xh z*9x|4WayxNy{3w}X4X-lR>q948;sicU)XE^*U$rfD#Ugkmy1Y_y@L8|T4Frxa@U(1 zS$BZ(DbS@}yFQ8dPl)th4^hV9ak&=u>Qxv)x!O}~i5PuywIfPLar3#-4;*8 zlA~>tb|%Z)qPwTFtMjq8b}8-X?&*3A{Gmggkar)XY$l$K4o^6VoRf^6%USkRI+e*; zxeKYzI7Lr5!ZpHkrTLi&Zbg{Z1l{r!EE$oEdK17q0a2c zc`BPmzn(=5Q5%;YOl>Ct}?M{XaIG6SoEi z2XTI!vw=$Z)R#A})irZ96mNU^QXl5LY5C}}oHy8hG!P#?7V+6qBFxH29=F=<-z=<_ za*TWoLGGKuoy)%b!0n_jKR!F@_aZ?b^+Tm;+P}lQc;GptD%BNEmkCKdtCj8X}QRO#@Z+s&U#(2~e0v@gch;_@N+7t$s^?xjyV2tJW=0&S10EP9t z^WqEWOcBO~5QUW002yN8t`56eQ`A7<8x)2yg?OG3 z)kXv(49NessHzSg6~2OabWn6d^m$Y4US{V2eEj}pLB=mG%Od`Y@?1qOEEjHB=%#2y z=q(U5Vhx!KiiM^wr=HlU{?pK%d2? z$GPuV!*dN|{1_vi{)xZ4PhKD@s43^dlJYE!Xi&IN{yV@did*o*jHf z@E59s_b-0_x54vxRgK?P;}MMbvJO97A@5Usn;J1l|I=!G9b*`P9(6H~SiJwOa~1q6 z%p(!+f5ilNe$RO4kD-|N&fDXP#~|tZ=vnWbw->>)k4FwBzm0N#vfTH+e7jreOlmX}8@J^5jl3qv+J0RmtWJLEE3f;vg@t1c`N%|?)HE5# qRiNexJ1M75HkL?EjCB^JGQ5+cegXM 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 literal 0 HcmV?d00001 diff --git a/srcs/execute/checkbulitin.c b/srcs/execute/checkbulitin.c index eaedbe2..79ff96f 100644 --- a/srcs/execute/checkbulitin.c +++ b/srcs/execute/checkbulitin.c @@ -15,7 +15,7 @@ int check_bulitin(t_data * data) if(bulit != 0) { check_redirect(data->root,data); - exec_bulitin(bulit,data,data->root);// flag 에 따라 return 부모 프로세스 or exit 자식 쿠 + exec_bulitin(bulit,data);// flag 에 따라 return 부모 프로세스 or exit 자식 쿠 recover_std(data); // 커맨드가 하나이기 때문에 바로 종료 // free(data); return (TRUE); diff --git a/srcs/execute/checkbulitin.o b/srcs/execute/checkbulitin.o new file mode 100644 index 0000000000000000000000000000000000000000..cf8908604a42315f4695b3b1b8a4da4a967f0e2e GIT binary patch literal 4720 zcmb_feQXrR6@RyPdp_UZp3lY@gK@d4gqXDU8RG<(Zv!Uw;RIrvV3LOI`flyp`h0iY z-E*Lc00GK}L=@4|zuJmOO)Jt={iABs&?;&h{s1+iZ9x5q+9qjLBpRto^GDi*ilo0c zJ8Q!g)bwNIH}AdQym|9xcKqJl&#(UFg9K5C(720$u7uI0L1>FX1=erT+H`*)#uL#3 zy$&){oIy0h@T~owFZ=q~!1&m_9!S5C0{c@ScQg`38H>+kF0govi)Sv;@$Q^ygXggD%}7Wi{L zM_{%7l5+mH<*b(axv7CrM_V|d&3`$^05N=vY#!T+umd|&zLYxe8kzoK2TcuMVlH%ouNm6HeIkK6uR`0K$~ zE66v;KULWO$Kpj9Ka6=|%S}WT==?+G#@gea{^S(pt~Cs ziq!MP5G{NTOpQdQz+M4Glt%Rp9#Jo&3sLwYSY0G46AFn`8k%_vXgJKyV#?F0_k{Kh z^!3WqiErZeg;gG-__xq$FQB^yQYI4-#5$-vsB7SNfRu+wZvnrH<$W=II*^T&UV(gp z@z1vEUjVYoHZ#88HGwij}DOz(w!jPX?|eF|JS?P;Yr`-ne@PCJQiEl9Z| zu?4JES*~ZnMJOvs-x{jm7p8{Xa zn_NRWFDB%^n0_jdKb_K_hb&fH+d3cfy0rcRa6TkueFw$ax5iiGhY*y7@j(n|qv+1D zKAiX&SXvp-e+hn^C*4i@GH~$~hGKdLWD$NgrFRGT4jje_DB4%iy~d8VCf)!`D4X=l z;4cAI`bm$0zs~ZO2x;db{27DMW!fc(Z$nfEHQvAn5F;%~78~ATb4qDovAX!*z_bu< z?gobUCboffDEI0+z{S?@BmKTW9*OAtAdARHajyb=ETwyayt`RH7|8dxienaj_AJ#O z5Ag9cQ9sw(bgpQYrqZ*P%ch~B4hd?`5^>(j@-qX_seAP;Fot&Go_FK8C zXJv8)D>pq+E!v)4>dH}O*q(4q=RjtgHER{i70bzNEziuDrTj3e$5^>sbTgydcDR{) z%-qh=@h&$%P1lK;-7Z4NSSVaDwXDpnn=9un8F@afBExGno$;zi0+ulDsIzVG1y9Y>wYRFhAZ+a$qhG4GG>{6xb!OV2X zD^FV`7vn|S^~m*E#j&WwPdhP+L7%&lbNwdA%G-{G+AB1E5>*@#TWOZ8(yYs!VLFa^ zfShs}u8g8(PVx%ODyCy0=%O|08M%U8%#&kJ6#|(}e81Q^!t(t6R&1>68G^Y!!vjDd zc{r}vd6Hy!DBgL~!K;8_p(41|J&-2z80#My>ECON4m~hnjP2buU>KB}$r}~ZD-c}r zXB2=r!3U1lqh|=_`V4OkYd;k%oIyEfOcu?ldBrYTRCW+`-Y!X@jKk)jjZ$^S7kmen zt$BZ0>6xLtM&UK+J9ohC2SE0m0vV2NE}}n?-k?+f$>^g;`qhS4`N1>AYKa( zAVO)Rg`iye%a6YLdPCc@EA#D6oz)(_u*G}OJ^ni{a)0XGrG?a%@%&AgI8 z5X(S4paIZ0h>O%g&_hub?oJM+;~rXgz2rXaZCPJpuX(=sO@TN%$kK zH}Yl8^^qYinY=wT&eaTY7H<)VD5eZ?b(IjOO@=s|N{G`YL!3pWd(O)YajKT?Ib$=# zDO^tEY|IcRX$f(zWr)+SoXA<2Ax_KEit7hMTvDVJR~Ci_=dJje!4MZB{{=(mB*f`g zhRVf{t+-}MUxy^bbyBX#H3Wa6$ViAEEDTM7q%SV=3~|ktzPS7|#P0z)k&8D&Tw(P{2$`zuWZ1AZv9Mc*98W)tu+cHKh=D!nemLF4mlk^YoK1aQ^uc3FBcI zobEz39e-C{5zVTf%Bp=?bs(z_XH`9`YFRZF-JvEi(wtS(Vmx+4ZHgXKTY?rIK*00D%FR6&Fe_Ka`v~t1 Y6v`W(62@e;l%t|IQ&}bYZn@$=0pgGoRsaA1 literal 0 HcmV?d00001 diff --git a/srcs/execute/execve.c b/srcs/execute/execve.c index b1e003a..fb6ceff 100644 --- a/srcs/execute/execve.c +++ b/srcs/execute/execve.c @@ -12,7 +12,7 @@ void do_cmd(t_data *data) exit(0); if (builtnum != 0) { - exec_bulitin(builtnum,data,data->root); + exec_bulitin(builtnum, data); exit(0); // 실행 후 종료돼야함 } else diff --git a/srcs/execute/execve.o b/srcs/execute/execve.o new file mode 100644 index 0000000000000000000000000000000000000000..ba14f6797490dd9eb1a29dc252edf049b8800b3a GIT binary patch literal 7992 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 KP|x)UwfG-IJEN}v literal 0 HcmV?d00001 diff --git a/srcs/execute/freepipe.o b/srcs/execute/freepipe.o new file mode 100644 index 0000000000000000000000000000000000000000..f974582faceebdd98540693489bcc5796500175c GIT binary patch literal 5144 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 literal 0 HcmV?d00001 diff --git a/srcs/execute/pipe.o b/srcs/execute/pipe.o new file mode 100644 index 0000000000000000000000000000000000000000..0d30e3f34f5f4514476882bfcf15085a90b09238 GIT binary patch literal 6088 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 literal 0 HcmV?d00001 diff --git a/srcs/execute/pipeutils.o b/srcs/execute/pipeutils.o new file mode 100644 index 0000000000000000000000000000000000000000..05e7702fed0ed194f94ab8a5c698617aa65a89e8 GIT binary patch literal 6104 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 literal 0 HcmV?d00001 diff --git a/srcs/execute/setpath.o b/srcs/execute/setpath.o new file mode 100644 index 0000000000000000000000000000000000000000..cdcfe97871e87289932a021fe2c7479a476e317f GIT binary patch literal 7320 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 E7nfl*IsgCw literal 0 HcmV?d00001 diff --git a/srcs/init/init.c b/srcs/init/init.c index df1183c..9fef11d 100644 --- a/srcs/init/init.c +++ b/srcs/init/init.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:52 by eunwolee #+# #+# */ -/* Updated: 2023/08/11 06:32:40 by eunwolee ### ########.fr */ +/* Updated: 2023/08/11 07:12:51 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -70,6 +70,7 @@ t_bool get_input(t_data *data) } add_history(data->input); lexer(data); + print_token(data); if (syntax(data) == FALSE) { tree_clear(data->root); diff --git a/srcs/init/init.o b/srcs/init/init.o new file mode 100644 index 0000000000000000000000000000000000000000..85082236f04c946c526f418c24ab780d3bae2e02 GIT binary patch literal 7272 zcmbtZdvH|M89#e>@7=v5*=$G%frKVZ5ktq#@^VBZk_b@<5h)J^)Lu5bH_4WLb$1hz zkt!zW@Q042QtOOu%^!4xc80N)83C)}=nRaHR_)8ST5+@vwzaiYr-7Ez-|yUWlVy#M z>Y04!dz|n4&Uena=X~dEesT8Q|CS5k5h$#DfF-P&04Os6N4%1pv>L5;#G7e@;_`mb zgfa?IEURD-7985)H+F2^IKjKrsOpRUGziD03o(z4KCz3)EtVC_7jlVouM$|+h5lSW zRjPfA!4wtxE-sc8x4Zj$t!Q_5&K_XAD{p9DfAzS^PgGoQDv22wZ*qwXT)O@e>7EP~ zO8xCq^L3rVe^vh4FySiHN&R8avcFP)Zz}s|l+_g#Zdl{E#9uU?f?-tdYuO=8!}9&^{ru-tdr-*yJU zogof*2;v{7{SVH>_jVb=;pn~v*h^jVj(!{bzz(u=x3nKbAA65`t>2t~ntf>p&w(Eu zX&if_Oq>abT~kk2ilfrDtnJJ@m2F4o>7wc#$O6AhjLH6{KR9!hZ@j;Krx4?5`2W;c zq`zH9#ZY35vCu|TDBFrpw?8mqjfr-#*B#3%=g&_+cgs}=F%D-uC37cypMTCcw~hM5 zJU5y}G-Cd^c|3(V#Ms8y;55c8*9-VFt=G6-+vS+gZ*Xl-tF?7}IqUf3(~U=(xxUiB zBRfSJ^ID1n!try!Pwoc8suP-|~SZn!h@w<8l{WVW>)=$zi z#F=KXYyAP(^7|Qm+B))y>!W|M^%3Z+(Ibw!djacJOv|}&+prmrVjr!S-<{e!Vp@^@ zj3Rn=5j{&BEne&HXueOR66r*~&rT-iGzm|Y=b~V>?hOv_4F3JLU}$=Mu*x&lz_GGe zc!R5}m(N&Qc14+nv%@*n&GnUT~BB%>Z320Zj z_yRUmYQpF-VQY|Uopg&Y5~W<8k}E*%Ad52WAX)PUp&bHw4Z!0w)xnGL{|o}%=i}Am zIKZb>>AwON`tMPBg!crH-)H2BZbkJvK&9eTr@tCeM%aq`ww0uSHOj zwnFB5(DwnfZFS~Nzz>j)Hktc@%W;Nl-Oc7q;A5m?^UVS<_h6Fa|^P-;AmO zpnWAU2dGY)V_pI*Lzyeg1ulKD&s+{#dT0)qD_r@!kT7I)qmcN2j4BGyS_6GR^R-LO z4Df#_x=fe@F1;jR-tN+uhs?V{%O023O~iafllfi9J)EFr&BCB>|5{AM_d#gWj4Cwv z8&Dl2-xYWms7dQE9|hh-qicjoW4Q{e1LhRaGW^bvIn|Y~!DMU&gMn@|GPXU!{ z%gqzOcS5YS3-iyQA0mB~Px$wOcn$)+(f>V=FM;%}@^b*EKzeJZkSu$I>Z1Hzhys4& zNpSvWQ8iM$B`_DLSzBv{f#uM@D$GSLz20ZGftHbPz<1@!H-^mXU3ycExy_}ouana( z{oK%CCS3XECS)~LlE9wS9yA%%LG7NvVM#5=b^<4kN{$_h3Tm>v2=JutW=lg*+dC*N z8q$!$A|x#uXi=%%Q~m_CzQh2)iR0uN`H_l>W%P+M2=JutV@rhnb0Zj$mE6vu!%C+a z*pnKi&QdNN`;omaWv}q;SS{lQVn5tKMk}|FsCbn%$}<2@>PKwZ!hWRAmeuUXpcjM2 zhO}wt1-dDgjHY{=2JBoukx4f#SllwdWl>YJl!g~9p1%nE!i6o6FPJCtxmZ4eGq)hC zmY9fiCAxFb+)!ktJzys@Svwb5kx8YZ>3A3Jfg3ZKWInQC<(hot+Gy;$4Vzo?@$I6B zjBLuI--wMXC{%4bGLVmD;z?qU*Rlr_1uI{O7W(rdkuC_^>V}o* zPv;Z8X*=FT+12e`8#=_s^_x0G!HP!pCn;#8Po98!hw+xa68iLA0B*i$`C< zk|^&WJQ3_c(Pv{0GBK+s8SR~55=mQRa)>&fNGl?P$!5@2x;*vp3e#iYgZ$D_i{&rzs#`n1Q{XVpFtL_2Z4>$lg0yqSqPd-an zxJk+XR%KNlEaVp{p2r4xTk+iZkLO-y!tJ zZaE)bJdAwmM-BER&jnx;K${?deeuau4VVUqHGOC2OMk4a-#;%tE9bXo882K_xG{g% zs|DZnp${ASLN^@V{jU`-PpyCJZ11c;?W?W7^YQJoE*JqvgZ@E*X6 zxvK@t11tkv2j~X$1Go+k01g3|?Vv8k0CNB+yuwh#TMdVY!gNXz58PTQk@p>n@&F|| zrL>svl!%#)T1<4xJyRz|%%;jclPX19Ck&Y|DPkT~zL*XvVuntnEWW>l}#D)enkW>CfkoQDe#exE+b+QeW6de&~zG z0Ur^Wkn$60U&zzBrH`XU`s-fE9t zGbM0H_Zppgpwn2R`#~7Tbm2`5L+Gs=*2_oqG6<)3>RPAnfr@xs_e}{5>e?FJL_@Gs zH;=K+G(M2#0qKT5ZXDKqhIj6;UN@r8f@+=A_IB#!=nYyGkOew*|1fknOWk?Hdi97t z1MLNH8k*zhI=yr`Ht1louMi-(tydD44L&g;E z@?rRwA^BA>ehi+$v`LRoiDBJ8BBNx(F~q!E55mIBnF{XKYd~Y*9ExfH zyaX7(DTe0&({2o%vEL7P0H9wcDEzfPkE#yxlfY2zdd9)6JAtV`2#mk3f`ePv0W(g% z0g!~lHNeyhIqh9cl=y2sja`G}9Oi?a?ediZKhJ|_`@_Kay(oMWF!ow_mC{@3w0E^R zxU~TokE3t{wkGV1SDg7W4lCTF@M49RLw_nlo9oycyAMe0S5o7gZ48 zmJEm>CWgOKu$%>u|DobPP`umzH}aTx_jl^=*RoB!jhGI zh^e=l3X<`6M`PQCm9wL9`F{zk2QGw_iYAkpnDicV$YddvT_{*D5Kbs9Ai&PYw8-*5 DW~A|Y literal 0 HcmV?d00001 diff --git a/srcs/lexer/expand.c b/srcs/lexer/expand.c index 3b9bab4..8055775 100644 --- a/srcs/lexer/expand.c +++ b/srcs/lexer/expand.c @@ -6,30 +6,38 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:20:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/03 17:41:06 by eunwolee ### ########.fr */ +/* Updated: 2023/08/11 10:48:21 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -t_bool expand(t_data *data, t_token *token, int *i, t_bool quote); +t_bool expand(t_data *data, t_token **token, int *i, t_bool quote); static t_bool check_heredoc(t_data *data, t_token *token, int *i); static t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote); static t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote); static void replace(t_data *data, t_token *token, char *name); -t_bool expand(t_data *data, t_token *token, int *i, t_bool quote) +t_bool expand(t_data *data, t_token **token, int *i, t_bool quote) { char *name; *i += 1; - name = NULL; - if (check_heredoc(data, token, i) == TRUE) + name = ft_strdup(""); + if (check_heredoc(data, *token, i) == TRUE) return (TRUE); - if (check_blank(data, token, i, quote) == TRUE) + if (check_blank(data, *token, i, quote) == TRUE) return (TRUE); - if (check_other(data, token, i, quote) == TRUE) + if (check_other(data, *token, i, quote) == TRUE) return (TRUE); + while (!ft_isalnum(data->input[*i])) + { + (*token)->print = TRUE; + name = ft_strncat(name, &data->input[*i], 1); + if (!name) + program_error_exit("bash"); + *i += 1; + } while (data->input[*i] != '\'' && data->input[*i] != '\"' \ && data->input[*i] != ' ' && data->input[*i] != '\t' \ && data->input[*i] != '\0' && ft_isalnum(data->input[*i])) @@ -39,11 +47,22 @@ t_bool expand(t_data *data, t_token *token, int *i, t_bool quote) program_error_exit("bash"); *i += 1; } - replace(data, token, name); - if (quote == FALSE) - *i -= 1; - else if (quote == TRUE && data->input[*i] == '\"') - return (TRUE); + replace(data, (*token), name); + if (quote == TRUE && data->input[*i] == '\"') + { + if (data->input[*i + 1] == '\0') + return (TRUE); + token_add_list(&data->tokens, token, TRUE); + *i += 1; + } + else if (quote == FALSE \ + || (quote == TRUE && !ft_isalnum(data->input[*i]))) + { + if (quote == FALSE) + *i -= 1; + (*token)->blank = FALSE; + token_add_list(&data->tokens, token, TRUE); + } return (FALSE); } @@ -81,6 +100,8 @@ static t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote) if (quote == TRUE) return (TRUE); } + if (quote == TRUE && data->input[*i] == ' ') + token->print = TRUE; return (FALSE); } @@ -138,6 +159,7 @@ static void replace(t_data *data, t_token *token, char *name) j = 0; while (tmp->env[j] != '=') j++; + token->print = TRUE; token->str = ft_strncat(token->str, \ &tmp->env[j + 1], ft_strlen(&tmp->env[j + 1])); if (!token->str) diff --git a/srcs/lexer/expand.o b/srcs/lexer/expand.o new file mode 100644 index 0000000000000000000000000000000000000000..1f844146cb7705873765f974a666f08fcbd78f89 GIT binary patch literal 10456 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 literal 0 HcmV?d00001 diff --git a/srcs/lexer/lexer.c b/srcs/lexer/lexer.c index a21a25c..4e83a71 100644 --- a/srcs/lexer/lexer.c +++ b/srcs/lexer/lexer.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 16:24:37 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 16:14:38 by eunwolee ### ########.fr */ +/* Updated: 2023/08/11 09:58:52 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -40,16 +40,14 @@ static void check_char(t_data *data, t_token **token, int *i) tokenizer(data, token, i); } else if (data->input[*i] == '\'' || data->input[*i] == '\"') - { tokenizer(data, token, i); - } else if (data->input[*i] == ' ' || data->input[*i] == '\t') { if (*(*token)->str) token_add_list(&data->tokens, token, TRUE); } else if (data->input[*i] == '$') - expand(data, *token, i, FALSE); + expand(data, token, i, FALSE); else { (*token)->str = ft_strncat((*token)->str, &data->input[*i], 1); diff --git a/srcs/lexer/lexer.o b/srcs/lexer/lexer.o new file mode 100644 index 0000000000000000000000000000000000000000..8f0d9ae519413dcb59ed8be41196f318fa8a0a4c GIT binary patch literal 6128 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 LMBOQBIx6;Wvot(^ literal 0 HcmV?d00001 diff --git a/srcs/lexer/quote.c b/srcs/lexer/quote.c index cce7479..37dba3f 100644 --- a/srcs/lexer/quote.c +++ b/srcs/lexer/quote.c @@ -6,14 +6,14 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 07:46:30 by eunwolee #+# #+# */ -/* Updated: 2023/07/16 20:16:29 by eunwolee ### ########.fr */ +/* Updated: 2023/08/11 10:36:15 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" void single_quote(char *input, t_token *token, int *i); -void double_quote(char *input, t_token *token, int *i, t_data *data); +void double_quote(char *input, t_token **token, int *i, t_data *data); static t_bool find_next_quote(char *input, t_token *token, int i, char quote); static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next_quote); static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next_quote); @@ -34,21 +34,28 @@ void single_quote(char *input, t_token *token, int *i) *i -= 1; } -void double_quote(char *input, t_token *token, int *i, t_data *data) +void double_quote(char *input, t_token **token, int *i, t_data *data) { t_bool next_quote; *i += 1; - next_quote = find_next_quote(input, token, *i, '\"'); + next_quote = find_next_quote(input, *token, *i, '\"'); while (input[*i] != '\"' && input[*i] != '\0') { - if (input[*i] == '$') + if (input[*i] == '$' && input[*i + 1] == '\"') + { + (*token)->str = ft_strncat((*token)->str, &input[*i], 1); + token_add_list(&data->tokens, token, TRUE); + *i += 1; + return ; + } + while (input[*i] == '$') { if (input[*i + 1] != '\'' && next_quote == TRUE) if (expand(data, token, i, TRUE) == TRUE) return ; } - if (d_check_char(input, token, i, next_quote) == TRUE) + if (d_check_char(input, *token, i, next_quote) == TRUE) return ; *i += 1; } @@ -88,6 +95,8 @@ static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next_quot } else token->str = ft_strncat(token->str, &input[*i], 1); + if (input[*i] == '$') + token->print = TRUE; if (!token->str) program_error_exit("bash"); return (FALSE); diff --git a/srcs/lexer/quote.o b/srcs/lexer/quote.o new file mode 100644 index 0000000000000000000000000000000000000000..112b3f729e254d607e34bdb16000bd57f0f6edce GIT binary patch literal 8640 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 Oj*TuLAg;y$Q2qiPcZ81s literal 0 HcmV?d00001 diff --git a/srcs/lexer/tokenizer.c b/srcs/lexer/tokenizer.c index 5433ee4..ca90fc7 100644 --- a/srcs/lexer/tokenizer.c +++ b/srcs/lexer/tokenizer.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:26:13 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 09:06:12 by eunwolee ### ########.fr */ +/* Updated: 2023/08/11 10:46:33 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,14 +15,14 @@ void tokenizer(t_data *data, t_token **token, int *i); t_token *token_create(void); void token_redirect(t_data *data, t_token *token, int *i); -void token_add_list(t_list **head, t_token **token, t_bool token_flag); +void token_add_list(t_list **head, t_token **token, t_bool create_flag); void tokenizer(t_data *data, t_token **token, int *i) { if (data->input[*i] == '|') (*token)->type = T_PIPE; else if (data->input[*i] == '\"') - double_quote(data->input, *token, i, data); + double_quote(data->input, token, i, data); else if (data->input[*i] == '\'') single_quote(data->input, *token, i); else if (data->input[*i] == '<' || data->input[*i] == '>') @@ -41,6 +41,7 @@ t_token *token_create(void) token = (t_token *)ft_calloc(1, sizeof(t_token)); if (!token) program_error_exit("bash"); + token->blank = TRUE; token->type = T_WORD; token->str = ft_strdup(""); if (!token->str) @@ -73,7 +74,7 @@ void token_redirect(t_data *data, t_token *token, int *i) } } -void token_add_list(t_list **head, t_token **token, t_bool token_flag) +void token_add_list(t_list **head, t_token **token, t_bool create_flag) { t_list *new; @@ -82,7 +83,7 @@ void token_add_list(t_list **head, t_token **token, t_bool token_flag) program_error_exit("bash"); new->token = *token; ft_lstadd_back(head, new); - if (token_flag == TRUE) + if (create_flag == TRUE) { *token = token_create(); if (!*token) diff --git a/srcs/lexer/tokenizer.o b/srcs/lexer/tokenizer.o new file mode 100644 index 0000000000000000000000000000000000000000..4f1b3963251d08191f180110cd32801693dd0bdf GIT binary patch literal 7408 zcmb_h4RBP|6~6o4zPImX!)6l#1Vdn@AVEwvKu|;ii6odTi3uV6Df)cbeI#2pyK&!! zpW;tUutObNWlBe2&o_o%B&%O7(ckbQ%`utx$$!E;NP^j{PmQxi1q09swmAN=+^@C}SdJFlW zxNRR~B0nin3?pOh&N#Bu?r7N3G2V8i-2#X3BvM|%*bL%c)=$hWh7q+h>3FhBC=6pF zo{OW3{x>w&)8QODOJx`_tFy1mFgrWb)=rAIesf*>+A)iJL|hky=2Q+I)Ds|Gym)eZ zid=H>_9za}et~;ZciKlWUlH@9c$hRd%*FHMIsVJUUTqCH?W{Tn&+P3@SVq$9v1}OS z;$1t%@%)JZ_(owCk|R!vm+Jg-l)7{A-W7QB1k8#eA&j$0@pyc_W;7R174viPZvPMQ zGJAR_o$u8GZ&*Yza9O-)st0jpjK1Wqcrs=f&Gq9`VJs-tt6wO)@t)Auj9`DomgmgZ zdHxddq(v^d^L<$0O%u)|;=R*K#mk%X{4D`S35dVg42v&28$g4SJ_tX849#Nf4RCr- z+dx$4(Ildw=&}6tqYmX|%B5G?$%}iXBNqqRfkT6H&YkwN(RY1p^zfi@PV>}`p7GU= zF7)&dY4J15wU0b^j`*Iq;y7d1A>QH$e!V0z5u-5lESR>M9?B+XmhbNt17M@4MCiV{Be7;`nN_K$u zVlL}%r*)(`Ufg@*5j+C%;R1&Ja-NGbu-y+^?B~!(fwTV;pAn3MXQW&f z&&ULutaxZ&VAm+(CfpIiRoD>Wm3wN3G^_=UgJ-;$`VWhKiV^Qd@x<}7u*H66V{4wz z$3C8gP579%Gylonj{-JCYc(vh(Gi)}fPIwxUZC$`&;fTn-S^}SY|C{vO3&A6$kdNH z&^-BCXkxFq9`nUVVbt}#+!&MX+r_<}BNx}O10mM`rbq67lW>ReZjWGnFNeqXfYxN1 zyB~bcWAh>me0&@%Xqviu<_iA}ehHf`&x2x>-;eK~*XwDTDhK?2>cbbX96hrNkd6yj(^Q;hrh~}= zr&F8i8MoA@a8T-54#&Jo3}2+ymN>=>X0FB|%C9g3gndvmAAo}GK|W@z5u1 z4)YeR4O-f4EQ(xwH!W&D`SAh^PwF1BtA>9G_pf&R4>=PP+T(_ev1sFI=Se|F_Ng8GM$-zU9UqK`uUfaK1Q zz5;wb#+Rby`qPjvksPbi^T7G8S*4_XMNtOC&X#y0!v?Qp%519ikEnzBQsMJ#bN{|;&eS(&>N>dh1n*Ik@zcHwvb>&UP`afKGa|vHtj4(WrcUz(NxSbcBRrgY#iXNa7#QHx4W%Gf^`|z?s&$qGiIjG zX7OZ(Sw<(kSYOhPcO|V@h;(b~nm07Cj`ocW=%)Jw>oD4y+MqHvx3<@Vt!bgUuKgy| z?G5!!?G0->AU56Hwvl-2#tuhlY(Q`88nSI`Yq+_dWeh%ZW(&^I(^f2=ws6znExG_k zyUjG~#qBo(4<2AA)_DgTTQ)~BTu;$7V=*HUx8X#~YedtQnXy>R%$R`T%yw8j+1n?q zY;;=@fb`v85!J@VrCi_FjDg-7G>!YNZVuR zt7~ts+iGlRx~0MB*xJ@$7%bWoGkVQTHv=R+LtJ5Y(r)9To-sJH9foV2wVQQYSjJS; z*q$)E#vAd3#Zqa68;d7}kiwc#&_=Sa#}OO=E1gcI4SMJp1~R%+Jr;`t$;9A%3moXA zwTm@wsB6ThZ0rVxUuJkAok#pGKr-Gtb_oTqIh*;|1^JQDpTE<8xMtnql{*KI^n7=C z8}td#U7!a+j}gI zrTD&x4f*3h#)=&nhOZjOk+B+H@jDXDoAfkqx}nm|l>F%OUIZdv8h1K)#=9w)c`#nq zC(RG0eOB39(c;qYFN~G_@qAZVa8JDKNfzE*b1uDP<=7N@i8bP;$lA!xQ2SHDQj)6{qC_BJ~QNqAsj|yc@ zQc)_UDWXt%AQj~gp`s*DD$4poMY)z#l#T=z9f(LpxlUM7#vm1?5TT;PN-D~fgeO##!bn9~O^isH zo>Y{e-3bX5B~9T-2UD_2g2afg2o)tN5o!%g$m(T~z@h|AD$3Xbi?Tkc=pZ1hwxLZb zI%^6nO2VX~oGesmWt9*NP((E29YXJThxiLV-U%uD;5eCo_EB)M{z8oCWwjKs$8#Yt zg%|}&ig+?=XJz02CgX~t77iN2T>Hq$--Glsp#{(oSEd1A2{{~lL%({zzQ`=S{~ z9!r=wXJBI-V{~En#$+sjVMJC1;TXH1B#*! zDqggplOu{>U8fYHRT5EVpcPR{Q4c6V7)^(|ETYVdC<}z?;OCjn=GOB+({%2DGJil> z6j7E$l*JJRhRgU+MHp(P6G4ca<>-LoQ{~ymlqt{_^Z0!{x;X<1K*}RZIHFWWl(`&A zhPw~bn&R4GmN3UOat5sCV_uITKGQ>0`xW_qrD&Z}f}s(OG@y8}Kuj+BnQnb+1w0mnZvczE4-=$?Ux!F({9h>EX0DPbl$I~-CqI8L1t!1FA_}`-(ekui z2n+MZ2&#Gv@je9uS(V>n*vdhr0DV$~mZ%UGGn^L9qX;4*%SVLtNaRHn9a;^dk5HZj zidU8228uMOcxWLa$CPP#+G@vUY`9H)v_;&k0DuyD0zhH%h6qNND@nxzpb)7CTLe2M zujigs14`Z?nMnEg0^k9@1CKX;2L0Ec+GNfWb_KU!r^VJ zmY1|(%s3m8M}EH6Yo?BqmnK#4ia7PI6hRdzFv1I!tXSrJD6eP|9ki!)t!AQ+*6EL ks;_grHQ^3JK}O9)A{AwcOi%9;UN2_OXq6D4q?Kmu--+Qq(*OVf literal 0 HcmV?d00001 diff --git a/srcs/minishell.c b/srcs/minishell.c index 5648689..38da3b5 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/11 06:36:58 by eunwolee ### ########.fr */ +/* Updated: 2023/08/11 06:58:06 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/minishell.o b/srcs/minishell.o new file mode 100644 index 0000000000000000000000000000000000000000..6f3174b9971bb8f66bf3c63696202774ed0edda1 GIT binary patch literal 4952 zcmb_fYit}>6+XK&yWZ@M*LIvH&P&-qnmVZV+K!{7X`04OoH~y4AkLGh9mcz3@7C+x zWoFiKNYq9#sv=q`jcB2wKU&oOfIsEYN~EIDph~Ev6xt#rkN_p+p&%52KqXC}4c|9& z$8lCcP~b}Eo^!r?@44sRJA2OApIp84p&=3xG)tXUS;~G_Hbx_k9vC_szqN>tM<>CaU~S$>{-=n$u`T@gzetM zzo+?lXyKDx4j(dr+27P&W#oYz2kZT7O%N4X5il87-;GkqZfei>uWIG$?X9h|cltlH z=N+xy^t^|az3(e8Uii26a+L}A<(akekzzS-nnPP=okcS0zA_4&Y7*g7zlHZzPhWT5 z;QK2T%QlzPpLdh8_ieTKN!Vli`Maw%XOfNfoAthJdZICM$8a7=yugMwMeEgYd z^DOy!ZPOL(_t7jJWisF8>6#zD- zQn(hqNw&4(BJ{|%RxO=Maf(R19TS$|1{*qIb#8o9o0jItZ3}5eBoULSg1CB4?+t2l zK5PaHaP_T`>voMs-xHczhiw`o*i|IG9P`&gZ=zqR)JBN%C45hOCTxb2GfeW)H-nB) zMLQWVzh^*7*BR%)ef#z%(W_XHJce#LNL!t12g_(3Mi%@< zLRm3ZhjLfKSO@tf;@!;#9rF$Kw24j|`uET!Uq`nQq@6jdsK9oxs zj4w-S!2Sv`Hjv~2_^A5)MvCc07>Y_$6QD$cz7krp8(klC?NDj}tX;m_X{z)2{151oYLi}I``!Tm>awV%gmYK92 zw^%7>x_djjI#*}feYB&yw`(=@o}NzN-K)fPa&C5_ST4E+yHx7TNp`3>;#khn>=t{{ zE>)_wliggIn6S$EA*6`Cl}gFY4sY4+W_MV*UBd@E-Tb)B60`eU?3=ZboiNq5vy*PF zlDEwx6=&Q<-m3Wt|bER1J#2RtULS@31T)}e0Hb-DXYGt=LR<`pQ z&e+;FG~6$H_w4JJ39DEZ%NfhDn-se|S(UuyS>l;Ka|2c^S8JYlm2tc5VyIMfJ#hn8 zb!;iKJoHB~7;sl{=4^57e9^IyZ+(qrP!;8$$L&ZiJJWI;>!>)D3QU91VRP(OsCCqZ6Xi?1GeK-9Fw1c3=H=T;1}eV zB=~&86UNLb;IQJ0}p-qc<$J4GU0q?9X3XM>ZhroodZ$d z31SQPB*qq2Sk$@aHMEa1hdFQoXdZ}-=b#-8MT@Tfc+fU;Bu~VOm}}A??u80SkXun@ zAVy`LIR5spn-)K}D!!-PSi@isSOW%L3_raH9**6S0 zu?*A$>IWSJF()t~F;G7TVp;b?5ToIrK^iW8K4=w)35pSm(WwSH1$qkfJcy|o(}j6@ z1qhA#kq}cRkB7$K?a#uB`2oaaN{HE2L5!n>7+w{`I7*0NRheg?CdAmS%+qN?jOl72 z!!sd9Z3Qv-5@I}73mKLPF;1&lOelnyW7I6B8bXZ1Y8J~7Ld;BjUNlxQgcy&NtIURk zn8cJV=1D?KoXQrH3L$141+kzZ#EM7RV!|iH{H<)U6d=UfKrLhnDu=CP`##u9Jm@QY~+1Eob6?w&5Oi z{~tE8egJlHorqkW1s-&EI>h53=GSswFceINj4x+K#w7;P7dZd7=uw%2bwSfwBC&Kb z@y%E?elljnw}TJHJ{BK}Nn9Hpj4jX>os4x4#?}nR8V6&jGY4ZSLecop_E^iVSOaD+ z7>qTXjOp>|SZaGr1CWLp@@QO}8jR|ABma}ZKdp`v*tG#X503v&9S6Y?cslqW3%-?x z0)F2Bcmntaa0IE2b>KMqP;bERx*Z&WvV)%?f>(!MTx05C=&+N%8ytZxy%HSj80UPx zjUNj16VTHT!nT|`E=7HJ^4U6_|M$~yIKxPZwi?tlYyJJup=$8iZ+8T`(nJR9^!7R( ze>b@vmlZUco@L%o3bXa$y75At-e0GSIc76?vep1AqQ9}cDVd!t9!wMh;Q3lrOuv9J wSwFb8<>U%tqR?$039WHs`ywefYlE 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 literal 0 HcmV?d00001 diff --git a/srcs/parser/syntax.c b/srcs/parser/syntax.c index 5e3fb67..4492b3d 100644 --- a/srcs/parser/syntax.c +++ b/srcs/parser/syntax.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/07 22:24:38 by eunwolee #+# #+# */ -/* Updated: 2023/07/17 06:40:42 by eunwolee ### ########.fr */ +/* Updated: 2023/08/11 06:53:21 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -49,8 +49,10 @@ static t_bool syntax_none(t_data *data, t_list *cur) { if (cur->token->type == T_WORD) cur->token->type = T_CMD; + if (cur->token->type == T_REDIRECT && !cur->next) + return (error_back_readline(data, E_SYNTAX_NEWLINE, 258, 0)); else if (cur->token->type == T_PIPE) - return (error_back_readline(data, E_SYNTAX_PIPE, 258,0)); + return (error_back_readline(data, E_SYNTAX_PIPE, 258, 0)); return (TRUE); } @@ -72,26 +74,26 @@ static t_bool syntax_redirect(t_data *data, t_list *cur) if (cur->pre->token->type == T_REDIRECT) { if (cur->token->redirect_type == T_INPUT) - return (error_back_readline(data, E_SYNTAX_INPUT, 258,0)); + return (error_back_readline(data, E_SYNTAX_INPUT, 258, 0)); if (cur->token->redirect_type == T_OUTPUT) - return (error_back_readline(data, E_SYNTAX_OUTPUT, 258,0)); + return (error_back_readline(data, E_SYNTAX_OUTPUT, 258, 0)); if (cur->token->redirect_type == T_HEREDOC) - return (error_back_readline(data, E_SYNTAX_HEREDOC, 258,0)); + return (error_back_readline(data, E_SYNTAX_HEREDOC, 258, 0)); if (cur->token->redirect_type == T_APPEND) - return (error_back_readline(data, E_SYNTAX_APPEND, 258,0)); + return (error_back_readline(data, E_SYNTAX_APPEND, 258, 0)); } if (!cur->next) - return (error_back_readline(data, E_SYNTAX_NEWLINE, 258,0)); + return (error_back_readline(data, E_SYNTAX_NEWLINE, 258, 0)); return (TRUE); } static t_bool syntax_pipe(t_data *data, t_list *cur) { if (cur->pre->token->type == T_PIPE) - return (error_back_readline(data, E_SYNTAX_PIPE, 258,0)); + return (error_back_readline(data, E_SYNTAX_PIPE, 258, 0)); if (cur->pre->token->type == T_REDIRECT) - return (error_back_readline(data, E_SYNTAX_PIPE, 258,0)); + return (error_back_readline(data, E_SYNTAX_PIPE, 258, 0)); if (!cur->next) - return (error_back_readline(data, E_SYNTAX_NEWLINE, 258,0)); + return (error_back_readline(data, E_SYNTAX_NEWLINE, 258, 0)); return (TRUE); } diff --git a/srcs/parser/syntax.o b/srcs/parser/syntax.o new file mode 100644 index 0000000000000000000000000000000000000000..9581c7aa2e53713e525028d7add3a8c986642ef5 GIT binary patch literal 8240 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 literal 0 HcmV?d00001 diff --git a/srcs/redirect/heredoc.o b/srcs/redirect/heredoc.o new file mode 100644 index 0000000000000000000000000000000000000000..f82ceb1cf3777980d405ade6f0bdfa7ae9a8d46f GIT binary patch literal 5208 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 literal 0 HcmV?d00001 diff --git a/srcs/redirect/heredocutils.o b/srcs/redirect/heredocutils.o new file mode 100644 index 0000000000000000000000000000000000000000..1db35c379f827319c392e001da39ea3ba389f72c GIT binary patch literal 9848 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 AVE_OC literal 0 HcmV?d00001 diff --git a/srcs/redirect/redirection.o b/srcs/redirect/redirection.o new file mode 100644 index 0000000000000000000000000000000000000000..f87e68986d7b4eff1bb2e5f7861cb7369aca753e GIT binary patch literal 6136 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 literal 0 HcmV?d00001 diff --git a/srcs/signal/signal.o b/srcs/signal/signal.o new file mode 100644 index 0000000000000000000000000000000000000000..477eec4a8dc4ee3e9525d6e5677c886d6cbe0c18 GIT binary patch literal 4304 zcmbVPeQX>@6`#4iU7vmDJI8k7B$d*O6yjFu-Pw*wt+q*Q)hUT{1!-@{y*fOYH$eJ$xx#pn zhScMwRrCdg`-0&CpN=x7x|`x*(K4_e@49+N3kt6<~(A z-~>DxAp`GD4&WYgaTwn;$eUTgKi%Aw#}O*z=)?G%$#Q$bK2)+96kCjQtFf>U0=PM6aHh@}$@9 z*D$(wOgFCbAFiJ@me&{f61L)Ei1)7%UtG9*^?HoGv=ZxoDWtQfRyw}0^BiOMBhU6Y zn;*dh7x2_Ze)%w4qJAjIx>p)*kNFk+D;>aGoBi}k2V3J9b6w+?ZjJ%&5$@pv?@iz@ z?q>fTb9q6m*5(@GjlZY-CRBcey?*wQWvp%KiY9(?V}W6fe0d$YJb(4>%kVFPW!@C) z#Sbha?hfL;wXdK3=JLA6min=t+MG{A-;H&6n6F=?`DZG2IiKix|9-3J6w9oM@h$v) z(KcO+R_CIB`gpXZ2K2k`#2Jun;$hw*BIF?O^KFMKQS z#9?pfQfo*8tJUb=u0?4`=Z-`0;e7>^fkrg;Zcv+&?DiqyHm*g(VPIfGMVe(6r1W9p z=53ft;=>o^oG@d%VY?sB7D_N2K1h3S5f8$vnGkxwVYItH06t49=xI;LmQMb_*U+T^ z9&EgMd1+T*(1XEI5(atY4Mmc@4d(f8p$)`Bf%B0+${xiu2F|zqnY7m5qGb&fNz?`A z`R}6*>1=Jv9ej7O%2-9wo@$G<vyXs(cRCv3-ISz*uQD#ERpl_{6y3KcN)G1Il#1SZ5~i0sI2P2`-6@N8uUBQq^V zwU+bRqRT9i8+Xhst5_sNg-sP`X?7;=6!A@BiK28{Li(XQzHTwgs*SfM%rZ{GC7&=hXTwlhq&7y?jbz)Vwlc4Tw_C!BXw({ZhC1bO6h^$|gSI`XLq zg5c1lbK#G@!**PJXnNu4cf#NPdiQg`egbv}JO_Rj{CP0#M;iMhFcIx@(#cOm^+h@r zA`$Iz(qAM6M3qGPDN;awu4E&s&-DiAe~G~{&4}p=Bck=unl)TpL3Lq~jh+kL?1WF$ zp!!|&=fdYMhJOD17r(o9?Q;9zwWq%GLirnStUc~N`_?a-J~MX?ai0T!8T>k!p2Kgz z?}D4Lh%1n^7OG{cauC%nndq3nNk-HUolI0xDvAn^OjJ_aD26dADKb&HDif6@nW$9N zKpH@%`CBHcQZiBXs)5ivdfO90U-zZ5%i{~S+x)dh*Jl3OV{0@21IQ&Pw+ZL`AJJw8 zK{(xg)zG#M8QSEK9x}9TRedk)p{n*|Rc|!34tR1ydYhqbNAzFy z9;2#j#)6@ZS9L?%`Lf;#v+)T-%L3-EA)Oz?E!nlz(9FN+y3wS?tH;thPwVV8Lp$M_ z?yWB9Y}n9-U)BSN=&rtkQGpO175;m`EsQ17N>YVm1E&W)d7u{(cVgl`NPN*H?t#S0 z(tA94AP9+1x&%FsDC9q}WQtpbq`1F%@&IjUeA^{ng=|9o)5i9z(3Z|M3i^?$^tC zr9()nqNRAh9`KDwdEKN-b$Vx=p78X5Ux3fl`9E8y6Lu~BN9%Mth-&>0)#kk|d1o@Q@$M8A%e8Th;#U-1M9QuslJs*bHr}2>(2Z+N z!aOO)&78w%4txVh$wUeN@Re~UZr#O{Sg{}q_8B36hBhE%r_6GOIhA~=N4DL}n>L9K Hj9u*CjBT0$ literal 0 HcmV?d00001 diff --git a/srcs/utils/env.o b/srcs/utils/env.o new file mode 100644 index 0000000000000000000000000000000000000000..82e94711a7c541fdb80231900b3be1cc7029dc36 GIT binary patch literal 6520 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 literal 0 HcmV?d00001 diff --git a/srcs/utils/list.o b/srcs/utils/list.o new file mode 100644 index 0000000000000000000000000000000000000000..a2b211098c7a36d3d8f255b777af0006850224b8 GIT binary patch literal 3688 zcmb7GTWl0n7(O$zvpd}_+d?Z)h`0|3)!1%trrsjOR*|-d5sYYz!*)8-h3)QUXIc=5 zR8}GnCWOSxi;4P16B3OtrYZ?W6OBF?&=?aFgC=S7Xbf0zhcIz#(SU& z&;E~i{$s@}uJ?e#`%2|g{#QJwFp9i4on)qcp_Ts9e zLU2iqb1^Z4_chWt4Vkucv7VXP0~;rSb^Nqpe>(RLG4;t==r5J8x%g#5%$z9O7bVt; z7gtRytm(u8{)nJZO4T%%>GJdpQ%9?Fh>IdfrdZUy5i_hJrvDffZzL0;IiDT#-i zEbb?;keA#~izZ5h70 z-X)CW=7tSTwzjxxL`|2_m5Ffi>L|t}%tbM^LCm*@nySI%Rs<&tdjYByJOh2;eN;i^ zV35xfh|ynxxCyL9YIrs!8K*Fqk;pav$&gWAy`4Q}eB@)KYSO?e9bZjexa63q7s$07FO&sfpT$;UNuzwZct|>t^DJvt(R% zfPOr(oxYpt6A}52jl7IfPA-$*l^SJ9G^6=M2+4=+x;=;sJ^-SoKU6oy@UZ=tluL#KDsTeA7AH{#}UVwdgi%lfwG zXZ$fwWb?l8ZDt|7U?`Sck>~%3U)ba3;S5Gkjl6_J$sNv?TwEYhTWJ;n~BAlBa z7motd^YiXrC1r+(?V*gbN2$3C-WSAp+5N8YM~edSc<){zeGYK$-nQ{>eih#4WVAO) zv}x)`gECwE9EitY_mM+4{BZiuPfpx6UUuKR@X6;lzIN$h*mK~6;HSZ?bQTilHt_-C z2dDUi(s{Zl@)(j>IMg3heikgnU+4sdxhnT%xiY{16T_>E+(>W`*Tyv)*ola|@Pak- zee@BZ4a9#sdv)8y(Zt2~yB`18X)IW;b{nObm7mTr(v0 z5Sm!wYr!C%c$!Xv8^9p86q?u}l!+&sCLVJ&ksX7km%$1iQb_7-Gw(%IdFJ7`%wKt? zMg8SheC1iblD`uvMPzr?H0{si5`lqPg0*bk@hZ-z5XEfKZ5^QxWj^Nkfvk?L{L?Vd zw8H$2M$KFnw>Fs3XulbY4q$x4G@@lQUN&`@G>GE78DmHSuDZjf3a|zc-%l+bebS6T zwE8h~z`SbEY=l+=yneF|2I4H~S3-iA0|91v{%v~MtU*+=-_$WP`kR@AhUt2Avl$;; z$mEn6jUO@f0U3?ZX!Lip=FNrZO=f&6qjd{=B;Lg;QEV+NN)%_yVQv`2ht#-AjlTwa z8Qp*}CPZ?b(s!z{M~x{pVvsm2LgMlJCn1EyE}O(ZeE46w9(o=8VV$rsP!H>ZQ>lm4 zt@N-idZAai!+%YEzR>K2_N7GGl5dXm0KD*`^Zu3-ex1 A`~Uy| literal 0 HcmV?d00001 diff --git a/srcs/utils/list_clear.o b/srcs/utils/list_clear.o new file mode 100644 index 0000000000000000000000000000000000000000..1095822cea5dd1bf30b6d65cc026ff202f2af51c GIT binary patch literal 3200 zcmb7GU1%It6h1Svv$H?VcAKP4(pp?G_D4xJf6!vZBsSJ`oBm*0TJd4r%ubuJo84t* zlBTq@rRjr$Pzoye)Y7L0d=f+yAA)_b;6o8bd=Y~v1d52Zmc|m}ckbLtHrt5yz`5t| zp6{HQx%cee{_EGj*AOWL;w1u})39W~pce2b+y6qo5d>nK2nua>Gbh*yGELu}^aDMx z55Iiu@Uk6h1ELcm##7_3eZ6o-nO@jUS7r^GpELUAV+#E~XI$MlO0)xgHR9Vf z3V&S2nyzjfRD;-(Utf;R$-FQ|h@r1{8H;@coN7B(x14*cDwp67_sw#i#8^1fKaIYx z%xLC!i#NG{b$S8zwW%i`+?X;S)b_s~bpwCj{9KaeMIXuKnuCgb7WSdnIlPBi=vo z+?7=EIki?eUQ8zO6(j9PtB>|IYblOyZRu^n#M4QYj=c@|@I5O`V=b{awgDo@B8oRC zS}K`j2n^jiQICzCd{B$P2O7~D;^USBpJNmBb|A#cqf`AD>MLL+5?`AB+D$n0 zNPq-&hT~&jVpZ#P^>S=hXdhvv$PBNbOJHT}Tde9+x_V`DR%l01BC1|a^RZH&<_uV| zU2L_AeB%@NVqakS8LV~3??7adzy>`Ftlx0qKY9J?dPeS zv5NW9iOhuUdQQ2N>FjCmXz$K!6W+GYo{nzVU0v<)cWx)owY==O?-adk(eZrKD%yFs z-Jtc+6Bk8F>Hm!zk$|h-ldAmwd~Ra zS>rDGV-*@4?#HdeJC%&-CWw8C7Tr2|2Tj+|9dEa`Ec=m7tF** zm+dY#Kzu;iKEMVjtjRv6+L~PMarW?7W^QCK5I+m|uHlbML=5WS8Mq$D7(W8(zvFD~ zxbRl;!L6Qi-&l>Ctjv37Kh?8eRS=s3zYm@Ue-6G4=9|D6d^I+JK{vtd;xpU|2Jz8m z7oT~{gD2nnh zRfikMg}9R9lq|36IuKQyirqfSu@yH%CBhLJxBMVR5tZWb1*Fw0x{YeQAEW54{#{jKE%`D<+WXt za#BkC_6olTiLKFtQuadPFHmZWv@=pdh<&d~xdSqV#E?4K#($;o|4thATEu7MhRxEJ nCOrqGDqZNX)uj(@t{f(2_3)5}94qE=*S4vMYu_o>4zBSJq+9O6 literal 0 HcmV?d00001 diff --git a/srcs/utils/temp.o b/srcs/utils/temp.o new file mode 100644 index 0000000000000000000000000000000000000000..ecbed30eb170197decb114c117e07179833fd184 GIT binary patch literal 8680 zcmb_h4RBM}mA-mU?@6}gXBiCGfI%csObh-2rw~BI4t4=q{KS~xBs33MdbSm8NtI** zfk}v+*=Bd>rcBdmr;|=Ho6an3vrU_(EznI$Hf_o@$+p>SGo5YP@w7=xI!!y>ZnA+a z^?v8x^JH0=&Cl)~-+Rva&bjCQ>YjU_e|+i9zXXNw2qY@J$m^&GBO}!#pVlQiWAWTP z1@}=MBvKijwcrWZOxne{|4}_xI}EbsAlwsLCbpO{yxL?m+)G>UMcro=F0o|clR^+<1IeT-)i`%Lsq&fG>(i!MubnG9{$9+ zun>(fqV2N_nG(7xGc`3InVSUn{?p{Rca(O zYtdxwUn47gN_U=hXz8=aCy*Z`TWMFrcJm&de<7fJOyTWk{1xI;(!ZxnXS82@Ll-A7 z&Wojfw@>qn`c)sS{>Jk9HLCteQ?*~(Rn(wRSIj*02wC7PihDzqUVnzFz3wp&r%rxIP+G|Va#BGD-MqrKdlapVN zd`0`kEO^piKGJatd+EeE-F{{AS=v+DsmqWb8DIR)$#MG~Kk8vGOj}o~cOfvfSNt`+ z9|(hQzh|oNGp)fPx4vupzpbn5^Zl%AsqK5MYpLyft!t_62Uyog`8W;U6TF_KYbEEC z=Hn{Ar4{AA__uieL->+=%pDW075^?jj4yYOl~Oqt-Zuv)C+A&0a^orNtr_>&BiLh@ zhX*IH$0n=A8Fz2JQGM);|8VLZ{09DXfzBiMH-LV-x|x0hvVJwjWQdvz@b_j}`F_X& z%6n5F&H8XQm37d95^_#5m2(mW>V-n?#7H0&d(CiSgisdZxj_gtreP<3ARit{rBnGK zXLwk6YCOxV*@kY79ku>=j}@A?z^d`g!o5vv6S}o+_6_yx0~-PwqMyDLz@|U|LC@>; zY@4lHfdJ`*FdCs*h`WH<1b4H{_B!1n&GPyiaN7C|p)s%x@z~!sO{@sWDne8?i7V>{ zss+^v&IM6Eg{YeCnQGdqlD(wX)}bfW9&}8I&=T0MguRZzzELkbEC z_npW%x?~z>N`$V$+T&ohAbY$Od_%-EJO#k;dg%`R46;|NF@6dvjGv?M2pxx`@G1QS zSg$tE_${a~{(!<`yoFLT-bJY!9(2TO1W_6W1rO6`Knqmi zb8FO7jazk;75~N+`cMJRf{RJDkLCrdwhr?|2`>(K+e_Z|2QnbRyHE@wYmurnNQ-uz zH46GXL2HF|)aBRttxvoB^&#tX;K{ePzRvnG_@5wa8^YF4L6>0w+Qvo^Am0H(f)gkn zMb3kmWRVl;XmybJY%zpmu{rdvc5%bqMQD@Q)IIqgMn!1Evpvxj6Vm zu(yLXwgze3BVfIAtBDOgPUfQKEvUW?=H$fV;9TrWDoUxmPb5ZUDevwvIg?%)lI-#SBQKrk#8O?q=xg&1!pANln~9aRDUj>JKWsq z9CU^=Str-LIWsa6PbXt|vh-#$Fx}nRop0VAPwd>?*OX5l5G8E$o;(_EcJNw)spB*s z%qKEQ$HtL=Adh#H)4aWSkPq4jGzB|fh!;llB9$%($L>chF`CY&2GdS5OxPznV!OLU zZ_l1Cs40wzUYo)c$ljejogfH-C=vQlx*-qjwjI0n^n&i()2o=RUC{2_Ot!mrb?xXB z6j<#nzAhAmENvNkgp)pK$8)*(Vb&#voWuc}!Vtxx0Z|}+K;#w4#&ZrF3_Ak_J28|R zPKsP=aLDD!QuSK-E^r%prgA`Tgj9y~^iK@MbE;2524l1-XC@gh#KB9FS0t6rjuuqZ z%v0A8m8ok)aAy!{`W%B1QO-{dP2@5e7$8ogjwE?S@Z6P15>B$IBur$s3wWv~<2k&6 z36>(}ZOv+M14-yQdU`r;v3GB~waf0kWmlJN3xsn!8!rqAxTO6ffp|ZyG`^J-Y)SHp z;AQO`5!QLnD`>(IQl)cn)?Eb(z=iBanYvEAn^#|uJNQ6Is^tSx*SL-nF zk0EbDz6m*rd?)hXAXAk6I`Xr~uOPpH{NKpc7y!jFii32*--etqVTeK;K@_pr7e!=(=mNl26b=ZY_`uL0 zThaA{A&S{#)js8m?q>uIA}>Woq6-8;bfe&k&p;%I?gM=Pp>RnM#ZR`Putg9>GlnQW z5kw)2dr#LNg6P)55QRR1C?ayj35W!xk-0^>Y7#{8iMvXd9D*iLurFF0f+!rbFAC`d zQIuyZy5A5)mmT(X7h6%lWe5f(i7%Jjn<)k3^3n$hR?iD+SEpkdRUGb4NzVSST*T$Bbhp)?${%jT%@1Z;-Po^sQ30UQQCN8dl^Qo}?~0rj2sAyavm8k~T}#rkPY7 zQgu$ur2F1IQu)sU!+aV%_QkW}tP$)k@6|s+i5@=(FLmA698qH_Z;Ugf(SHbqj>)*P z=66)h=dY~!q^$YERck(>YX0QPnvctxFR7ZQ{XrvYt59L)MP}~4wK}91k;J1ta8LYYw zl=R0y@i`@SRMAM1@%^AR!1pN{S;u%ADB08h#Xuu}Yi4r9V!1;rG^ex_*T5yl?^MHgdVR5Y@c@lH^*-ab3Sm>Dh|KV!VL%tV-rt~&4 z$q%sn3zomk@{d?P$?|tt{szlmVfie}^dXo0eV^sKS^gK653oGJ@*?if>ns~ASMw*d z-?RNfmS1MMiRE)FZ)Eu&S?*%_ODy-W{AreLmg!&g)ZYZllPtUQ^&670G2Q=f?uATq z=-z|yTa>bUZ@Q6X_nsAI8AK*jrS&SNl}gsI*JMg4nI$21mdV1VS9u|$9_C6aeWTkY zZ+UzAhlOFgiJsKzG0)F#8}}bvP6S@;#kajO7!b<7>3WxGUFUK|rgg0g6`9tLyHJs7 oz0QS-OlzA96`9sGE(8XT)zz-pTI9e$(OOhYaZ=GzRJ4fy0jZDGYXATM literal 0 HcmV?d00001 diff --git a/srcs/utils/tree.o b/srcs/utils/tree.o new file mode 100644 index 0000000000000000000000000000000000000000..4d5a438f81aa724149a424f7bd410a0b17839bba GIT binary patch literal 4376 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 Date: Fri, 11 Aug 2023 19:39:36 +0900 Subject: [PATCH 19/57] . --- Libft/ft_atoi.o | Bin 880 -> 0 bytes Libft/ft_bzero.o | Bin 584 -> 0 bytes Libft/ft_calloc.o | Bin 696 -> 0 bytes Libft/ft_isalnum.o | Bin 688 -> 0 bytes Libft/ft_isalpha.o | Bin 632 -> 0 bytes Libft/ft_isascii.o | Bin 592 -> 0 bytes Libft/ft_isdigit.o | Bin 592 -> 0 bytes Libft/ft_isprint.o | Bin 592 -> 0 bytes Libft/ft_itoa.o | Bin 1128 -> 0 bytes Libft/ft_memchr.o | Bin 648 -> 0 bytes Libft/ft_memcmp.o | Bin 680 -> 0 bytes Libft/ft_memcpy.o | Bin 680 -> 0 bytes Libft/ft_memmove.o | Bin 784 -> 0 bytes Libft/ft_memset.o | Bin 608 -> 0 bytes Libft/ft_putchar_fd.o | Bin 624 -> 0 bytes Libft/ft_putendl_fd.o | Bin 856 -> 0 bytes Libft/ft_putnbr_fd.o | Bin 1048 -> 0 bytes Libft/ft_putstr_fd.o | Bin 680 -> 0 bytes Libft/ft_split.o | Bin 1976 -> 0 bytes Libft/ft_strchr.o | Bin 672 -> 0 bytes Libft/ft_strdup.o | Bin 736 -> 0 bytes Libft/ft_striteri.o | Bin 624 -> 0 bytes Libft/ft_strjoin.o | Bin 888 -> 0 bytes Libft/ft_strlcat.o | Bin 840 -> 0 bytes Libft/ft_strlcpy.o | Bin 768 -> 0 bytes Libft/ft_strlen.o | Bin 624 -> 0 bytes Libft/ft_strmapi.o | Bin 792 -> 0 bytes Libft/ft_strncat.o | Bin 968 -> 0 bytes Libft/ft_strncmp.o | Bin 776 -> 0 bytes Libft/ft_strnstr.o | Bin 936 -> 0 bytes Libft/ft_strrchr.o | Bin 672 -> 0 bytes Libft/ft_strtrim.o | Bin 1320 -> 0 bytes Libft/ft_substr.o | Bin 1000 -> 0 bytes Libft/ft_tolower.o | Bin 600 -> 0 bytes Libft/ft_toupper.o | Bin 600 -> 0 bytes Libft/get_next_line.o | Bin 2936 -> 0 bytes Libft/get_next_line_utils.o | Bin 808 -> 0 bytes Libft/libft.a | Bin 35328 -> 0 bytes incs/parse.h | 6 +- libft.a | Bin 35328 -> 0 bytes minishell | Bin 89046 -> 0 bytes srcs/builtin/builtin.o | Bin 6200 -> 0 bytes srcs/builtin/builtin_utils.o | Bin 8296 -> 0 bytes srcs/builtin/ft_atolong.o | Bin 4112 -> 0 bytes srcs/builtin/ft_cd.o | Bin 6880 -> 0 bytes srcs/builtin/ft_echo.c | 2 +- srcs/builtin/ft_echo.o | Bin 4656 -> 0 bytes srcs/builtin/ft_env.o | Bin 5512 -> 0 bytes srcs/builtin/ft_exit.o | Bin 6336 -> 0 bytes srcs/builtin/ft_exit_two.o | Bin 5120 -> 0 bytes srcs/builtin/ft_export.c | 7 +-- srcs/builtin/ft_export.o | Bin 6616 -> 0 bytes srcs/builtin/ft_export_two.o | Bin 4376 -> 0 bytes srcs/builtin/ft_pwd.o | Bin 5184 -> 0 bytes srcs/builtin/ft_unset.o | Bin 4560 -> 0 bytes srcs/execute/checkbulitin.o | Bin 4720 -> 0 bytes srcs/execute/execve.o | Bin 7992 -> 0 bytes srcs/execute/freepipe.o | Bin 5144 -> 0 bytes srcs/execute/pipe.c | 3 +- srcs/execute/pipe.o | Bin 6088 -> 0 bytes srcs/execute/pipeutils.o | Bin 6104 -> 0 bytes srcs/execute/setpath.o | Bin 7320 -> 0 bytes srcs/init/init.o | Bin 7272 -> 0 bytes srcs/lexer/expand.c | 53 ++++++++++++++---- srcs/lexer/expand.o | Bin 10456 -> 0 bytes srcs/lexer/lexer.c | 8 ++- srcs/lexer/lexer.o | Bin 6128 -> 0 bytes srcs/lexer/quote.c | 44 +++++++-------- srcs/lexer/quote.o | Bin 8640 -> 0 bytes srcs/lexer/tokenizer.c | 9 +-- srcs/lexer/tokenizer.o | Bin 7408 -> 0 bytes srcs/minishell.o | Bin 4952 -> 0 bytes srcs/parser/parser.o | Bin 6192 -> 0 bytes srcs/parser/syntax.o | Bin 8240 -> 0 bytes srcs/redirect/heredoc.o | Bin 5208 -> 0 bytes srcs/redirect/heredocutils.o | Bin 9848 -> 0 bytes srcs/redirect/redirection.o | Bin 6136 -> 0 bytes srcs/signal/signal.o | Bin 4304 -> 0 bytes srcs/utils/env.o | Bin 6520 -> 0 bytes srcs/utils/list.o | Bin 3688 -> 0 bytes srcs/utils/list_clear.o | Bin 3200 -> 0 bytes srcs/utils/temp.o | Bin 8680 -> 0 bytes srcs/utils/tree.o | Bin 4376 -> 0 bytes srcs/utils/utils.c | 2 +- srcs/utils/utils.o | Bin 5832 -> 0 bytes tester | 1 + "\352\263\265\353\260\261\354\235\264" | 0 "\354\235\264\352\261\260" | 0 ...4\221\352\260\204\353\266\200\355\204\260" | 0 "\354\266\234\353\240\245" | 0 ...5\274\355\225\230\353\212\224\353\215\260" | 0 91 files changed, 86 insertions(+), 49 deletions(-) delete mode 100644 Libft/ft_atoi.o delete mode 100644 Libft/ft_bzero.o delete mode 100644 Libft/ft_calloc.o delete mode 100644 Libft/ft_isalnum.o delete mode 100644 Libft/ft_isalpha.o delete mode 100644 Libft/ft_isascii.o delete mode 100644 Libft/ft_isdigit.o delete mode 100644 Libft/ft_isprint.o delete mode 100644 Libft/ft_itoa.o delete mode 100644 Libft/ft_memchr.o delete mode 100644 Libft/ft_memcmp.o delete mode 100644 Libft/ft_memcpy.o delete mode 100644 Libft/ft_memmove.o delete mode 100644 Libft/ft_memset.o delete mode 100644 Libft/ft_putchar_fd.o delete mode 100644 Libft/ft_putendl_fd.o delete mode 100644 Libft/ft_putnbr_fd.o delete mode 100644 Libft/ft_putstr_fd.o delete mode 100644 Libft/ft_split.o delete mode 100644 Libft/ft_strchr.o delete mode 100644 Libft/ft_strdup.o delete mode 100644 Libft/ft_striteri.o delete mode 100644 Libft/ft_strjoin.o delete mode 100644 Libft/ft_strlcat.o delete mode 100644 Libft/ft_strlcpy.o delete mode 100644 Libft/ft_strlen.o delete mode 100644 Libft/ft_strmapi.o delete mode 100644 Libft/ft_strncat.o delete mode 100644 Libft/ft_strncmp.o delete mode 100644 Libft/ft_strnstr.o delete mode 100644 Libft/ft_strrchr.o delete mode 100644 Libft/ft_strtrim.o delete mode 100644 Libft/ft_substr.o delete mode 100644 Libft/ft_tolower.o delete mode 100644 Libft/ft_toupper.o delete mode 100644 Libft/get_next_line.o delete mode 100644 Libft/get_next_line_utils.o delete mode 100644 Libft/libft.a delete mode 100644 libft.a delete mode 100755 minishell delete mode 100644 srcs/builtin/builtin.o delete mode 100644 srcs/builtin/builtin_utils.o delete mode 100644 srcs/builtin/ft_atolong.o delete mode 100644 srcs/builtin/ft_cd.o delete mode 100644 srcs/builtin/ft_echo.o delete mode 100644 srcs/builtin/ft_env.o delete mode 100644 srcs/builtin/ft_exit.o delete mode 100644 srcs/builtin/ft_exit_two.o delete mode 100644 srcs/builtin/ft_export.o delete mode 100644 srcs/builtin/ft_export_two.o delete mode 100644 srcs/builtin/ft_pwd.o delete mode 100644 srcs/builtin/ft_unset.o delete mode 100644 srcs/execute/checkbulitin.o delete mode 100644 srcs/execute/execve.o delete mode 100644 srcs/execute/freepipe.o delete mode 100644 srcs/execute/pipe.o delete mode 100644 srcs/execute/pipeutils.o delete mode 100644 srcs/execute/setpath.o delete mode 100644 srcs/init/init.o delete mode 100644 srcs/lexer/expand.o delete mode 100644 srcs/lexer/lexer.o delete mode 100644 srcs/lexer/quote.o delete mode 100644 srcs/lexer/tokenizer.o delete mode 100644 srcs/minishell.o delete mode 100644 srcs/parser/parser.o delete mode 100644 srcs/parser/syntax.o delete mode 100644 srcs/redirect/heredoc.o delete mode 100644 srcs/redirect/heredocutils.o delete mode 100644 srcs/redirect/redirection.o delete mode 100644 srcs/signal/signal.o delete mode 100644 srcs/utils/env.o delete mode 100644 srcs/utils/list.o delete mode 100644 srcs/utils/list_clear.o delete mode 100644 srcs/utils/temp.o delete mode 100644 srcs/utils/tree.o delete mode 100644 srcs/utils/utils.o create mode 160000 tester delete mode 100644 "\352\263\265\353\260\261\354\235\264" delete mode 100644 "\354\235\264\352\261\260" delete mode 100644 "\354\244\221\352\260\204\353\266\200\355\204\260" delete mode 100644 "\354\266\234\353\240\245" delete mode 100644 "\354\266\234\353\240\245\353\217\274\354\225\274\355\225\230\353\212\224\353\215\260" diff --git a/Libft/ft_atoi.o b/Libft/ft_atoi.o deleted file mode 100644 index 6af93fb94d9f00580a48389b4dde722c5e961288..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 880 zcmbVKze~eV5Wck4rdEwmAsUw~LhGc0idzQ-1qYE1-5#YX7VQrqVi%#};@Zuvqb`mP z+3KX5xH!91Qo%o<4%Y9|y!3~iJaX^dyYKG1yO;O!{q-|Wq!5Ic5cG%*6AGDyI<7T* zxp6azuDxBJ!w6>$cxggd2W6|vAw+63o$8*YRqo-Fxh@u>ij3i1h-@)m%498ZRyfZU z_J!El=*1+`R`|5P&)$Z2Y1tAqF@aJ^+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710W6Ja|1EV4v-oU z2I&Qka^N;VM%6WsHdj0+yj@uS>ON=lNy2a${wQsYu}Ib z9Cy;g*r$GwrRde9C^XB_Teck0<@`0~T?GbWMmd^G(MM?Bto4YtuxI|>FN_wz0dl%0 zjh+;B52a6f?ocDOw?2>J&dw0~^&bp=(dSg}C7*xFs_<~9q6J2>C`rtjT?gmn!paKZ w94@ZrP#*sBL|){COZexeeBxt|-MV{L_lVt^<23CgWRIoexvdS7RURMq17ML_N&o-= diff --git a/Libft/ft_isalnum.o b/Libft/ft_isalnum.o deleted file mode 100644 index 8311ad73435a78ccf372be4688ce3871f566087b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 688 zcmb7CJxjw-6uq(43eoD2L0!xu6tti&Iw~qSIEZv`yM#tbGrtu!Qc8_$9=2%U4OodZ)X*#d2kCYvp0S2 z#*NJmyxaE~eoDWSzGrOt8B0h}ELvckr6^r^jV*%nazGsm;5-hR+_T))RH`rkO)6D7 hof98N?47&bi5F?@RD+uTrNfFt)yNN5)Vi!6OCOCqO%MP8 diff --git a/Libft/ft_isalpha.o b/Libft/ft_isalpha.o deleted file mode 100644 index f936134384ebac76d78e8c6def92e55f0fe03b61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 632 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg{|11j7BHi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJHe0cC*9gXskeu`o2i)PU&t_~iWDg2d#K_|m-c%)FHNcpn#J zd6+p0FhQVU%s{pRkcK)H#dss2oCFX<!C2I2r91_6*7 z5C-W5*+CBY@62%V0XM_W7u*gzIanDBUo4+51q^p{pqV0Iu}q-Y@%d7~a6yQ*LezO6 zi@gMjU7s(t0;*Sop&{r6Kf_L-yF~s2X^?pj_#Jiv?VEUjIsO{Vt>Ewy0DA)_1gC*| w*o1*RK9C2Y02DfWKu^QM86?GzB+n3^RuZ3CoS0LPk;sr!l3QR1CJkWv0U(J-hX4Qo diff --git a/Libft/ft_isascii.o b/Libft/ft_isascii.o deleted file mode 100644 index 6895e02eb9b0f074c0d3d2b35b63434a98217467..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 592 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P08wF5<5+(=K!zK*m@PQl-1t4GZ0X+lr h8%T;DNuD7-tt39PII%c6Gm{~wB)7m2Od7!S0{}(4JCpzb diff --git a/Libft/ft_isdigit.o b/Libft/ft_isdigit.o deleted file mode 100644 index 922557d07d952d8a42f60e7d36dfb72bb195ae68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 592 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P08wF5<5+(=K!zK*m@PQl-1t4GZ0X+lr h8%T;DNuD7-tt39PxS%LAuY@6|B)7m2Od7!S0|2AlJTw3R diff --git a/Libft/ft_itoa.o b/Libft/ft_itoa.o deleted file mode 100644 index 853a82d120c8aa5ad2a5be249327b6184fbacfa5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1128 zcma)6O=uHQ5T5Ne$!=o}g+jHc8}L$)LhZ!}9u}fdr3WcJc=8cae-`pnVWmPT1ab-J zCFn`PimgTU!r;henL?o87nB2o@YNZ{C|X-#0(J&8MH=exD#x z2*S%a^geIWP{?Vh=kNZ#m}7yz<}(n5=LFoW@|uLO?>w?24k1>r-CB*#;qI5@VLrz0 zsFGuxDq##;A@b$odMK3@Zd*ZLcXXpKVlK62VXi z*T8-cxEO2(16qJhLT^G@n3t8YJU`h2cKdma-I@yNnC8^gQ zYj)1LPUp6($7sq^^=*C2d^$&!J=)S=@O?KyJuhMQG=;uv@&Hy_W zVA*$Fsq9TmetdodHEYVmf%bvwU%~lGZMcVOa{CGDdyV>*tP2^R1F_6~I2g=uZ>`Qt z7x^9=sFBYOdgGkUsyOOzW?PtH{kD%RS2ZjN-z6HQB=t?g6}FPjA?p4qtZ^ zas^v}=Fh-_Vm=+%I1HcT=V4C<-0bq-D4#>#vwY8wU4F3B*rrC}@gL!1U;+{Ok}cM( edzMY2m@5>@c@lSRVcF#z73|{rMStZ_#g{+$EZs){ diff --git a/Libft/ft_memchr.o b/Libft/ft_memchr.o deleted file mode 100644 index a0a51afb13a7db7b5870c94d8eaad50fab46323f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 648 zcmbVKJx{|h5WVz+qzV*?R!ZrT{)EB;-8{g?z|eusLZPS#QX&)tBO?O?{RLeaS-T~8OM=W)hv4B>fMuTGWdDyv~HWpEls`#~(v2Ny?!11Wd5 z^7^d_TE;gptO&jdZ?^ht{5rG-@S`oE7=UpR=Y{Ey;5l}IU4V^i7~IR>_>ZNJ^gO9i z^6Jz0&80-uM51hXUyPMc9n7vPS0t4(&8E;Di)P9jHJt)&Xw4SLiO$p)9mlF1D|^(u zqq(L$N^l=_#dT#G^6d9C^-|=yf8vP*dl)_x9tMYa+E;eO2rY7NF@CNegJ{3BjE!8 zgDwPd6^P13aJ*S|!;ugKlf0cb^JZpuZ}0y7?PHS2As8cWl|UAw19a>QsTwZ4G-VqvN={6D9Jbb9&I(m2z`E zuiu!UX8bCKx!^5$bJQQ>m!Zu9U)mIk0T>r?e%th4!gCw|TL2r^Fu0fZ_>X0G^f;)H zdJajw1fp}dnOHpDivuogzh^uN~>4%zDp}w^8|8YZRiTM2=6_Z+sf83}Oxc e8kO;}?EA13=5&&KiHzHE6nE(;iMvaBZO|tV&tNV9 diff --git a/Libft/ft_memcpy.o b/Libft/ft_memcpy.o deleted file mode 100644 index 432a71542dd2a40a3eb37fb4330688e9c6f1b691..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmbVKyH3L}6uluWDGIa_trY0g5iu1O=#~LC28IsZ3<^a>A|*o*urYR|U(g?5=qDiY z0l>msm=Yw0j%Fa7>)L9Nn7GpMeVu!3$9ekt{9Y!q2*yhR=yA{hVCz7lqQ94CT^=X} zB9l9)GZu7Th`4(l>jX}S_I{^5&rNi%1J*OMs#Ks`!(lH(a1lnwK`bu&S7-ebArAKP z{jp9O+V4WlM%;ndNBt$gjounC>#cwcz?j7KBRziy&$$a60&L7-@GS4~AIl!;Wl|;i zRw4QBl1!?;ELk*7oKbzlq8(`0lFGa`pjj>RNaBrZ%ugK5fs@!I72oycQjw-9^puu2 zs`reRt$M>0+>+(DQpcB@MH+rU1N*h6S>`EC=(EzCj9_ICSg$k diff --git a/Libft/ft_memmove.o b/Libft/ft_memmove.o deleted file mode 100644 index 9d5e31641ef589af73b037128240e95a73f0b95e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 784 zcmbVJJx>Bb5S`=D15q%6L#`LfiqSo@;$F)FQG_TH@Cqf+T&DRZ2 zDNf#j%!WUJjYs^T-$88+I<2js84BSh&JSb!J8TJY26_l(;T~4T@{IpTbWe|?JgMg# zsh12XnfFx6qKS0+#SM#g!CjEKS*}CVT;!6%?gj3b4shs^Hmu{R(B}U1tGw+OJBew( z=E-;}y+D%?bMy?iUu>8ez=Ws+*G*YoB?QkH@us!Z#U7PO6uEiK`wI_d^g`@nc(xFa zv7_P99K1K~!2Zbf6yBjXw8fKoL;a6s{k$giZGl Sy6?9x>vSIY?QMOQ4gL#Ewtlk! diff --git a/Libft/ft_memset.o b/Libft/ft_memset.o deleted file mode 100644 index 3524c0760ee6ccd2ade520ebc4f7777a2b686b43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 608 zcmbVKJxc>Y5S=rLADreygo{?`B398xuF4e(78VvM>;_3rB6u<2ik6mX^9%eP=>&g( z*jPuajUX7XISbD>=Pq8r%7M4@@n#;o!#;ezeJv6>1e2o(bR?((ur)wu(ceekl>3 z$0Swb-=SAPybMuu)hYRHa24Q(TS7AclP0NG5Xk&KyyPx$2#86KKxU=qKbGFp+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*TVsc4*XM+jxbm+v!^8!jY5FJf4;wKUdwMn$I@GBtN2#3+mB1MW6!XVzMf%A-dApx6%`~d^@o?YS} zFm{4JK(r7`wMt`egs5*WdzhS!18?5EnccV9z1)Ake+?3K5kgWJs7VnA5EHK!K}FdGM2vmq=7 z5VA=66%_J5<1o>{13(IpkZ&N6y>j;sW9a|H_Z>YnPrIwl5|!Oj?Bg;St5uR*>+7PU z`t`-+KG8D#$3_9^*Q0b(De*@=LJb#;GtOTlTH`H5S1(cRMzo7{*mE{TRGud1QF`Lh zJYB2eyz*^`pZWtoPJIWtPDkiay+pHHV0dh1TD&T6AbkytyU&7T-n#@IM&XB)!+03w zPxApiBN}h(fF&k@k+%JP&~1{U0Zk^);SWZJ@(ZQxjqFov={-i-uM6jq}A%loRw~N0usA)`}D2VXDrDFqy zj&V%ZE={&d9MnbHp*Wf?D&0j$)9<{ThtJf42hKfz-}&x+_nmus^ZQRLkwy?+8lZW0 z0#L|PXw<4&;Xli?)Xv1(aWjytF6mIpSlTvj+m)J~d^>v^+g`xI_Xx=sAkewkKqebo zlv?;;q~eKplBnmidAw4;W-^D=g#^C$>&dwVLv1Fu;)zA2ViOKH4am6ylGJf7{MP%&S9glZs;_WrBRf7o1nrE@8MG2qaT$WEms+*^nTHw zFS)5uc8?WwjW){PGQJg}Veod0K(ob6{$g+LtFEtK%Qe?3H76D^~ox{DPzq{10P6$JPfp+jWZnqs$M@lRts+OVTM(p-2i z7mczn1tsnk%=5Z>7sr?xdmh^mw>kLutvEuWHPwfQLTW1&Hyu2L;y$2gw2Y3zT`9zyJUM diff --git a/Libft/ft_putstr_fd.o b/Libft/ft_putstr_fd.o deleted file mode 100644 index e34149bfbdabb9b249a3d3fc46968974ecf735e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmb7Bze_?<6h8VagUSLOszsY>5vrwCvbKf>hqgob6a_W2D+(^bTU-VAY}5XMbPM_e zqNTZ--V!uwVD+8bee{Bs4t(eP&X0TEJ@?(ezkVzb1qdcC1QbLh0N5(vYW25kn{-=G zAoAic@`9kLGpk%vnE=F`IXKSz#GbN^ka==;8BWg#(S_F|%$z+fS5LBv>y<{aVlyA^ z`|AZ0Bn-b{o&}x2FmqKs)|6=nVg>lFEutBKNt5I^A!fi$@D_L;I0D3^M<8eA8>0Vf zpLg^yZ3PEYhdMncKE6uFhy64U=K^%*-dwI>pIyw4;a|lh??!3VcX;fEY0?AZd)?=7 zYVu;y^;0x8l34nut-S$ecWy0y^xw(6bI6|)EjuBZOo6dW5+r-gZh#}Qps{su1dDp_ u97Vk3tBdr7gnR#riSvrjRjrh(5I1T?mD8DOT_MSNn@Xx&-PT^7o4x>P!Baf| diff --git a/Libft/ft_split.o b/Libft/ft_split.o deleted file mode 100644 index 0274283b48990647c87703b37087a4f2885a4d9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1976 zcma)7y-!n76hDs&ZT+B8h$yIq4NPjpLFr&pttJi(#4xy+3zn*lrBr;x8e;Mi784w7 zWHg~Twf+Tt6C^BbL}HASDd5l!CK@#XlUjf0e#nC^p5(rB&&NIIch0%JUH|>{&ru?a zK>Rs`Rpw1E7U(qAkhDs%>2rz?fIev-Bm1G_p3O)h;c?eM!DqZAOyJBvzm5x_^!FTjL_S&+X4Qcb! zZq*;#4OsNO>R;@BL39OJI+y3dJ7I7>2is$|flC|Cy~4`#c|ME6caOt&J3;wI54jcS zmXQCg&L22LgM7ZKW3zp;C+70`0`j1zot%?n6(RG!Fei5Ev+)vY%dhyv$Hpq5#+Fij z4mHAODIP92I>=?;B76f@EGlt!Ep|WjDV$2b5-r6=Iba1JF@`mbLE2g=&-vPQz9Rgr zv(&-3Dk1c&1GRI{kf#=MToo@kZ!m5(8eJ9m)Mu}kfKTB(FpJF)?QRK*ZtFgWErq!n z;-2qeUTamDm3}2!6Dz1^KW1qI<|<Dj=JR}MT&p=WC5MctDCIVXy%;WF-OXAN-_mf$?+<2e16>PNq>VIB1^!(Yy8Rh0M5 zYmVn-mFjWIS5W&V@Ub6e%=hqd4YHY+xfeWt&P%|?_TO0p*}5}{+wqS3Cugr?<4!0{tRl_^dqiiQ-9*X`MWHm5c7_6>X0Y@Fl3KN z{A2OTT&Gt)c|ay{-xg1@>6A?(nM;~2D`)QEpNd2xgFQBBaY4!H+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|z0xH}AHi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJIp1j+!J2h$4{Vqs{2sR7aP@yYqQ1&PTe@uhj?nRzMk@jfod z@++Vm1t@I*G>jR@4gk_nr=l2d1eB8iVu&0sP%#h#0Z0)@JOZk}14x7T+&~-v#2^4t z1HvG^AUntb|C<>uKHz5f`H-Js=L>#^oiFqmEP>{Uyx?~D$-(Gg$-&4__(FWX6bBQ7 zIYRt^}0RzA^#=r**Bv`zFr1+8K8RFAQ;)_d) Rk~4}Ja!PUw48f!U0|4h5Suy|s diff --git a/Libft/ft_strdup.o b/Libft/ft_strdup.o deleted file mode 100644 index ada19c5ee0486eb467f07cc0d4dbe8f7ba0b764c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 736 zcmb7CJxjw-6uoWQrlne!4(ejTrJ@DvqGJ#R2M31^ZqJfd6w)?mib@dzS-KY79PHTs z3I%_F=-?c;I5@a9Le+EA7p>yrf&0$6pYP_8ySJD338DxAe8gY}EOIbl2Id9o@1rZj z?O*~?=&OjcMP*(Ht9oil2P8ykbGP*Ehsu_M=W%Zyhr+QK*-RmX&>JTKuyC&xk+3K1GtFeTM!9w54;9W!**Z{u3_U|-Zj`4 z{2zSW(*3X%?GGL5xM}j;wC1D#!d1zCRy99Q_QOJ)I&_}84B`s;o}&552)%mh)ohz+ z758Vaow-2@>>~Gs86JA0+=p3Q-$S13x{eqOTkCz?+qqH1W4Nn568szdz#cq&S78Yp z2WP=3DuDRA6Gd=_A3$OeoWY~m(&yKl8q2dBbI0C()G+@mPh#H^$JUXdn`fb}G|f;N U)jEk<*)SS98CK0K2In%-C!!=_w*UYD diff --git a/Libft/ft_striteri.o b/Libft/ft_striteri.o deleted file mode 100644 index a0a8a3eb480b1c2684ca86ec97c56499edd8e498..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 624 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg{|0V>=9Hi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJHe0A+y8gXskeu`o2i)PU&t_~iWDg2d#K_|m-c%)FHNcpn#J zd6+p0P{AKS^O%8b380}+r=l2d1d;<{h#W6aF%Sa*ND)X}0muO94*=2%K$;uG24WBZ zsR3b-UXU7c!2iPx7yni>t^C`}FmXY%{Evs+3_t(#GwcMKDYBwD{>MxHhMgRYoZTFZ z4wf8@423Vm=Su;@$Q&g9g4^Ne1Ad2{D}m}>0o5roa&+FyGC6ysoJ5PShN=l%cx z;(x21Rs!vrcz`+n8qAH*Z~{d;1^}APCIS@Y19=Pz_<%GY(6g}c1xfKE$uq>KmBbg9 V6lIpA7G*Nzl;jo|f=L6YegJtAPvQUo diff --git a/Libft/ft_strjoin.o b/Libft/ft_strjoin.o deleted file mode 100644 index de774eabb4c94570e4232da47ad82f2dc58cd1aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 888 zcmb7Cze`(D6h5!lG(XxJ1RrwX><{{2W`Q@!NI}pB58`Y`C;29Ed(KuMaUFz zb1RD5pR0j%jV>zgTw~S}(s|S-y*X_B^1+vsYLYlOs|k z_@;HPT-;dAS$ebddA;;T>%~`oj+pgy(%$A*Pv-~FOHuxh&4Nw9hq))X6b@q%_Z^TB zZ~@I^fsf!za2jjqJj-6m|JVA;IPX2adDeUJJ8u_D{#fex)H;iN8JZI zv6nnGhIQPJLa&AUneRaBCQ&`?s@TE%kc@S4K4Zk{Q-;ic@AnhbveDOlTHL2r2jB58 zTI{=nyCO!ko`OE(ee}&cnlY5Z(0>??N;d3ega9*C~Ra7D~DUwX+bhuyP48q7Y-$69pR~jbIh9PwX!K zgLIa5Vk4GfAs58L?jpqaX0xX!SU4~{Z|CF9?#|wQynPNZ#u=VrDigvfoH#!mLaZ&Vul?);ln(Jx?JX9`5n*RR4p|}cd%NXa-VsNo z~UirciCu_)VbAz$X`=!>}O+uY`CF5p34wShYr+|D-8dlLI=^afYxGZc!`)I(c*v@J&*ItRsk&iTfL5-U2p diff --git a/Libft/ft_strlcpy.o b/Libft/ft_strlcpy.o deleted file mode 100644 index b280b25b58ee194985258aabecda6f07dcdacef9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 768 zcmb7Cu}eZ>5Wm;co?__|SQ06;NDx#*;U-jDLxe-yN0?!tX7!@NMR0LU2x`+&`w!fN zmbPe#hK5%VJcouhUtspT=l9Zvh7RuTclX`>zI*q*`_K2UF(QQ^Y+TSZg9sEd1vPE- zhp{_}%F_3lh%}V5j>tA4^wgO?;1D9QzMUAv4tkb=`M9?XV^h1R=+v+mB6*O_?<93` zk~`hc?FzB6HhgZ#AR>JlJSy;o!#5bsu2_Pdg!VsU9K}!w&%pU>0N%|Ld=%aX-Gs7m z4J-HZ9eoafe@IVN9=Zj!(Y>WgO$~Qm0%X1V$T9+P3pAI8MwaP|TONfzOsyKK6RqH$ z2~&$(^-{Pq3v9=z_b9Cx>JH6dHRPq@R$HSc-mqWK9By!2RYNB7lB0R2(6ZC-byKB{ z`#nlL)=))f4)G0UiYgSdXW)L!_SWkK>o^Z{Ue3WBwUX#`3#$!$Q>CSf$Kf@|_vKao zl4(TP-8?73F**b92XKVnz>g&xGQmfIp>uw%p%6dFo-U5{qf9b?{)1CF%IMkrqHPy! Frf*NVcrE|{ diff --git a/Libft/ft_strlen.o b/Libft/ft_strlen.o deleted file mode 100644 index e5563189f7ffb9f76d73eb6efd9f398b04828652..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 624 zcmbVKp-uxq5S^oiD>>+;grrb)5(yZBI{~f&QBgM`r38}pD6oV|5=;|R9j?Dpi6a`hzWdZqgSy Cv`MJ| diff --git a/Libft/ft_strmapi.o b/Libft/ft_strmapi.o deleted file mode 100644 index 8eef3c68ca51aaefaa12c673617b608def692e64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 792 zcmb7Cze_?<6h5z~sZ>f3ymHZ&s6nWfY)YuMhK7c=o0yT{uj)mC1P@w*mV}0&A;7MOPl?D zv{m}VRv>a>AM)&dsxE|?J~UMT5Mph4eeEZ9*pnix$Fmj=Tf;+^)59o4s*o!tQ>NI@ zA7t{ILaZ#g>kSn|6>dO82R{Rzd zpAgOA?vb10NIL@T8C2u=8uKrPRr70sQ@@s&NB@pAuEJ9L?w6rNr)eZ=RrIycH=b$5 zNn5D1HqTLJDlSp?dudog^R?GAoEmFJG@9r58u#*jm1EKFmKLk{FXdZZ)ZIH!@5-Oo zFPlV!WQ=!=-Nm>Ft^NsM5X7-4NDzx{s06-Q3c2b`U7_nO)qvPC#h$sFP3K9`T(X!U UkxOQ?g%oAYTye%e`E`lD082u9{Qv*} diff --git a/Libft/ft_strncat.o b/Libft/ft_strncat.o deleted file mode 100644 index 9548586b43d63ff5f27709b1586807476c394701..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 968 zcmb7CzfTlV5T3^qcF#jj1Ig+Yf*nUfL>r~sL}?6#1qI#9Wj%uNI1XH+2{E~ZhU6NF z_ID-t516gg*w_&)td;7Wh6KAilVkbj?Y``V&@kDVdGqU=**EXt|MBT4ksuI@E8tZ= zOo2hSz}lQH7CWYr=)882&ODTsDHT@Ugc*iXOAE_OnQc#|Hw?z(+Ut@C9}m`GWl5=E zeXU*&LiMWl`g!e{Qj3pmjJ3s?N}VSFW1MM-bYwf4$+!=B6P(1ZAsGzfB=*mtZUp)r z^h4-8_$io)bC|i7doW*?Vkr*$TXMhujdt5|virM0y(5pJJ*m2`pnuwH6|sj0=rN%S ze$V)vR&giwecqnzE+E!MK6-!9UL$hJZR&A~^td18hUtcuxsUYLe}9J>KRD-?Lp|+W zjD`D{h#iW!AJ5QnfG2WISNQYjy}|Q*7s)*5;~ilBL4HYGZB7fCM~}$m{=hqqW6#bQ z%LHFbKk9hM5xE!oQ>*9>W&hccS>FWLkNzV6iOA_<5}-}=_fj>LM0b&o z_c^39(ova|-qEc$(U7vSz2BJZ<0zBRi)#&+p>`0@E&3o;s^MMnv!1ww+MvXJdyzzC-M1XRIlMH*xSG^z{WWYuH_#8vA{~b4wuP) zcgg=Kk*}A9uN`<7-X%~UL5or3>Ih( z&)Yfl8(y7BGujJ z%>h}a&-sop*Cn_(n=kjDbJXtZ4@pb&UdRnU#C=`#dXITt!`Dzz_i*(XciK90)sOW3 z+xNw1-Y1xsZ-2gwEWY7<(OMP(8lHn4hm*)N#`w@ho1@95aQ<&nq3|`OV^JRiwIA$N Wp|^giQcL{uR#nPDrM76+1^EXv5v9Wb diff --git a/Libft/ft_strrchr.o b/Libft/ft_strrchr.o deleted file mode 100644 index 13f006b4b3c7ee1284c5c581ec3c11f49aba071a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 672 zcmbVIyH3ME5L_n#8v#iHk|9l8QUVQf=K>@O3W^kTCuBfDkPyrvC?nC(<_qF7zmU#< zfM}>gcNF;mQ($JDyEsTlNUSusyEA)pkC)HM*9wtE2wo~ciwh4xYyv8;eqRzzKj#ia zrnkW}N?I2}o&DZ03ua~1hsgS>KkRp*Z2(hk6~h36hnPRs`+LY9`eo(-4xVA~UOwYLkv-AtxJK!_ zOQX!DRJp-OHOPnOx~c`KV+For(XDa^b*Dso1)umI4c3;fls%{qsn8UBW^)VFSMZ-? znLG9Sd*9d&QrxSbl*OBQQ_O{zKi5#RjI$Qk&{a{G;9sobb7D=fRGZUDTu5;zqbO`e ObS>N6oqXNa0 zmBUg9r&_KR99OJVR+lUHgt&2aI<6Y$rLzSb{3weJvIMEoLgPHvli;ZRF(iROoW%Z% zs52qoK;|J+;9FoOxI*UIxYQy3iN?D2K4|E@V3*n*eQq>Nli$(B2q2q#x2cVD*!D8i zXWuYw`|RhuE^NenFJt%3I6d@q+c#dHd8&Md247}t7T@p!=9?KH&h?DR80?d^Cp_KU zHrMTEIokL@>*jNg50b!60#l=XFS#|_k~puLb0eI=%mA?$JVVq!#E1cdYq_qAJnqqH zic!$G(!)O6JG%Hd-X-ie)(e{0FLH({^7qh-bGyhjGV8udSq$C+r3%RTh}A9L*gZH}NZnE`wGMPDP0uhefO z{e<&pIuu{S!7)9F#G&|0#Bn#Rc`4r^F9CZK66a{~)5Kl3<{^<{@tw!}wd}}FWTk}Q zc!HnqaVU!TwXm(`yd-Tk*G;zhG09hV7HWE`p8sd2%ut`UPalY1KVXx%?}|rmz2wv$ uL$6oMyi{D}cZzkTmX<0?b?eJznSHn5JRngnluA{HN^ZG!E?oIMn0^9Qn*u!m diff --git a/Libft/ft_substr.o b/Libft/ft_substr.o deleted file mode 100644 index d1abcbe0e1551f4589d91ffc49d0148a08dd3dff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1000 zcma)5F>ljQ5I)xpwh0hbtuSZ63BR!Y*+x++pZij;v$ znIbVDF*Gna{RPPcQhxw~fw^qYjTpMwNWpw(`zdL}(39`oy?6J0clJAf`}6znB_fR= zyo^HE*eO6E*P$}@{=c+iB+-6q)!sll>qrU{!d-ps_Bn)DTv%G{@0IsqfRC|`p7eyq zsw#)A5XFu1=1S2OJC)t_$_pVLKNyTFoVv| zuK|~VZNuJz%|f3*SvZH4v0UQ}G4|(?sHT1I?PXfM`&y%^=Yvm2Q|-_CRNx&gw`G>X zrY-{Tyq8%gG&SnVcL$UEM02P)5#=bn3hU|1fix)eklO-|G^-wCj6Md~7&Dx63=Z6V z!U3OoS^b<7PE+;AOokft*80eN$2Nu1jyX@I(eL9+Eg#_9Ohn^|1BY6t(nfqVsmXkD z+zDIg)6}f4oI9AbsQT15s53p(m$~lW1O65By^&fNo{I}NVXweZlIJ}JMa?OPaszSvlWI<5h&{9? k@zNFBJI}Y>t;BV=N~;wT<&{!tqevyUym>obc~~L;034LLZU6uP diff --git a/Libft/ft_tolower.o b/Libft/ft_tolower.o deleted file mode 100644 index 6feae5c437e7a3858d479fa91e0d6b7aeab4b71f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 600 zcmb7ByG{a85FG@CWR=xufmHhmYNI8I+EG|g&`k_rBmox9HBf42>laY^4cl4T5gTo{ z+{PcUP|pl^a7}ESX7y*vad)(pg_PjWv`1p;Ps2t6y@#hFzuGzUJvQ~2MlC&N*0zyV j+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T0Tu25o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNe&jdCVX-&`_vTQH(bNN=X1QM2;7z7>I!YqzEL=0c3#mTL5VVAk7WL0YD4_ zAT=Ni(hIf&NRtZwJ2PB-z|FAp1-HXaj#kFP7t7~M0pr0OXr>5Q>?Kg_`h2Mq3`k;) z423WF8Fm8W46Fvk2C09*@30eS-oyjU@z-GP0EdSF*qJaPI1SXpCJf~9fjj^OAm8%= kJp~I#kQ6_XJVSh1Nqk9uX+c415kpQ%Zh;|~G=S*`08)TIf&c&j diff --git a/Libft/get_next_line.o b/Libft/get_next_line.o deleted file mode 100644 index dcf776a4686982b7a8e2055048374f2b6a5d706e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2936 zcmb7GO>7%Q6rRn-@wzE>f+D#jQXGkkb6C_?2vVdVrwLLIIYd>2ICUEA4GuVVNsNjV zRWiy2DLoJY5)wZ(f`c9P&|B9hK)&RF1XLC3(YdWFD&S@#1@pc6vDdq4fsw~=-pu>` z-u&!Oe?9*DG-C!sqrYKvmj*NFXwRX~iB-Xd{@NpQ>YGRwkkw=WlLrYX+3_rG?dn{)CPL>b<68p^0EhoM(!g z*Vi&7{$An6Mj^}j@={L`107dIO{QR&>{VinMdTcX+iMpvI*Ts-JOg2LG!mluL+FhW zJ;m5v&{6aibZQhcb<%~Hz!BtswQhs`a=bHCJKkmcmBpl6UF5E1uy?(Cw}A-V z_-;4Zeiig5?S9W>(c;`|L zIPHIL@?ZUUHAh+JD9-BMsK^5`1>zc#`84C{y1*;2?#K5<<+lY}DT8&$w~ob%sa%1d zrEJRl)Abf?TSn|1!oR9=((xyiP12{>9(TKmkREJa4#Y_^*iaH4T}W>8I?~fUM4*Ek_Nj-b!FJ2WS8QUJaD0Ui@huNy|&v_ayo9Y_mqtV zqkM&ISPVLdTl>X1pZF1V(Yh2biT89Y0SwXSJ|?i{+KX9%xDuXgmF{`G@j|bKy_|}$4!s9rY@lwKOR9TeFxLM4h`2;MhfRP+p9up^&FgQ4 z(0We2j!RF_zoQ;!x}4EM`roQY_Kx%#TDS1sfTz^HI^)Me`3pY5r$P=kJ2T zwOs+F^)KZ7@@JCHXF=iGo&$v|8}EhCKd08ql8#(cG_B~2q97zcQUg7Mfo>lV4}i1I}C9id38eVq~n(zoD*X{9ARGGnZFU8 zM{UX{Zg6hT5V;I;ULCw-5fHf^P=jxqsS&<4Ht#zxuzM!`wsFyU4byM#yK8E l`+EQ4>fAcz+*CxJoLiQtf>pF^OO-1HDcYs#mN#ySd;{UChS2~3 diff --git a/Libft/libft.a b/Libft/libft.a deleted file mode 100644 index ef2239479a0b448ba1fb95512cdd47183047482a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35328 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 J*_dbje*sd_Rd4_R diff --git a/incs/parse.h b/incs/parse.h index d1b4ff3..bfb8b08 100644 --- a/incs/parse.h +++ b/incs/parse.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/04 07:53:54 by eunwolee #+# #+# */ -/* Updated: 2023/08/11 10:14:22 by eunwolee ### ########.fr */ +/* Updated: 2023/08/11 18:25:44 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,8 +20,8 @@ t_token *token_create(void); void token_add_list(t_list **head, t_token **token, t_bool create_flag); void token_redirect(t_data *data, t_token *token, int *i); -void single_quote(char *input, t_token *token, int *i); -void double_quote(char *input, t_token **token, int *i, t_data *data); +void single_quote(t_data *data, char *input, t_token **token, int *i); +void double_quote(t_data *data, char *input, t_token **token, int *i); void lexer(t_data *data); diff --git a/libft.a b/libft.a deleted file mode 100644 index ef2239479a0b448ba1fb95512cdd47183047482a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35328 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 J*_dbje*sd_Rd4_R diff --git a/minishell b/minishell deleted file mode 100755 index caca88e664b261e03d05e0798a7e9aafb79eeb72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89046 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 YPsRq```elK9CmH;nfo62_Uz~WKR{oHj{pDw diff --git a/srcs/builtin/builtin.o b/srcs/builtin/builtin.o deleted file mode 100644 index d0dea3f128d7c98eea6a2360eb4dca11bdbeb903..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6200 zcmb_g4Qw366`tF@J>SpTKK~@Kaa@jIh||hG#|e-^Ol%T|#4#kb9Y~5`Ip3}A#pk>0 z?Vd?QN+YL5QHu&up;cR{r3eWll~PrxO;Ib_prWX4#7_}|s#GZjDQ(pssilQflz!jr zY+|466xxpN?R)QgZ{E(#&b>Fg&z=3_zf2)Q0*#k2XcI3f5LzqfxGu#dFY`$s-p4*@ zfnEcdlpu&^S)P5s^JQNj8{9W`UJs<7Yre#IQd}X#YC>Ug*thss%gVZ5*(ppa(6ScC z3*xL%_6`naK~uLmhgeq591qgV|BbeYCJzyz2<|3_rvm96)#gNb85OTX1$ga!#*^bKWwO=r9;=EMs$VcNUtDs0 z-oet6^F5{F1?zX&e~gzc&R|@gRVm!*6mpg|ylvqK?yvQ=eg&Rs5JEocmFFHr)%g7V zmv;&_yHwBjc@^&!)vL4751d3i`R6?s*2jCnT0p)HopnC|yAy9gKWsHIwMvNR!MR=b zfY`VcB>EyZh#2UDw)c*R7v8-q^w_&w#j(@6c;~d<{|?4-|0O~k8yAOPM7#&E&y6`RQ}j%i{`uBc+Mz)?4#zVu})mGhn}&HzkAofV_5HFKhmw27q0t5@c9ka zejYwi!(Zz&YOT4xXZTDS`rqNRz~*h1elg!K8uFhBeWLJ*8t{wxzMBHy+6%|*3j7)_ z?6)THTXA7OY*l}Ztrzygp7s6OFYL$lTaFg4X*MV9>{Lc8rD7SZ zFe^e0q08!;483mdP~D$DRhL}VR@V?}jNmV{QRsC$o3^xGowz2U;g6?x0Jt`h!2c~A z4()8x>k1%4VV~6VLvnJ@#A~jj8W4wVL2M`IxUWFWg1DAH_ z+C-uQY=?G>`4Mo&*KQT&ddT}}zAb9r6UbK5{2b)J5Wl^}d=UIC%9)h;8u$dKKi+AM zf;VICTDHf095TnFoT{4KTIes%%MQ;iJH41 zKT3Rk(wqaAfqGj+j4@*0#3lYcT=s&r4<~K~YtcGP8(iN0a$(*P$ZNwU7f?p%jGBi6 zd|gt+2*%C=i5nR0S0HG8iEn`QXjho?;5Px*t`g=GfxIbdJ{8CxO`6X_mUq0m<@}hh zNtw?BzlD7_cZwKe$8W@~UIwbIh)q+U#pQMC!-?O4rL;klEBypJT`$b5!R5;DjG9{^ z%i#|t&0PV$3ybk2l=#!Q{EdOOCO8vQ+hVeeod#(G!n_nb#K&`8Sj7JTB@BvO9RE95 z9AxZ>a{{fjtgNM2S4($Me>tFNO{^7KyaShg(6#*u3#?PS(d6@&Q~#JS^MO1PHV;CU zBOk?H3h=R{d0!y!Z8pCg$TzjfWtMSnUTr=c;QLZS4Dhs;%H}hL$<(Y}cAa7&wSHrF zPxppYr$oEfZ|vCsy|=d;`1*CiEoa^Ic*V(kP9fmkS&<%g#><)V!SptJ*3K78b~(MZ zI5U$ei^77N7mUKe*y+c@>W)wa{KZnl`Stvie5 zX&2`qJAH#waNH?7pBIxBGp6Nw8L#3Br+{2(jiVRyr!!fwb17om2Zl!n#n{N+L6M!Z zv(wgiCGTL&)#wEljlc7F5hk!`olw((Rw2Fih$ z?dktT5F6_abrvQzRt@R}DrmtyiLvo8%SN5|H@)H7xoWIu!b6T`d_y5pW7wcTu_d zZ;DL1;+E5hl&|FMbf!G>KgVzny8n+DX_>EGA@f`J6eoasLxw(NB%n3JkeGwe0AbaTap|&_MIDSdx+KvB zGg@pgVQ7Q_6IyJjg`o+C)@s9|Q2OpUBNWklqn>7B6F-DUf%M#U034q(yY_(Nf7I0p zj&$9{$BK8du2=BfYr*-aLK*4eKcNwvf5{plhBx}WFR5_8Gob_whkf368qb^luYhA0 z4D;0lyzkozp9jZI8Ggj)eTNl(035q%*z3Wk0|~3O8>6XgZn*79UrBF?`oV6U-^PIqVyn-O+jB^mhY_#b;=8M zwO&CuS-Kb6Z?E$2tJ2%6^tHaOolCS94ut$vAi4kLz!&jNfr9@{!CHJ~&Rg9)fYJ_L z$j+4f{`?w&!}WrrFSD5P#4qOzXhVPD?wYrBrT{3CTb!le+Hj zci(-IyiuEe-qC&M_O~&7*_B*&}44*>=%6R&;Tf?(Mj%caHY38EuF53^0Fvr4Xw*=ocddUbF3Fp_or+ z`!&P1ueLX9M~`=hJxv$V_WWksDd%vh-%cDpoOg!lZ~LLPp4(?dx}}S*P?-|qOqo55 zUS-m=m(KR(s9A3Bp@3^|v$p$&<lP?E#t_GHvmTH^w7f2~I5z=HOae?y66 zxxIB|_8$K)+AAI(S}@+d+TN7*;&*?cy<~0>eiiLf_GmhrvhA++xln}Ip!4;*WkimS-kH4%cQdoRm$W2MBCfzcMa~=?_J$B`sFR#f14mi5qG;*U~+UcPD*|Z zdP@OE8sQTlw@)`ZoA>V0Pip=AR;Sc|-mdHt7p8*Z(v_f?fDg6P!PZM5AG`R;^s;ZQ zX!41hHGd)`MfEh~l*}qI4*b%mSFS9Z3bszb&iL!5{r;6*z6+Nh@xOT4^o^e~8)urt zNY9zcYtEf9?V0H+aY@05xTI`W&CL^r+{G#}fqC8eI2P99!EddAuIpb_>jZrIrCEK* zD7%vnoTGo7>mT9M8PH++YlhE?FSUNf=NtI}GV$D0jkq*jGiUcH;m-F*V~sP{GyVw1 zs?lZZrHhcmT$j8U)SMjGxe1xtSMoexk+YCd#-C^J?Bs8sYdU_zjGBkON05_wzGK~M z**``M^z#h-;=HHE?3v4tw7-b_E|}-jW7o_ezGu2GrS6*ybhqrXTrZ|pyn77T^P8f2#v5v^u1ofGdMkyw^=FH_f&`p@*6lm)DLSj57 zw4c};9)Ak>G}fQ{%j0p+g?-}bGeKql7BwE3H;y$3`^9+37k(P?sPT)Y80Y$7uGzdy z!S3m?2h{v3#tJva|2WU?`|+U(IrVP1?*-mPcb}SiKOi>)nuqsr_C30YamG9icoF*a zhwC}}zDx?dFUE_P$He$48cp0iW%iMsUX@*_K6yfV4KI}D#rn~gKiV}EfEp4Mwu{vLVx@MNCXIlh*; z;9jY4=knI`|8wmZT4OiHx%bCP=AA^*i86u|hGCFRrqLwSBG~agI9=mol1h zT>+zzkEL=2Czj0>W6rU(QXy00zG~lfl{M0=9DTI%$B$J;m(^ER`xfI1ZEO){WoON8 z%fAr0HDch?Zmt1iM0ylb6z19NnvOfEmmx~imY_?%9W}XFh^t2a&a=N zeF#K|#jD`!&G4m$F-9UgfQlBJpxmMu!eYQ1!P>VUeT*d9mtCNqJQo`0f!=}c^M_fJ zRWtDg64LMIf%0v1zfmox0EPS*51%mK1qiz1{{+-;ER#P46q0-0Cs}C?8Nkz&i}3Wz zWq3-7kA?_Hyq+Q`H{lr)f#5692!0O_^Hz@ff}A_V30grLo5Obi#EfQZA0UkxEyC*Y z@C_mB5b$d9H%6^r1*Ab^Q=JGZCzpZ~T7}2`6uBYn0Mr?4tU*AAZLAem-ovl=TO+`g zg{F{o!sFwB#q6ragMlyiWek~BG_c4R5B-&*UIJBNjQgiZRdY;KQko5)7U3KG4UVj& z9JGc$R#X&OhgN12Dw25(wJMC0F}h(kx)x8?ZQ)qVl{^`}h14oiqVgQ%*j)S1Q)|a0 zXxiUFxg87!)WFVJiuQMtYNI5mx;shjq@<{d(JtD9=)T-bw0Iw5yq7ZfJ&sXO!d4XZ zMRY`KJV%YeH>i<<%&{b8Qco(4lTqbO%Jt@CNO_|u5v|q7xQ~?npHV+g{YRi_=3RXq zP5!EA6s597$>JpRXQL^pXo5>H5@JX{hFN2K_@4nb7&lp$0Urk2xLH_!_^I%%A*;&6 zZ;4v60%ZHM+@<{QB^mINn(2A?MLYj_Nh*%!_M>^APT zh5_l9alf!01x{h(fsi%k;daz|3OLu@c(Bg;HQ-!lBN4N{4m`pa_HdI`0p0}h^5u2Ows2SZ4uyseFg9J_W8O>kL_!fh*;B)RHiy z_ zI{7Y8|5EjCEPjdNqGk%LP%!u!sL&tdu^3YucZZh)G#UFW=2wMxr?A#~c#q%O3|x75 zAY`?A{NAY5>EQ=!tpgtZ#X7a%%Fdyc)_orTu9y&Qy!yqGnMAffHtggJ>0CCpam)G* z>o>=m6t{WfmJORhZ`!mT{Eh2GA)hR?94@6Z#dOw#cBz=o6xJt2OIP}EK9N7(((Vj9 zncR?*Z`qX_986?WUAWEk=5m=r%YpVig_gaEsN=K@ z7m}!)_R(DaNC8(Yr)6(Cn=TAEnT+VSSr2U#)nch2(%GVL?8DF!rEDSHpLJ3(@@{YI zI?y3{dk%JBm^VJrYj<~cgJmDu-_s7TYcHQ|J$K;Q)6w49)3K`;Xy?A}gM|AJ_PWUK z4vg;KMcMA|j(zPSIgrSUqMb<>ilX3xp}Zrq{Bfh0JK|(9=)!`AYW}>FO6MKi78S)y z{1AS;fcM#9k<68{MLUu2FNlY7>8za`ObPcCVSA?t(T6D!bSh={<#W&@#zB`V4W)4A zAVVlK$|CFz+8HO&M|TO}F2PVD@4!OFfz9MVI+GIlbpL>dQ^a)=iAIb?H@#_5bOwi@ z1Oqs|h~Y%0#Hf#|Lk?LsPBe*(fR|*80Vk1yGW<$lVg=IKp^{Egfq|GJ(MU8FfH7gijg?XO@v=)inam;7vMhc9770LwOrEf%Ov{eh;+sgxja&n zN@q2aLs)d$&XxvU#5LgL^SQjuy(}=1J&+r8gvvw_soZ^_Z8tv1vzKlB2&Wo(KK&B` zaeOKS-d(}piFhHuf@aje@x8TwckSuvN&63eIrNtgeRA%|$=4D;i=NpwJXVCv33OJb z7tmiue-r&ZbXGRnWF=x_?IisPA84%AM4#0(D?ZVCG|f6ilwU(O);-ciP4iqudJ{UE z7bAIWFEztu4Ru*~)?F-#@psJ{kM!qxTk``JfJg z--x~g{Z8~0`cZTq*}jSXUGz!x_t7t+|0_DH@oMy&(0O9v86=DTIQnzwzlY8$^bR`L z0V;xp3ddu%R?uYeM9C1*SeD3Q-O?=9XtG$eHH$}1vUq~jwpiZDV&T_PtW;#NbZHh( z8D#O;p;@f`WbrtlZP6@Q{pf4Z(Rex~i^o;1_%=wgc(}j}Y^>yDv9xO`R#dWBXf=za zlPp$KJtL1jWX0y3U{xlI#ab)!C{I=v9b7i1jx3hWHRxzOL6gNpwKmU#0a-jLXj?pO zki`Rtmg4!IEFSi?Ef#;WcoxtsP+n7q=csz?J(hy=57l5m_v$wPP`uDMv%vNs9}CzY z(c}DVp#7Zv`3Kg8#yg?m7q>H9pYLat6$FfujC3|xxatJ)KRGe9lnVJ4Sjv=APD>&` z_`kMMI9~X_u+gHbWkIM9|M~$2jPhPe7F}GQnP$&QSbSFj!$|ooj`X>e419j-{iX;* z)@^2$Pe!aKq}(Gb0&%%0E*Hn89F>)U6SCq}DPNHl`=!K)2s|l+R%oYOv`1Q$47kt$ z41ul)ZIjVaxfEF3yyvIVFxSQ*ctS=o7>Y|j`Nk3!eP;U5OTt%}PPad|7Kji6fNa``BE^=gD^tu7rB04IsrGK-G)u7_?dRP7i$TJSLBjAX!2wx8D`Va6zR14Ak zIv~n+^C=CV0gQqk0mQFZ%|*@60HVY<-v<~3+yaRIT{PpPB=E1b=1=jm;rG+#4*-_{ z{skb0y54i)_BZu7|JTX!mjUtD^<5WkpTWyWe|`wa@o7N(b$#T*?JOK*<)tmqiliR~Nc9QW!a zT_^3;uZKaC=d~w*%%{IoM)P;X`Q!JL(S2ofvr8M;TdIBAr8OnQm&#~i&%3`#M_4OB5i`koF#$L}`B~<`Zr6CXHmD0mAxSpzOW5G$}lLM$YyoB~)IPW;ZF28iz nv)563Fp diff --git a/srcs/builtin/ft_atolong.o b/srcs/builtin/ft_atolong.o deleted file mode 100644 index 2d0409f10e9d96fdb55184779cc54198bae33679..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4112 zcmcInZ){sv6~FI2-{)sLvGb2M$-2ht(lr^4owQ}N{Hv=KXkRl{tsNVv(!;S|lSdre z^K;To%QVkvr=k^&XhQ;l)O;gFLr6#nITfN)h3Gz^fdt}Pix72&fUV*~0xIEm?z_*8 zO~$ql9O>Tk&fj~^x#!+%|N5VQ{dXH<3Ios-z^H4O;uwHFj47hu2VM(%0)q?zJ{`n2 z4Jl@pRkoiklZFSDb^7y9pZ2MHI4jp8e=68ZQN}ol1FS;G2g}OZ6SI?6dSaqv&oTHv z`qYspzTk_Q@8^=_hGY; zZ&2E&BKI80uPyzF_=@RFtG_cX{<0s^U-`M>mibnszY8*$iy!DOQTe}E|-9dz?AMu3|zi!R7vA3j1Ue{}bT<>T>@ut30t9V>P2y{u1QdFZb6WlXkTmj6Kru!Pz2Y z>wn(Z*xp#{N1n}p`T8mNLByc8#31>;{%Rz({;-m&8HmYH!qY=aW9@ZAu1D+NL~h7; z@tS7+PUMZ8Zyjcb>abtEt^VX2-@SFmP(pvH|Ne6SkiTZD4Dl@cIUl}uDD);`)IvWr zUP!%W+|S;l+AK3K-XX+OA7C}~Q_lvlh+!aA`@hEUz(|YOsDCeY=W2qS{cOiQb7-YGktv zU*uRzyz^qHZ{bFCLSBsLuo<35=v&fk$S;xC^@;${?t>A$sEhENAnb`=? zyVneSG1kWD1{%kxU=Y0GAu-cys{Rb0U&K%XA-Wj_XukyF0eM5>x&)~d-omWLPQo!) z7km4F8&t>rg38dM0n#QokD(O)fLYx^E5NE_7wPRdgBet8SWr(2t9hCMo>d)R>R^-A zV3XCLu+sfoF$-&DhE`VhO1+|paIY8dtG#<^t-TasP<_>lBSD&=+C=n8S`CyjMw+8U zF@sjo!kBbLive-N5P~E0Y{xUXbbc~EXO~>3kdKcYNQ@@-$A<)WWbDA`e$e~&CBPpW zW^O6tCMRZ{T-nJd&z7xpxsWU5CleW#9Cs#4>C$t_qxPJgD-`Wg^3lS~Ogf(($1`-g zP{_H-Q%6s@$;Z-}$4@<-aI@2F(`WKY7Xc(~yns-(?c|)BDP(QyT%k1W;%&5(k2!hA zow9Q|Hfh<1g|#RQFXi4hs6iP0}3;izQ0v$-})PQ$sBg<)RAMTp!nTKKa=FsDc(i}FWd%z zYEC-zP4C^8f871Y<-z0%?e-b)a~Sg&moUDMK}|+>)I0>#)I?MF z6Nm-|epgWVEeuTZ6-iTT6a6Jg`>_&_V5?X^iVmGD8n}xD&^P6*p&9|a`kQm#J@m{s zM=KX2nfSNo$DwCo(63EuKZ=K%b`Tgq$COyql9ENeN-Szz$pYnrIGS<)(D+=hK17N7 zZ6Tj0m;XcVd!%Cs2#9&p6vSo*SPC3PQT`QeCq$|kij&W{O{W7tg`A?Dm?CM@L7|Qa zs4PTS0FESA!&iAkH+k6PF_ZUHd2f|(H~9{eKX`}lsq%+R{&9S-Xa$q2TBpf1eSxbr z9vtU7%pxZ5s`71B{xOsHn_RDQLqE@hkhGaRSmhkrVNiiPP(Q)dt2~Su45q)#b*$a4 zukf8!;WdoU9aSE$@&`>mVDg8nuz5+>CP=KsvHk*A7C8HP!|;JB4`6`^3}H1`<$DmS z$rIA>tHN+-lVK=q9O1#MJg~rfPasr83@HNZ0q#ZqD?9{-$+zkM;5)(FW%8X!!~`FC zMZxK=^4(QFV)8MQ=4~c_WTla22V$>M!IGkE-6qzkas7fQF~>UEdERz{ccV`Ci5xLw z39O9ztGYIe`fBZDRYloI(d4K(0#ft^wFCPuHttWNAK1tnz&HydWrA;$So9%De@)_)#Bqs%gdg8-5_HrHg+we(H2$mk{}<>Up!4SU zHGLB8KW&|o_Rqyln diff --git a/srcs/builtin/ft_cd.o b/srcs/builtin/ft_cd.o deleted file mode 100644 index 4392a301290e08c649480c019141c7384394c37f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6880 zcmb_gdvH|M89#gP-p!KT+-x2~5CW@$gle)$0C`9t;i0fuBn9MA#Or4FCRy3+Zujn@ z42*?D9si&eMx5!4o!YVf0j<>;Yg?h!;-ej^bt<+x+ObY3)`sagYD+7jQu_Pddu~V; zX0(qp`SLU;rUD=%mPt1t*=7B5>}TkV)Pa}0{B zmq8{4XhboLf_ZnrksW=*%FP=t>aKJ~aU|kV+%r*#7Mi?b51CsGBViTtsZ6gl7{+)! z7iWiTkI|ViMNTtnF^r_yUF@u-%-ogABn>0BV(f}O)*bB*XMfpHn`|K7aW9F3;if%f*2UYSjrmp8Nft_7T#d!D(lQrihV~lf=k{8Zk0F33d%M zL6S#&GFLSBED(dS##DU|g;* z=N#tzHSHs(RdJxfBRFCG0vGaQ-{Ka0Ej1BuD zz6Z|l>Nxya_QgZTRO792v41IaY3#8E`ZI(%-MBs`oHf~TL+l$=8GHET_TgM;AHO$f zr|)bVnk9~0!#I_W38MW9C#FM)3)h7+u9oxLejGY{FWazu% zfV&s29T-Q3;RpK;&w{LqBVQzjLu&hx3onJn#qq+RIN?6S^!ubLIQOVO$WGOaJNg}9 z+*hq#vr=@&t-eL!nbxB4E!nVDO!S3&QfV`s&4-hzyqPFu^E=B$qL|N{nZiX=m_y3N z+SrP&O)CV+!AT?+g$WzZWD8--ER>6$f`J^6Eat*J@l^V%a^b1+%+zZ%RUg=`fAlpy zG---n<*D}JRi7(VeRa*!$%_Iv1{A#S>I@i`1Oj;1y8jvY!mtn@b@X-?$>v^vJuknfxHW|DtFZB4?t!Nlz3Qw9r7oX zyBqYIz#m2El|-}t9mw=ZNiNX8581{y+eP3H7@$r^ z@J510gx==L&3=6ulW+M@w)SDn?!TQbiY7oian`vTawc75X+; zp5@iIL$(nb{Cd{4&kl(Ije+}!wjb5kp($+@Jgl3QdHN&ZCt+6R3;i)yUf|b%;K~a_ zIu9m$#zl1(eZDcQzXbaS9J{zd1c)8H1tIzstjZOEe^B=zd~Z^ZRlExpR#xh#z!x#9 zHw&FXv3Fs$U%vse?S3?*FLCXi2*y%$4n|S^nLx`cJ_HLYOZC5jZzoWP&?jQRKFZ6y zBDe#>r)cy|5AKC{9-_7?$OQz^%{#G@V(6RfE~+NOaSR;0U_N*7X@ z2#(oAvMC`Vu~c_Hp5GZ+VeT-~*_@e=EYJ4$$1}+oZfYB{*|Zf|zoOHMtcfSquHW2b zCAW()V&ql}b4N^E64BK(BRi}_Hfb7nW%JuDTp!KInp7rb^_l6k=rzo{Q#{?{g`y== znSwBlZj2JejFsxmn8`40H+96;uM`{B-MW&gAdwV_J}l8RMzf1+=*#w-A{j5lMZvI{ z<*-yHS1hnoUKFz1&5VWibjm6S%VD{^DKh+4vs=;Va7%JtphezvrZa4f-y}JFi^1W{ z4wA*ni0AY1og$yj0?J66@gB}VmWwm_iL}WD^rg~Ckx%vZxiY&rxCjT_DmX#Nr7&;7 zu$kpB+`w&162Q4sQb;lixIHK1d0fkBwpBPcrxj995^Wvp)^%(#*027`N@K&8u9b!% z68%Xd7ccY)Kyq(wL%f^2fX}yrVKd8Nxa^yEi#`)E$R>=QbiDVXf=n;6d3c>nWu%Zr zu<5jsDfT;p17PO!*}TDrL0}@o-Yr}U3_D)gTmjFk$lZlS(XH-c4`ObKRqH!=g4yYh z*~Gn>)8-M#`8F5g0t(&?acJ?5!C#0Sl@EP;!H=d-d*_ud*zN%3Kzl&UiyX@Y%5n-s zJxc|J>4SPbD-@5 zR(@=8t}1YT7+nEMgdg60;=Rf#kIzol=gZ7`-)qYXTdjTX7Q7onf1lbH+Vsr5pDur+ zddmCfdh7pmaN?BvpW9wP?|9F-<~VAHUJYWwOjOKDD?!X7%o$9D2SAU5egb+0#8c^GkctiA**Y7v7_=7D4Jv{j06hYF z5=315>~S-|QJ9TsVuI%KP?#BLV$Q%{BrHtbG|?Gp;vr2F&u(erAx#s{NeRy^Kob*# zglB%Bi3vjv&*^AkVCMGc1i+PMDCN|mYW%d9u?Qwfi zj)7?6VJ}@}s-=k;QerU))5NSSv6!)FVoH-HUgl`(1xYM!9!Xj2~-jC@l}6dc*j z(+H2#5oYZAsEj~5NdR_!Ja|>ynBB0dRUU0ZxzaFE^LJ|1zNj`Ws$Cb=%A%TYK&$l) zYQm@XMKx8e8_=dgRXVjGdeud>nNh7Zsx6Fa0pDtENv9Urs|D}VCZh4`s1}K8i=*1| zs8$};=J+}_6=tC(1^`q)0KFFIim%hB#)0iquRdx|w2kf83}`xf%tjBP-Uf%%8ArAG zM;%2~XR!IF1XQ;UXda(Bi^u_Gu1BlJIwsNK)mVUvA-M0+mPH}^fGE^$v z1wNH^f?>(yhZs~q0e z0A3Ayt>k`iynl^ea7-V=y_LL;Cp0oiq{*6ya`ypxH4^IE~ zIec3mIQ{0aL3>Qv7lY#yyzzR;8^G~A#`sYM-c}3Fd4u41W@CPbx1Gha%J`fC$8#O~ z*x_wM;9UPPaJK&p97~Bk>+rVS;P@Y}akJ$7s~wQBE{C@*d^ZwMlpx)0n^}R-5CGTkv5um znK$s6gWD;`;+`)I9J0=TPOg|q^yhGq=C?{>J9=$5_-B+Lq+yxye4-B+{37TXo!`FT z8a;W_#H3~+fvfE}fZk#}50mpv|#NyxL C9kX%( diff --git a/srcs/builtin/ft_echo.c b/srcs/builtin/ft_echo.c index 1c6c8ff..c948723 100644 --- a/srcs/builtin/ft_echo.c +++ b/srcs/builtin/ft_echo.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:30:59 by kichan #+# #+# */ -/* Updated: 2023/08/11 10:47:12 by eunwolee ### ########.fr */ +/* Updated: 2023/08/11 13:59:11 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/builtin/ft_echo.o b/srcs/builtin/ft_echo.o deleted file mode 100644 index d8786e9f80ed6cee577100cb668d4680f42097d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4656 zcmb7IeQX>@6`%c>y*;13KG*rMo0Oc?v~f!9OB_>@Hcl=$3Gvz`X+9uG!1lae+uNM) z+`Dt?kdRpCR*C>ASS^D7l?ozZ^GA^opg0mDY7q)TQ9(i#LKQL*6?UUSX;b8c8uNRz zv*+_Af->^#``CHEdGF15)K3Yev7U3HF|kbugxOoNUlS zIRc(~jFf1OQ}o7)0UyXm_Z>gFEQg#f=OR26%CWe_(Aju6hN$DXg<{^%4oaotti%g( z$Omd)3YkC@*pd~*ar(W!(LpEO*O&KB68_#V>^Z!@JR~Ol`lHmiRd`U7yX6+*`PqRS zDXa0`mUxD=>NEq>-y&Wfu=m76(Bf@1-c4!rqF71Bx@rQDif0vGdSoQyIob5ESHPfZ zyt6XCZ%KeR!-ZT1yeD3+?-`edRO4APzKzm;K<=Amxa#~>_&1VvtMS^a@V@>r@rtKL z?iugrCEjkCzgPb!o|_wnUqxp$`<$Qccbwk66|u1IMg!?-seG@FFk(&+-M)dCgm3kjTlyAd z)F_j&2#9K9poIE}fw!~AJ5S2*r~B4e%`$1!e35jmLymY4&6>wi;#)8W@)_tW z?B*lmGp0YkUBrVtnfLIaJVxSUPl%jjyNWeI{u&7T9m)-1)7l~4cVemA-AZbP=H84k z-3ptT$9lGaUd7mQeqN{jpiVC$U$0DTSolTPhRfvh)P%DT=3%<);$>5be#2B!J3?R2 z^T3b0#!)BJ8CST28FXyB(-j!o7UarAhSi8wNt>%Y_ zi}q@H?@R%Uax;Z^t|Q*X)1R4MdOg?^30A`%a+%VgJY+R;%_^O-{(jDiuU%&~DEAqt zs}81F-Hp4OACEl|Q&E-LMksd0VkkykSGpTDD;A@7xDs0MW_>+lMjPPnGg3{OMQ=7W z@5T)s;Y^i^?ncyZ#|kkTnEdrz^Rg9VHPt{k1L_%>*RBBx;2EoHRF=K4>V(5I@pd{e zRGbXBr_r!nXtj)voo@86k%)FaAmT|^vicLSpG8;ns5}M{_G?gZT^|Jb6}qlAaBZKG9@#f~Uh$ z-I=gTpdS+7*}`Ik9eWv%+DmwJk@}N$Js?f$M(YTuKzNv0$3uRTZViB+M^{@+D+emj zHpi_qA^*rK7W*3n?HN1_rS@}hV-&2qIws=ULmv_eH9D{`q|__(ed1&T${_1y?$Rloj;Y_>z(v6xe+g) z?8*%fr?dUNxD}7)a+yN%$ljhp^2xM&@W}DDLjMU?!6uItFniL&g^Zz|mpoZ;bN!z4 zTrPj2fUDX|KIv!u!jPBAutCQg^NUWQm@bYMn4c{&&*_5|8_gE{!K~MxAl?2wy+`)3 zqlb^}W713J4teegXCRXvWFz?eEIQ)Cc8B{JST8-m3IQ2O=RF`~JQ%t|ex{%0{lTG- zr;!eQim+ntgqMYFKns$JS9!1B&wKd75E6a(xkKrEFfA;EyM4&|35Hk-Mdo5Y;h4`3 z9NBXKDYApt227IYS?(zLQ=2rsPO@}z(yb$-Mx^(*ihZ#8mZ;TMw>T7 zDsiTL|6GadhV~~`;?ap^+kM=4ipOAL(4dPLq#4=`3{oaI`#D!@J`~t>=1v|j@zpk8 zZ}Yg#AGG-+@AK9YZ@2jlo449LWozF#_dZv(c}84`b3?nyY_9e28o<}ve2vZTw|R}t zAAq*RP2+hH-YT0n+1#}GIy}j2qK9igA7y^DVq3{U1QF zxq5#e(9S8TzXXbE?|mhpo#UV|ZQTM2;}b&VLdG6l%xqsLBzP@ zl70o0$~bHZFeHcd(IMrq9^xd!k?{Wx$E0k?ubll-Hl=*9YJ7@h1RnlwTno9rVt!)L z)v(|m4P-oJb5>qy8K;eI3@5y|a0!(!E=Sy411zAy4VEbmkF>MEstpXpt)U18B4wDd F{{Vq`A$0%% diff --git a/srcs/builtin/ft_env.o b/srcs/builtin/ft_env.o deleted file mode 100644 index 5147ea8900ed035cb51ff20d585d2f599300c2ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5512 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 +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:25:07 by kichlee #+# #+# */ -/* Updated: 2023/08/10 21:46:40 by kichlee ### ########.fr */ +/* Updated: 2023/08/11 18:02:25 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,10 +38,7 @@ static void check_env(t_data *data, char **cmd, int arg_cnt) { if (!ft_isalpha(cmd[1][0]) && \ !check_underbar(cmd[1][0]) && !check_name(cmd[i])) - { - printf("bash: export: `%s': not a valid identifier\n", cmd[i]); data->error_code = 1; - } else if (!ft_strchr(cmd[i], '=')) { ++i; diff --git a/srcs/builtin/ft_export.o b/srcs/builtin/ft_export.o deleted file mode 100644 index 3f3497d8418b62e1ac4af76f16c321f104d5de9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6616 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 diff --git a/srcs/builtin/ft_export_two.o b/srcs/builtin/ft_export_two.o deleted file mode 100644 index 3c1e01d6c8e84eeec7cf53e515cb1f95403d4fd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4376 zcmb7HZ){sv6+iDiU)zaOJ5558rbtP(vZiB+lP<7sgf(5tNMBl3wFUBF;^8>2$)k?# z*-o0!jt09D{ZOq7un&`lk|9k>s(s)Cn&QCLN}bpwkfu(6)NcU^;S3>QT2TTD;dk!4 zuW`Jfjw9bc=il$1bKbr0KEMC3zy7C&NFxw;KD5K!wV{Fbpe-44x??w5?TUxk2juYq z%(;bF2(ql4J(Y9kE`RnbLua>mZ`PyMVmuwfTVW!^$AQi8;E`p;v$>3u9906#+K%Vp zaQsZyIG8eG>~gZK5qo%I)QSxcXY5Ii_t-a&o_^-O$w?L0H6?ky0uSPCkRG0sJeOjZ zO1!%YFD)xi)E#tz+ag4Mce*1Ul9t*^yyL=kYE^izRk?gwUx61(rxUi7jE&n_7**np zsUY4^0Jqe0eh^-2_&ag7sl;ng_1doh65htx0{q|crDO3*yu%fEFMUe9+;n=!e4kTz z=TtmDe;{5wHIBG))W3@y-!^r8LLSy3iyvEC_ zR9N+?X|td1tVHRFQuNjn!56gWOM$tT1)|3hPeVJ+oGwMEhQXXB#2xKW_ll@P6aHl56Qr5C1<$Tv ztt}eX(m|}b2pNyTyUrSX|H1JO2-kN(+RZHmr=2zAzV7m_AKRA#o@{Q3V8c27A<(z} zM}uyxpvL!eeit>-cfgEz{#%%fSo4N4x70rU$QtUh?()`>i5T1OKC*Tbxo}+U5 zpnC~zmTh=lZd`{|qp!$yTLor$?H0=NTs3BjUR@a5Pi3atVu?g59?LnYWSgDIq%!+R+pT>rTrZ4p{!;jFm&3J9 zd&9f6I=rFv9x}qm>yPYtGW4a8j&p77hv2DD2*=qMq2u*Lq7&YA{y$&d)7NZ-+3vs| z_P{kGNLL~@47i4sR>7WaR+K;`-4_^20IDH=)jW$5YEJIJ1|VSO3XucB$bDt-k@ zGVq{C_YXZkIgHok&hZ*=Xh z*9x|4WayxNy{3w}X4X-lR>q948;sicU)XE^*U$rfD#Ugkmy1Y_y@L8|T4Frxa@U(1 zS$BZ(DbS@}yFQ8dPl)th4^hV9ak&=u>Qxv)x!O}~i5PuywIfPLar3#-4;*8 zlA~>tb|%Z)qPwTFtMjq8b}8-X?&*3A{Gmggkar)XY$l$K4o^6VoRf^6%USkRI+e*; zxeKYzI7Lr5!ZpHkrTLi&Zbg{Z1l{r!EE$oEdK17q0a2c zc`BPmzn(=5Q5%;YOl>Ct}?M{XaIG6SoEi z2XTI!vw=$Z)R#A})irZ96mNU^QXl5LY5C}}oHy8hG!P#?7V+6qBFxH29=F=<-z=<_ za*TWoLGGKuoy)%b!0n_jKR!F@_aZ?b^+Tm;+P}lQc;GptD%BNEmkCKdtCj8X}QRO#@Z+s&U#(2~e0v@gch;_@N+7t$s^?xjyV2tJW=0&S10EP9t z^WqEWOcBO~5QUW002yN8t`56eQ`A7<8x)2yg?OG3 z)kXv(49NessHzSg6~2OabWn6d^m$Y4US{V2eEj}pLB=mG%Od`Y@?1qOEEjHB=%#2y z=q(U5Vhx!KiiM^wr=HlU{?pK%d2? z$GPuV!*dN|{1_vi{)xZ4PhKD@s43^dlJYE!Xi&IN{yV@did*o*jHf z@E59s_b-0_x54vxRgK?P;}MMbvJO97A@5Usn;J1l|I=!G9b*`P9(6H~SiJwOa~1q6 z%p(!+f5ilNe$RO4kD-|N&fDXP#~|tZ=vnWbw->>)k4FwBzm0N#vfTH+e7jreOlmX}8@J^5jl3qv+J0RmtWJLEE3f;vg@t1c`N%|?)HE5# qRiNexJ1M75HkL?EjCB^JGQ5+cegXM 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 diff --git a/srcs/execute/checkbulitin.o b/srcs/execute/checkbulitin.o deleted file mode 100644 index cf8908604a42315f4695b3b1b8a4da4a967f0e2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4720 zcmb_feQXrR6@RyPdp_UZp3lY@gK@d4gqXDU8RG<(Zv!Uw;RIrvV3LOI`flyp`h0iY z-E*Lc00GK}L=@4|zuJmOO)Jt={iABs&?;&h{s1+iZ9x5q+9qjLBpRto^GDi*ilo0c zJ8Q!g)bwNIH}AdQym|9xcKqJl&#(UFg9K5C(720$u7uI0L1>FX1=erT+H`*)#uL#3 zy$&){oIy0h@T~owFZ=q~!1&m_9!S5C0{c@ScQg`38H>+kF0govi)Sv;@$Q^ygXggD%}7Wi{L zM_{%7l5+mH<*b(axv7CrM_V|d&3`$^05N=vY#!T+umd|&zLYxe8kzoK2TcuMVlH%ouNm6HeIkK6uR`0K$~ zE66v;KULWO$Kpj9Ka6=|%S}WT==?+G#@gea{^S(pt~Cs ziq!MP5G{NTOpQdQz+M4Glt%Rp9#Jo&3sLwYSY0G46AFn`8k%_vXgJKyV#?F0_k{Kh z^!3WqiErZeg;gG-__xq$FQB^yQYI4-#5$-vsB7SNfRu+wZvnrH<$W=II*^T&UV(gp z@z1vEUjVYoHZ#88HGwij}DOz(w!jPX?|eF|JS?P;Yr`-ne@PCJQiEl9Z| zu?4JES*~ZnMJOvs-x{jm7p8{Xa zn_NRWFDB%^n0_jdKb_K_hb&fH+d3cfy0rcRa6TkueFw$ax5iiGhY*y7@j(n|qv+1D zKAiX&SXvp-e+hn^C*4i@GH~$~hGKdLWD$NgrFRGT4jje_DB4%iy~d8VCf)!`D4X=l z;4cAI`bm$0zs~ZO2x;db{27DMW!fc(Z$nfEHQvAn5F;%~78~ATb4qDovAX!*z_bu< z?gobUCboffDEI0+z{S?@BmKTW9*OAtAdARHajyb=ETwyayt`RH7|8dxienaj_AJ#O z5Ag9cQ9sw(bgpQYrqZ*P%ch~B4hd?`5^>(j@-qX_seAP;Fot&Go_FK8C zXJv8)D>pq+E!v)4>dH}O*q(4q=RjtgHER{i70bzNEziuDrTj3e$5^>sbTgydcDR{) z%-qh=@h&$%P1lK;-7Z4NSSVaDwXDpnn=9un8F@afBExGno$;zi0+ulDsIzVG1y9Y>wYRFhAZ+a$qhG4GG>{6xb!OV2X zD^FV`7vn|S^~m*E#j&WwPdhP+L7%&lbNwdA%G-{G+AB1E5>*@#TWOZ8(yYs!VLFa^ zfShs}u8g8(PVx%ODyCy0=%O|08M%U8%#&kJ6#|(}e81Q^!t(t6R&1>68G^Y!!vjDd zc{r}vd6Hy!DBgL~!K;8_p(41|J&-2z80#My>ECON4m~hnjP2buU>KB}$r}~ZD-c}r zXB2=r!3U1lqh|=_`V4OkYd;k%oIyEfOcu?ldBrYTRCW+`-Y!X@jKk)jjZ$^S7kmen zt$BZ0>6xLtM&UK+J9ohC2SE0m0vV2NE}}n?-k?+f$>^g;`qhS4`N1>AYKa( zAVO)Rg`iye%a6YLdPCc@EA#D6oz)(_u*G}OJ^ni{a)0XGrG?a%@%&AgI8 z5X(S4paIZ0h>O%g&_hub?oJM+;~rXgz2rXaZCPJpuX(=sO@TN%$kK zH}Yl8^^qYinY=wT&eaTY7H<)VD5eZ?b(IjOO@=s|N{G`YL!3pWd(O)YajKT?Ib$=# zDO^tEY|IcRX$f(zWr)+SoXA<2Ax_KEit7hMTvDVJR~Ci_=dJje!4MZB{{=(mB*f`g zhRVf{t+-}MUxy^bbyBX#H3Wa6$ViAEEDTM7q%SV=3~|ktzPS7|#P0z)k&8D&Tw(P{2$`zuWZ1AZv9Mc*98W)tu+cHKh=D!nemLF4mlk^YoK1aQ^uc3FBcI zobEz39e-C{5zVTf%Bp=?bs(z_XH`9`YFRZF-JvEi(wtS(Vmx+4ZHgXKTY?rIK*00D%FR6&Fe_Ka`v~t1 Y6v`W(62@e;l%t|IQ&}bYZn@$=0pgGoRsaA1 diff --git a/srcs/execute/execve.o b/srcs/execute/execve.o deleted file mode 100644 index ba14f6797490dd9eb1a29dc252edf049b8800b3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7992 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 KP|x)UwfG-IJEN}v diff --git a/srcs/execute/freepipe.o b/srcs/execute/freepipe.o deleted file mode 100644 index f974582faceebdd98540693489bcc5796500175c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5144 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 diff --git a/srcs/execute/pipe.c b/srcs/execute/pipe.c index 778f594..1032e9d 100644 --- a/srcs/execute/pipe.c +++ b/srcs/execute/pipe.c @@ -36,5 +36,6 @@ void wait_child_processes(t_data *data) data->error_code = WTERMSIG(status); // 시그널로 종료시 시그널 번호를 저장 예 ctrl +c경우 2 번 ft_putendl_fd("", STDERR_FILENO); // 빈문자열 출력을 위한 ctrl+c 이런거 눌렀을때 바로 새줄 } - + else + data->error_code = WEXITSTATUS(status); } diff --git a/srcs/execute/pipe.o b/srcs/execute/pipe.o deleted file mode 100644 index 0d30e3f34f5f4514476882bfcf15085a90b09238..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6088 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 diff --git a/srcs/execute/pipeutils.o b/srcs/execute/pipeutils.o deleted file mode 100644 index 05e7702fed0ed194f94ab8a5c698617aa65a89e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6104 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 diff --git a/srcs/execute/setpath.o b/srcs/execute/setpath.o deleted file mode 100644 index cdcfe97871e87289932a021fe2c7479a476e317f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7320 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 E7nfl*IsgCw diff --git a/srcs/init/init.o b/srcs/init/init.o deleted file mode 100644 index 85082236f04c946c526f418c24ab780d3bae2e02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7272 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 DW~A|Y diff --git a/srcs/lexer/expand.c b/srcs/lexer/expand.c index 8055775..c4a0f24 100644 --- a/srcs/lexer/expand.c +++ b/srcs/lexer/expand.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:20:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/11 10:48:21 by eunwolee ### ########.fr */ +/* Updated: 2023/08/11 16:43:53 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,10 +17,12 @@ static t_bool check_heredoc(t_data *data, t_token *token, int *i); static t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote); static t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote); static void replace(t_data *data, t_token *token, char *name); +static t_bool check_char(char c); t_bool expand(t_data *data, t_token **token, int *i, t_bool quote) { char *name; + char *tmp; *i += 1; name = ft_strdup(""); @@ -30,42 +32,70 @@ t_bool expand(t_data *data, t_token **token, int *i, t_bool quote) return (TRUE); if (check_other(data, *token, i, quote) == TRUE) return (TRUE); - while (!ft_isalnum(data->input[*i])) + if (data->input[*i] == '?') { + free(name); + tmp = ft_itoa(data->error_code); + (*token)->str = ft_strncat((*token)->str, tmp, ft_strlen(tmp)); + if (data->input[*i + 1] != ' ' && data->input[*i + 1] != '\t' && data->input[*i + 1] != '\0') + (*token)->blank = FALSE; + if (quote == TRUE && data->input[*i + 1] != '\"') + *i += 1; + else if ((quote == TRUE && data->input[*i + 1] == '\"')) + *i += 2; + return (FALSE); + } + while (!ft_isalnum(data->input[*i]) && data->input[*i] != '\0') + { + if (quote == FALSE && (data->input[*i] == ' ' || data->input[*i] == '\t')) + break ; (*token)->print = TRUE; name = ft_strncat(name, &data->input[*i], 1); if (!name) program_error_exit("bash"); *i += 1; } - while (data->input[*i] != '\'' && data->input[*i] != '\"' \ - && data->input[*i] != ' ' && data->input[*i] != '\t' \ - && data->input[*i] != '\0' && ft_isalnum(data->input[*i])) + if (data->input[*i] == '\0') + (*token)->blank = FALSE; + while (check_char(data->input[*i]) == TRUE) { name = ft_strncat(name, &data->input[*i], 1); if (!name) program_error_exit("bash"); *i += 1; } - replace(data, (*token), name); + replace(data, *token, name); if (quote == TRUE && data->input[*i] == '\"') { if (data->input[*i + 1] == '\0') return (TRUE); + (*token)->blank = FALSE; token_add_list(&data->tokens, token, TRUE); *i += 1; } - else if (quote == FALSE \ - || (quote == TRUE && !ft_isalnum(data->input[*i]))) + else if (quote == FALSE) { - if (quote == FALSE) - *i -= 1; - (*token)->blank = FALSE; + if ((data->input[*i] != ' ' && data->input[*i] != '\t' && data->input[*i] != '\0')) + (*token)->blank = FALSE; + *i -= 1; token_add_list(&data->tokens, token, TRUE); } return (FALSE); } +static t_bool check_char(char c) +{ + //c == '\0' 아니고? + if (c != '\'' \ + && c != '\"' \ + && c != ' ' \ + && c != '\t' \ + && c != '\0' \ + && ft_isalnum(c)) + return (TRUE); + return (FALSE); +} + static t_bool check_heredoc(t_data *data, t_token *token, int *i) { t_list *tmp; @@ -147,6 +177,7 @@ static void replace(t_data *data, t_token *token, char *name) tmp = env_search(data, name); if (!tmp) { + token->blank = FALSE; token->str = ft_strncat(token->str, "$", 1); if (!token->str) program_error_exit("bash"); diff --git a/srcs/lexer/expand.o b/srcs/lexer/expand.o deleted file mode 100644 index 1f844146cb7705873765f974a666f08fcbd78f89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10456 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 diff --git a/srcs/lexer/lexer.c b/srcs/lexer/lexer.c index 4e83a71..59f6da5 100644 --- a/srcs/lexer/lexer.c +++ b/srcs/lexer/lexer.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 16:24:37 by eunwolee #+# #+# */ -/* Updated: 2023/08/11 09:58:52 by eunwolee ### ########.fr */ +/* Updated: 2023/08/11 18:21:29 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -40,7 +40,11 @@ static void check_char(t_data *data, t_token **token, int *i) tokenizer(data, token, i); } else if (data->input[*i] == '\'' || data->input[*i] == '\"') + { + if (*(*token)->str) + token_add_list(&data->tokens, token, TRUE); tokenizer(data, token, i); + } else if (data->input[*i] == ' ' || data->input[*i] == '\t') { if (*(*token)->str) @@ -53,5 +57,7 @@ static void check_char(t_data *data, t_token **token, int *i) (*token)->str = ft_strncat((*token)->str, &data->input[*i], 1); if (!(*token)->str) program_error_exit("bash"); + if (data->input[*i + 1] != ' ' && data->input[*i + 1] != '\t' && data->input[*i + 1] != '\0') + (*token)->blank = FALSE; } } diff --git a/srcs/lexer/lexer.o b/srcs/lexer/lexer.o deleted file mode 100644 index 8f0d9ae519413dcb59ed8be41196f318fa8a0a4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6128 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 LMBOQBIx6;Wvot(^ diff --git a/srcs/lexer/quote.c b/srcs/lexer/quote.c index 37dba3f..727b88d 100644 --- a/srcs/lexer/quote.c +++ b/srcs/lexer/quote.c @@ -6,35 +6,44 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 07:46:30 by eunwolee #+# #+# */ -/* Updated: 2023/08/11 10:36:15 by eunwolee ### ########.fr */ +/* Updated: 2023/08/11 18:26:53 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -void single_quote(char *input, t_token *token, int *i); -void double_quote(char *input, t_token **token, int *i, t_data *data); +void single_quote(t_data *data, char *input, t_token **token, int *i); +void double_quote(t_data *data, char *input, t_token **token, int *i); static t_bool find_next_quote(char *input, t_token *token, int i, char quote); static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next_quote); static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next_quote); -void single_quote(char *input, t_token *token, int *i) +void single_quote(t_data *data, char *input, t_token **token, int *i) { t_bool next_quote; *i += 1; - next_quote = find_next_quote(input, token, *i, '\''); + if (input[*i] == '\'') + { + (*token)->blank = FALSE; + return ; + } + next_quote = find_next_quote(input, (*token), *i, '\''); while (input[*i] != '\'' && input[*i] != '\0') { - if (s_check_char(input, token, i, next_quote) == TRUE) + if (s_check_char(input, *token, i, next_quote) == TRUE) return ; *i += 1; } + if (input[*i + 1] != '\0' && input[*i + 1] != '\t' && input[*i + 1] != ' ') + (*token)->blank = FALSE; + if ((*token)->str[0]) + token_add_list(&data->tokens, token, TRUE); if (input[*i] == '\0') *i -= 1; } -void double_quote(char *input, t_token **token, int *i, t_data *data) +void double_quote(t_data *data, char *input, t_token **token, int *i) { t_bool next_quote; @@ -59,22 +68,18 @@ void double_quote(char *input, t_token **token, int *i, t_data *data) return ; *i += 1; } + if (input[*i + 1] != '\0' && input[*i + 1] != '\t' && input[*i + 1] != ' ') + (*token)->blank = FALSE; + if ((*token)->str[0]) + token_add_list(&data->tokens, token, TRUE); if (input[*i] == '\0') *i -= 1; } static t_bool find_next_quote(char *input, t_token *token, int i, char quote) { - if (quote == '\"') - while (input[i] != quote && input[i] != '\0') - { - if (input[i] == '\\' && input[i + 1] == quote) - i++; - i++; - } - else - while (input[i] != quote && input[i] != '\0') - i++; + while (input[i] != quote && input[i] != '\0') + i++; if (input[i] == '\0') { token->str = ft_strncat(token->str, "e, 1); @@ -110,11 +115,6 @@ static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next_quot *i -= 1; return (TRUE); } - if (input[*i] == '\\' && input[*i + 1] == '\"') - { - token->str = ft_strncat(token->str, "\\\"", 2); - *i += 1; - } else token->str = ft_strncat(token->str, &input[*i], 1); if (!token->str) diff --git a/srcs/lexer/quote.o b/srcs/lexer/quote.o deleted file mode 100644 index 112b3f729e254d607e34bdb16000bd57f0f6edce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8640 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 Oj*TuLAg;y$Q2qiPcZ81s diff --git a/srcs/lexer/tokenizer.c b/srcs/lexer/tokenizer.c index ca90fc7..858b83a 100644 --- a/srcs/lexer/tokenizer.c +++ b/srcs/lexer/tokenizer.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:26:13 by eunwolee #+# #+# */ -/* Updated: 2023/08/11 10:46:33 by eunwolee ### ########.fr */ +/* Updated: 2023/08/11 18:25:03 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,16 +22,17 @@ void tokenizer(t_data *data, t_token **token, int *i) if (data->input[*i] == '|') (*token)->type = T_PIPE; else if (data->input[*i] == '\"') - double_quote(data->input, token, i, data); + double_quote(data, data->input, token, i); else if (data->input[*i] == '\'') - single_quote(data->input, *token, i); + single_quote(data, data->input, token, i); else if (data->input[*i] == '<' || data->input[*i] == '>') token_redirect(data, *token, i); if ((data->input[*i] == '\'' || data->input[*i] == '\"') \ && (data->input[*i + 1] != ' ' && data->input[*i + 1] != '\t') \ && (data->input[*i + 1] != '\0')) return ; - token_add_list(&data->tokens, token, TRUE); + if (!((*token)->type == T_WORD && !(*token)->str[0])) + token_add_list(&data->tokens, token, TRUE); } t_token *token_create(void) diff --git a/srcs/lexer/tokenizer.o b/srcs/lexer/tokenizer.o deleted file mode 100644 index 4f1b3963251d08191f180110cd32801693dd0bdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7408 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 diff --git a/srcs/minishell.o b/srcs/minishell.o deleted file mode 100644 index 6f3174b9971bb8f66bf3c63696202774ed0edda1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4952 zcmb_fYit}>6+XK&yWZ@M*LIvH&P&-qnmVZV+K!{7X`04OoH~y4AkLGh9mcz3@7C+x zWoFiKNYq9#sv=q`jcB2wKU&oOfIsEYN~EIDph~Ev6xt#rkN_p+p&%52KqXC}4c|9& z$8lCcP~b}Eo^!r?@44sRJA2OApIp84p&=3xG)tXUS;~G_Hbx_k9vC_szqN>tM<>CaU~S$>{-=n$u`T@gzetM zzo+?lXyKDx4j(dr+27P&W#oYz2kZT7O%N4X5il87-;GkqZfei>uWIG$?X9h|cltlH z=N+xy^t^|az3(e8Uii26a+L}A<(akekzzS-nnPP=okcS0zA_4&Y7*g7zlHZzPhWT5 z;QK2T%QlzPpLdh8_ieTKN!Vli`Maw%XOfNfoAthJdZICM$8a7=yugMwMeEgYd z^DOy!ZPOL(_t7jJWisF8>6#zD- zQn(hqNw&4(BJ{|%RxO=Maf(R19TS$|1{*qIb#8o9o0jItZ3}5eBoULSg1CB4?+t2l zK5PaHaP_T`>voMs-xHczhiw`o*i|IG9P`&gZ=zqR)JBN%C45hOCTxb2GfeW)H-nB) zMLQWVzh^*7*BR%)ef#z%(W_XHJce#LNL!t12g_(3Mi%@< zLRm3ZhjLfKSO@tf;@!;#9rF$Kw24j|`uET!Uq`nQq@6jdsK9oxs zj4w-S!2Sv`Hjv~2_^A5)MvCc07>Y_$6QD$cz7krp8(klC?NDj}tX;m_X{z)2{151oYLi}I``!Tm>awV%gmYK92 zw^%7>x_djjI#*}feYB&yw`(=@o}NzN-K)fPa&C5_ST4E+yHx7TNp`3>;#khn>=t{{ zE>)_wliggIn6S$EA*6`Cl}gFY4sY4+W_MV*UBd@E-Tb)B60`eU?3=ZboiNq5vy*PF zlDEwx6=&Q<-m3Wt|bER1J#2RtULS@31T)}e0Hb-DXYGt=LR<`pQ z&e+;FG~6$H_w4JJ39DEZ%NfhDn-se|S(UuyS>l;Ka|2c^S8JYlm2tc5VyIMfJ#hn8 zb!;iKJoHB~7;sl{=4^57e9^IyZ+(qrP!;8$$L&ZiJJWI;>!>)D3QU91VRP(OsCCqZ6Xi?1GeK-9Fw1c3=H=T;1}eV zB=~&86UNLb;IQJ0}p-qc<$J4GU0q?9X3XM>ZhroodZ$d z31SQPB*qq2Sk$@aHMEa1hdFQoXdZ}-=b#-8MT@Tfc+fU;Bu~VOm}}A??u80SkXun@ zAVy`LIR5spn-)K}D!!-PSi@isSOW%L3_raH9**6S0 zu?*A$>IWSJF()t~F;G7TVp;b?5ToIrK^iW8K4=w)35pSm(WwSH1$qkfJcy|o(}j6@ z1qhA#kq}cRkB7$K?a#uB`2oaaN{HE2L5!n>7+w{`I7*0NRheg?CdAmS%+qN?jOl72 z!!sd9Z3Qv-5@I}73mKLPF;1&lOelnyW7I6B8bXZ1Y8J~7Ld;BjUNlxQgcy&NtIURk zn8cJV=1D?KoXQrH3L$141+kzZ#EM7RV!|iH{H<)U6d=UfKrLhnDu=CP`##u9Jm@QY~+1Eob6?w&5Oi z{~tE8egJlHorqkW1s-&EI>h53=GSswFceINj4x+K#w7;P7dZd7=uw%2bwSfwBC&Kb z@y%E?elljnw}TJHJ{BK}Nn9Hpj4jX>os4x4#?}nR8V6&jGY4ZSLecop_E^iVSOaD+ z7>qTXjOp>|SZaGr1CWLp@@QO}8jR|ABma}ZKdp`v*tG#X503v&9S6Y?cslqW3%-?x z0)F2Bcmntaa0IE2b>KMqP;bERx*Z&WvV)%?f>(!MTx05C=&+N%8ytZxy%HSj80UPx zjUNj16VTHT!nT|`E=7HJ^4U6_|M$~yIKxPZwi?tlYyJJup=$8iZ+8T`(nJR9^!7R( ze>b@vmlZUco@L%o3bXa$y75At-e0GSIc76?vep1AqQ9}cDVd!t9!wMh;Q3lrOuv9J wSwFb8<>U%tqR?$039WHs`ywefYlE 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 diff --git a/srcs/parser/syntax.o b/srcs/parser/syntax.o deleted file mode 100644 index 9581c7aa2e53713e525028d7add3a8c986642ef5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8240 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 diff --git a/srcs/redirect/heredoc.o b/srcs/redirect/heredoc.o deleted file mode 100644 index f82ceb1cf3777980d405ade6f0bdfa7ae9a8d46f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5208 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 diff --git a/srcs/redirect/heredocutils.o b/srcs/redirect/heredocutils.o deleted file mode 100644 index 1db35c379f827319c392e001da39ea3ba389f72c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9848 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 AVE_OC diff --git a/srcs/redirect/redirection.o b/srcs/redirect/redirection.o deleted file mode 100644 index f87e68986d7b4eff1bb2e5f7861cb7369aca753e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6136 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 diff --git a/srcs/signal/signal.o b/srcs/signal/signal.o deleted file mode 100644 index 477eec4a8dc4ee3e9525d6e5677c886d6cbe0c18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4304 zcmbVPeQX>@6`#4iU7vmDJI8k7B$d*O6yjFu-Pw*wt+q*Q)hUT{1!-@{y*fOYH$eJ$xx#pn zhScMwRrCdg`-0&CpN=x7x|`x*(K4_e@49+N3kt6<~(A z-~>DxAp`GD4&WYgaTwn;$eUTgKi%Aw#}O*z=)?G%$#Q$bK2)+96kCjQtFf>U0=PM6aHh@}$@9 z*D$(wOgFCbAFiJ@me&{f61L)Ei1)7%UtG9*^?HoGv=ZxoDWtQfRyw}0^BiOMBhU6Y zn;*dh7x2_Ze)%w4qJAjIx>p)*kNFk+D;>aGoBi}k2V3J9b6w+?ZjJ%&5$@pv?@iz@ z?q>fTb9q6m*5(@GjlZY-CRBcey?*wQWvp%KiY9(?V}W6fe0d$YJb(4>%kVFPW!@C) z#Sbha?hfL;wXdK3=JLA6min=t+MG{A-;H&6n6F=?`DZG2IiKix|9-3J6w9oM@h$v) z(KcO+R_CIB`gpXZ2K2k`#2Jun;$hw*BIF?O^KFMKQS z#9?pfQfo*8tJUb=u0?4`=Z-`0;e7>^fkrg;Zcv+&?DiqyHm*g(VPIfGMVe(6r1W9p z=53ft;=>o^oG@d%VY?sB7D_N2K1h3S5f8$vnGkxwVYItH06t49=xI;LmQMb_*U+T^ z9&EgMd1+T*(1XEI5(atY4Mmc@4d(f8p$)`Bf%B0+${xiu2F|zqnY7m5qGb&fNz?`A z`R}6*>1=Jv9ej7O%2-9wo@$G<vyXs(cRCv3-ISz*uQD#ERpl_{6y3KcN)G1Il#1SZ5~i0sI2P2`-6@N8uUBQq^V zwU+bRqRT9i8+Xhst5_sNg-sP`X?7;=6!A@BiK28{Li(XQzHTwgs*SfM%rZ{GC7&=hXTwlhq&7y?jbz)Vwlc4Tw_C!BXw({ZhC1bO6h^$|gSI`XLq zg5c1lbK#G@!**PJXnNu4cf#NPdiQg`egbv}JO_Rj{CP0#M;iMhFcIx@(#cOm^+h@r zA`$Iz(qAM6M3qGPDN;awu4E&s&-DiAe~G~{&4}p=Bck=unl)TpL3Lq~jh+kL?1WF$ zp!!|&=fdYMhJOD17r(o9?Q;9zwWq%GLirnStUc~N`_?a-J~MX?ai0T!8T>k!p2Kgz z?}D4Lh%1n^7OG{cauC%nndq3nNk-HUolI0xDvAn^OjJ_aD26dADKb&HDif6@nW$9N zKpH@%`CBHcQZiBXs)5ivdfO90U-zZ5%i{~S+x)dh*Jl3OV{0@21IQ&Pw+ZL`AJJw8 zK{(xg)zG#M8QSEK9x}9TRedk)p{n*|Rc|!34tR1ydYhqbNAzFy z9;2#j#)6@ZS9L?%`Lf;#v+)T-%L3-EA)Oz?E!nlz(9FN+y3wS?tH;thPwVV8Lp$M_ z?yWB9Y}n9-U)BSN=&rtkQGpO175;m`EsQ17N>YVm1E&W)d7u{(cVgl`NPN*H?t#S0 z(tA94AP9+1x&%FsDC9q}WQtpbq`1F%@&IjUeA^{ng=|9o)5i9z(3Z|M3i^?$^tC zr9()nqNRAh9`KDwdEKN-b$Vx=p78X5Ux3fl`9E8y6Lu~BN9%Mth-&>0)#kk|d1o@Q@$M8A%e8Th;#U-1M9QuslJs*bHr}2>(2Z+N z!aOO)&78w%4txVh$wUeN@Re~UZr#O{Sg{}q_8B36hBhE%r_6GOIhA~=N4DL}n>L9K Hj9u*CjBT0$ diff --git a/srcs/utils/env.o b/srcs/utils/env.o deleted file mode 100644 index 82e94711a7c541fdb80231900b3be1cc7029dc36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6520 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 diff --git a/srcs/utils/list.o b/srcs/utils/list.o deleted file mode 100644 index a2b211098c7a36d3d8f255b777af0006850224b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3688 zcmb7GTWl0n7(O$zvpd}_+d?Z)h`0|3)!1%trrsjOR*|-d5sYYz!*)8-h3)QUXIc=5 zR8}GnCWOSxi;4P16B3OtrYZ?W6OBF?&=?aFgC=S7Xbf0zhcIz#(SU& z&;E~i{$s@}uJ?e#`%2|g{#QJwFp9i4on)qcp_Ts9e zLU2iqb1^Z4_chWt4Vkucv7VXP0~;rSb^Nqpe>(RLG4;t==r5J8x%g#5%$z9O7bVt; z7gtRytm(u8{)nJZO4T%%>GJdpQ%9?Fh>IdfrdZUy5i_hJrvDffZzL0;IiDT#-i zEbb?;keA#~izZ5h70 z-X)CW=7tSTwzjxxL`|2_m5Ffi>L|t}%tbM^LCm*@nySI%Rs<&tdjYByJOh2;eN;i^ zV35xfh|ynxxCyL9YIrs!8K*Fqk;pav$&gWAy`4Q}eB@)KYSO?e9bZjexa63q7s$07FO&sfpT$;UNuzwZct|>t^DJvt(R% zfPOr(oxYpt6A}52jl7IfPA-$*l^SJ9G^6=M2+4=+x;=;sJ^-SoKU6oy@UZ=tluL#KDsTeA7AH{#}UVwdgi%lfwG zXZ$fwWb?l8ZDt|7U?`Sck>~%3U)ba3;S5Gkjl6_J$sNv?TwEYhTWJ;n~BAlBa z7motd^YiXrC1r+(?V*gbN2$3C-WSAp+5N8YM~edSc<){zeGYK$-nQ{>eih#4WVAO) zv}x)`gECwE9EitY_mM+4{BZiuPfpx6UUuKR@X6;lzIN$h*mK~6;HSZ?bQTilHt_-C z2dDUi(s{Zl@)(j>IMg3heikgnU+4sdxhnT%xiY{16T_>E+(>W`*Tyv)*ola|@Pak- zee@BZ4a9#sdv)8y(Zt2~yB`18X)IW;b{nObm7mTr(v0 z5Sm!wYr!C%c$!Xv8^9p86q?u}l!+&sCLVJ&ksX7km%$1iQb_7-Gw(%IdFJ7`%wKt? zMg8SheC1iblD`uvMPzr?H0{si5`lqPg0*bk@hZ-z5XEfKZ5^QxWj^Nkfvk?L{L?Vd zw8H$2M$KFnw>Fs3XulbY4q$x4G@@lQUN&`@G>GE78DmHSuDZjf3a|zc-%l+bebS6T zwE8h~z`SbEY=l+=yneF|2I4H~S3-iA0|91v{%v~MtU*+=-_$WP`kR@AhUt2Avl$;; z$mEn6jUO@f0U3?ZX!Lip=FNrZO=f&6qjd{=B;Lg;QEV+NN)%_yVQv`2ht#-AjlTwa z8Qp*}CPZ?b(s!z{M~x{pVvsm2LgMlJCn1EyE}O(ZeE46w9(o=8VV$rsP!H>ZQ>lm4 zt@N-idZAai!+%YEzR>K2_N7GGl5dXm0KD*`^Zu3-ex1 A`~Uy| diff --git a/srcs/utils/list_clear.o b/srcs/utils/list_clear.o deleted file mode 100644 index 1095822cea5dd1bf30b6d65cc026ff202f2af51c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3200 zcmb7GU1%It6h1Svv$H?VcAKP4(pp?G_D4xJf6!vZBsSJ`oBm*0TJd4r%ubuJo84t* zlBTq@rRjr$Pzoye)Y7L0d=f+yAA)_b;6o8bd=Y~v1d52Zmc|m}ckbLtHrt5yz`5t| zp6{HQx%cee{_EGj*AOWL;w1u})39W~pce2b+y6qo5d>nK2nua>Gbh*yGELu}^aDMx z55Iiu@Uk6h1ELcm##7_3eZ6o-nO@jUS7r^GpELUAV+#E~XI$MlO0)xgHR9Vf z3V&S2nyzjfRD;-(Utf;R$-FQ|h@r1{8H;@coN7B(x14*cDwp67_sw#i#8^1fKaIYx z%xLC!i#NG{b$S8zwW%i`+?X;S)b_s~bpwCj{9KaeMIXuKnuCgb7WSdnIlPBi=vo z+?7=EIki?eUQ8zO6(j9PtB>|IYblOyZRu^n#M4QYj=c@|@I5O`V=b{awgDo@B8oRC zS}K`j2n^jiQICzCd{B$P2O7~D;^USBpJNmBb|A#cqf`AD>MLL+5?`AB+D$n0 zNPq-&hT~&jVpZ#P^>S=hXdhvv$PBNbOJHT}Tde9+x_V`DR%l01BC1|a^RZH&<_uV| zU2L_AeB%@NVqakS8LV~3??7adzy>`Ftlx0qKY9J?dPeS zv5NW9iOhuUdQQ2N>FjCmXz$K!6W+GYo{nzVU0v<)cWx)owY==O?-adk(eZrKD%yFs z-Jtc+6Bk8F>Hm!zk$|h-ldAmwd~Ra zS>rDGV-*@4?#HdeJC%&-CWw8C7Tr2|2Tj+|9dEa`Ec=m7tF** zm+dY#Kzu;iKEMVjtjRv6+L~PMarW?7W^QCK5I+m|uHlbML=5WS8Mq$D7(W8(zvFD~ zxbRl;!L6Qi-&l>Ctjv37Kh?8eRS=s3zYm@Ue-6G4=9|D6d^I+JK{vtd;xpU|2Jz8m z7oT~{gD2nnh zRfikMg}9R9lq|36IuKQyirqfSu@yH%CBhLJxBMVR5tZWb1*Fw0x{YeQAEW54{#{jKE%`D<+WXt za#BkC_6olTiLKFtQuadPFHmZWv@=pdh<&d~xdSqV#E?4K#($;o|4thATEu7MhRxEJ nCOrqGDqZNX)uj(@t{f(2_3)5}94qE=*S4vMYu_o>4zBSJq+9O6 diff --git a/srcs/utils/temp.o b/srcs/utils/temp.o deleted file mode 100644 index ecbed30eb170197decb114c117e07179833fd184..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8680 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 diff --git a/srcs/utils/tree.o b/srcs/utils/tree.o deleted file mode 100644 index 4d5a438f81aa724149a424f7bd410a0b17839bba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4376 zcmcInZEPIH8J^v}y}R|<=ko{tAc=fR4RNZ(X9q_F;u4!Al-N#+Vxv-(vOV9e?IY*A z)9u-DnuxkMKR~JkQB%PW5N=hew$uuVUoogED1V|Ngo^s1s((yHg;AB3ibCyFuKPT* zv(EWqph)d2z4Ly}JoC=%%sY2)-?;woY9TZMViN$b7--^PP%C(X_NUOLh!+TRAjr2v z(8*PFf^56w%#=Lcvqz3UGIG=QwMTVNBOcZHS}!LgHtYAHwC%JrIyG)5M@Ng!H0@(w z??3&(W)~mln)0NBn;~COGkK8ZqPS9|a+HEJIh2YMa(Dd=tS+)`2YtHk@B zDc$0V+<76MwmiG6t-wnb3R%a_B_|yhohtF}QThB#0racy@_Bgq(Z^HlQ;GLyh1aeC zuK$;KGQUDHRf%VXJs=;i4u`ISwq0-OTw&Yw?pJt6)czg(T)b3%5_y&EsodF2E^XUG z$I9m~sQsT+&Y2n^_{l%?&!2Z3H;4G=C7a1PbXKnSLxuMvmES7xNU@l@Y!!G15NiQ@ z-8s28fSW>p3&s(00kQze&+!nL#6IKzm}l`bt}CM3)5cZt>-F>c;`*Gpv>Xv@@79W? zxR`xM3(mfS5to+@v9@CLt%Wu5_m$8~w?8Gs-N?1^mve2aQOK3rzNHTk?`RcEE0Ml6 zscYVtHd9HiYTn7cuvx*A4r38-|7)jKy`>^G4e$a#;IQvshX%>{U5$ z^Gmm{sChBpt+`xnyMlVvNNhRARDCe+ni}W(7l8lIjg97cV87ekw!V z_KV+E`mvWQI2Te!9xK=@em}Wy_}}0X66(<_- zwlqN)Q7;&7&~Em$Y9uHlhcK|J6VulR`&zutds;ak?vE*St6}K57DI`wEhbDHeGiM>tkO(6t-A9r2n3nRSli<>i4!-P0)Ws z{czkm1${4A@9hvlVh8_#CiEVfopgUW+z!#Aw_E!lCBmJ;>h|?L0gDB97g+BITMzpF zy)hBo4Z}E!Ca8r@0dItzZu8%NaS<+U@|*0`n1deCpNVlLn^rY*HX1o+wf>B_Osk1K zMHR=Au7I`4EF-(Qiim!xATf3;#Fpn}jH?BHqeR@T5W_!atldNGg--Gizr#q^7R0VC zh+SI{yS5-6kcc(^P>8rV$nj|+9zlLH3sPertSa_%TK&ojze4MNIbQVhd5@>E$=rB+ z+9|r3d@kPI)7jN|SG+@d_jmVn-39x=flm0l_X@X|auZXfOx8`5ijLEn5{aSAXfatl zmpJB3JK21}DJG8QCnuA+^bnq@k$fIqhmQ@qiId6H*M=YIbkk=JK3g7mX!y7oIsNc)QL?j6a!k0MC?tyx;#p^`WTz%F*|aET#wUE8J#D`HqLe@5;B+yKd*t{?>VynJA^(B&+&#Lm{R9MJ>J{DXQ6j`?#8pf zuYK+DGpV-w9=rG`{8{h?@b|$l&;|%`X4rsOO{lW$ka%us|4PMq>ZtDIBp}{4+C6MQ zey+;gHrFrGhd)TjjRXg=#Bt3Ab|QeED3xpHyaBN9=YDm~J{8G7)VSj(d(*pO=Q6wA z`a$n2srU~stX}JRV#!RrdGOlUjmzlwQ}CL+N5sRakF8rRx+p z0Ir~mo_$M1`DKAZms{fH1#G)`c{$oH{vvV;$hS+=w0}iw1O(FrYnfciEvqj0!I>#I zofC}VnoXrjp00`x&sx9`mO67d1&x|nUlo4Y3flFaBZm>;gt=qL{E}yd zF_D6*9Wa}fdK +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/12 19:40:44 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 18:34:06 by eunwolee ### ########.fr */ +/* Updated: 2023/08/11 17:59:50 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/utils/utils.o b/srcs/utils/utils.o deleted file mode 100644 index a092097c0e98b7ea62164db6602b96c45dbfeccc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5832 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 Date: Sat, 12 Aug 2023 21:57:58 +0900 Subject: [PATCH 20/57] . --- .DS_Store | Bin 6148 -> 6148 bytes Makefile | 1 + incs/parse.h | 7 +- incs/struct.h | 3 +- srcs/builtin/ft_echo.c | 8 +- srcs/builtin/ft_export.c | 2 +- srcs/init/init.c | 4 +- srcs/lexer/expand.c | 159 ++++++++++++++------------------------- srcs/lexer/lexer.c | 52 ++++++++----- srcs/lexer/lexer_utils.c | 20 +++++ srcs/lexer/quote.c | 34 ++++----- srcs/lexer/tokenizer.c | 9 ++- srcs/minishell.c | 3 +- srcs/utils/temp.c | 17 +++-- tester | 1 - 15 files changed, 152 insertions(+), 168 deletions(-) create mode 100644 srcs/lexer/lexer_utils.c delete mode 160000 tester diff --git a/.DS_Store b/.DS_Store index ff401bb0b00fc5263b925bc084dd6b6ab7948766..93e02cd23ab680c71de48bd7ca9651255a39a78a 100644 GIT binary patch delta 276 zcmZoMXfc@JFUrNhz`)4BAi%(o$dChs`3x!yCYu$Rmor*|q<9z%8H^Z=88VQi8B7_> zJah7slXCKtfNFqxnbLu#@cjn^28PKzOrgr`K*KT_k{Hq$N*MGQ5>eGNSOe9wP7Y&A zuwW_$G8JH2fyQw%iEuE`w~{QI**X650{~yzML7Tf delta 79 zcmZoMXfc@JFUrQiz`)4BAi&_6lb@WFlb;0S3vB+#yquAdZL$kf=;Y%}p==E6fr|Jh ahcJh7%Ys<{!2qaAjAdfO)y?c2fB69}6c~sA diff --git a/Makefile b/Makefile index b154979..4f43cae 100644 --- a/Makefile +++ b/Makefile @@ -18,6 +18,7 @@ SRCS = $(SRCS_DIR)/minishell.c \ $(SRCS_DIR)/lexer/tokenizer.c \ $(SRCS_DIR)/lexer/quote.c \ $(SRCS_DIR)/lexer/expand.c \ + $(SRCS_DIR)/lexer/lexer_utils.c \ $(SRCS_DIR)/parser/syntax.c \ $(SRCS_DIR)/parser/parser.c \ $(SRCS_DIR)/utils/env.c \ diff --git a/incs/parse.h b/incs/parse.h index bfb8b08..8dccb5f 100644 --- a/incs/parse.h +++ b/incs/parse.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/04 07:53:54 by eunwolee #+# #+# */ -/* Updated: 2023/08/11 18:25:44 by eunwolee ### ########.fr */ +/* Updated: 2023/08/12 16:24:00 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,11 +20,14 @@ t_token *token_create(void); void token_add_list(t_list **head, t_token **token, t_bool create_flag); void token_redirect(t_data *data, t_token *token, int *i); -void single_quote(t_data *data, char *input, t_token **token, int *i); +void single_quote(char *input, t_token **token, int *i); void double_quote(t_data *data, char *input, t_token **token, int *i); void lexer(t_data *data); +/*lexer_uitls*/ +t_bool check_end(char c); + t_bool syntax(t_data *data); void parser(t_data *data); diff --git a/incs/struct.h b/incs/struct.h index ec2267c..964681d 100644 --- a/incs/struct.h +++ b/incs/struct.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:24:15 by eunwolee #+# #+# */ -/* Updated: 2023/08/11 10:43:45 by eunwolee ### ########.fr */ +/* Updated: 2023/08/12 15:57:40 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,7 +38,6 @@ typedef struct s_token int type; int redirect_type; char *str; - t_bool print; //환경변수 출력 여부 (싱글쿼트 사이에 있거나 더블쿼트 사이에 $+공백+문자열 형태로 있을 때) t_bool blank; } t_token; diff --git a/srcs/builtin/ft_echo.c b/srcs/builtin/ft_echo.c index c948723..c235532 100644 --- a/srcs/builtin/ft_echo.c +++ b/srcs/builtin/ft_echo.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:30:59 by kichan #+# #+# */ -/* Updated: 2023/08/11 13:59:11 by eunwolee ### ########.fr */ +/* Updated: 2023/08/12 21:30:31 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -90,7 +90,7 @@ void ft_echo(t_leaf *cmd) while (cmd) { print_line(cmd); - if (cmd->token->blank == TRUE) + if (cmd->token->blank == TRUE && cmd->right_child) printf(" "); cmd = cmd->right_child; } @@ -124,10 +124,6 @@ static void print_line(t_leaf *cmd) i = 0; while (cmd->token->str[i]) { - if (cmd->token->str[i] == '$' \ - && cmd->token->print == FALSE \ - && cmd->token->str[i + 1] != '\0') - break ; printf("%c", cmd->token->str[i]); i++; } diff --git a/srcs/builtin/ft_export.c b/srcs/builtin/ft_export.c index 76ec4fc..45fef95 100644 --- a/srcs/builtin/ft_export.c +++ b/srcs/builtin/ft_export.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:25:07 by kichlee #+# #+# */ -/* Updated: 2023/08/11 18:02:25 by eunwolee ### ########.fr */ +/* Updated: 2023/08/12 20:46:31 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/init/init.c b/srcs/init/init.c index 9fef11d..bb52bdc 100644 --- a/srcs/init/init.c +++ b/srcs/init/init.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:52 by eunwolee #+# #+# */ -/* Updated: 2023/08/11 07:12:51 by eunwolee ### ########.fr */ +/* Updated: 2023/08/12 21:57:19 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,7 +18,6 @@ void env_init(t_data *data, char **envp); //필요하신 초기화 내용 여기 넣어주시면 됩니당 void init(t_data **data, char **envp) { - *data = (t_data *)ft_calloc(1, sizeof(t_data)); if (!*data) program_error_exit("bash"); @@ -70,7 +69,6 @@ t_bool get_input(t_data *data) } add_history(data->input); lexer(data); - print_token(data); if (syntax(data) == FALSE) { tree_clear(data->root); diff --git a/srcs/lexer/expand.c b/srcs/lexer/expand.c index c4a0f24..dd36148 100644 --- a/srcs/lexer/expand.c +++ b/srcs/lexer/expand.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:20:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/11 16:43:53 by eunwolee ### ########.fr */ +/* Updated: 2023/08/12 21:08:53 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,86 +16,56 @@ t_bool expand(t_data *data, t_token **token, int *i, t_bool quote); static t_bool check_heredoc(t_data *data, t_token *token, int *i); static t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote); static t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote); +static t_bool check_question(t_data *data, t_token *token, int *i); static void replace(t_data *data, t_token *token, char *name); -static t_bool check_char(char c); + +static t_bool check_special(t_data *data, t_token *token, int *i) +{ + if (!ft_isalpha(data->input[*i]) && data->input[*i] != '_') + { + token->str = ft_strncat(token->str, "$", 1); + while (!ft_isalpha(data->input[*i]) && data->input[*i] != '$' && check_end(data->input[*i]) == FALSE) + { + token->str = ft_strncat(token->str, &data->input[*i], 1); + if (!token->str) + program_error_exit("bash"); + *i += 1; + } + return (TRUE); + } + return (FALSE); +} t_bool expand(t_data *data, t_token **token, int *i, t_bool quote) { char *name; - char *tmp; *i += 1; - name = ft_strdup(""); - if (check_heredoc(data, *token, i) == TRUE) - return (TRUE); - if (check_blank(data, *token, i, quote) == TRUE) - return (TRUE); - if (check_other(data, *token, i, quote) == TRUE) - return (TRUE); - if (data->input[*i] == '?') + if (check_heredoc(data, *token, i) == FALSE \ + && check_question(data, *token, i) == FALSE \ + && check_blank(data, *token, i, quote) == FALSE \ + && check_other(data, *token, i, quote) == FALSE \ + && check_special(data, *token, i) == FALSE) { - free(name); - tmp = ft_itoa(data->error_code); - (*token)->str = ft_strncat((*token)->str, tmp, ft_strlen(tmp)); - if (data->input[*i + 1] != ' ' && data->input[*i + 1] != '\t' && data->input[*i + 1] != '\0') - (*token)->blank = FALSE; - if (quote == TRUE && data->input[*i + 1] != '\"') + name = ft_strdup(""); + while (ft_isalnum(data->input[*i]) || data->input[*i] == '_') + { + name = ft_strncat(name, &data->input[*i], 1); + if (!name) + program_error_exit("bash"); *i += 1; - else if ((quote == TRUE && data->input[*i + 1] == '\"')) - *i += 2; - return (FALSE); - } - while (!ft_isalnum(data->input[*i]) && data->input[*i] != '\0') - { - if (quote == FALSE && (data->input[*i] == ' ' || data->input[*i] == '\t')) - break ; - (*token)->print = TRUE; - name = ft_strncat(name, &data->input[*i], 1); - if (!name) - program_error_exit("bash"); - *i += 1; - } - if (data->input[*i] == '\0') - (*token)->blank = FALSE; - while (check_char(data->input[*i]) == TRUE) - { - name = ft_strncat(name, &data->input[*i], 1); - if (!name) - program_error_exit("bash"); - *i += 1; - } - replace(data, *token, name); - if (quote == TRUE && data->input[*i] == '\"') - { - if (data->input[*i + 1] == '\0') - return (TRUE); - (*token)->blank = FALSE; - token_add_list(&data->tokens, token, TRUE); - *i += 1; + } + replace(data, *token, name); } - else if (quote == FALSE) + if (quote == FALSE) { - if ((data->input[*i] != ' ' && data->input[*i] != '\t' && data->input[*i] != '\0')) + if (check_end(data->input[*i]) == FALSE) (*token)->blank = FALSE; *i -= 1; - token_add_list(&data->tokens, token, TRUE); } return (FALSE); } -static t_bool check_char(char c) -{ - //c == '\0' 아니고? - if (c != '\'' \ - && c != '\"' \ - && c != ' ' \ - && c != '\t' \ - && c != '\0' \ - && ft_isalnum(c)) - return (TRUE); - return (FALSE); -} - static t_bool check_heredoc(t_data *data, t_token *token, int *i) { t_list *tmp; @@ -119,44 +89,24 @@ static t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote) token->str = ft_strncat(token->str, "$", 1); if (!token->str) program_error_exit("bash"); - if (quote == FALSE) - { - *i -= 1; - return (TRUE); - } - token->str = ft_strncat(token->str, &data->input[*i], 1); - if (!token->str) - program_error_exit("bash"); - if (quote == TRUE) - return (TRUE); + return (TRUE); } - if (quote == TRUE && data->input[*i] == ' ') - token->print = TRUE; return (FALSE); } static t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote) { - if (data->input[*i] == '\"') + if (data->input[*i] == '\'') + return (TRUE); + else if (data->input[*i] == '\"') { - - if (quote == TRUE) + if (quote == TRUE \ + || check_end(data->input[*i + 1]) == TRUE) { token->str = ft_strncat(token->str, "$", 1); if (!token->str) program_error_exit("bash"); } - else - { - if (data->input[*i + 1] == '\0') - return (FALSE); - *i -= 1; - } - return (TRUE); - } - else if (data->input[*i] == '\'') - { - *i -= 1 ; return (TRUE); } else if (data->input[*i] == '\0') @@ -175,22 +125,11 @@ static void replace(t_data *data, t_token *token, char *name) t_list *tmp; tmp = env_search(data, name); - if (!tmp) - { - token->blank = FALSE; - token->str = ft_strncat(token->str, "$", 1); - if (!token->str) - program_error_exit("bash"); - token->str = ft_strncat(token->str, name, ft_strlen(name)); - if (!token->str) - program_error_exit("bash"); - } - else + if (tmp) { j = 0; while (tmp->env[j] != '=') j++; - token->print = TRUE; token->str = ft_strncat(token->str, \ &tmp->env[j + 1], ft_strlen(&tmp->env[j + 1])); if (!token->str) @@ -198,3 +137,19 @@ static void replace(t_data *data, t_token *token, char *name) } free(name); } + +static t_bool check_question(t_data *data, t_token *token, int *i) +{ + char *tmp; + + if (data->input[*i] == '?') + { + tmp = ft_itoa(data->error_code); + token->str = ft_strncat(token->str, tmp, ft_strlen(tmp)); + if (check_end(data->input[*i + 1]) == FALSE) + token->blank = FALSE; + *i += 1; + return (TRUE); + } + return (FALSE); +} diff --git a/srcs/lexer/lexer.c b/srcs/lexer/lexer.c index 59f6da5..905f6ff 100644 --- a/srcs/lexer/lexer.c +++ b/srcs/lexer/lexer.c @@ -6,58 +6,74 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 16:24:37 by eunwolee #+# #+# */ -/* Updated: 2023/08/11 18:21:29 by eunwolee ### ########.fr */ +/* Updated: 2023/08/12 20:05:37 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" void lexer(t_data *data); -static void check_char(t_data *data, t_token **token, int *i); +static void check_char(t_data *data, t_token **token, int *i, t_bool *pre_pipe); void lexer(t_data *data) { int i; t_token *token; + t_bool pre_pipe; + pre_pipe = FALSE; token = token_create(); if (!token) program_error_exit("bash"); i = -1; while (data->input[++i]) - check_char(data, &token, &i); - if (token->str && *(token->str)) - token_add_list(&data->tokens, &token, FALSE); + check_char(data, &token, &i, &pre_pipe); } -static void check_char(t_data *data, t_token **token, int *i) +static void check_char(t_data *data, t_token **token, int *i, t_bool *pre_pipe) { if (data->input[*i] == '|' \ - || data->input[*i] == '<' || data->input[*i] == '>') + || data->input[*i] == '<' \ + || data->input[*i] == '>' \ + || data->input[*i] == '\'' \ + || data->input[*i] == '\"') { - if (*(*token)->str) - token_add_list(&data->tokens, token, TRUE); tokenizer(data, token, i); + token_add_list(&data->tokens, token, TRUE); } - else if (data->input[*i] == '\'' || data->input[*i] == '\"') + else if (data->input[*i] == '$') { - if (*(*token)->str) - token_add_list(&data->tokens, token, TRUE); - tokenizer(data, token, i); + expand(data, token, i, FALSE); + token_add_list(&data->tokens, token, TRUE); } else if (data->input[*i] == ' ' || data->input[*i] == '\t') { - if (*(*token)->str) - token_add_list(&data->tokens, token, TRUE); + if (*pre_pipe == TRUE) + { + *pre_pipe = FALSE; + return ; + } + while (data->input[*i] == ' ' || data->input[*i] == '\t') + *i += 1; + if (data->input[*i] == '|') + *pre_pipe = TRUE; + token_add_list(&data->tokens, token, TRUE); + *i -= 1; } - else if (data->input[*i] == '$') - expand(data, token, i, FALSE); else { (*token)->str = ft_strncat((*token)->str, &data->input[*i], 1); if (!(*token)->str) program_error_exit("bash"); - if (data->input[*i + 1] != ' ' && data->input[*i + 1] != '\t' && data->input[*i + 1] != '\0') + if (check_end(data->input[*i + 1]) == FALSE) (*token)->blank = FALSE; + if (data->input[*i + 1] == '|' \ + || data->input[*i + 1] == '<' \ + || data->input[*i + 1] == '>' \ + || data->input[*i + 1] == '\'' \ + || data->input[*i + 1] == '\"' \ + || data->input[*i + 1] == '$' \ + || data->input[*i + 1] == '\0') + token_add_list(&data->tokens, token, TRUE); } } diff --git a/srcs/lexer/lexer_utils.c b/srcs/lexer/lexer_utils.c new file mode 100644 index 0000000..84e5645 --- /dev/null +++ b/srcs/lexer/lexer_utils.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* lexer_utils.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/12 15:15:15 by eunwolee #+# #+# */ +/* Updated: 2023/08/12 15:34:49 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +t_bool check_end(char c) +{ + if (c == ' ' || c == '\t' || c == '\0') + return (TRUE); + return (FALSE); +} \ No newline at end of file diff --git a/srcs/lexer/quote.c b/srcs/lexer/quote.c index 727b88d..9f4ee5b 100644 --- a/srcs/lexer/quote.c +++ b/srcs/lexer/quote.c @@ -6,28 +6,25 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 07:46:30 by eunwolee #+# #+# */ -/* Updated: 2023/08/11 18:26:53 by eunwolee ### ########.fr */ +/* Updated: 2023/08/12 20:59:04 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -void single_quote(t_data *data, char *input, t_token **token, int *i); +void single_quote(char *input, t_token **token, int *i); void double_quote(t_data *data, char *input, t_token **token, int *i); static t_bool find_next_quote(char *input, t_token *token, int i, char quote); static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next_quote); static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next_quote); -void single_quote(t_data *data, char *input, t_token **token, int *i) +void single_quote(char *input, t_token **token, int *i) { t_bool next_quote; *i += 1; if (input[*i] == '\'') - { (*token)->blank = FALSE; - return ; - } next_quote = find_next_quote(input, (*token), *i, '\''); while (input[*i] != '\'' && input[*i] != '\0') { @@ -35,10 +32,8 @@ void single_quote(t_data *data, char *input, t_token **token, int *i) return ; *i += 1; } - if (input[*i + 1] != '\0' && input[*i + 1] != '\t' && input[*i + 1] != ' ') + if (check_end(input[*i + 1]) == FALSE) (*token)->blank = FALSE; - if ((*token)->str[0]) - token_add_list(&data->tokens, token, TRUE); if (input[*i] == '\0') *i -= 1; } @@ -48,30 +43,29 @@ void double_quote(t_data *data, char *input, t_token **token, int *i) t_bool next_quote; *i += 1; + if (input[*i] == '\"') + (*token)->blank = FALSE; next_quote = find_next_quote(input, *token, *i, '\"'); while (input[*i] != '\"' && input[*i] != '\0') { if (input[*i] == '$' && input[*i + 1] == '\"') { (*token)->str = ft_strncat((*token)->str, &input[*i], 1); - token_add_list(&data->tokens, token, TRUE); *i += 1; - return ; + continue ; } - while (input[*i] == '$') + while (input[*i] == '$' && input[*i + 1] != '\'') { - if (input[*i + 1] != '\'' && next_quote == TRUE) + if (next_quote == TRUE) if (expand(data, token, i, TRUE) == TRUE) - return ; + break ; } if (d_check_char(input, *token, i, next_quote) == TRUE) - return ; + break ; *i += 1; } - if (input[*i + 1] != '\0' && input[*i + 1] != '\t' && input[*i + 1] != ' ') + if (check_end(input[*i + 1]) == FALSE) (*token)->blank = FALSE; - if ((*token)->str[0]) - token_add_list(&data->tokens, token, TRUE); if (input[*i] == '\0') *i -= 1; } @@ -100,8 +94,6 @@ static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next_quot } else token->str = ft_strncat(token->str, &input[*i], 1); - if (input[*i] == '$') - token->print = TRUE; if (!token->str) program_error_exit("bash"); return (FALSE); @@ -109,6 +101,8 @@ static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next_quot static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next_quote) { + if (next_quote == TRUE && input[*i] == '\"') + return (TRUE); if (next_quote == FALSE \ && (input[*i] != ' ' || input[*i] != '\t')) { diff --git a/srcs/lexer/tokenizer.c b/srcs/lexer/tokenizer.c index 858b83a..85db38a 100644 --- a/srcs/lexer/tokenizer.c +++ b/srcs/lexer/tokenizer.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:26:13 by eunwolee #+# #+# */ -/* Updated: 2023/08/11 18:25:03 by eunwolee ### ########.fr */ +/* Updated: 2023/08/12 18:41:45 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,15 +24,13 @@ void tokenizer(t_data *data, t_token **token, int *i) else if (data->input[*i] == '\"') double_quote(data, data->input, token, i); else if (data->input[*i] == '\'') - single_quote(data, data->input, token, i); + single_quote(data->input, token, i); else if (data->input[*i] == '<' || data->input[*i] == '>') token_redirect(data, *token, i); if ((data->input[*i] == '\'' || data->input[*i] == '\"') \ && (data->input[*i + 1] != ' ' && data->input[*i + 1] != '\t') \ && (data->input[*i + 1] != '\0')) return ; - if (!((*token)->type == T_WORD && !(*token)->str[0])) - token_add_list(&data->tokens, token, TRUE); } t_token *token_create(void) @@ -73,12 +71,15 @@ void token_redirect(t_data *data, t_token *token, int *i) else token->redirect_type = T_OUTPUT; } + } void token_add_list(t_list **head, t_token **token, t_bool create_flag) { t_list *new; + if ((*token)->type == T_WORD && !(*token)->str[0]) + return ; new = ft_lstnew(); if (!new) program_error_exit("bash"); diff --git a/srcs/minishell.c b/srcs/minishell.c index 38da3b5..1f0e8d1 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/11 06:58:06 by eunwolee ### ########.fr */ +/* Updated: 2023/08/12 21:18:27 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,6 +33,7 @@ int main(int argc, char **argv, char **envp) // printf("abs home : %s\n", data->abs_home); if (get_input(data) == FALSE) continue ; + print_token(data); execute(data); input_free(data); } diff --git a/srcs/utils/temp.c b/srcs/utils/temp.c index f6442b2..9b69d9b 100644 --- a/srcs/utils/temp.c +++ b/srcs/utils/temp.c @@ -52,34 +52,35 @@ void print_token(t_data *data) while (tmp) { if (tmp->token->type == T_PIPE) - printf("token: pipe\n"); + printf("token: pipe"); else if (tmp->token->type == T_REDIRECT) { printf("token: redirect, "); if (tmp->token->redirect_type == T_INPUT) - printf("type: <\n"); + printf("type: <"); else if (tmp->token->redirect_type == T_OUTPUT) - printf("type: >\n"); + printf("type: >"); else if (tmp->token->redirect_type == T_HEREDOC) - printf("type: <<\n"); + printf("type: <<"); else if (tmp->token->redirect_type == T_APPEND) - printf("type: >>\n"); + printf("type: >>"); } else if (tmp->token->type == T_WORD) { printf("token: word, "); - printf("str: %s\n", tmp->token->str); + printf("str: %s", tmp->token->str); } else if (tmp->token->type == T_CMD) { printf("token: cmd, "); - printf("str: %s\n", tmp->token->str); + printf("str: %s", tmp->token->str); } else if (tmp->token->type == T_ARG) { printf("token: arg, "); - printf("str: %s\n", tmp->token->str); + printf("str: %s", tmp->token->str); } + printf(" blank: %d\n", tmp->token->blank); tmp = tmp->next; } } diff --git a/tester b/tester deleted file mode 160000 index eafb1b8..0000000 --- a/tester +++ /dev/null @@ -1 +0,0 @@ -Subproject commit eafb1b837133c03cc819ffac07fc695acaee4c51 From 427c4d309164f4a6f89a55c63aef6a22aa45f423 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Sun, 13 Aug 2023 13:09:37 +0900 Subject: [PATCH 21/57] . --- Libft/ft_atoi.o | Bin 0 -> 880 bytes Libft/ft_bzero.o | Bin 0 -> 584 bytes Libft/ft_calloc.o | Bin 0 -> 696 bytes Libft/ft_isalnum.o | Bin 0 -> 688 bytes Libft/ft_isalpha.o | Bin 0 -> 632 bytes Libft/ft_isascii.o | Bin 0 -> 592 bytes Libft/ft_isdigit.o | Bin 0 -> 592 bytes Libft/ft_isprint.o | Bin 0 -> 592 bytes Libft/ft_itoa.o | Bin 0 -> 1128 bytes Libft/ft_memchr.o | Bin 0 -> 648 bytes Libft/ft_memcmp.o | Bin 0 -> 680 bytes Libft/ft_memcpy.o | Bin 0 -> 680 bytes Libft/ft_memmove.o | Bin 0 -> 784 bytes Libft/ft_memset.o | Bin 0 -> 608 bytes Libft/ft_putchar_fd.o | Bin 0 -> 624 bytes Libft/ft_putendl_fd.o | Bin 0 -> 856 bytes Libft/ft_putnbr_fd.o | Bin 0 -> 1048 bytes Libft/ft_putstr_fd.o | Bin 0 -> 680 bytes Libft/ft_split.o | Bin 0 -> 1976 bytes Libft/ft_strchr.o | Bin 0 -> 672 bytes Libft/ft_strdup.o | Bin 0 -> 736 bytes Libft/ft_striteri.o | Bin 0 -> 624 bytes Libft/ft_strjoin.o | Bin 0 -> 888 bytes Libft/ft_strlcat.o | Bin 0 -> 840 bytes Libft/ft_strlcpy.o | Bin 0 -> 768 bytes Libft/ft_strlen.o | Bin 0 -> 624 bytes Libft/ft_strmapi.o | Bin 0 -> 792 bytes Libft/ft_strncat.o | Bin 0 -> 968 bytes Libft/ft_strncmp.o | Bin 0 -> 776 bytes Libft/ft_strnstr.o | Bin 0 -> 936 bytes Libft/ft_strrchr.o | Bin 0 -> 672 bytes Libft/ft_strtrim.o | Bin 0 -> 1320 bytes Libft/ft_substr.o | Bin 0 -> 1000 bytes Libft/ft_tolower.o | Bin 0 -> 600 bytes Libft/ft_toupper.o | Bin 0 -> 600 bytes Libft/get_next_line.o | Bin 0 -> 2936 bytes Libft/get_next_line_utils.o | Bin 0 -> 808 bytes Libft/libft.a | Bin 0 -> 35328 bytes incs/parse.h | 3 ++- libft.a | Bin 0 -> 35328 bytes minishell | Bin 0 -> 89750 bytes srcs/builtin/builtin.o | Bin 0 -> 6200 bytes srcs/builtin/builtin_utils.o | Bin 0 -> 8296 bytes srcs/builtin/ft_atolong.o | Bin 0 -> 4112 bytes srcs/builtin/ft_cd.o | Bin 0 -> 6880 bytes srcs/builtin/ft_echo.o | Bin 0 -> 4488 bytes srcs/builtin/ft_env.o | Bin 0 -> 5512 bytes srcs/builtin/ft_exit.o | Bin 0 -> 6336 bytes srcs/builtin/ft_exit_two.o | Bin 0 -> 5120 bytes srcs/builtin/ft_export.o | Bin 0 -> 6472 bytes srcs/builtin/ft_export_two.o | Bin 0 -> 4376 bytes srcs/builtin/ft_pwd.o | Bin 0 -> 5184 bytes srcs/builtin/ft_unset.o | Bin 0 -> 4560 bytes srcs/execute/checkbulitin.o | Bin 0 -> 4720 bytes srcs/execute/execve.o | Bin 0 -> 7992 bytes srcs/execute/freepipe.o | Bin 0 -> 5144 bytes srcs/execute/pipe.o | Bin 0 -> 6128 bytes srcs/execute/pipeutils.o | Bin 0 -> 6104 bytes srcs/execute/setpath.o | Bin 0 -> 7320 bytes srcs/init/init.o | Bin 0 -> 7216 bytes srcs/lexer/expand.o | Bin 0 -> 10360 bytes srcs/lexer/lexer.c | 20 +++++++++++--------- srcs/lexer/lexer.o | Bin 0 -> 7112 bytes srcs/lexer/lexer_utils.c | 13 ++++++++++++- srcs/lexer/lexer_utils.o | Bin 0 -> 3200 bytes srcs/lexer/quote.c | 10 ++++++---- srcs/lexer/quote.o | Bin 0 -> 8600 bytes srcs/lexer/tokenizer.o | Bin 0 -> 7440 bytes srcs/minishell.c | 2 +- srcs/minishell.o | Bin 0 -> 5008 bytes srcs/parser/parser.o | Bin 0 -> 6192 bytes srcs/parser/syntax.o | Bin 0 -> 8240 bytes srcs/redirect/heredoc.o | Bin 0 -> 5208 bytes srcs/redirect/heredocutils.o | Bin 0 -> 9848 bytes srcs/redirect/redirection.o | Bin 0 -> 6136 bytes srcs/signal/signal.o | Bin 0 -> 4304 bytes srcs/utils/env.o | Bin 0 -> 6520 bytes srcs/utils/list.o | Bin 0 -> 3888 bytes srcs/utils/list_clear.o | Bin 0 -> 3400 bytes srcs/utils/temp.o | Bin 0 -> 8944 bytes srcs/utils/tree.o | Bin 0 -> 4376 bytes srcs/utils/utils.o | Bin 0 -> 5832 bytes 82 files changed, 32 insertions(+), 16 deletions(-) create mode 100644 Libft/ft_atoi.o create mode 100644 Libft/ft_bzero.o create mode 100644 Libft/ft_calloc.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_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 create mode 100644 Libft/ft_strmapi.o create mode 100644 Libft/ft_strncat.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 Libft/get_next_line.o create mode 100644 Libft/get_next_line_utils.o create mode 100644 Libft/libft.a create mode 100644 libft.a create mode 100755 minishell create mode 100644 srcs/builtin/builtin.o create mode 100644 srcs/builtin/builtin_utils.o create mode 100644 srcs/builtin/ft_atolong.o create mode 100644 srcs/builtin/ft_cd.o create mode 100644 srcs/builtin/ft_echo.o create mode 100644 srcs/builtin/ft_env.o create mode 100644 srcs/builtin/ft_exit.o create mode 100644 srcs/builtin/ft_exit_two.o create mode 100644 srcs/builtin/ft_export.o create mode 100644 srcs/builtin/ft_export_two.o create mode 100644 srcs/builtin/ft_pwd.o create mode 100644 srcs/builtin/ft_unset.o create mode 100644 srcs/execute/checkbulitin.o create mode 100644 srcs/execute/execve.o create mode 100644 srcs/execute/freepipe.o create mode 100644 srcs/execute/pipe.o create mode 100644 srcs/execute/pipeutils.o create mode 100644 srcs/execute/setpath.o create mode 100644 srcs/init/init.o create mode 100644 srcs/lexer/expand.o create mode 100644 srcs/lexer/lexer.o create mode 100644 srcs/lexer/lexer_utils.o create mode 100644 srcs/lexer/quote.o create mode 100644 srcs/lexer/tokenizer.o create mode 100644 srcs/minishell.o create mode 100644 srcs/parser/parser.o create mode 100644 srcs/parser/syntax.o create mode 100644 srcs/redirect/heredoc.o create mode 100644 srcs/redirect/heredocutils.o create mode 100644 srcs/redirect/redirection.o create mode 100644 srcs/signal/signal.o create mode 100644 srcs/utils/env.o create mode 100644 srcs/utils/list.o create mode 100644 srcs/utils/list_clear.o create mode 100644 srcs/utils/temp.o create mode 100644 srcs/utils/tree.o create mode 100644 srcs/utils/utils.o diff --git a/Libft/ft_atoi.o b/Libft/ft_atoi.o new file mode 100644 index 0000000000000000000000000000000000000000..6af93fb94d9f00580a48389b4dde722c5e961288 GIT binary patch literal 880 zcmbVKze~eV5Wck4rdEwmAsUw~LhGc0idzQ-1qYE1-5#YX7VQrqVi%#};@Zuvqb`mP z+3KX5xH!91Qo%o<4%Y9|y!3~iJaX^dyYKG1yO;O!{q-|Wq!5Ic5cG%*6AGDyI<7T* zxp6azuDxBJ!w6>$cxggd2W6|vAw+63o$8*YRqo-Fxh@u>ij3i1h-@)m%498ZRyfZU z_J!El=*1+`R`|5P&)$Z2Y1tAqF@aJ^+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710W6Ja|1EV4v-oU z2I&Qka^N;VM%6WsHdj0+yj@uS>ON=lNy2a${wQsYu}Ib z9Cy;g*r$GwrRde9C^XB_Teck0<@`0~T?GbWMmd^G(MM?Bto4YtuxI|>FN_wz0dl%0 zjh+;B52a6f?ocDOw?2>J&dw0~^&bp=(dSg}C7*xFs_<~9q6J2>C`rtjT?gmn!paKZ w94@ZrP#*sBL|){COZexeeBxt|-MV{L_lVt^<23CgWRIoexvdS7RURMq17ML_N&o-= literal 0 HcmV?d00001 diff --git a/Libft/ft_isalnum.o b/Libft/ft_isalnum.o new file mode 100644 index 0000000000000000000000000000000000000000..8311ad73435a78ccf372be4688ce3871f566087b GIT binary patch literal 688 zcmb7CJxjw-6uq(43eoD2L0!xu6tti&Iw~qSIEZv`yM#tbGrtu!Qc8_$9=2%U4OodZ)X*#d2kCYvp0S2 z#*NJmyxaE~eoDWSzGrOt8B0h}ELvckr6^r^jV*%nazGsm;5-hR+_T))RH`rkO)6D7 hof98N?47&bi5F?@RD+uTrNfFt)yNN5)Vi!6OCOCqO%MP8 literal 0 HcmV?d00001 diff --git a/Libft/ft_isalpha.o b/Libft/ft_isalpha.o new file mode 100644 index 0000000000000000000000000000000000000000..f936134384ebac76d78e8c6def92e55f0fe03b61 GIT binary patch literal 632 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg{|11j7BHi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJHe0cC*9gXskeu`o2i)PU&t_~iWDg2d#K_|m-c%)FHNcpn#J zd6+p0FhQVU%s{pRkcK)H#dss2oCFX<!C2I2r91_6*7 z5C-W5*+CBY@62%V0XM_W7u*gzIanDBUo4+51q^p{pqV0Iu}q-Y@%d7~a6yQ*LezO6 zi@gMjU7s(t0;*Sop&{r6Kf_L-yF~s2X^?pj_#Jiv?VEUjIsO{Vt>Ewy0DA)_1gC*| w*o1*RK9C2Y02DfWKu^QM86?GzB+n3^RuZ3CoS0LPk;sr!l3QR1CJkWv0U(J-hX4Qo literal 0 HcmV?d00001 diff --git a/Libft/ft_isascii.o b/Libft/ft_isascii.o new file mode 100644 index 0000000000000000000000000000000000000000..6895e02eb9b0f074c0d3d2b35b63434a98217467 GIT binary patch literal 592 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P08wF5<5+(=K!zK*m@PQl-1t4GZ0X+lr h8%T;DNuD7-tt39PII%c6Gm{~wB)7m2Od7!S0{}(4JCpzb literal 0 HcmV?d00001 diff --git a/Libft/ft_isdigit.o b/Libft/ft_isdigit.o new file mode 100644 index 0000000000000000000000000000000000000000..922557d07d952d8a42f60e7d36dfb72bb195ae68 GIT binary patch literal 592 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P08wF5<5+(=K!zK*m@PQl-1t4GZ0X+lr h8%T;DNuD7-tt39PxS%LAuY@6|B)7m2Od7!S0|2AlJTw3R literal 0 HcmV?d00001 diff --git a/Libft/ft_itoa.o b/Libft/ft_itoa.o new file mode 100644 index 0000000000000000000000000000000000000000..853a82d120c8aa5ad2a5be249327b6184fbacfa5 GIT binary patch literal 1128 zcma)6O=uHQ5T5Ne$!=o}g+jHc8}L$)LhZ!}9u}fdr3WcJc=8cae-`pnVWmPT1ab-J zCFn`PimgTU!r;henL?o87nB2o@YNZ{C|X-#0(J&8MH=exD#x z2*S%a^geIWP{?Vh=kNZ#m}7yz<}(n5=LFoW@|uLO?>w?24k1>r-CB*#;qI5@VLrz0 zsFGuxDq##;A@b$odMK3@Zd*ZLcXXpKVlK62VXi z*T8-cxEO2(16qJhLT^G@n3t8YJU`h2cKdma-I@yNnC8^gQ zYj)1LPUp6($7sq^^=*C2d^$&!J=)S=@O?KyJuhMQG=;uv@&Hy_W zVA*$Fsq9TmetdodHEYVmf%bvwU%~lGZMcVOa{CGDdyV>*tP2^R1F_6~I2g=uZ>`Qt z7x^9=sFBYOdgGkUsyOOzW?PtH{kD%RS2ZjN-z6HQB=t?g6}FPjA?p4qtZ^ zas^v}=Fh-_Vm=+%I1HcT=V4C<-0bq-D4#>#vwY8wU4F3B*rrC}@gL!1U;+{Ok}cM( edzMY2m@5>@c@lSRVcF#z73|{rMStZ_#g{+$EZs){ literal 0 HcmV?d00001 diff --git a/Libft/ft_memchr.o b/Libft/ft_memchr.o new file mode 100644 index 0000000000000000000000000000000000000000..a0a51afb13a7db7b5870c94d8eaad50fab46323f GIT binary patch literal 648 zcmbVKJx{|h5WVz+qzV*?R!ZrT{)EB;-8{g?z|eusLZPS#QX&)tBO?O?{RLeaS-T~8OM=W)hv4B>fMuTGWdDyv~HWpEls`#~(v2Ny?!11Wd5 z^7^d_TE;gptO&jdZ?^ht{5rG-@S`oE7=UpR=Y{Ey;5l}IU4V^i7~IR>_>ZNJ^gO9i z^6Jz0&80-uM51hXUyPMc9n7vPS0t4(&8E;Di)P9jHJt)&Xw4SLiO$p)9mlF1D|^(u zqq(L$N^l=_#dT#G^6d9C^-|=yf8vP*dl)_x9tMYa+E;eO2rY7NF@CNegJ{3BjE!8 zgDwPd6^P13aJ*S|!;ugKlf0cb^JZpuZ}0y7?PHS2As8cWl|UAw19a>QsTwZ4G-VqvN={6D9Jbb9&I(m2z`E zuiu!UX8bCKx!^5$bJQQ>m!Zu9U)mIk0T>r?e%th4!gCw|TL2r^Fu0fZ_>X0G^f;)H zdJajw1fp}dnOHpDivuogzh^uN~>4%zDp}w^8|8YZRiTM2=6_Z+sf83}Oxc e8kO;}?EA13=5&&KiHzHE6nE(;iMvaBZO|tV&tNV9 literal 0 HcmV?d00001 diff --git a/Libft/ft_memcpy.o b/Libft/ft_memcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..432a71542dd2a40a3eb37fb4330688e9c6f1b691 GIT binary patch literal 680 zcmbVKyH3L}6uluWDGIa_trY0g5iu1O=#~LC28IsZ3<^a>A|*o*urYR|U(g?5=qDiY z0l>msm=Yw0j%Fa7>)L9Nn7GpMeVu!3$9ekt{9Y!q2*yhR=yA{hVCz7lqQ94CT^=X} zB9l9)GZu7Th`4(l>jX}S_I{^5&rNi%1J*OMs#Ks`!(lH(a1lnwK`bu&S7-ebArAKP z{jp9O+V4WlM%;ndNBt$gjounC>#cwcz?j7KBRziy&$$a60&L7-@GS4~AIl!;Wl|;i zRw4QBl1!?;ELk*7oKbzlq8(`0lFGa`pjj>RNaBrZ%ugK5fs@!I72oycQjw-9^puu2 zs`reRt$M>0+>+(DQpcB@MH+rU1N*h6S>`EC=(EzCj9_ICSg$k literal 0 HcmV?d00001 diff --git a/Libft/ft_memmove.o b/Libft/ft_memmove.o new file mode 100644 index 0000000000000000000000000000000000000000..9d5e31641ef589af73b037128240e95a73f0b95e GIT binary patch literal 784 zcmbVJJx>Bb5S`=D15q%6L#`LfiqSo@;$F)FQG_TH@Cqf+T&DRZ2 zDNf#j%!WUJjYs^T-$88+I<2js84BSh&JSb!J8TJY26_l(;T~4T@{IpTbWe|?JgMg# zsh12XnfFx6qKS0+#SM#g!CjEKS*}CVT;!6%?gj3b4shs^Hmu{R(B}U1tGw+OJBew( z=E-;}y+D%?bMy?iUu>8ez=Ws+*G*YoB?QkH@us!Z#U7PO6uEiK`wI_d^g`@nc(xFa zv7_P99K1K~!2Zbf6yBjXw8fKoL;a6s{k$giZGl Sy6?9x>vSIY?QMOQ4gL#Ewtlk! literal 0 HcmV?d00001 diff --git a/Libft/ft_memset.o b/Libft/ft_memset.o new file mode 100644 index 0000000000000000000000000000000000000000..3524c0760ee6ccd2ade520ebc4f7777a2b686b43 GIT binary patch literal 608 zcmbVKJxc>Y5S=rLADreygo{?`B398xuF4e(78VvM>;_3rB6u<2ik6mX^9%eP=>&g( z*jPuajUX7XISbD>=Pq8r%7M4@@n#;o!#;ezeJv6>1e2o(bR?((ur)wu(ceekl>3 z$0Swb-=SAPybMuu)hYRHa24Q(TS7AclP0NG5Xk&KyyPx$2#86KKxU=qKbGFp+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*TVsc4*XM+jxbm+v!^8!jY5FJf4;wKUdwMn$I@GBtN2#3+mB1MW6!XVzMf%A-dApx6%`~d^@o?YS} zFm{4JK(r7`wMt`egs5*WdzhS!18?5EnccV9z1)Ake+?3K5kgWJs7VnA5EHK!K}FdGM2vmq=7 z5VA=66%_J5<1o>{13(IpkZ&N6y>j;sW9a|H_Z>YnPrIwl5|!Oj?Bg;St5uR*>+7PU z`t`-+KG8D#$3_9^*Q0b(De*@=LJb#;GtOTlTH`H5S1(cRMzo7{*mE{TRGud1QF`Lh zJYB2eyz*^`pZWtoPJIWtPDkiay+pHHV0dh1TD&T6AbkytyU&7T-n#@IM&XB)!+03w zPxApiBN}h(fF&k@k+%JP&~1{U0Zk^);SWZJ@(ZQxjqFov={-i-uM6jq}A%loRw~N0usA)`}D2VXDrDFqy zj&V%ZE={&d9MnbHp*Wf?D&0j$)9<{ThtJf42hKfz-}&x+_nmus^ZQRLkwy?+8lZW0 z0#L|PXw<4&;Xli?)Xv1(aWjytF6mIpSlTvj+m)J~d^>v^+g`xI_Xx=sAkewkKqebo zlv?;;q~eKplBnmidAw4;W-^D=g#^C$>&dwVLv1Fu;)zA2ViOKH4am6ylGJf7{MP%&S9glZs;_WrBRf7o1nrE@8MG2qaT$WEms+*^nTHw zFS)5uc8?WwjW){PGQJg}Veod0K(ob6{$g+LtFEtK%Qe?3H76D^~ox{DPzq{10P6$JPfp+jWZnqs$M@lRts+OVTM(p-2i z7mczn1tsnk%=5Z>7sr?xdmh^mw>kLutvEuWHPwfQLTW1&Hyu2L;y$2gw2Y3zT`9zyJUM literal 0 HcmV?d00001 diff --git a/Libft/ft_putstr_fd.o b/Libft/ft_putstr_fd.o new file mode 100644 index 0000000000000000000000000000000000000000..e34149bfbdabb9b249a3d3fc46968974ecf735e1 GIT binary patch literal 680 zcmb7Bze_?<6h8VagUSLOszsY>5vrwCvbKf>hqgob6a_W2D+(^bTU-VAY}5XMbPM_e zqNTZ--V!uwVD+8bee{Bs4t(eP&X0TEJ@?(ezkVzb1qdcC1QbLh0N5(vYW25kn{-=G zAoAic@`9kLGpk%vnE=F`IXKSz#GbN^ka==;8BWg#(S_F|%$z+fS5LBv>y<{aVlyA^ z`|AZ0Bn-b{o&}x2FmqKs)|6=nVg>lFEutBKNt5I^A!fi$@D_L;I0D3^M<8eA8>0Vf zpLg^yZ3PEYhdMncKE6uFhy64U=K^%*-dwI>pIyw4;a|lh??!3VcX;fEY0?AZd)?=7 zYVu;y^;0x8l34nut-S$ecWy0y^xw(6bI6|)EjuBZOo6dW5+r-gZh#}Qps{su1dDp_ u97Vk3tBdr7gnR#riSvrjRjrh(5I1T?mD8DOT_MSNn@Xx&-PT^7o4x>P!Baf| literal 0 HcmV?d00001 diff --git a/Libft/ft_split.o b/Libft/ft_split.o new file mode 100644 index 0000000000000000000000000000000000000000..0274283b48990647c87703b37087a4f2885a4d9d GIT binary patch literal 1976 zcma)7y-!n76hDs&ZT+B8h$yIq4NPjpLFr&pttJi(#4xy+3zn*lrBr;x8e;Mi784w7 zWHg~Twf+Tt6C^BbL}HASDd5l!CK@#XlUjf0e#nC^p5(rB&&NIIch0%JUH|>{&ru?a zK>Rs`Rpw1E7U(qAkhDs%>2rz?fIev-Bm1G_p3O)h;c?eM!DqZAOyJBvzm5x_^!FTjL_S&+X4Qcb! zZq*;#4OsNO>R;@BL39OJI+y3dJ7I7>2is$|flC|Cy~4`#c|ME6caOt&J3;wI54jcS zmXQCg&L22LgM7ZKW3zp;C+70`0`j1zot%?n6(RG!Fei5Ev+)vY%dhyv$Hpq5#+Fij z4mHAODIP92I>=?;B76f@EGlt!Ep|WjDV$2b5-r6=Iba1JF@`mbLE2g=&-vPQz9Rgr zv(&-3Dk1c&1GRI{kf#=MToo@kZ!m5(8eJ9m)Mu}kfKTB(FpJF)?QRK*ZtFgWErq!n z;-2qeUTamDm3}2!6Dz1^KW1qI<|<Dj=JR}MT&p=WC5MctDCIVXy%;WF-OXAN-_mf$?+<2e16>PNq>VIB1^!(Yy8Rh0M5 zYmVn-mFjWIS5W&V@Ub6e%=hqd4YHY+xfeWt&P%|?_TO0p*}5}{+wqS3Cugr?<4!0{tRl_^dqiiQ-9*X`MWHm5c7_6>X0Y@Fl3KN z{A2OTT&Gt)c|ay{-xg1@>6A?(nM;~2D`)QEpNd2xgFQBBaY4!H+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|z0xH}AHi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJIp1j+!J2h$4{Vqs{2sR7aP@yYqQ1&PTe@uhj?nRzMk@jfod z@++Vm1t@I*G>jR@4gk_nr=l2d1eB8iVu&0sP%#h#0Z0)@JOZk}14x7T+&~-v#2^4t z1HvG^AUntb|C<>uKHz5f`H-Js=L>#^oiFqmEP>{Uyx?~D$-(Gg$-&4__(FWX6bBQ7 zIYRt^}0RzA^#=r**Bv`zFr1+8K8RFAQ;)_d) Rk~4}Ja!PUw48f!U0|4h5Suy|s literal 0 HcmV?d00001 diff --git a/Libft/ft_strdup.o b/Libft/ft_strdup.o new file mode 100644 index 0000000000000000000000000000000000000000..ada19c5ee0486eb467f07cc0d4dbe8f7ba0b764c GIT binary patch literal 736 zcmb7CJxjw-6uoWQrlne!4(ejTrJ@DvqGJ#R2M31^ZqJfd6w)?mib@dzS-KY79PHTs z3I%_F=-?c;I5@a9Le+EA7p>yrf&0$6pYP_8ySJD338DxAe8gY}EOIbl2Id9o@1rZj z?O*~?=&OjcMP*(Ht9oil2P8ykbGP*Ehsu_M=W%Zyhr+QK*-RmX&>JTKuyC&xk+3K1GtFeTM!9w54;9W!**Z{u3_U|-Zj`4 z{2zSW(*3X%?GGL5xM}j;wC1D#!d1zCRy99Q_QOJ)I&_}84B`s;o}&552)%mh)ohz+ z758Vaow-2@>>~Gs86JA0+=p3Q-$S13x{eqOTkCz?+qqH1W4Nn568szdz#cq&S78Yp z2WP=3DuDRA6Gd=_A3$OeoWY~m(&yKl8q2dBbI0C()G+@mPh#H^$JUXdn`fb}G|f;N U)jEk<*)SS98CK0K2In%-C!!=_w*UYD literal 0 HcmV?d00001 diff --git a/Libft/ft_striteri.o b/Libft/ft_striteri.o new file mode 100644 index 0000000000000000000000000000000000000000..a0a8a3eb480b1c2684ca86ec97c56499edd8e498 GIT binary patch literal 624 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg{|0V>=9Hi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJHe0A+y8gXskeu`o2i)PU&t_~iWDg2d#K_|m-c%)FHNcpn#J zd6+p0P{AKS^O%8b380}+r=l2d1d;<{h#W6aF%Sa*ND)X}0muO94*=2%K$;uG24WBZ zsR3b-UXU7c!2iPx7yni>t^C`}FmXY%{Evs+3_t(#GwcMKDYBwD{>MxHhMgRYoZTFZ z4wf8@423Vm=Su;@$Q&g9g4^Ne1Ad2{D}m}>0o5roa&+FyGC6ysoJ5PShN=l%cx z;(x21Rs!vrcz`+n8qAH*Z~{d;1^}APCIS@Y19=Pz_<%GY(6g}c1xfKE$uq>KmBbg9 V6lIpA7G*Nzl;jo|f=L6YegJtAPvQUo literal 0 HcmV?d00001 diff --git a/Libft/ft_strjoin.o b/Libft/ft_strjoin.o new file mode 100644 index 0000000000000000000000000000000000000000..de774eabb4c94570e4232da47ad82f2dc58cd1aa GIT binary patch literal 888 zcmb7Cze`(D6h5!lG(XxJ1RrwX><{{2W`Q@!NI}pB58`Y`C;29Ed(KuMaUFz zb1RD5pR0j%jV>zgTw~S}(s|S-y*X_B^1+vsYLYlOs|k z_@;HPT-;dAS$ebddA;;T>%~`oj+pgy(%$A*Pv-~FOHuxh&4Nw9hq))X6b@q%_Z^TB zZ~@I^fsf!za2jjqJj-6m|JVA;IPX2adDeUJJ8u_D{#fex)H;iN8JZI zv6nnGhIQPJLa&AUneRaBCQ&`?s@TE%kc@S4K4Zk{Q-;ic@AnhbveDOlTHL2r2jB58 zTI{=nyCO!ko`OE(ee}&cnlY5Z(0>??N;d3ega9*C~Ra7D~DUwX+bhuyP48q7Y-$69pR~jbIh9PwX!K zgLIa5Vk4GfAs58L?jpqaX0xX!SU4~{Z|CF9?#|wQynPNZ#u=VrDigvfoH#!mLaZ&Vul?);ln(Jx?JX9`5n*RR4p|}cd%NXa-VsNo z~UirciCu_)VbAz$X`=!>}O+uY`CF5p34wShYr+|D-8dlLI=^afYxGZc!`)I(c*v@J&*ItRsk&iTfL5-U2p literal 0 HcmV?d00001 diff --git a/Libft/ft_strlcpy.o b/Libft/ft_strlcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..b280b25b58ee194985258aabecda6f07dcdacef9 GIT binary patch literal 768 zcmb7Cu}eZ>5Wm;co?__|SQ06;NDx#*;U-jDLxe-yN0?!tX7!@NMR0LU2x`+&`w!fN zmbPe#hK5%VJcouhUtspT=l9Zvh7RuTclX`>zI*q*`_K2UF(QQ^Y+TSZg9sEd1vPE- zhp{_}%F_3lh%}V5j>tA4^wgO?;1D9QzMUAv4tkb=`M9?XV^h1R=+v+mB6*O_?<93` zk~`hc?FzB6HhgZ#AR>JlJSy;o!#5bsu2_Pdg!VsU9K}!w&%pU>0N%|Ld=%aX-Gs7m z4J-HZ9eoafe@IVN9=Zj!(Y>WgO$~Qm0%X1V$T9+P3pAI8MwaP|TONfzOsyKK6RqH$ z2~&$(^-{Pq3v9=z_b9Cx>JH6dHRPq@R$HSc-mqWK9By!2RYNB7lB0R2(6ZC-byKB{ z`#nlL)=))f4)G0UiYgSdXW)L!_SWkK>o^Z{Ue3WBwUX#`3#$!$Q>CSf$Kf@|_vKao zl4(TP-8?73F**b92XKVnz>g&xGQmfIp>uw%p%6dFo-U5{qf9b?{)1CF%IMkrqHPy! Frf*NVcrE|{ literal 0 HcmV?d00001 diff --git a/Libft/ft_strlen.o b/Libft/ft_strlen.o new file mode 100644 index 0000000000000000000000000000000000000000..e5563189f7ffb9f76d73eb6efd9f398b04828652 GIT binary patch literal 624 zcmbVKp-uxq5S^oiD>>+;grrb)5(yZBI{~f&QBgM`r38}pD6oV|5=;|R9j?Dpi6a`hzWdZqgSy Cv`MJ| literal 0 HcmV?d00001 diff --git a/Libft/ft_strmapi.o b/Libft/ft_strmapi.o new file mode 100644 index 0000000000000000000000000000000000000000..8eef3c68ca51aaefaa12c673617b608def692e64 GIT binary patch literal 792 zcmb7Cze_?<6h5z~sZ>f3ymHZ&s6nWfY)YuMhK7c=o0yT{uj)mC1P@w*mV}0&A;7MOPl?D zv{m}VRv>a>AM)&dsxE|?J~UMT5Mph4eeEZ9*pnix$Fmj=Tf;+^)59o4s*o!tQ>NI@ zA7t{ILaZ#g>kSn|6>dO82R{Rzd zpAgOA?vb10NIL@T8C2u=8uKrPRr70sQ@@s&NB@pAuEJ9L?w6rNr)eZ=RrIycH=b$5 zNn5D1HqTLJDlSp?dudog^R?GAoEmFJG@9r58u#*jm1EKFmKLk{FXdZZ)ZIH!@5-Oo zFPlV!WQ=!=-Nm>Ft^NsM5X7-4NDzx{s06-Q3c2b`U7_nO)qvPC#h$sFP3K9`T(X!U UkxOQ?g%oAYTye%e`E`lD082u9{Qv*} literal 0 HcmV?d00001 diff --git a/Libft/ft_strncat.o b/Libft/ft_strncat.o new file mode 100644 index 0000000000000000000000000000000000000000..9548586b43d63ff5f27709b1586807476c394701 GIT binary patch literal 968 zcmb7CzfTlV5T3^qcF#jj1Ig+Yf*nUfL>r~sL}?6#1qI#9Wj%uNI1XH+2{E~ZhU6NF z_ID-t516gg*w_&)td;7Wh6KAilVkbj?Y``V&@kDVdGqU=**EXt|MBT4ksuI@E8tZ= zOo2hSz}lQH7CWYr=)882&ODTsDHT@Ugc*iXOAE_OnQc#|Hw?z(+Ut@C9}m`GWl5=E zeXU*&LiMWl`g!e{Qj3pmjJ3s?N}VSFW1MM-bYwf4$+!=B6P(1ZAsGzfB=*mtZUp)r z^h4-8_$io)bC|i7doW*?Vkr*$TXMhujdt5|virM0y(5pJJ*m2`pnuwH6|sj0=rN%S ze$V)vR&giwecqnzE+E!MK6-!9UL$hJZR&A~^td18hUtcuxsUYLe}9J>KRD-?Lp|+W zjD`D{h#iW!AJ5QnfG2WISNQYjy}|Q*7s)*5;~ilBL4HYGZB7fCM~}$m{=hqqW6#bQ z%LHFbKk9hM5xE!oQ>*9>W&hccS>FWLkNzV6iOA_<5}-}=_fj>LM0b&o z_c^39(ova|-qEc$(U7vSz2BJZ<0zBRi)#&+p>`0@E&3o;s^MMnv!1ww+MvXJdyzzC-M1XRIlMH*xSG^z{WWYuH_#8vA{~b4wuP) zcgg=Kk*}A9uN`<7-X%~UL5or3>Ih( z&)Yfl8(y7BGujJ z%>h}a&-sop*Cn_(n=kjDbJXtZ4@pb&UdRnU#C=`#dXITt!`Dzz_i*(XciK90)sOW3 z+xNw1-Y1xsZ-2gwEWY7<(OMP(8lHn4hm*)N#`w@ho1@95aQ<&nq3|`OV^JRiwIA$N Wp|^giQcL{uR#nPDrM76+1^EXv5v9Wb literal 0 HcmV?d00001 diff --git a/Libft/ft_strrchr.o b/Libft/ft_strrchr.o new file mode 100644 index 0000000000000000000000000000000000000000..13f006b4b3c7ee1284c5c581ec3c11f49aba071a GIT binary patch literal 672 zcmbVIyH3ME5L_n#8v#iHk|9l8QUVQf=K>@O3W^kTCuBfDkPyrvC?nC(<_qF7zmU#< zfM}>gcNF;mQ($JDyEsTlNUSusyEA)pkC)HM*9wtE2wo~ciwh4xYyv8;eqRzzKj#ia zrnkW}N?I2}o&DZ03ua~1hsgS>KkRp*Z2(hk6~h36hnPRs`+LY9`eo(-4xVA~UOwYLkv-AtxJK!_ zOQX!DRJp-OHOPnOx~c`KV+For(XDa^b*Dso1)umI4c3;fls%{qsn8UBW^)VFSMZ-? znLG9Sd*9d&QrxSbl*OBQQ_O{zKi5#RjI$Qk&{a{G;9sobb7D=fRGZUDTu5;zqbO`e ObS>N6oqXNa0 zmBUg9r&_KR99OJVR+lUHgt&2aI<6Y$rLzSb{3weJvIMEoLgPHvli;ZRF(iROoW%Z% zs52qoK;|J+;9FoOxI*UIxYQy3iN?D2K4|E@V3*n*eQq>Nli$(B2q2q#x2cVD*!D8i zXWuYw`|RhuE^NenFJt%3I6d@q+c#dHd8&Md247}t7T@p!=9?KH&h?DR80?d^Cp_KU zHrMTEIokL@>*jNg50b!60#l=XFS#|_k~puLb0eI=%mA?$JVVq!#E1cdYq_qAJnqqH zic!$G(!)O6JG%Hd-X-ie)(e{0FLH({^7qh-bGyhjGV8udSq$C+r3%RTh}A9L*gZH}NZnE`wGMPDP0uhefO z{e<&pIuu{S!7)9F#G&|0#Bn#Rc`4r^F9CZK66a{~)5Kl3<{^<{@tw!}wd}}FWTk}Q zc!HnqaVU!TwXm(`yd-Tk*G;zhG09hV7HWE`p8sd2%ut`UPalY1KVXx%?}|rmz2wv$ uL$6oMyi{D}cZzkTmX<0?b?eJznSHn5JRngnluA{HN^ZG!E?oIMn0^9Qn*u!m literal 0 HcmV?d00001 diff --git a/Libft/ft_substr.o b/Libft/ft_substr.o new file mode 100644 index 0000000000000000000000000000000000000000..d1abcbe0e1551f4589d91ffc49d0148a08dd3dff GIT binary patch literal 1000 zcma)5F>ljQ5I)xpwh0hbtuSZ63BR!Y*+x++pZij;v$ znIbVDF*Gna{RPPcQhxw~fw^qYjTpMwNWpw(`zdL}(39`oy?6J0clJAf`}6znB_fR= zyo^HE*eO6E*P$}@{=c+iB+-6q)!sll>qrU{!d-ps_Bn)DTv%G{@0IsqfRC|`p7eyq zsw#)A5XFu1=1S2OJC)t_$_pVLKNyTFoVv| zuK|~VZNuJz%|f3*SvZH4v0UQ}G4|(?sHT1I?PXfM`&y%^=Yvm2Q|-_CRNx&gw`G>X zrY-{Tyq8%gG&SnVcL$UEM02P)5#=bn3hU|1fix)eklO-|G^-wCj6Md~7&Dx63=Z6V z!U3OoS^b<7PE+;AOokft*80eN$2Nu1jyX@I(eL9+Eg#_9Ohn^|1BY6t(nfqVsmXkD z+zDIg)6}f4oI9AbsQT15s53p(m$~lW1O65By^&fNo{I}NVXweZlIJ}JMa?OPaszSvlWI<5h&{9? k@zNFBJI}Y>t;BV=N~;wT<&{!tqevyUym>obc~~L;034LLZU6uP literal 0 HcmV?d00001 diff --git a/Libft/ft_tolower.o b/Libft/ft_tolower.o new file mode 100644 index 0000000000000000000000000000000000000000..6feae5c437e7a3858d479fa91e0d6b7aeab4b71f GIT binary patch literal 600 zcmb7ByG{a85FG@CWR=xufmHhmYNI8I+EG|g&`k_rBmox9HBf42>laY^4cl4T5gTo{ z+{PcUP|pl^a7}ESX7y*vad)(pg_PjWv`1p;Ps2t6y@#hFzuGzUJvQ~2MlC&N*0zyV j+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T0Tu25o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNe&jdCVX-&`_vTQH(bNN=X1QM2;7z7>I!YqzEL=0c3#mTL5VVAk7WL0YD4_ zAT=Ni(hIf&NRtZwJ2PB-z|FAp1-HXaj#kFP7t7~M0pr0OXr>5Q>?Kg_`h2Mq3`k;) z423WF8Fm8W46Fvk2C09*@30eS-oyjU@z-GP0EdSF*qJaPI1SXpCJf~9fjj^OAm8%= kJp~I#kQ6_XJVSh1Nqk9uX+c415kpQ%Zh;|~G=S*`08)TIf&c&j literal 0 HcmV?d00001 diff --git a/Libft/get_next_line.o b/Libft/get_next_line.o new file mode 100644 index 0000000000000000000000000000000000000000..dcf776a4686982b7a8e2055048374f2b6a5d706e GIT binary patch literal 2936 zcmb7GO>7%Q6rRn-@wzE>f+D#jQXGkkb6C_?2vVdVrwLLIIYd>2ICUEA4GuVVNsNjV zRWiy2DLoJY5)wZ(f`c9P&|B9hK)&RF1XLC3(YdWFD&S@#1@pc6vDdq4fsw~=-pu>` z-u&!Oe?9*DG-C!sqrYKvmj*NFXwRX~iB-Xd{@NpQ>YGRwkkw=WlLrYX+3_rG?dn{)CPL>b<68p^0EhoM(!g z*Vi&7{$An6Mj^}j@={L`107dIO{QR&>{VinMdTcX+iMpvI*Ts-JOg2LG!mluL+FhW zJ;m5v&{6aibZQhcb<%~Hz!BtswQhs`a=bHCJKkmcmBpl6UF5E1uy?(Cw}A-V z_-;4Zeiig5?S9W>(c;`|L zIPHIL@?ZUUHAh+JD9-BMsK^5`1>zc#`84C{y1*;2?#K5<<+lY}DT8&$w~ob%sa%1d zrEJRl)Abf?TSn|1!oR9=((xyiP12{>9(TKmkREJa4#Y_^*iaH4T}W>8I?~fUM4*Ek_Nj-b!FJ2WS8QUJaD0Ui@huNy|&v_ayo9Y_mqtV zqkM&ISPVLdTl>X1pZF1V(Yh2biT89Y0SwXSJ|?i{+KX9%xDuXgmF{`G@j|bKy_|}$4!s9rY@lwKOR9TeFxLM4h`2;MhfRP+p9up^&FgQ4 z(0We2j!RF_zoQ;!x}4EM`roQY_Kx%#TDS1sfTz^HI^)Me`3pY5r$P=kJ2T zwOs+F^)KZ7@@JCHXF=iGo&$v|8}EhCKd08ql8#(cG_B~2q97zcQUg7Mfo>lV4}i1I}C9id38eVq~n(zoD*X{9ARGGnZFU8 zM{UX{Zg6hT5V;I;ULCw-5fHf^P=jxqsS&<4Ht#zxuzM!`wsFyU4byM#yK8E l`+EQ4>fAcz+*CxJoLiQtf>pF^OO-1HDcYs#mN#ySd;{UChS2~3 literal 0 HcmV?d00001 diff --git a/Libft/libft.a b/Libft/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..ab8296cf12d707cd6c3ffad5bb88aead415a8254 GIT binary patch literal 35328 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 JW@C}{{{; +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/04 07:53:54 by eunwolee #+# #+# */ -/* Updated: 2023/08/12 16:24:00 by eunwolee ### ########.fr */ +/* Updated: 2023/08/12 22:19:32 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,6 +27,7 @@ void lexer(t_data *data); /*lexer_uitls*/ t_bool check_end(char c); +t_bool check_last_blank(char *str, int i); t_bool syntax(t_data *data); diff --git a/libft.a b/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..ab8296cf12d707cd6c3ffad5bb88aead415a8254 GIT binary patch literal 35328 zcmeHQe{3Abbsm})b(G>riit{*5^GgEHRHpOY_qIL!NNZF|ZF}0= za=RaGZQmV5kG8g5 z&4-=)B=Yk+oO>EH_Y2M)2c5YG=K#I1%eg#g>${yhjQZCHo%;jOsiV&QDd@pZJNGHj z3&YOs0nPj_`h@x;Ip^L2?fj5)zlGziILSSra|gj2$1kE2ud-g&xpSZw9&qj>EPvLy zuOWYEw{t%Q9edKbe+NDItIqukXxFbe_WW_uxo>w|?&(_{6|y@%Yg3Bli7R&%l6wA2~WOaD zKO)CQ25p>1hyCE8$&v06<$#K#eMfy}v5d_cW8M&KZ*;|3`joz^pl4uScx>IdGfQi za_CMGyJGEpzGwKzNO#X@{`k=I14F&}{DJ+&LVPhkksSmxh`ftHwW~4qkDzQD{(ae9 zsEmIkR^styZGQ+fLLO?vL1ZPd4*%Jf=cpy!+ULGCztPPWHg?Qr*42Hg@TIfcG46Z8 zvq_E(;MmvCZpXNkj{T9Z*BKsLz_EWmyM0RAHoNhs3Y*+4`qgv`l>Fv5bls+Y&ey zb+vXl9?^aojxAp+jtv{D#j){;w1014jES)upgP=yUNKd}G4C+jw}M8Xw-v{)Il*xZ zpFhO08t^IOPy;?~{5Vz>@ac`-8sKwpD-^K$C#q**Le~zT6X-va;nVW9;uEGslHqeR z@E|}+sb~9@Po(rZ2AcSaz^oR0QqQhK`!UcQ=yLd!{_1&GN^YHS-@5r?-Skc9KkD0g z=v%Zsoq@YnSbuiAVKsRi<1KpktCx1pz(zJvuTJ4RuCZzIQhw&F2zi-XxFP>dJ6JsGct_k)Id7H+HPSsQ2S-4MsL&pOWd=D&w|)x%3Vcj5r90si+S z^>a7f#|CX;6|E3oV|H_^>WxV(uU#j^T#wXH7KU4a-u7ZBPS)2bL_fGL`u`J^|a98hu;&51*}o&&9VDKK+DvE%awG8q&1^{)0}h*AAcNrx>WznZTELno7TW#Fyb=4fEPc2`oK4r|8X|?+Ff@dSTk6)<= zsSg>qqHaJ+h0`u=e-d;X8n3xNy@a^e-EQ&nCbxKHqgyQ8-LY6$54s7o-Yrs3BL215 zxX!(~fbvY8d$X|h?DkB(#=+Ki;8;idLVd?#3uvaU@i~?^n@+A&{;-?fK)x(n=T6D_ z&|bddoIkjAYwIo4;koA@My%{o`MgfMxUksQj=VATICsJy02*x!y)<`k-)%@IT zs7<-)1ifvz-wNE{?`E$6`-QE*JMn*i$86zo*G}wF1_bvgFXG;C{WvfWxp)Bhy^40g zd;3p-+j;P*gjX5o8t`i4x)ffy!V{|N)Og*K#4DC<))22IZ-!UP*NWFy1WK#d(sCJP*3j!UUw>9E9vPw5_)>4>S)B;rp!l%9xgx@a8F`7 z`A5{lI8Iqu3fFQ!YQVLP|5CW-;^B&L-ClX!t%CnC^1>S8`t<;Z{A&4HaV_=?d?+V? zP${L)?v}8Bje%jD0o#Yp>|P_uDzphJFm%y=?Mu75SFB4KJe~A`e)5ZdwVSYH}q!IKNm% zw&Xr8BUekUgWLVbIV$?~ve6|JEXB!^{?bx*rEO2R&gi$zl*DV*^V&1ouL)iVlI3fa zuQAW2XjdZOSp*@aT`@k9@*@-4l~z#gs<5@Ctoqfc7iGtJ~-AH z@0h-cH9@R1E?(xGmNEityO$dO63tJ~!v+*YW-zCPy)oPJ)e}2!aDF_4amz-aC@ii!$~vPCBwOsnf4IMc>y+Vq zl~sf4vWG6rOWe`VK3)DuX>*tE^D2{sv~sW~Zf9iASRe+gmV*&oACt*}h6RM_)pFQ5^L)+ zo{?82$?kxE!xkJ2<1f4};@R#4u^Qr8@alIS#;}eG#ieb@BfprQTO<7(fhortDaO8n>XAxTmqA~sF%h6i0feNm0JXcihjoe zbhr5^8Lpcn#yA(?Rbq$WMXXY1BaZIpt-yQ|yBrJ|_hs<=F4PI}`wr$YCSz=jR1v=( zZL9L%_i`g?9KYChTLSQE@oQi({93+N{C>|5M^UfRo(tYm;&)#8L`wS=e9|cy{ht|XI>e(RbL1HqJH`&V$+lLJ8xM09D6$#!Qu3L0@qUkR_Qz3YuJ{# z?ZtM(bR&F>h4t8nYV|1_h`kp+hyAEHj=nNRGdou&+uAKgd1^solpXEU_4yl|&z?u0 znxVTzw%8uB_Cv_V6w0a7DI;+oX5Tcfsciq0-rq7m<~_Jb`Y{|W^r->c@?-Ksok4k- z2W8?Ihx(rTsAA*J4e^wpaFaRqp2v&<+N8AyxjnIUC^TsekJhQ>2p1R8qi~Dh$OFs$OGC3}69iPp(%*%zlVdL%=dD>E_Z#?f_>iDx= zZv5NmpSPXj@0Ig{o@#>6=;akMy|5nqGXD9j!JMf{{_e;-CZ^jBM$2a*hLNjax|R=nXGo`Fl`m$J{{ z!(RT`u%mskC&&_tA+5dM(;j=y1onDu*CXfTYD;ki%h#$Gz8LU}32sXNcS`w0N*Pz9 zydDItMK2uE_7kAI*URYzJ!L8)aRu09_`S1;E6f%iF0Db*=9w%OWk%+B7uy#euCV@y zGS1gH-&23}6#Z3^nH99dIPux4MT`^o^i`bi$$hF}zGwF(DL)dg@aT-$!qwwF4*1pj zrx*3EPAG^hUn|}x1Ac&3DW$~wq_&KdHY;8`L2JP~<%IGw4oaT41@FMvW!OH6S->t7 z*WJbLRlvL)2j(lSxuXnrM=;B{9PGp?%79>gh3)2HPm-~XNnASy0HaWzFs@5JM>wg~ zIrgDHXgHUrc@w&wP154M{n6O^2_%Tm2CtppH_i({GQ3;9R=j^a;KxDD0A$2jTEDML z`9y4sR8YJ|V5UW}dsb~eMt_m(Cu5+kpv&Ps#+WBxLBial;(UyH*3Xj^@0bHYN6P$& z{ubvj`>Dre4p#2JJ%%##v*wd?I?l_)@534<=5(+je%@7@BV8-(jjz+d&+#!r$PDLw zSJ58+-8GpPB4%Ro6yxRn){EXgCFXAvclekJ`*#j=xGUg=p(;L`mb^~c!x+e}@P-_7 zj`=`W*bY zwkJQfHT#rS?u}2R{4!vM`{_DBd5@5+Ym%uZ_noNC`Q8-hZJF;S)=lvoW-*>g*~D{~ z-);fMSF(oM2<*>et@JYeJG8xn?I2Hu6|A3*%Vg zdC>cr$5@SnG7aP%VnFuO=@u+P(l9fzNVw62++# z<0E)S4gJDJ#w!au{9MNN6Qj>!3mdtA9_6?`iJ6F9!rZAph$$53O|VNXTnE7O(Wqav zfnho3M-l_UdDU{1d+JM%D#bpK;EL`|`!dOq4&a`|<;u7S6~12{!E(>X85Z zZHmGQ~r2lF69d%;zY4RqvC?-*!Yg)N#k3W~f7tfT03M^MES7&$u zNE1peU#nb=1^i;bPbpW%Cz9Ub142c)itwSQh_SCGSIye~5a?}-FTmHtKF?WshYI3_ z=%?Zu{@eQ!&!!5Var{vn|GLT#!rpW3#c!9TQQC;xQ-U^MISa||J^Lt0->X3**Dno9m#p5;3ZmGjyD54 zp`C>RkjZhW7Bktc3ou8+wO@wy-g-h&U2^HPnmCGZff(* z=3otiea{Rm)QUB zLcKdbk9lMx))LF)nfn90jwq97tdlj-r@*yCH*iltN4v-+e1f?^X5p`&nnoOlNlK!4zhU-?M(*%!(>qOLpd+%4f3-6In{Wv-wQYwWk1b69mPwTJa^z;;b7L} zm%bY18ie=1;g>)|IgXgeJvQ7BBcUBn#*N5NafEM3x{oJ(b>nh^oK}w8KCoLi^mzL} zdXz7QTst}LQfV+bwtTH}{69K4MP7MzJ&JVNgf#HCT%PG3L3Gmfcl{ruUbYoU<{h(A%ExC z2Y-IyaR+#iH)S(!S4(^5!siVp5%=YO>npmxGj$@aXKc>T*c!{~;G2_w#(DpvU$2ev zGieL`!ShmgG}mD+fjvmgb#C@5bWig6gWKGXH<#*1rDq^;P3}5BDnLk&yNM;r$5d|q zaEbC6lmnYt>M7FKQ4ev^>}gPpW0w1SArM*kZ^UtydI~a}?eO`ANGS-*8=eLY^&s^e z^VUzi-dFP0uis#v5~otf{THF0Ovc;6O5_Pd(tY^kF-srDmoRU7RO5_ChmYi+Jvyu} z|AqGwyj)k*tKU7TFUe)?!`(g46`%Zw&$)Qc)Oxqw0+L?u@+G__ty?*6!h7T*p3T3< zHW#}sa3OuIf0v4{l}eu^rV0UGFOnqzx$5*Pm&+XeegE^n~ z5tF)G-+SV9`o;F?eR8v=5=q#_P;w{cj5O>fY=4_~L2IO=a&J^!OI;gIm}% zKI{2me=7P6tTkPMZl6bNCe*8yZ0eP~YyZC5H28}_j4bd)*J%t{d{pd5$RkFT=ySLS zVHeI%Kl?K3Nq@0Fj`=ItJ7>?p(N5DIwbYHzx))l+Zd*R{!T|hcZ_B21Ofqi#U3_0B zu-e2ud44|K_%ioA1a@r;?HaHDo49_y>yzL8`#l3&i)WgO?-0ec_h0XIG6sjfxgYSOg6QgThw-gg{t5<;34LHH6aCYwWxAxey!Sc_AjGpb{u)ohAyQYN+YEpQa%70+U;GMxABp6a-6{QIQ1jz+xXaep^e8rEw}6M zVLoX8d(7iPOpk+A%A*BRy!=ZfXM-S@A!?;GpOm)>@7ug32gk_RQ+ zVE!RkE|>2a?CUNr*~?NSYj~%i!rshBV%ycy`vGmcbHVdT19%00=mxBM{iFk9%`~Bd zWO?%gw0OmSKyv;yhkGYHQpQnyBj-A#ccuB)8^%xBYH`))DKMX*d^pa-T0uj*jUw?0 zI0O{j5HHBCD8+0A?Ag@5vl4f;_54Z17a5C%zDzw&0*0H|mh%wobphW}?9^-^b$X^@ z{3+Gd(cAK==7W%f+)>?4RkHF8^aMw5f z;-h#rJHtIcui;%x;Q8hHvok-c-+2BN^zT*luXEu2IpKl2l=*`fJ+ms&N*v z2WW@5G=Cpp5js`kN@m+IzkCXN0cXXhvGU+LVLQC8NBgC&v&fg%Sh6L>b}Z-hX7n2P zt|{{6c{xV&cs8Yy{W##kLm0)99(Nabw1R&BAP%EZQ6ERhgB83@Pwxc{^)64tyzzZ6 z^At1{*d}}p=SRtSF!UI-mcAxCcwU_fCa$r-2r2FSB^Q4`HZ&)HF{GrrRvZ7l;k#AT zTb8d?Z+$1=#~~cYhYV#(z4eCjiIjGM3H1y2Rq&o630wcQ`g34sP@8(I0GiZWWW;~+ zj!VX8?Y>fu zLb>AD>wP7Qvi(fOxI*c7ef&@7RNAzJ_G#rzek>~X{IdKSPf^fTD`zL=s!INWw>(r7e#R+NOz*Az5 zoRiWvhVn9D@&a3g`QYp{=Ehf1Zx`MbB=Qp2Ij)O@b64x5j#C-_S&nlz&`yMQ1@mXI zBR0Og<`D0OXaAc|tB-Rf@LT!;DMj#V@oU$Cv6N)_TJg*I1{3)a6U3dcPKn=x!o_2a zU*7-|!4{Ybzl1ukhTja@@g~DxyFJef2Qh%jw|3?bZ>MkO=l$@#`ZewVhouQV@9eqt z?pwdebpXuwaXn4pe4p2ANyoDcpE*>(cog-r_%}K*Y|Hg*`a3p`8RSEpvT9Hr>txUK zcgh65C6JYSI%)N9;=PB(UpzAfyjuKD;5wKLzm~5RzrCJa5x<);hWI0R#nvbqqG~OFgRNE^M{9>in!3wdv=KfwqD!r+;IN?F3b5QvWjM$QWUU>stYSVc(m0 zoN+?N2)Q4IYd&Cq`ZDG)SGW$&JzPaxm%odOUD0ta!!_}WgR(9X;`@Fa5B2aa=5e7m z&J1KOhj02NalGsM9q4z&pbuA^Kf#w!-Dz>3+q=hyB_dg$0Pgj-{g%<&3@*9||43Y~ z$;CP>hl?MR`i**#X;MB*&liZU#IcpGPmF1M@*{qTGvciR?w4JkFg}Js`U_!7WUKz3 z&bT&?lpX>DUfU$7UV4mWH9Ihc+SCo(z@!5-lp}(X|K!VSk1~09iX`OqFs3u`B3gSHk3QN z&s=8=^DWF{Y{x;Fw&OpP%M9}5VTp1Z=8Iv(rNq;IB9ro&h#it=S~+cNwHHpCocbT# zT+Tl6X1IuFt1hREJ2RP_THfqaS~-mZe#B=p7;sF}%Bk_8Kg)C@0ro_;s+_iJzars= zKA~T{wtjqQQH*6ZIUPYej?p}54m6Zg$|nEGmjNKGfVkvSZ7CU z@$AgPiSECXSYWU=NIwqe7P&mEYmATw)Gygh_$9Iq6V^2uo@PDWhi$(dCv982&F$2- za_lv?1@GEE#b0bO(|5&;B!N82+aTCgy(?3Oh6Y~M| zhj(K-MwT}ovY#DGt7jf5K4{#vA@*~=Yvd2ypdcWbp1H31TJ;Rq|BW97cMeKs2M?6_ z!H16><8e*-{Qf7Ne!_Ct=b(HseO<}8;eOJdEq1NbeJ_doY1aYUBYPl-J;bu* zccJAxa?O5UV`qaOW89~i%joxqlqatDJogdkT9RO|VB=%$aZUYtEVA*}IG)6)aW5P& zO1`{*TvLK!_wU~n?E3p`eCM^E^;@u~Jf494BaaOCEMm;r{>Q#8YV$PoJ3gY(#^iTGFC(nWLLw&(` z81Lsj3hNi2L*YHao}_U9Q=0vzzYM;9Z116qYip`orm!{}zISROalN)~NnOJ=)bm)! z4ELii$rJmcM7F+yJt<{8pP9LeF#?~B+;2Rt$h^7W`~a%S6dHB>gY)0 za?9yo%xgsNk+-X_EN6D_=2b^i&oh1^>o~w;GqBEB3g468jD1E0(4DFmmXdQ|T$1`X zWqz3XJvrP!q_XmU8gr!mOO(H=#`(q)_x!Hr7ZwAE}$vz(VZrO44m+csb1FLL5`bA2A6E-=U0ma_|KIeFt{JpQ_;k6i%8sk4)yEa(0omY?zTv0hM|I-3KdP4JdU(Elt`|#UZZsYzp34VXYJUVWE(Y?rr{%#NQ z=vOfvOypS>mSgN=`E7~(pC|G!Ci1ra5$p#pd-Nja|GGT0y~9I&`N4r91fZEc+SlEy z*=J?XkZ%X&=Z$H#GhAl^6_fWqa3lGGcYH7-(%K0>K7V|4VDOlQ4OYGHXq(=Y38j`de;$yMw9@$A4Xsap zY&(e$$U_BxzGwKzNO#X@{`k=I14F&}{DJ-2REY73^dRLE@N*YIwX0-bOjZ4F?MDVo zBD4zqZ!+RP`SKjfAKzAb%cZfX=1OvblZ1_VeI)(JzD@o-#WOe*-#y z5o%8SSk?)BO6qp{H0UAT8|f+aKIACoZx+u9Kf>$;`(pmye{nwz`$hgZ-b}l&1aFMX zlE3?)_e*YdIBMTR24gCEl5|}2V@g3d-VN^t4fPr0b<}5u1L85%H@ru&`-H~?_(H}& JW@C}{{{;sGE=kk`j`Ti$c{l3awGG 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 literal 0 HcmV?d00001 diff --git a/srcs/builtin/builtin.o b/srcs/builtin/builtin.o new file mode 100644 index 0000000000000000000000000000000000000000..1e08fc06653f9b965f3dc96b29ac048add47d885 GIT binary patch literal 6200 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 literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_atolong.o b/srcs/builtin/ft_atolong.o new file mode 100644 index 0000000000000000000000000000000000000000..2d0409f10e9d96fdb55184779cc54198bae33679 GIT binary patch literal 4112 zcmcInZ){sv6~FI2-{)sLvGb2M$-2ht(lr^4owQ}N{Hv=KXkRl{tsNVv(!;S|lSdre z^K;To%QVkvr=k^&XhQ;l)O;gFLr6#nITfN)h3Gz^fdt}Pix72&fUV*~0xIEm?z_*8 zO~$ql9O>Tk&fj~^x#!+%|N5VQ{dXH<3Ios-z^H4O;uwHFj47hu2VM(%0)q?zJ{`n2 z4Jl@pRkoiklZFSDb^7y9pZ2MHI4jp8e=68ZQN}ol1FS;G2g}OZ6SI?6dSaqv&oTHv z`qYspzTk_Q@8^=_hGY; zZ&2E&BKI80uPyzF_=@RFtG_cX{<0s^U-`M>mibnszY8*$iy!DOQTe}E|-9dz?AMu3|zi!R7vA3j1Ue{}bT<>T>@ut30t9V>P2y{u1QdFZb6WlXkTmj6Kru!Pz2Y z>wn(Z*xp#{N1n}p`T8mNLByc8#31>;{%Rz({;-m&8HmYH!qY=aW9@ZAu1D+NL~h7; z@tS7+PUMZ8Zyjcb>abtEt^VX2-@SFmP(pvH|Ne6SkiTZD4Dl@cIUl}uDD);`)IvWr zUP!%W+|S;l+AK3K-XX+OA7C}~Q_lvlh+!aA`@hEUz(|YOsDCeY=W2qS{cOiQb7-YGktv zU*uRzyz^qHZ{bFCLSBsLuo<35=v&fk$S;xC^@;${?t>A$sEhENAnb`=? zyVneSG1kWD1{%kxU=Y0GAu-cys{Rb0U&K%XA-Wj_XukyF0eM5>x&)~d-omWLPQo!) z7km4F8&t>rg38dM0n#QokD(O)fLYx^E5NE_7wPRdgBet8SWr(2t9hCMo>d)R>R^-A zV3XCLu+sfoF$-&DhE`VhO1+|paIY8dtG#<^t-TasP<_>lBSD&=+C=n8S`CyjMw+8U zF@sjo!kBbLive-N5P~E0Y{xUXbbc~EXO~>3kdKcYNQ@@-$A<)WWbDA`e$e~&CBPpW zW^O6tCMRZ{T-nJd&z7xpxsWU5CleW#9Cs#4>C$t_qxPJgD-`Wg^3lS~Ogf(($1`-g zP{_H-Q%6s@$;Z-}$4@<-aI@2F(`WKY7Xc(~yns-(?c|)BDP(QyT%k1W;%&5(k2!hA zow9Q|Hfh<1g|#RQFXi4hs6iP0}3;izQ0v$-})PQ$sBg<)RAMTp!nTKKa=FsDc(i}FWd%z zYEC-zP4C^8f871Y<-z0%?e-b)a~Sg&moUDMK}|+>)I0>#)I?MF z6Nm-|epgWVEeuTZ6-iTT6a6Jg`>_&_V5?X^iVmGD8n}xD&^P6*p&9|a`kQm#J@m{s zM=KX2nfSNo$DwCo(63EuKZ=K%b`Tgq$COyql9ENeN-Szz$pYnrIGS<)(D+=hK17N7 zZ6Tj0m;XcVd!%Cs2#9&p6vSo*SPC3PQT`QeCq$|kij&W{O{W7tg`A?Dm?CM@L7|Qa zs4PTS0FESA!&iAkH+k6PF_ZUHd2f|(H~9{eKX`}lsq%+R{&9S-Xa$q2TBpf1eSxbr z9vtU7%pxZ5s`71B{xOsHn_RDQLqE@hkhGaRSmhkrVNiiPP(Q)dt2~Su45q)#b*$a4 zukf8!;WdoU9aSE$@&`>mVDg8nuz5+>CP=KsvHk*A7C8HP!|;JB4`6`^3}H1`<$DmS z$rIA>tHN+-lVK=q9O1#MJg~rfPasr83@HNZ0q#ZqD?9{-$+zkM;5)(FW%8X!!~`FC zMZxK=^4(QFV)8MQ=4~c_WTla22V$>M!IGkE-6qzkas7fQF~>UEdERz{ccV`Ci5xLw z39O9ztGYIe`fBZDRYloI(d4K(0#ft^wFCPuHttWNAK1tnz&HydWrA;$So9%De@)_)#Bqs%gdg8-5_HrHg+we(H2$mk{}<>Up!4SU zHGLB8KW&|o_Rqyln literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_cd.o b/srcs/builtin/ft_cd.o new file mode 100644 index 0000000000000000000000000000000000000000..73ea5e72ce56a2743eb9637727bca0ca70a2e792 GIT binary patch literal 6880 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 literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_env.o b/srcs/builtin/ft_env.o new file mode 100644 index 0000000000000000000000000000000000000000..f26d402e2994e9d10b5fa4faf4b5d61b1150577b GIT binary patch literal 5512 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 DLwljj literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_exit.o b/srcs/builtin/ft_exit.o new file mode 100644 index 0000000000000000000000000000000000000000..93b0db8e974f72042eaa64b09ec2a31573a97315 GIT binary patch literal 6336 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 literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_exit_two.o b/srcs/builtin/ft_exit_two.o new file mode 100644 index 0000000000000000000000000000000000000000..57bd149796cfc067d8d173b681181d6bdb622d36 GIT binary patch literal 5120 zcmb_geQX@X6`$L?J)iGx@6NGFoH)Tpnt&5EKF0})^KFwD9LIdwPDn~&bG}>Ki_dq* z?w%8?DM@XpQZ-UZp%PN5!XLDve^8YQT8tElwrYu}qAFAZRi!AcLUF2opo*#?Ex5nm z?rdUTBb9!P{N}y)n>TOX%z`lw6%-+t9(pN#8w5_!JLAK(QpeSc3Ax*>S^$ zQMJDl5pSmd$S&X|scP5tR~mXKN4si&|B(JxNhgC^mA8L6zj^VMv$<-2=~{2T@9)Sb z^yf^Lue;yf(%%o|uAct4{&J;p#O3If;$gFx*Y&>L^LG@H=hZ2}Ln$HnsAutfUgvuJQi^?rM#zxU;P_ze89U4}miE%4Wlu||+LhRp=M4bh0Ws275-$TQ%F!1+79 z2gJr#i9}oehUF^?>65p)X>tBSOnf+(6f?82&JQDjS2ssq5)aQVIlU|r5StKJ!&Urw z;5Db0ofQ&KcFsgpQ8$aZwDWB*C6CWU0<~X`1UfgvhwE!rx#o-GwdSRcNcea^?8au_ zI=!rA-dgT_j=zh!ubp0YLasO0EN1X}Hq6dj_u|~#k`{5ie->k0|3Y);4EA*D)u8_7 z+>gcik3Oe-`y=SjOgCTt4fctXc^q^K^d$FnDJV{1?FIOA)B5EL&By!2W-&uM}>v(^ZtqLa3ahbyLKbQgg%(0uNvi4Dgfuf%GtDb4zfdes72ca zz7i*)m?O7SVP= zeu?<{lr{P(mR7p83*cwC${j*m3+|r$o`|*q zvKxMHN@Fc|@x3^VA3=$oLwAvmcEx`W7FTv^Ox%A0taJ&DTT1fr+!hkC521X3!Ekdd z1nde#wI{}?=`*xAK{44xbCFsMC{h!>1zM~fT@Q5SVEk^d7UeE&Ke)T!dxiE{U+xcS zCS*6lfrvKYGkzA4m()#Y;mvSI8De(i4Vdo26oU z{l?a|)(z-&#mumyGtueJ;Zkc(Wcth@D{D<= zb{i8$p;R`k%&yY-c($1DLlqn>l?rxdVE0}-b7wYp_rQTxJ3l7oiJ5&iBFGphz%Vt8 z%!HjQtuzayUg~OSu9r^;grUVqK%<~X*A>6!KltKw-%%I%|;tHMv!?H@2&UZjyA$_zo zZit?Nt{(iN+&c_@FDNEnBNh-|@}HCK?BI*h2b*pjeQw*tG%s`fJjsJt6KG!qu`%0I zf0haws}FUSDK>viVr!4qQm=c4?E=+1`K-)mfWJ90|=mhBNpznZKIPoV~ zMOT5)STqT-j&gfwtQ&-w+ZVftTVV;k2a*soAt9z)2{8mhOtaEG6E`8|a_OEaoe*=p zoXB)dh*?}h+yWuyXE~8+nh^80v|@oF#F`_mSb7Mt7D+2!TnMo!^6{eaT0@BWS%%7z zNQjk8`r>&LVyTh7SY!yX3Q34pAVMP`>5I1jLM-ai7w-pzSf=H~dnLqzFRfVj@h5l@ zkXF$A=H8dm{-=+RdbciWyhowQJ$efJKfqf^?56KP;O_~IjH?hZi#dBiefe)HN~U64 z8F(sG@`D9o;UnW_YFoIOu62|fM(wHO98X?YN%2HIa}44YyDH;2y?hOv zUvzlm`SN=$m<*_)=woVlud0Qo)P^Z_$&`BIlnOZ%o>qh5S5yUKwc%b>>s4!eRb@&| zg+EXm0HlDq_RBD(S6$Yt-qfqsxD%&U<@@2_L%reP@?JGCt%@_@;GxJi_=*NsPN^Mx zA@!;v_`sB^1V1%}73#4fR#HNExM}ROMu>GOaOAOd%qfVtkDmhI+b<(_;xY&Ky$>Bj z+rR1YF#p*CJ-ibf-*kzarJj}?%pD(q5$%}c6A=8ik~$VzC9%CyUn}+Qs&TH9z=yQ| zy}t%}61M*L0e=b9{YG(~>V98C$KJiRscKxf7Z;%~yuj%5t|tY(m6sClg5zIP^fLZ8 X<_wF1GhS|Y`}M*zY=r=@O|JJ(Mg3Xu literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_export.o b/srcs/builtin/ft_export.o new file mode 100644 index 0000000000000000000000000000000000000000..dc4fc6323649dd2ed4b763c51db7aa37c761d3f1 GIT binary patch literal 6472 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 Ze%Xqg-(Q?1!d@*f;LfbLFyOX|e*s`TX?Fks literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_unset.o b/srcs/builtin/ft_unset.o new file mode 100644 index 0000000000000000000000000000000000000000..25e79bac4c987c3791f64ac0b114951031033d18 GIT binary patch literal 4560 zcmb_fYitzP6}~&WWA9_UUSnfSjK#JhVA|Si8%K~pgAJG%Ljtu;fYN4|-5q-;-j`-( z9a~8#3QtN?wT{MZ~OlE(82LVKd??ngM13?Kcs~4wvUKo!5nH`&zsrWq;6!hwmD6I z$AQ7ooeNU}o>wLEw2W_If=|ET27Fd|qC#*f-?(=}LOd<+;v1^J^l}j2E%+SQ_9ian zdr!vm5)X;?x2Ugg=;ery=(+saHF8V&TIBfxzE$$QSq#s6+zW1SUU#kTE3q0)q?f;+x7F}&1(-UXRjR>r_LN- zJ^xNZT)C7OxDr(du80^!h|?GA#g&Wo3-(;6I5vu0F^7FyE`oJ_sM13(Z>drbFpev0lMNGKAM zi3SHf4?vAXCZS%2M3g4=PtZbr2VF>nUx%uX;Ew!8qEP95^x>v@<CYHFy;xt?|7n(9U*h8R%A=SjqKhPr~M|N`8}e z8n(x84u}|YaF|zF7m6K$icg_yfhZdi?NDi@OZy`9vxG82TN~ItQSHmH&l2xVX(qHs z+Sevx(jml<@wz>u;h@oT8GGNio<{bTNOkI-77y{E7%s;!3Yg+G$g)&=-( zT*lAf#FSOKj;%m|MlkreuGgPN?pSBI!JMY(oHXPWa5p6$gFY>XdmJRUn zlr|OE`&+bHVBg>7-L1!SV3l?>zz?Q{7-R)a=ZZ#oGCghDj#VkAd;7b4x;LadJ+!O0 zzh?vdzP@hYz3YWz=bTKoW))qloS9(la7?#5Co+4itZmq{nH}b|S*%n|JF~q~DjDVc z9@K;JN~P#z#&+y>GWQy}y<-Qvo&1!z!OZM;uzkivDZ*6K%uGAEO5W5Ts@PKwij^Du}UBoYqD(S)5LZT?im{rhBL=dLP8?GT- z-BXUQta7#Hid@04gn<%87$M2gg zZgdKhy|B#kw17D5bi=ldSz%WyVAPAIF~N2Y>M zSGBOOt9#1v6{@+1wM$_8|j5g$rQPot$P=Rc!Xh3>N(txC5Fcahw)2VsPVyP z4zZB%b3W}KZJ9pa)mJe$!RGe?3kh*n95$8%`eiz30WUGOrM%bC{*yVZcPk(*Btyf` z+lwzORMbF@`unpUGU^zFXcEG`@L3~JN5yhTF8#en-uz2r`?Krw9d^ChQTN(5_po#F zZ8vg%>XTK4)Pa{C|Ht;SV`XPq(%|@$;#UJ6@T%+H>qgqOz~0JvD1})Rfy( zuYGsRi@(pcw7Vy*j`>&mkIt!?-)K1SYDgbs2*T{m5^xl93c}iP4srqVXUJtp7)gZb zb3J4WWG{q?h)L%Jm6eaPSg<75qY`3~lw21j^zI_`y5yQ%G>#)`V#ssb627nB-dNLwWcn&b^!FV|tZ61-T<%Qq~? s6$Ljb^qWgQ>O`&VqLfZLLT6F6%~ECB6#9b|6ggIlqFbu=dVP=h7sYAp$^ZZW literal 0 HcmV?d00001 diff --git a/srcs/execute/checkbulitin.o b/srcs/execute/checkbulitin.o new file mode 100644 index 0000000000000000000000000000000000000000..8bbb63a6c0a2fab45e9992ff735f088c7af18d84 GIT binary patch literal 4720 zcmb_fZ)_CD6@RyPdp_UZp3lY@gK@bkgqXDU8RG<({{~F#!wJMT!6Xgay}Px&_4)3) zyJtX&2nCd+5>Z4;KBZM6HH}DH^+VLEp=#7Nd;m3~ZGze+YMZ20k!YkS&4;uJ6-j?@ zcGiX~sOg`P-@NyJ^XAQ)ne}^fzr6g;M+u@3p>Y=hT?(U1gU}X(rdYp0Yt#LK7*9kC z^g75)aR$*0!?O-}zU=E`1LI@!dLaEu3hYmT+|fuBWh_F6nFY--3RbQlMaw9eGnNaBT7N&{!$uqT8NH-QVV+&rUpe>1Je$<| zYl`_3m&^G}@R8KC>-rP%Rm^;?zuRm4ZTy7(yn~hN?)P5l?`JZK+`sjgFV7$@�F6 z+oghG3~#%7KWTYhX$f{T`1e}D{mQGa*{}co744G6Q)>6SS^E2(oID7B+z#BpUk}Dw zLB2Wuslxt07B9;9VayX-ZX&8cXZO26+}MVR=km8GKP^a~ynTFzUb*ss^4yi9bmA?I zKD?xD{xH@EQbF~;OpxL6Duw*iX2#6X!4f{3FQyiS8ZG=dZ*sq_(aA;@=;*aJo&=FSA9`l*#IRPrC(cJ+G zMe6y(5G{NbOpQb)!CnSMlt%SU9#Jo%3sLx0u)0W8CKM8>G&J)z&~TWY#gxZW9|-MR z=h`@r90Ip3{+6`WU93Vr%FAPfK2W{PJpA>4>A8j7z2 z)3&2)2Pvx)%fZr0r~Vo6hZxF`&h|p?j_JLSk1@U~rI)~k)1Fp}vyb>!&}k>ptpzE! zCbodJD$DgOxCmth={p1YmWX~oWZ|JBrkjw@gOrsi()ivcSy>q8@%W$6Y44zWn86K+ z$H2Ok+jL%QBky+&=}!i7Urc{CkUy8wpNA|KU)wq#{<^gOW8h-J^&J#v-|<0s(nisp zg{BNAegT$N2J~NpALmu>AblCQxP_sZ-T_&JpH1oA0lou=aRQ3=b#$+@qpgWI!4k?Q z{UZ2_fR%pIW8iPFyd^@~IS7BjV04*w0phz5)j^G;{s>~ECCOsL+iXrL4J=j{{~MSV z!k4>&;k}7%U>(X``VMfh-@8e_JCH{r`aZ}a^3j++9pGar-3#R1&HAB0zNb~3t?;vF zss2cSkEe z%2z!rlb^Ek)46KV_Uuwuo-)IB&M}>XnQhjrRV-I5C$qIYGh>zt!>Ar(<#N%@jBeZE zX6`ieJ4eU6+`=?nC1!TJ2q9ykaKY5FGP7>JT(FG&WoOz&NwYF{+9lhavWi8TG^_)* zXSkl}Rb8@69$7{Xv#45f?a7i=NHey*e|U6&#zuAzkO5x~Rwn{F>i?-{L>$8euQHh^+VibcucO~cgO^#Kt9SgNrX#6C~;b^B}EMl`tvjlRv zGfc-Z50X-S@{|HOt%*dh=rzi3>LIKD96E65K5+#ki`QKlb;nuQs*) z`SN7@#gi><55G9we%rZ;%iV_`)ylh?+foPZ_NsDo>ipN%KYtkM(7msZf`oBUlVcQKFu7WNVGy@W!ce$><=f~?gw#T!O~ujV~pt|^7MG~XVh_^{?=oTs0Bf%DIo zNEi>x;B*(N>G=EVifC5-Y*y{dssmYdIIHSeRm-Ze=ngfBk>;$L7UQuaYE$%>+6t^a ztA?}cLRi#Cv%q4`3E&`~9YdlX@uLSIMJ`7}5J z>^upMpgRi^|Gd;Yz_GDT{*8v2(M{mUX2}&&2NU=he;63z`AL5X9-@7$BlV^Igh*-V z4Ofk4p*(PUivgpk9*0|CzqD?j&Kz^r^3 c?<2f7P$;i?N*EK>Ql5(5Ol6hmyXA`i1ae9hDF6Tf literal 0 HcmV?d00001 diff --git a/srcs/execute/execve.o b/srcs/execute/execve.o new file mode 100644 index 0000000000000000000000000000000000000000..8bcab4adc355f3fc49ba5c2d68f4202181ba4559 GIT binary patch literal 7992 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 Oy;(gsspm$7TKpeBYNIUx literal 0 HcmV?d00001 diff --git a/srcs/execute/freepipe.o b/srcs/execute/freepipe.o new file mode 100644 index 0000000000000000000000000000000000000000..0122a54ef134a1197065bf67f38ee1f039c0bc80 GIT binary patch literal 5144 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 literal 0 HcmV?d00001 diff --git a/srcs/execute/pipe.o b/srcs/execute/pipe.o new file mode 100644 index 0000000000000000000000000000000000000000..1965b0a7522ab9f6e1af405ec7e1febb2eade848 GIT binary patch literal 6128 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 literal 0 HcmV?d00001 diff --git a/srcs/lexer/lexer.c b/srcs/lexer/lexer.c index 905f6ff..44a7670 100644 --- a/srcs/lexer/lexer.c +++ b/srcs/lexer/lexer.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 16:24:37 by eunwolee #+# #+# */ -/* Updated: 2023/08/12 20:05:37 by eunwolee ### ########.fr */ +/* Updated: 2023/08/12 22:19:09 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -62,18 +62,20 @@ static void check_char(t_data *data, t_token **token, int *i, t_bool *pre_pipe) } else { + (*token)->blank = FALSE; (*token)->str = ft_strncat((*token)->str, &data->input[*i], 1); if (!(*token)->str) program_error_exit("bash"); - if (check_end(data->input[*i + 1]) == FALSE) - (*token)->blank = FALSE; + if (check_end(data->input[*i + 1]) == TRUE \ + && check_last_blank(&data->input[*i], *i) == FALSE) + (*token)->blank = TRUE; if (data->input[*i + 1] == '|' \ - || data->input[*i + 1] == '<' \ - || data->input[*i + 1] == '>' \ - || data->input[*i + 1] == '\'' \ - || data->input[*i + 1] == '\"' \ - || data->input[*i + 1] == '$' \ - || data->input[*i + 1] == '\0') + || data->input[*i + 1] == '<' \ + || data->input[*i + 1] == '>' \ + || data->input[*i + 1] == '\'' \ + || data->input[*i + 1] == '\"' \ + || data->input[*i + 1] == '$' \ + || data->input[*i + 1] == '\0') token_add_list(&data->tokens, token, TRUE); } } diff --git a/srcs/lexer/lexer.o b/srcs/lexer/lexer.o new file mode 100644 index 0000000000000000000000000000000000000000..4bd49e44f4eac3be043915b2e82d48ba12e026ea GIT binary patch literal 7112 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 UEM1dR`Jrs9sF#VF)|bjZ0sgQop#T5? literal 0 HcmV?d00001 diff --git a/srcs/lexer/lexer_utils.c b/srcs/lexer/lexer_utils.c index 84e5645..fecaa48 100644 --- a/srcs/lexer/lexer_utils.c +++ b/srcs/lexer/lexer_utils.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/12 15:15:15 by eunwolee #+# #+# */ -/* Updated: 2023/08/12 15:34:49 by eunwolee ### ########.fr */ +/* Updated: 2023/08/12 22:27:46 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,4 +17,15 @@ t_bool check_end(char c) if (c == ' ' || c == '\t' || c == '\0') return (TRUE); return (FALSE); +} + +t_bool check_last_blank(char *str, int i) +{ + printf("%d\n", i); + printf("%c\n", str[i]); + while (str[i] == ' ' || str[i] == '\t') + i++; + if (str[i] == '\0') + return (TRUE); + return (FALSE); } \ No newline at end of file diff --git a/srcs/lexer/lexer_utils.o b/srcs/lexer/lexer_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..dd45c33aff0f5a31dc57dde044725303390b3c6d GIT binary patch literal 3200 zcmb7GU2GIp6h1Svce_8Z+dujz$eK`XAJ}aRDkwh%3c^zSp(QrNWZ3Rb+p*i-b!S^3 zkWjZT#F#+i?+d{gAAtBkj4>^Vk)%BEpdrLWeK4jPBQ4PwjW0#8erM)Rf7U+WNzOg@ z{M_%}GxyAyxpnWie^wDG1meL1-oir!45|lDX!dl);cKsB?%_2cS1-eyImkwkt{03G z1!wN)-Fthw7j<{mW1obG@l+UF0AO$7p;0%6rLHHfLf*{uOQWtY$8&Lf(tlORi4=^z zlyp61^bYsyiQeA4F~ayAFYh|MZz1HEJlBWPGEssD^D;;m&&>2?c}XdrDx-gvct_=P zJcfMbqg)XWN!u$*@qUrfHS(N0_~9?761+q%mp1fFV#u%%SBiIE-nn~a-R^^2#9R?C z+xu#gLrU>-GN}!6{mqBOv(J}HBunw$F2VctA@K?)b1UXMA@Qc<`O5urvM5UOO=gF1 zu7W!V#7zXKjW(ox*61S-LE>Mw0(3|>;2?{$e+CGWQ`-~gWo zo-{4PYlFKE?D$q=b1;a5*#17&af(fN`FkLt(u-gw-in!Hxr~+pLw^{W-$S>jW3+W9 zc73bwb$V^4_F}_Xg`UQFs%=}NW1FERHU+k_iw&2gt%*ht&xC0b&#ihMlGjd$+b4lN zeqGbQnV+KD4^F9{t6MQzP;;OX`Fzg5hal;;ua-d2J1%vFv9XG+VHjD-v1ze@~&YAl5 zIxWP`C+Zmj*DpwwrUO+(J}0m=%3ni_>!1e0Q1G~?!OlzNLn1`0h->m7_zbI{HymM) z+^^NoFntcJc>MgX*reTn5FSrI1Rg4R)C%!Ed&Ex|6w+=%lzC+PBucS0dk3Qy{*qnl zc+d}UE&MGs^0A-kFR(K72S%;Ni91(b&T%zAz*eT7TUBjqd>-;Yk3r=luF--JUL|0o z?cyF9Nv0E-{>X@tx6EuN(z-d?65SMOvaK6iH@9qp-qsd{y|tOFeA0@gjT1)R8TH|U znYN-yiglX3`9%I?tiu>F(%BpW_GE{K5}8ydT0(a=o3>(I9S5!0p+xe9uAZos8l)xD z*bxi+#|(5Mgc?R{#7bsUhJHMoAGFY?jMyPFV_E}7I!*n$al$O!llFJ* z+K-21_dC8vv>2P%rZ``7ng?-TxwLI$?85!K=jKkD`#PZWF9BZ>mjcIg%`ovrvHmVA zAiiMMGpvBzJ=w-ox+m}Ve`4GoSna^sx$xOFbViTeEy>Qo&4cs&>aA^`JbAP4Ud!m& z;784=b;-y(r#YA7V6OEG;HzM+SUxA0^ae19E1OMRXC5%<2AEA;fHI0JkWE~#HDC}| zBb&G!WfYqiD8;k#|F&@34i~=$Ade#!$1p%W_S>o`%HN^Y1i}08c4j7NEh%K8oS8GC z1MEWq3?~cD+^+J4`sT~_Xyjk`m}p@|cmrd?=Z%YSQB)R1bzH11iuFbDSX_9ETDB-O zuT~is>X=Z*1br?l0>14+^%ezb14W@~bwyF(Jt)=yp#ouX*!!=+USEXO59{i<@W(}Y zT-5$48j9l4xM+wodhIo>4+}JC9`Be?Cxy3D1hBwagUwU+=Ii9=y9n>q=c~jN2PoTGURN@E?gmW zZ0P>i?w9&2GG=#)e;e!gM;Mj=4Xx1mPF<>%x?2bA0;_HzG&{N*jvtccT_deW`DNFg h*07`@=sEnA7y4WeH;r^*DA#6>t>mnWVgh3e(Z3d0?+E|^ literal 0 HcmV?d00001 diff --git a/srcs/lexer/quote.c b/srcs/lexer/quote.c index 9f4ee5b..ce9a005 100644 --- a/srcs/lexer/quote.c +++ b/srcs/lexer/quote.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 07:46:30 by eunwolee #+# #+# */ -/* Updated: 2023/08/12 20:59:04 by eunwolee ### ########.fr */ +/* Updated: 2023/08/12 22:30:13 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,10 +29,11 @@ void single_quote(char *input, t_token **token, int *i) while (input[*i] != '\'' && input[*i] != '\0') { if (s_check_char(input, *token, i, next_quote) == TRUE) - return ; + break ; *i += 1; } - if (check_end(input[*i + 1]) == FALSE) + // if (check_end(input[*i + 1]) == FALSE \ + // || check_last_blank(input, *i) == TRUE) (*token)->blank = FALSE; if (input[*i] == '\0') *i -= 1; @@ -64,7 +65,8 @@ void double_quote(t_data *data, char *input, t_token **token, int *i) break ; *i += 1; } - if (check_end(input[*i + 1]) == FALSE) + // if (check_end(input[*i + 1]) == FALSE \ + // || check_last_blank(input, *i) == TRUE) (*token)->blank = FALSE; if (input[*i] == '\0') *i -= 1; diff --git a/srcs/lexer/quote.o b/srcs/lexer/quote.o new file mode 100644 index 0000000000000000000000000000000000000000..c9c987baf8e8616f6f8ebfc774135a83e2e023b9 GIT binary patch literal 8600 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

%Ccf7I zgBK$5u;rn;191=HyAcl|-iyd1@4JXULwpI*#DLC42oQ^YM>i@3p4#C>0jxWQAz{a(ZK1fhtBiiYRe zLJv3c$;(Z2f8F)jb zhzG?YLXn*rDyqt-SIoJ5zb(#dN0f%FE?U<)6iO*PvKM?E`_o z#4HlpK|wa3b}Nq3f8_{G47;TSaB{;LCy^=*{o5Gse)m6tkx-|LE7Ydkg%_d_I0c8( zWsmnS4H!(XBE%T}GdzaLJ6#~>hwGpz>QL7U=A3{u>m#>F8A{4f=&RBKZ2+5;aipV= zkI5i%vy;+H%7vjm*^bO2pq5hH(|SqL z{L<}I`zev6cG4J^p-r*@{o;pK(4-aST!38s7(EnA$_U^aA&4lOgn9q%w9I@~j7oDX zWPT1=BV;}Y#K4#ougDO!n1u$kEeu3pz^U-ctfXu~2ctCdeC06slhy|B@N5bFQMTTp zdT&q4L{fIq(K3#XlqO*S#sCZ`zzXwjbZv&r7omwUrg}GfU*`CK;Vi~~2>>thdpn!) zzn+fdK*M3wYDOF3cg%|p<+}4xu?-cGgKck0%1af~G)m`7HCPh94kH)D)HOHBda!UB zrfxmvnLn1^B*dJ>jJY^zu7}Cy6&$AnayA-7Mr9n1nhO@Qvu>2uAq_#+u~C}W%BC%E zJYUV?F&Q^8eg3O+w(Z!|Y?(JI=Z|s)VRFn@LlPP_KkAL}Z!o!_{{LiB-RX7tia)80 zIQC_=yWAC4H=E8oL9rukI_S~WyFhVc>}U>D;@1k=A6t|+z=dpFM zUJED?I}ZQ^H>J)IP~zR@(bd~QS#Jc}8q043WjP<@psTlovV0vt*xw>h_V*&RL{VoE zl=zP#!7r53v{BPXz48$ML}vNbp!g>*c9G7HXu3<&9!=Xc1ySw#G~NTq`!`sYIXdru zT)Ir>{qwY&c_`}tpWds>{qyp^n)1&u4@3R`KMx>JTm18Pug-(0@Ij;~J`=XpJ} literal 0 HcmV?d00001 diff --git a/srcs/lexer/tokenizer.o b/srcs/lexer/tokenizer.o new file mode 100644 index 0000000000000000000000000000000000000000..66417b9aa34926f4bb49512c583d55ef010bcad9 GIT binary patch literal 7440 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 N&(;YBLPlDM{|1t8O(6gP literal 0 HcmV?d00001 diff --git a/srcs/minishell.c b/srcs/minishell.c index 1f0e8d1..7d08567 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/12 21:18:27 by eunwolee ### ########.fr */ +/* Updated: 2023/08/12 21:59:43 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/minishell.o b/srcs/minishell.o new file mode 100644 index 0000000000000000000000000000000000000000..61aeeb7d10a8bdd6b6d3068beacce29715263b16 GIT binary patch literal 5008 zcmb_gYitzP6+XK&yIyw3>os=3U@VrF5L3lo+ZaIz2{>S48}q0Q0g94gygRlxUhi&a zW(^3GQ0N0SsR(M?M2)IYHBuixBDIQIqNEKKQbn4kRZ{gwrM8OGho~x4)F=(6P3iZ| z!c_uO;uojvE;KfQkC@0v(R(AcS<_3Y9hv?ZYPiYw0B)zo_Me$GJ) z^cu>b1VJ=icg!P>Cwuyy-u-)S>VfpMFVJ5Y@}YVWcL`Na1UBTlp0yn-UmWv6UBA^| z;3wjbU-jejRo8bQlk0lU9I1@y#>j|ePEp^wuV-l6tjU*s=_fvax5^)2hCAB=fBE8Q ziD0$A3HQWBp7GE2q95ob?ALcauRmtDt|_~Trl;bF=^WK z#P>B`9$Ii^H-d}wVD|I+D~&vyz>`OOuGp(JRHn`C?Aj2e;1MPpf}kX&*dMC&H_~jQjPkzG}bT z_gBalO-`xaZ=dh)6@T(M_+z{JFZ^|3tO?|q;}@iOKU6MC{2Jz^$QO$6w?g;3L2Uf~ zNSw>h>YuM3;0LrD7v+ujkA=VS{wX>8%Ejg9&z)L+emWsDZ`a7obj{|Ow-h-G7f+r$ zrJpB%OW8bw^`2NE9v;&+&&X}Q3_KQs9+DZ_!mg3_lyPkzzg+X|(s7Y>#IN7Du{ap3 z=I>yvZ`Y1q3Dt*gPc}r9~Gk#WJBWaL>T9!tORgx zB7q}N>!iN{2cm}h8jd4{`Q_?pxIO zBKY(s;FudiH~nh0ZX|TI9?R5*u&PLM1?<;BuVY+^#Jv#ZDSTJFE-Z!<5YdE}zXf!d zD%wepxjipC{5-n*K_PVkKT5YLFM~zY@CC3eC|q}QOvUkv@+!J$C~_K%X;4+_qi=&t z^fJ1TC_e|QQT@c>eO95#D*(gwTr3tod*sh^v@@yqTy5GNI}`icthOM0Mnc$2xZ(G} zL}fVYAJN7Cf-Z^?Wi(L>)~6iQ8o_CxJSf^y$jq$DLosbCkoA;y4DvK>4mD|?f?SKA zfnub!A40Y%kF;tV!B^lklx&CgMaT?U$*tEefV=+9&7zhuAx>{AK+2j#D_B}-(=y;M z5Xy+QCXhQ~+Iq+@67NiD7P#xEt4UP)P`{5Z{wlhALCQxG+rXNXmD)~lcllMK4F~ca zs%AiTJ+#I&6LOfLuTDvvCC1(NZR$c`@fLKSg@JNU;w)H)vQ~QtotC z1Np9$_8rLXx*M8qMt*l%y8zr>Yh$aZ^sOG@DyPuBh9PAz@g`VW>D7J#{xVm&U$hT{ zPxBD_W7?gN-N*-0T6chN$2lGvQsX)F@mH0I% zS1=e|9#??912NJUXVi>PT~tdkxfDZTsjCANt5H`$i+7^yfvy}#^ntZ1JGEWl?tVWi z+TK7OQneAt(~NvLrj-JGPfFviUHiR_+Q~qEpvgU37vHx`dn~~Br?DPuY&u&oieu?1 z)3WoWV!E@ty`z0iy46M7I=eg8K=0~m2j00_Y%6PLCiBI-J#H2X?ODkT=0_~UI-1#P zPML*L*|aiSN|TdDF*k@(v8Plj*qPz2+wIH_BfD#Of4iNVkU3&zuZ?vxCaM%nO*1oP zXG=L#KU}gVY}79^vm;nc#&q*Y-qCHxa4NRsi;fs0wmx2(G$lK3SYqlU@FA6=ogXWj zxil@d^$ZU8%ATRUy)tR!i(*(~S$0!m7N^RRGaN%4-DS4N^2Kt+5vMd^7Htd_^0p(k z$I6x|MLrYVQ4D(A_Bm^}SY|G7nW($2#^=xoj&}maZg5zYE8FaJ!?KK{VwFnps25CQ zlnarS4a-FE1#{HVv*YfUv9Ll-6`X8qHy>XK1MBfIi&+v0i=8f!)2jF4@VPUN)R@flJ=13*g*w{&+b$ zy31^j;hkX~k#Q4eP|E6~1!L@{k}sH2vJh?#x8MmSoHK*gi`!vDt1GU3z#6p6K=yLv+M83Xp>eR!Je(8Aj*jFFh3Z1X_9Ein)_N+Q=%=pyL zP(ix@qP`Qv7OY8(t$NKHX#a@~Yv5u~Bb}jfABRgLeW41(Jzt1^nKmJQceIWJjvhmcu7e4vkmNyqR|MvP= z%kQ3C)coo1O|-1NGx9^Kj0YZEm_!C*k39+{ORxI&^ zSo3`=XtRyaGBke^p2Gemn5(jZlS84uCTq#)hCsfUwcUd8-xP^V#kMl=P^je0jA2dw z&pzy<_W#32#?8DojuV-yeViMeTMltK$oZA5;|+Pnkn!cr$~Z(X`vT|RFKSp8V4l~M z`cNbpk9{i=j-HHY(e2;^kq<=&BNA0c2O^7=r6(hu1Cg}@k=lU>-kAfD1fg(raC@YF zSEL5kiw7b#CnIX~RHSZuL;;Y18}g*j!%^k%Kv>0H$rD%=e|fd>6RH6}0glAemIIH2 z?+3?U4{iM03$YdkJ^o-HcntVPa3rm^_24*)!ETS=b0;_wXB$6DB(pZIgYoD=aQI1X z0!N}tuJUm(cf6k;4(vV$JqaObE2!g;{O?dcQ>A}`Isy*9e;*$J`T-mbUnwtTO{V{hpNUaRr+03`cRcF`k2Y$%C`tu9{sJ)pMu`b z$Ayj;0(h=c7TtZ|=w6YMCe5C~FeRaLD(Dryt8l?p{FNk51Re^60GLn}n3mKsqc2dP3(KH`+%{@(1Y zb2*FzZAW_Z-uumaZ{E!A&YQbe&;RqY5Mv5Mqs{}G)zC#jXv;ujq<=v>TI~$@$q~)f zeUOO)1fm&6(VQ$gvZD`m-!XJiccpqc7sXQnKDt!K@UX+K4ROOrnZpyKMq+r_GWV0- zwYy{R)&&zc&fg^xrDQH`6n>$(@zS}GJb~r$K9PA<%XQAncr(b4J5d&mXBRCoS{|>$ z?>IHcxK(%vWvwh;qEN_~MlO*xZ5WovYYIBvkIEp|SC&O{wsQeA3@2WG_?{$z{77eA+nY=k0T|K{m(O;nx&)cn~okC!AHWIfu8;b(G-#s`fb~AjU`*{ysK`ylQ8I z&=vOnY~2%=&2qMZuyVWtvCjI~$!5hF7d{o_*M1Vd_s;s@i*e!SYbU!KNS^Vv&%K5C zl%MdCd7qu1uUnWGzGKXZi$~++Qx^NU9G|(G9ivza`N?>%BHo3ATTWoFj-A$w*XO5c z&y*7vI@z%qtn)36&CP1a*Nt1{*$_w5$SrPQb5i+#38pIEt%E`8*_ zig?PG%VSu^#5?BXQR+vz;Cc19&x7(T9e3wlWPNU2+QV|XaIoV9_HNNVoW&lAIWW&z z$ju7&6ubg@GjeTS$xf2apu6v+>w^zO*t$8E`jfr;t}fW~5_>#j*S<7ArAoObT*I~S z)cxW24uvCi4dE)K+KUf!9n-?SHJg{+6udd8V*9iv0GonAe3>4P(p#g2gFza@H`$Dl z<#_A7tq51`ZLinDG;-~-%_y%v&QuBX;*jvKyF{%hcR@L1U_NL3ZHOMVj=u}e`1|M-eh$6LKSQr^ z4-)b4O7xu9q4)AAdLO?Iy`N#{owg3Dl3j~ltMRGFChru|Rx(l_iTIJ4w&V>*^H-C$ z^bnn;734>)3tY+GgkD?kQy+0`){_l1Cj8fvKdYFO2mg~$lx!b)tXl9`6{776^aBm< zMrVN3k*@)s(vIx4So&_jIU=>D!H=z4IH1)dBQ(*OKlm1h1k;)3D zKkdrbdi3WZiwMnr{RPN*io7zyg4>bz?*XVw0yG{tLV+JaN7Jacgx&*dQ`hSsgHvf& zH!%HzE8pnX{lEnNwTNB|SxkOY{l)Zej_Q{K7ZYx5W&w&Fco$vpBXlc4YJaE=EUI?v z8^Bv>SGO|#0m$Mh^!oJ&A&d0m5&c^(-iOUt3*+D>bTy&R|F>@-UgBP1S#u%5Isx7Bvw8|<}8v03oZCVbWcE6_k?}~ z)~s&Ve+DkrdmGb#;mU&^{WN5e`A)z7ii;0L^w(W^SFKKaCVX$N7kew@-OKf}E`CRp z1?a_N9dyl%CNqiLXmr16+39>Px_Vt}TkG0rvp`!`uWMTiea)Iy;Hy_M+e+H8Lc+35 zOS0A^i}k06t%P+T)@ANDGx-9>I`i3VBA4pNjcF*K&)Bh@U43?JTOzq*=N+wfYMhmb zv0aE}$4p$-U}~DN{dO{+GL8H4*0_ypoEh7e&ZX@!Gm~MXhB=uo8g?;JoUmCsS7fF! z3@~R>_8pf!+Z?#_k=1U0|KtsP7ouihi)Wt9P)w za|mMZ_JLi*ckCK+gr07U?&u`jfr0MrUCdcKOOBbzaif?YH*?MexEqceg>=C*GG=0g zr4q#iD;k2?4ol|>6Gb>CEGGPHjAznzk=YI_SSHKS?7Y|1Dkien5R>3tDEVwj#Rewq~x!EA@&B5zKzF%x@`PZ}ec#OOsOoiSP7 zLb|DRP6~N!ws;=7iL4_y0ZhxvTL!&g3=>-#_j&|wf2AM&LdNR28h=~RNL zQE?;vX`$gDk^0pHqPh7<^>g`9E?>ol)`N=-tEJ#*v<6z2hD$xpGJ&~kqxI8o4f+{N ze)RLH8brP{FMbxYqUZKV@u76%gnCWH@|lf)O4c?!wKCQCkMpCAkpt<*GjCQlyz_S&_WgV9hyGfRg|7l_0^J5mf$jr62>Jo&=OC&+uY=BlJ_S``0at<6gL*)FK{*f| z|Br)y3_1m(gOpBpxG*~K<&rUX%Wr6r=#@lFt({}Q50073m1t*HJIM0HNaqB=+r z)hg*oCq6+`0whEZ1W~1w5M3?^qWgx7MfWR$MnO#=G%D2uQSFwFFG3}VsxUo3G^&UM zQHhjRRGA2(f+Zm;K?G4%k~31JCWs2Ggs8d^L`6?Jz73V297xW1T0&HUWU6$XAS=3I z$XHZh38IQCV^P&6hzhy1qRS3Jbn}t1sE86oHB~~;7Mi^N$y^p-R(dT2`nmDaOW7G3*2O|070B)CC)d z8frr87_Ap2Xd+p3WT!OZK7gm>q>%Dz^4a9~iuEx1P&X)lORs#%TFb=~$UI7imn)gE!UABmk;_XvI_+)TC;^CvFv^*#I5V#LIo!$8D*K!=3^rF-w;4o=< z(fQU|HiDCXlglwqrXM)tURh(ko1x=<3$KuPyW~;H!Gzy7>3=WuFl4vwk-B?s^h(`5 zC&o#~A9n8liulil(QjI}MIk^{-Gipe(cNJh6XXIL%5;1|mT4M^RLT%HwGy2!am={% mR*V}J-Or^}(lQf8c`L<5^O9RCu7Bm%*kZP@nq|w-#n2-eX2gDHMZ|ZZi`;x3|cGG*wRD%G)_)>^1qQ(LF%$S7E(-?{g`WH$sz z+TO{z=jWb#?m6e)edoTH7tg-?sgE%SL!-_KSVCP8fHn%@!QCC=Yufud&#z&BQ!eF-Yn_QY-#3}d`S$WQSEX6y2Fu?_EwFs zci$N8rFV3X8t={0-bv}jFE48^lI((CX`?5xJ(h?XMpMmjD2z4Bd>xd+Lj{b{)-+>( z{#jdaj|nS$(}#X^MglN{w4Q+#Is}Q%xA`F=iHrfj_I6ecos|% z=VUA~RN67vbEl1cZu!W$MPr{klzV&KnPZOIaF&^dR<1-E0 zjy%U4eX^$N{X6x4?b7`P)Ac;ZBwPuVg-q4!Cto{lsdt%IL19&AL$Jc@#WUaObkt8) zb+4DkQ1y#3Qix}Ps}$xYxheyyP9s-Mqxrb?X-tu#dhD=gVHTTn;UvZ;2;tkirVSfI zDWA${U9qZfA{dnO$&O)9^jz*VDJ+3w6CLmqw}F|^Tns*sLhyQ5fMiLW7jfgjAw%;q zx>#HXxRqG6I|SlAUAmRWL6U;QnKSg>pgseE=5*3+{aJuh$Q~MC$=vqp8Wm&VzXclaUS!I0Igyr&P6u_7x zxr$~jb1VCW&N5-SRVD!sdRT5Doy}R6H)mPiEM_eiNoPCBa@UPCt1fF+UDm8RKFhlX zYb2nnOz}MhBd8XeDnkFhYdh|h?HvIa#py?j0+!WA1 z0{s@z;h??*xDnwfZN>VJK%XHxQl@)=X~&i55`8jgZr`kAzLii?zX}U3hi?sN?O>;_ACNlByB#8r+xICrZw`*(6X2Ci zxjzFcR@Ugh0Os*t&-CYPy2Yu#0-Afi&ZD2Q<*k05a?ADC=j$KZ^bG-?TQ1*FsGqat z8-t8h(R*ny5)UUjg4@iL6-y?9mt4AW~UYc-ndn;|kbtZk_Qs$NZfRm*kgTWV|S zTWYIYLDsKnUQc-K`c^^I)nasQHR(1t*RH8yB4~+>L=vx%LPYLHZMr*#HKjadMq??I zbCwpKM#JeaXpSs_Vu|jaG>deGQ;b)93*+&am1dSe-6@mdQUDWlAHbl%mc%?ldl?Zg zeYq_iGQ1Oj8Q2gzKS|DDpEvlmpqk2B8wzXrI^Ua0MzU_QUzSQ*N{9BsM0{`e6s^!%b@?Pu?JYHN|}_{wzk?@@RQvi z{oq9R*|NSp-j9zhyzO*hr~j=3Q>RCQ_w3wa?R||d4c7ox0Iml_0hGHh1HKJ-6mS&q zD&X$`s!bCSz%0Nb0Nz#^J@FF&dS)L0P(`E%^>F}I1x#U7C~&=_Mx~cTREsG@G%5=u zqPihPw@59zLP!x6Yto|HD{av|gG5y0q!v{Q5>e@pB66BUR0X7nZXzT)hECd|+aHNK z0J8yTRM$yFgljtFw}%=2aCR{;*7T%eaW z!|@5;Fn~xE;D{w6R%Vg@Z)$U>$4Z4@DBcq_L*Z1{|7^qBVf{aBgm?+E7=Ln?c2c}3 zb3Ku?r1^_9t|Lge(1aX&J47RGq6R@uPim*ia)vfXo#N0u6HaTot3kuxBv+#r5M&Vq z{hI0;&^!ZLu8=7h&H<@3Xl~bsnh)gU1}y-tU-LuL34sqd4;WII@bzo?uHD)d5O^B2 z8R+{p4I1iz=4;H>3qbEmq4${#J(qez0~S@U>E}+mvARo5HMrCWprk=_3~21M=9=KC z(7c#EsX;3k_8fwI1OWj&A0D35ug&Y%N*lC!Ty+K)+_4b3D+Zr9Y^nrFx}FFd2AhBUG# z3J*q;d0l;)`o&9Gg5P}q?6uUN??S#@>aSV9hIiKf;j9gL4Toi@-+``I{WIhFa3L5< z-za(yaJ|0>Jva2|RA85eE#1#GPH_$O{#`t8e`R9l)b8IH zFy>Q_!8|eiHVXo5xy^zAONmGO4@Q3lKL7v# literal 0 HcmV?d00001 diff --git a/srcs/redirect/heredoc.o b/srcs/redirect/heredoc.o new file mode 100644 index 0000000000000000000000000000000000000000..3a6c8798a7e81bf5cb264b16160153c2fb1d5055 GIT binary patch literal 5208 zcmb_ge{38_6@IsSyT0VkbAP{N}y+X6BnWvwQE&`lnak{zrl+LMU8CA>CZ1ASexxQ>t%Xx2g~UJi>EO z!gdAQkT`=VhT&OR5-^O# zd?AmdqjOp~GtkVvuoy7#J+uOTq`?VpHlIRVIyj;cycoAjDXBWnb zJf)m(haCNgJlhj`K>QN+E1~Q1VblJ=a=vhXC*`b_O9Q?Ibs3*oD&;MsU`|>t29@*W zW5LW3NpQ}82n*Q$WxoMmarBc}9#zhFPV%jm6e}wiadG3u{*}yZIp16vU(W~R^QKGJ z-EU$^;LrD^7rB4Smn}}hFVC1N9JC8L!x-GQa7VAo7e6JzmSpf;U&r&6uTt55gZD3Q z7c8DqzTbBw-wHXaAADRc-GHwXef5xFEo?>&HpJ5zpTj)<>7HLk^fWZn?}Tu{PtO;g z%dfdS8dx8^ynmKnyZVUo!qp>m>{6UAW9IR>c+ch7a!91-@*iNgHb9zZPCpTux!C%t zrO%Mvdg?}FxIbpwr(zL$c&_5Pn@&b(BmArFp_yIKPd8JKzs4o-@>;B$(Z@DP&0~RG z41HOG^;?>IPRBH=ZfT~|H(Gn%Kl{|1U35&5d~;Qp+dwt3tC5H2Ry=o8zY_Q)afh+c z&u}d7yXAH|4IlW}kM&Bf7U+{_SDnIH*YenK9Pg1O>}UI{XN^-=AGzxVobj=jRO1&E zsgB$tmT9V(JuLqGm`JW@6xER$L=KqAp4GL&NDX8~x@DCdh;AW@}S`xP{4Z=#Bj`V**%sP3|g@odt$ zzV_}jb7b=OfYc~=ELEOL{?%{sa&hIU#0mViRDTlbXMiPMM)e*<8LNCBs$Y3P=wR8z zK0ZizL`2)!{zOc0dhu-|DIC~yj6YN_4nx1qwwV$yLJwgLWwb?fK}WDTCEFoB51Tzw za^2#~uzh~3hxDzOpe9i15q$tEu?JN>MCqzr1(j0T#2Vb zhW1H2>q%!0{VS*v&!gG^QEsi=0#&c97JbmZD{Dw(LVImgjKKC8T4Lhkuzw9vT9cHx z4}OnwW4X@#`d?5buA=%hgIg+(LUkw`1iN@2?|mbQFNJn@Oq>Yq+mqt!u>Hk1)z7m{RhU(``ba&-1p%ThgaS8eYV5OIY3jHUx?}}35br^4rk-@UB`1yRHN!Z3cC4(Ip0HpRv+Y?*589)S=}f1$SqH3qv1B>vyNi>P zW+69-d^cPy=H2wrwgESNubI7nXr$fE?WYB1dbf+^(-u-KhFVtofSWDmEaPC&+3z9= zTj_i4g6&RN`8jztB&+xore474jXUpOc{62out z9c~n-x*vmm*Q~+;g1B56rsJ5?yyOND{J;PUSpm1aHksKIHb`C>)F+AKha;Af848wjCXVldRYb=Mp-d($T_ZdSw zKGtUp@7vjD7?hpN870%3AW-sC^Z|2}&l}fW&+wHSC|r)LLnIH_7|WaE^9?(1QPF|B zIlCZ@A`Y9KHVRXdfe{c`j#G3De(Z#WjEUl;Me-r{5B2ur*W+Ix@%{$i3($;3D7aX^ zkMhl14p*JreBeko@O}sfa~|^;gbN39ZgYa+67n*}CA)0#eIlDELYH z{;9ZSMdgFI{VZGC=sjsSy?1{7qo=j>k2z&95NZ= zNGc%?nGA6RmGm5w8R9T4={Z_6#Nk^`~|yaunwdhO+3A zqd2QDG&0Zi3YrXYz6)+MbXGzfdZnwJ?RXR?DaplokReWtaz)M`3~_>y5MN#x8izXuLx^HBoQYB|&y7U>j{6-H z4`skEWZlK7;lD`;=_%JqgDO9jv(lzB`9E{G)9(L+Bkf0Bm;7MWKEXRifS<~GfjyrD zaYDgRbm0BDX5%b_xC@*=x1uU7!PubGY3Zf!YKorGVi`?jw3>`opV4m4Xv(bCp3!uD zKue$#a9u`QnbAH3EWyr3gcCMRzISvPDWR2W(Tw-fEzMe zT>qX{4Rb|CYs_fP8Eq}FS*usdfgoT7TwYg68vEOips>-@Td{t28wY+C>T literal 0 HcmV?d00001 diff --git a/srcs/redirect/heredocutils.o b/srcs/redirect/heredocutils.o new file mode 100644 index 0000000000000000000000000000000000000000..0b40238f39fbaffdabc7626c1074ea263891e949 GIT binary patch literal 9848 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

#4B`6qr4G3OTR12A%KR#2?#EXP(*r)eE8|_ zHKLrtsOpnmXt^<<5Hx@}hNPPod@$Q{V|W*yzD5bl4ce9IaStYy|K3 zrMKw2vanyeTd^K0ylT}SQ`-RRU4kf-Ve~Au(tbc<<6#YeVE7tjX{)Tnuz7v5qL1Dz zQriq_*gkM!Ce*n5$|90Oy%^y(9vYG^1FZP6*ZAY3+y_O*C4@*BhXDmJ&b9`I!GVP5YQ=|>Z>$G!nf zP&pTovm^4xh^&cl|6op_7howlLmAYei{7PbUtzZ!w4oKIs11WR>L9kTQOwtB7A!3K z6}(oF=f>4DFUM~rPFL^|+j>z>9*&31eDnm^e zIvxGk!|3$zz2-iePHSGKH6d`=zK%6T5w{)x)&%#KHOE2m zU$`}&;-gdv`XkT~=y_1&TQyIDP6s^>3e~n_Hf`YFQsBR8YwAHEYOAwpLm4Rki@Am; z7|zt1WB3SC?=ev7_1d%{4obZ(pwz1erCy!g-?q%A4IxnK`9J~LhVLe6!-x2IA{VUT zO#u6=KxyY3Q2c8vw`s$>@E!SL&5uCwHxo6lg94(Bxe{o@SuJNCM>~##60Z}q2-FWs zTpuWLJvMFNZ4+)yYtDk=PYP_lb%hl)c^r+FtY;_oQ-J9*BNns@T54Vnj0WeuJhTJe9A z$DhpOsXJN!gFLGtZdCjSJd5ZpPdHvj%lkIyxj~5m% z4036GXJB<_(t9(}F3bM8%)1(4;j#dkPbwBgd+Pm-6^+Fb*{rZ8ZdE$1T3${}T#wkd zD;gx;(>;NQpV<~Jn^KMh*DS))_b&J|6#VJPe%rikBASVH=vjmn>r7`8N^{B`jFm}5 zmB@WkRuYd$+fGTM!nNmDLQdMu)<-{0K42_(E!UA8s)zM D8AfKT literal 0 HcmV?d00001 diff --git a/srcs/redirect/redirection.o b/srcs/redirect/redirection.o new file mode 100644 index 0000000000000000000000000000000000000000..122c0157a1f907c333942cf989d61392e6c81290 GIT binary patch literal 6136 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 Hj9u*CjBT0$ literal 0 HcmV?d00001 diff --git a/srcs/utils/env.o b/srcs/utils/env.o new file mode 100644 index 0000000000000000000000000000000000000000..a1e7dc9bedd2d5c2e9d6c80bac28d596d76bce4a GIT binary patch literal 6520 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 X?XX``FXT(5azT{PJNv_DpDgIV@H2Qm literal 0 HcmV?d00001 diff --git a/srcs/utils/list_clear.o b/srcs/utils/list_clear.o new file mode 100644 index 0000000000000000000000000000000000000000..cfd468c69bccce7f0ac2a298c2dc4045780c24a4 GIT binary patch literal 3400 zcmb7GU2GIp6h1Svvp?PK(qCx#iAyX{)OOoaf>B~yDNvT8gq8@2X0qL#wqv)mo1JMX zDZz#kqlpP3_+|njB+|qeO?;52COkl5(5Q(%_+a(H^u-th7>cR&J9qB3+oeW1*>lf1 z-?``9bAM;Qe)QYl5h8^^-1xxr8k!gwR1Y3z`(J2p&~pSi5LB=O(3#5^1Q~{FPPm@# z+5P)Z^sm?jty@$=#Q9W!Jt$6Rr;nys6v!~r=D^sHksKJvo8z3n`?aoP2MTT~;IWAl^sQ0t}$kxvh1{B^mZ4|XwL6hof4eK!R0M_ zANwmOS~6en{ADcLZ1Iv0Wp{V^Z7vT>Mb59+GHS*Q_s zNcuKh+1R6czGYlr@y*M)f{)-sU6(l*V}v}#cCdUU_D)eO0Wb8M<2adPak6U$bzhv- zjPI9jasBGdBJ8WvPd&UbZ9FWkzZTR;lIjL4wl1Iu#9h~oZK0xQN0(@YQ2^vv^_!uU@XW0b3>j}~Fld66W z^&nXBg_gex+ARRO&o=~d8|+gn^&cTg{~3)!+E)+(pS)p2vy6`ZidL%%s274uLi-ji z`Df8Eod+wU_t0uv1M0;I(P!%vN(ibKD&Bz9p5_Qx!6aJ^B0ls3u(Dq`44}FzTm}(S znS&vNju$(XR1G&ML=KoVJChhnR>PFM6;6~p&~VY+`;g16E7sXnr3|5 zNoCWfaVnc1aqxDU@gtUPIm2cqLqmo+VY!CmCfzZIEZZg17(f(_*^V`2o9P&12fBLu z_EZ0{ZPB+>lq;8hk+r!D-B=} zpL~Y+YRF#vJTNo_mc96@FvRypLVWia;=3nDj7f;Esmyg7J-8QNGM;-W&3eFNE{ThG z2VEZX*CDA-JdKK?{1q)H2p$KlSa!-Ox|2jXD`z$jvkwPzEaiIos;kO-*CWuY6M6t<2;L~n+Jx>)=s{TJu(X7(BBm&; z$P+*(6`d5g=>f+1b9tQ5VWi-3M0kj00z=#vLj)3f1wu5SA;^H}bwJmS3KiMZ3M>TI z&;N69-kLsvj>T)bD&>Tf_zxlQOOWX5=ResjJ0Ni`quZq&lM+JsPfEE5GAc%54^b;P zipwzP7baCetb>2nGii&orAg01DGC=lY;}2~jnyxjQT#+nLq1-{VBRz-gIA?hv@JZw EKhHlCs{jB1 literal 0 HcmV?d00001 diff --git a/srcs/utils/temp.o b/srcs/utils/temp.o new file mode 100644 index 0000000000000000000000000000000000000000..1d69be5f5dd625029ff3658d263c0d65ea7ad1a0 GIT binary patch literal 8944 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 literal 0 HcmV?d00001 diff --git a/srcs/utils/utils.o b/srcs/utils/utils.o new file mode 100644 index 0000000000000000000000000000000000000000..6287eb294ec6c31b0f028b9a568efc8ba2818247 GIT binary patch literal 5832 zcmb_ge{5UT6+V9Ub6nfcahs$~TdKOE&~#JcG%cdg0!`aMlLqM0mX<;HaO{`Fi+|0} z39X8tY7hdgQ>iE$(~v+KnpzE}2~A@`8iQ_supz`Ri6IT9cEBhS+mH}j+flmjyYIdx zF_AX5UHRN|&Ueo}_uT9E?m6}==l=3}TqGc9>_VWm>{1}Kg`i&ql{jnn*G3QC%{gek z-T;{tBZy|(HD_i^f-M_Z?>It2FHf&%-~?v8E3qkcXbb3f6?Sg9oM@W3Dx-nJj12$FJBre zb4tCx!@ji+@B{7dRqR)bzJ*%R_lHeueP(=z^`zJJtPi5fYn~d_BCeV}R=P7^%Gq}R=BcfSwCeLZpuq|rV)Yuec<&hCy8U|3 zUm;&|IHi8Sk7$3l=vg1DmjbUT{OLz?hQBWOXa#v=m>l#R(1>^&<|WDJi#!g__jDVG zjgO>H5y+%3+b;ZCUOT_vIDURYjyyiG^vtQ4oc&XyOuieF$-2)h79A70 z5-~QPjBPlJHI8DfW{jWxFepdb0z<&=HQ&?sVgZ$>S6DnYOEBQsltE`TZM@W3404 z2kkd6OmNM>@$;MH$jJsdd$Pgv$+;pMU@u4OZBEl>ndhJKQd7<lR)eTNg9%*aVjYxHcBU(-H~=dYgiYSd3#LW*bH> zK{5z;z}>v?hSp$$BP$kiK5~I6hK72Z@JQ8L(Pqw?88*@R!WBIKu|_B&@utAknwF)) zqrqB)kO&|mk;Y}Pyb^kn!Ny|OLX^+&?(vbv%Ib}X3tx~P&_04__j*kA$6#ap6ygn_ zKxmG7aXAuv4xJeaG3%TFg^ao8o8V%;jV>U;--0zv<%Sy3;wkjOmaE~k!8o#aIe4(8 zM`?$X4=C+-o)&)wuV=7@t2P*iBQIUlBtlPY%RzzSr|5$z+Nk*{&X>p|=-5tz0!3~# zxPmrn#T8s}j&V5jD!s1c8WP#dd1#%WK(UE4)?J*jjx!{B6S^gkjFwm*Sac`4mDGpg zonTvx+bll448hnV)<*C*DSsnkeb1Ner1dD|B9=DpXtjO>xk@>cvOa+P7UjV)=|oq(+TI~yeS3MK@vK^G3h{s0#JGrC@ou{ypDEM>G?yTF&yXa33gvRK_WSaRkj1lC z9@-+-cOdf{HdZDjMlg0Ky&XjNW5UlARc%KA2m(Rb_}u5udPM;J2tQSUxXy}#571G!SnZHq${Rxx-2)*3AiOj>0k{ipAK#r4>1MH$$`&%E;ncWOb@Sy?YSo&K z&W_coHifpYTGP22dRJEm@Kr0tt!CZySS?@BeMeT({rSOarn)b^*%@~V<%&~HZz>my znNqGFS$jvh4BPFSx4P*YGufNB@9uDOqcTlQ?{u+p+CjkpQ^!e zPWr}tDesOrg@O#*&fa{@c59j1m@D~GO&og=vt+E~=7&p8E=BD6?*8pPvSVOpk2uw8 zxoQt)vZHp@$>dZSQK^=PtC^zhjnN@IRmN)eP}OlHm#Jkusph#RAT?Vt*JH|DvLl(Q z)XJky$;Egf@7BciSf%PniFLgi#h}Ms%~@njaqVWtwMlq_IgE7=40PXWZ}0tjkGEZ^4@?rY8J|Q;k>vKOrvYMi4KY%6=QW{=W6t`tga! zui13s=j%HTU057@<93V{KzD%-fgS~&0?|(i#Ku%eojH?@iGuokc4$mB6yH;t2-6ew z=e6#~s?BA#Sig)7Gx`D$ek-ZQ{c+DhoJL6hfyUy`(xwcCsyW`R2!Tn;g>hoZgUU4T?^fk{PdEMHZQIn$}c(d;+nfB&Gbug1hEv< z1!6MY4H^aA4LSmP0`v@s7xFuxk3m6PTk}CoM(aU0gLqqxf$j(W0Q3_OGax>~bjYFr zjp>*WGc>n{#>7pCNduKW8*?|IzA5NZ_#?!7TwC$NCdB(&yJtoq#3Z5JGglB|^3W5R z2M94eXo$BwAzu7?B6mcH2|-&ia}i=P(^kxBgqY;C)d{GCSe5YWMPp4yh!?*OmARG> zQ>6CAEKG=LS^Hx4BE8-!SX=!vWq2(f(7R;(fj@tf3E z&~(%FoZfR`1Fcyw($W36O#1|EfDx;!Xjgk1oEY zer3*yexi_u@K*4Hri5=c8>64X5+;2B8zFGe@__^d3qX?(aAeBjqR2J+%n(=HYDQp_ zc-Cz0GZ*!laf}=UG-1*guw{K_q|Xd8s9v+7U#;a$pXN7!HRU-3_lXWpt;F46#E9b& z5_trKzfjsA1jkj|KBD#8HD|8k_-8mW@{crs3mm^1+kc~VrW(#a3XW^Lohb?b3AEo2 zj(;%Pw}ImtZ|?_(%l<7Mzh;ddUjPuF@cSMfenE5o2}k@oaHOBa#30>?CVxK4k7IyUP64|F&5M%eoA=N_$tsm6cxIPSmSbW7d84^~4b z<~N+#41J5BF*sN2!& literal 0 HcmV?d00001 From ab69bb1d1b415181fc43a7c3cd45416314806143 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Sun, 13 Aug 2023 14:10:07 +0900 Subject: [PATCH 22/57] . --- Libft/ft_atoi.o | Bin 880 -> 0 bytes Libft/ft_bzero.o | Bin 584 -> 0 bytes Libft/ft_calloc.o | Bin 696 -> 0 bytes Libft/ft_isalnum.o | Bin 688 -> 0 bytes Libft/ft_isalpha.o | Bin 632 -> 0 bytes Libft/ft_isascii.o | Bin 592 -> 0 bytes Libft/ft_isdigit.o | Bin 592 -> 0 bytes Libft/ft_isprint.o | Bin 592 -> 0 bytes Libft/ft_itoa.o | Bin 1128 -> 0 bytes Libft/ft_memchr.o | Bin 648 -> 0 bytes Libft/ft_memcmp.o | Bin 680 -> 0 bytes Libft/ft_memcpy.o | Bin 680 -> 0 bytes Libft/ft_memmove.o | Bin 784 -> 0 bytes Libft/ft_memset.o | Bin 608 -> 0 bytes Libft/ft_putchar_fd.o | Bin 624 -> 0 bytes Libft/ft_putendl_fd.o | Bin 856 -> 0 bytes Libft/ft_putnbr_fd.o | Bin 1048 -> 0 bytes Libft/ft_putstr_fd.o | Bin 680 -> 0 bytes Libft/ft_split.o | Bin 1976 -> 0 bytes Libft/ft_strchr.o | Bin 672 -> 0 bytes Libft/ft_strdup.o | Bin 736 -> 0 bytes Libft/ft_striteri.o | Bin 624 -> 0 bytes Libft/ft_strjoin.o | Bin 888 -> 0 bytes Libft/ft_strlcat.o | Bin 840 -> 0 bytes Libft/ft_strlcpy.o | Bin 768 -> 0 bytes Libft/ft_strlen.o | Bin 624 -> 0 bytes Libft/ft_strmapi.o | Bin 792 -> 0 bytes Libft/ft_strncat.o | Bin 968 -> 0 bytes Libft/ft_strncmp.o | Bin 776 -> 0 bytes Libft/ft_strnstr.o | Bin 936 -> 0 bytes Libft/ft_strrchr.o | Bin 672 -> 0 bytes Libft/ft_strtrim.o | Bin 1320 -> 0 bytes Libft/ft_substr.o | Bin 1000 -> 0 bytes Libft/ft_tolower.o | Bin 600 -> 0 bytes Libft/ft_toupper.o | Bin 600 -> 0 bytes Libft/get_next_line.o | Bin 2936 -> 0 bytes Libft/get_next_line_utils.o | Bin 808 -> 0 bytes Libft/libft.a | Bin 35328 -> 0 bytes incs/parse.h | 2 +- libft.a | Bin 35328 -> 0 bytes minishell | Bin 89750 -> 0 bytes srcs/.DS_Store | Bin 0 -> 6148 bytes srcs/builtin/builtin.o | Bin 6200 -> 0 bytes srcs/builtin/builtin_utils.o | Bin 8296 -> 0 bytes srcs/builtin/ft_atolong.o | Bin 4112 -> 0 bytes srcs/builtin/ft_cd.o | Bin 6880 -> 0 bytes srcs/builtin/ft_echo.o | Bin 4488 -> 0 bytes srcs/builtin/ft_env.o | Bin 5512 -> 0 bytes srcs/builtin/ft_exit.o | Bin 6336 -> 0 bytes srcs/builtin/ft_exit_two.o | Bin 5120 -> 0 bytes srcs/builtin/ft_export.o | Bin 6472 -> 0 bytes srcs/builtin/ft_export_two.o | Bin 4376 -> 0 bytes srcs/builtin/ft_pwd.o | Bin 5184 -> 0 bytes srcs/builtin/ft_unset.o | Bin 4560 -> 0 bytes srcs/execute/checkbulitin.o | Bin 4720 -> 0 bytes srcs/execute/execve.o | Bin 7992 -> 0 bytes srcs/execute/freepipe.o | Bin 5144 -> 0 bytes srcs/execute/pipe.o | Bin 6128 -> 0 bytes srcs/execute/pipeutils.o | Bin 6104 -> 0 bytes srcs/execute/setpath.o | Bin 7320 -> 0 bytes srcs/init/init.o | Bin 7216 -> 0 bytes .DS_Store => srcs/lexer/.DS_Store | Bin 6148 -> 6148 bytes srcs/lexer/expand.o | Bin 10360 -> 0 bytes srcs/lexer/lexer.c | 16 ++++++++-------- srcs/lexer/lexer.o | Bin 7112 -> 0 bytes srcs/lexer/lexer_utils.c | 8 +++----- srcs/lexer/lexer_utils.o | Bin 3200 -> 0 bytes srcs/lexer/quote.c | 12 ++++++------ srcs/lexer/quote.o | Bin 8600 -> 0 bytes srcs/lexer/tokenizer.o | Bin 7440 -> 0 bytes srcs/minishell.c | 3 +-- srcs/minishell.o | Bin 5008 -> 0 bytes srcs/parser/parser.o | Bin 6192 -> 0 bytes srcs/parser/syntax.o | Bin 8240 -> 0 bytes srcs/redirect/heredoc.o | Bin 5208 -> 0 bytes srcs/redirect/heredocutils.o | Bin 9848 -> 0 bytes srcs/redirect/redirection.o | Bin 6136 -> 0 bytes srcs/signal/signal.o | Bin 4304 -> 0 bytes srcs/utils/env.o | Bin 6520 -> 0 bytes srcs/utils/list.o | Bin 3888 -> 0 bytes srcs/utils/list_clear.o | Bin 3400 -> 0 bytes srcs/utils/temp.o | Bin 8944 -> 0 bytes srcs/utils/tree.o | Bin 4376 -> 0 bytes srcs/utils/utils.o | Bin 5832 -> 0 bytes 84 files changed, 19 insertions(+), 22 deletions(-) delete mode 100644 Libft/ft_atoi.o delete mode 100644 Libft/ft_bzero.o delete mode 100644 Libft/ft_calloc.o delete mode 100644 Libft/ft_isalnum.o delete mode 100644 Libft/ft_isalpha.o delete mode 100644 Libft/ft_isascii.o delete mode 100644 Libft/ft_isdigit.o delete mode 100644 Libft/ft_isprint.o delete mode 100644 Libft/ft_itoa.o delete mode 100644 Libft/ft_memchr.o delete mode 100644 Libft/ft_memcmp.o delete mode 100644 Libft/ft_memcpy.o delete mode 100644 Libft/ft_memmove.o delete mode 100644 Libft/ft_memset.o delete mode 100644 Libft/ft_putchar_fd.o delete mode 100644 Libft/ft_putendl_fd.o delete mode 100644 Libft/ft_putnbr_fd.o delete mode 100644 Libft/ft_putstr_fd.o delete mode 100644 Libft/ft_split.o delete mode 100644 Libft/ft_strchr.o delete mode 100644 Libft/ft_strdup.o delete mode 100644 Libft/ft_striteri.o delete mode 100644 Libft/ft_strjoin.o delete mode 100644 Libft/ft_strlcat.o delete mode 100644 Libft/ft_strlcpy.o delete mode 100644 Libft/ft_strlen.o delete mode 100644 Libft/ft_strmapi.o delete mode 100644 Libft/ft_strncat.o delete mode 100644 Libft/ft_strncmp.o delete mode 100644 Libft/ft_strnstr.o delete mode 100644 Libft/ft_strrchr.o delete mode 100644 Libft/ft_strtrim.o delete mode 100644 Libft/ft_substr.o delete mode 100644 Libft/ft_tolower.o delete mode 100644 Libft/ft_toupper.o delete mode 100644 Libft/get_next_line.o delete mode 100644 Libft/get_next_line_utils.o delete mode 100644 Libft/libft.a delete mode 100644 libft.a delete mode 100755 minishell create mode 100644 srcs/.DS_Store delete mode 100644 srcs/builtin/builtin.o delete mode 100644 srcs/builtin/builtin_utils.o delete mode 100644 srcs/builtin/ft_atolong.o delete mode 100644 srcs/builtin/ft_cd.o delete mode 100644 srcs/builtin/ft_echo.o delete mode 100644 srcs/builtin/ft_env.o delete mode 100644 srcs/builtin/ft_exit.o delete mode 100644 srcs/builtin/ft_exit_two.o delete mode 100644 srcs/builtin/ft_export.o delete mode 100644 srcs/builtin/ft_export_two.o delete mode 100644 srcs/builtin/ft_pwd.o delete mode 100644 srcs/builtin/ft_unset.o delete mode 100644 srcs/execute/checkbulitin.o delete mode 100644 srcs/execute/execve.o delete mode 100644 srcs/execute/freepipe.o delete mode 100644 srcs/execute/pipe.o delete mode 100644 srcs/execute/pipeutils.o delete mode 100644 srcs/execute/setpath.o delete mode 100644 srcs/init/init.o rename .DS_Store => srcs/lexer/.DS_Store (76%) delete mode 100644 srcs/lexer/expand.o delete mode 100644 srcs/lexer/lexer.o delete mode 100644 srcs/lexer/lexer_utils.o delete mode 100644 srcs/lexer/quote.o delete mode 100644 srcs/lexer/tokenizer.o delete mode 100644 srcs/minishell.o delete mode 100644 srcs/parser/parser.o delete mode 100644 srcs/parser/syntax.o delete mode 100644 srcs/redirect/heredoc.o delete mode 100644 srcs/redirect/heredocutils.o delete mode 100644 srcs/redirect/redirection.o delete mode 100644 srcs/signal/signal.o delete mode 100644 srcs/utils/env.o delete mode 100644 srcs/utils/list.o delete mode 100644 srcs/utils/list_clear.o delete mode 100644 srcs/utils/temp.o delete mode 100644 srcs/utils/tree.o delete mode 100644 srcs/utils/utils.o diff --git a/Libft/ft_atoi.o b/Libft/ft_atoi.o deleted file mode 100644 index 6af93fb94d9f00580a48389b4dde722c5e961288..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 880 zcmbVKze~eV5Wck4rdEwmAsUw~LhGc0idzQ-1qYE1-5#YX7VQrqVi%#};@Zuvqb`mP z+3KX5xH!91Qo%o<4%Y9|y!3~iJaX^dyYKG1yO;O!{q-|Wq!5Ic5cG%*6AGDyI<7T* zxp6azuDxBJ!w6>$cxggd2W6|vAw+63o$8*YRqo-Fxh@u>ij3i1h-@)m%498ZRyfZU z_J!El=*1+`R`|5P&)$Z2Y1tAqF@aJ^+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710W6Ja|1EV4v-oU z2I&Qka^N;VM%6WsHdj0+yj@uS>ON=lNy2a${wQsYu}Ib z9Cy;g*r$GwrRde9C^XB_Teck0<@`0~T?GbWMmd^G(MM?Bto4YtuxI|>FN_wz0dl%0 zjh+;B52a6f?ocDOw?2>J&dw0~^&bp=(dSg}C7*xFs_<~9q6J2>C`rtjT?gmn!paKZ w94@ZrP#*sBL|){COZexeeBxt|-MV{L_lVt^<23CgWRIoexvdS7RURMq17ML_N&o-= diff --git a/Libft/ft_isalnum.o b/Libft/ft_isalnum.o deleted file mode 100644 index 8311ad73435a78ccf372be4688ce3871f566087b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 688 zcmb7CJxjw-6uq(43eoD2L0!xu6tti&Iw~qSIEZv`yM#tbGrtu!Qc8_$9=2%U4OodZ)X*#d2kCYvp0S2 z#*NJmyxaE~eoDWSzGrOt8B0h}ELvckr6^r^jV*%nazGsm;5-hR+_T))RH`rkO)6D7 hof98N?47&bi5F?@RD+uTrNfFt)yNN5)Vi!6OCOCqO%MP8 diff --git a/Libft/ft_isalpha.o b/Libft/ft_isalpha.o deleted file mode 100644 index f936134384ebac76d78e8c6def92e55f0fe03b61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 632 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg{|11j7BHi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJHe0cC*9gXskeu`o2i)PU&t_~iWDg2d#K_|m-c%)FHNcpn#J zd6+p0FhQVU%s{pRkcK)H#dss2oCFX<!C2I2r91_6*7 z5C-W5*+CBY@62%V0XM_W7u*gzIanDBUo4+51q^p{pqV0Iu}q-Y@%d7~a6yQ*LezO6 zi@gMjU7s(t0;*Sop&{r6Kf_L-yF~s2X^?pj_#Jiv?VEUjIsO{Vt>Ewy0DA)_1gC*| w*o1*RK9C2Y02DfWKu^QM86?GzB+n3^RuZ3CoS0LPk;sr!l3QR1CJkWv0U(J-hX4Qo diff --git a/Libft/ft_isascii.o b/Libft/ft_isascii.o deleted file mode 100644 index 6895e02eb9b0f074c0d3d2b35b63434a98217467..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 592 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P08wF5<5+(=K!zK*m@PQl-1t4GZ0X+lr h8%T;DNuD7-tt39PII%c6Gm{~wB)7m2Od7!S0{}(4JCpzb diff --git a/Libft/ft_isdigit.o b/Libft/ft_isdigit.o deleted file mode 100644 index 922557d07d952d8a42f60e7d36dfb72bb195ae68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 592 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P08wF5<5+(=K!zK*m@PQl-1t4GZ0X+lr h8%T;DNuD7-tt39PxS%LAuY@6|B)7m2Od7!S0|2AlJTw3R diff --git a/Libft/ft_itoa.o b/Libft/ft_itoa.o deleted file mode 100644 index 853a82d120c8aa5ad2a5be249327b6184fbacfa5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1128 zcma)6O=uHQ5T5Ne$!=o}g+jHc8}L$)LhZ!}9u}fdr3WcJc=8cae-`pnVWmPT1ab-J zCFn`PimgTU!r;henL?o87nB2o@YNZ{C|X-#0(J&8MH=exD#x z2*S%a^geIWP{?Vh=kNZ#m}7yz<}(n5=LFoW@|uLO?>w?24k1>r-CB*#;qI5@VLrz0 zsFGuxDq##;A@b$odMK3@Zd*ZLcXXpKVlK62VXi z*T8-cxEO2(16qJhLT^G@n3t8YJU`h2cKdma-I@yNnC8^gQ zYj)1LPUp6($7sq^^=*C2d^$&!J=)S=@O?KyJuhMQG=;uv@&Hy_W zVA*$Fsq9TmetdodHEYVmf%bvwU%~lGZMcVOa{CGDdyV>*tP2^R1F_6~I2g=uZ>`Qt z7x^9=sFBYOdgGkUsyOOzW?PtH{kD%RS2ZjN-z6HQB=t?g6}FPjA?p4qtZ^ zas^v}=Fh-_Vm=+%I1HcT=V4C<-0bq-D4#>#vwY8wU4F3B*rrC}@gL!1U;+{Ok}cM( edzMY2m@5>@c@lSRVcF#z73|{rMStZ_#g{+$EZs){ diff --git a/Libft/ft_memchr.o b/Libft/ft_memchr.o deleted file mode 100644 index a0a51afb13a7db7b5870c94d8eaad50fab46323f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 648 zcmbVKJx{|h5WVz+qzV*?R!ZrT{)EB;-8{g?z|eusLZPS#QX&)tBO?O?{RLeaS-T~8OM=W)hv4B>fMuTGWdDyv~HWpEls`#~(v2Ny?!11Wd5 z^7^d_TE;gptO&jdZ?^ht{5rG-@S`oE7=UpR=Y{Ey;5l}IU4V^i7~IR>_>ZNJ^gO9i z^6Jz0&80-uM51hXUyPMc9n7vPS0t4(&8E;Di)P9jHJt)&Xw4SLiO$p)9mlF1D|^(u zqq(L$N^l=_#dT#G^6d9C^-|=yf8vP*dl)_x9tMYa+E;eO2rY7NF@CNegJ{3BjE!8 zgDwPd6^P13aJ*S|!;ugKlf0cb^JZpuZ}0y7?PHS2As8cWl|UAw19a>QsTwZ4G-VqvN={6D9Jbb9&I(m2z`E zuiu!UX8bCKx!^5$bJQQ>m!Zu9U)mIk0T>r?e%th4!gCw|TL2r^Fu0fZ_>X0G^f;)H zdJajw1fp}dnOHpDivuogzh^uN~>4%zDp}w^8|8YZRiTM2=6_Z+sf83}Oxc e8kO;}?EA13=5&&KiHzHE6nE(;iMvaBZO|tV&tNV9 diff --git a/Libft/ft_memcpy.o b/Libft/ft_memcpy.o deleted file mode 100644 index 432a71542dd2a40a3eb37fb4330688e9c6f1b691..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmbVKyH3L}6uluWDGIa_trY0g5iu1O=#~LC28IsZ3<^a>A|*o*urYR|U(g?5=qDiY z0l>msm=Yw0j%Fa7>)L9Nn7GpMeVu!3$9ekt{9Y!q2*yhR=yA{hVCz7lqQ94CT^=X} zB9l9)GZu7Th`4(l>jX}S_I{^5&rNi%1J*OMs#Ks`!(lH(a1lnwK`bu&S7-ebArAKP z{jp9O+V4WlM%;ndNBt$gjounC>#cwcz?j7KBRziy&$$a60&L7-@GS4~AIl!;Wl|;i zRw4QBl1!?;ELk*7oKbzlq8(`0lFGa`pjj>RNaBrZ%ugK5fs@!I72oycQjw-9^puu2 zs`reRt$M>0+>+(DQpcB@MH+rU1N*h6S>`EC=(EzCj9_ICSg$k diff --git a/Libft/ft_memmove.o b/Libft/ft_memmove.o deleted file mode 100644 index 9d5e31641ef589af73b037128240e95a73f0b95e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 784 zcmbVJJx>Bb5S`=D15q%6L#`LfiqSo@;$F)FQG_TH@Cqf+T&DRZ2 zDNf#j%!WUJjYs^T-$88+I<2js84BSh&JSb!J8TJY26_l(;T~4T@{IpTbWe|?JgMg# zsh12XnfFx6qKS0+#SM#g!CjEKS*}CVT;!6%?gj3b4shs^Hmu{R(B}U1tGw+OJBew( z=E-;}y+D%?bMy?iUu>8ez=Ws+*G*YoB?QkH@us!Z#U7PO6uEiK`wI_d^g`@nc(xFa zv7_P99K1K~!2Zbf6yBjXw8fKoL;a6s{k$giZGl Sy6?9x>vSIY?QMOQ4gL#Ewtlk! diff --git a/Libft/ft_memset.o b/Libft/ft_memset.o deleted file mode 100644 index 3524c0760ee6ccd2ade520ebc4f7777a2b686b43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 608 zcmbVKJxc>Y5S=rLADreygo{?`B398xuF4e(78VvM>;_3rB6u<2ik6mX^9%eP=>&g( z*jPuajUX7XISbD>=Pq8r%7M4@@n#;o!#;ezeJv6>1e2o(bR?((ur)wu(ceekl>3 z$0Swb-=SAPybMuu)hYRHa24Q(TS7AclP0NG5Xk&KyyPx$2#86KKxU=qKbGFp+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*TVsc4*XM+jxbm+v!^8!jY5FJf4;wKUdwMn$I@GBtN2#3+mB1MW6!XVzMf%A-dApx6%`~d^@o?YS} zFm{4JK(r7`wMt`egs5*WdzhS!18?5EnccV9z1)Ake+?3K5kgWJs7VnA5EHK!K}FdGM2vmq=7 z5VA=66%_J5<1o>{13(IpkZ&N6y>j;sW9a|H_Z>YnPrIwl5|!Oj?Bg;St5uR*>+7PU z`t`-+KG8D#$3_9^*Q0b(De*@=LJb#;GtOTlTH`H5S1(cRMzo7{*mE{TRGud1QF`Lh zJYB2eyz*^`pZWtoPJIWtPDkiay+pHHV0dh1TD&T6AbkytyU&7T-n#@IM&XB)!+03w zPxApiBN}h(fF&k@k+%JP&~1{U0Zk^);SWZJ@(ZQxjqFov={-i-uM6jq}A%loRw~N0usA)`}D2VXDrDFqy zj&V%ZE={&d9MnbHp*Wf?D&0j$)9<{ThtJf42hKfz-}&x+_nmus^ZQRLkwy?+8lZW0 z0#L|PXw<4&;Xli?)Xv1(aWjytF6mIpSlTvj+m)J~d^>v^+g`xI_Xx=sAkewkKqebo zlv?;;q~eKplBnmidAw4;W-^D=g#^C$>&dwVLv1Fu;)zA2ViOKH4am6ylGJf7{MP%&S9glZs;_WrBRf7o1nrE@8MG2qaT$WEms+*^nTHw zFS)5uc8?WwjW){PGQJg}Veod0K(ob6{$g+LtFEtK%Qe?3H76D^~ox{DPzq{10P6$JPfp+jWZnqs$M@lRts+OVTM(p-2i z7mczn1tsnk%=5Z>7sr?xdmh^mw>kLutvEuWHPwfQLTW1&Hyu2L;y$2gw2Y3zT`9zyJUM diff --git a/Libft/ft_putstr_fd.o b/Libft/ft_putstr_fd.o deleted file mode 100644 index e34149bfbdabb9b249a3d3fc46968974ecf735e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmb7Bze_?<6h8VagUSLOszsY>5vrwCvbKf>hqgob6a_W2D+(^bTU-VAY}5XMbPM_e zqNTZ--V!uwVD+8bee{Bs4t(eP&X0TEJ@?(ezkVzb1qdcC1QbLh0N5(vYW25kn{-=G zAoAic@`9kLGpk%vnE=F`IXKSz#GbN^ka==;8BWg#(S_F|%$z+fS5LBv>y<{aVlyA^ z`|AZ0Bn-b{o&}x2FmqKs)|6=nVg>lFEutBKNt5I^A!fi$@D_L;I0D3^M<8eA8>0Vf zpLg^yZ3PEYhdMncKE6uFhy64U=K^%*-dwI>pIyw4;a|lh??!3VcX;fEY0?AZd)?=7 zYVu;y^;0x8l34nut-S$ecWy0y^xw(6bI6|)EjuBZOo6dW5+r-gZh#}Qps{su1dDp_ u97Vk3tBdr7gnR#riSvrjRjrh(5I1T?mD8DOT_MSNn@Xx&-PT^7o4x>P!Baf| diff --git a/Libft/ft_split.o b/Libft/ft_split.o deleted file mode 100644 index 0274283b48990647c87703b37087a4f2885a4d9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1976 zcma)7y-!n76hDs&ZT+B8h$yIq4NPjpLFr&pttJi(#4xy+3zn*lrBr;x8e;Mi784w7 zWHg~Twf+Tt6C^BbL}HASDd5l!CK@#XlUjf0e#nC^p5(rB&&NIIch0%JUH|>{&ru?a zK>Rs`Rpw1E7U(qAkhDs%>2rz?fIev-Bm1G_p3O)h;c?eM!DqZAOyJBvzm5x_^!FTjL_S&+X4Qcb! zZq*;#4OsNO>R;@BL39OJI+y3dJ7I7>2is$|flC|Cy~4`#c|ME6caOt&J3;wI54jcS zmXQCg&L22LgM7ZKW3zp;C+70`0`j1zot%?n6(RG!Fei5Ev+)vY%dhyv$Hpq5#+Fij z4mHAODIP92I>=?;B76f@EGlt!Ep|WjDV$2b5-r6=Iba1JF@`mbLE2g=&-vPQz9Rgr zv(&-3Dk1c&1GRI{kf#=MToo@kZ!m5(8eJ9m)Mu}kfKTB(FpJF)?QRK*ZtFgWErq!n z;-2qeUTamDm3}2!6Dz1^KW1qI<|<Dj=JR}MT&p=WC5MctDCIVXy%;WF-OXAN-_mf$?+<2e16>PNq>VIB1^!(Yy8Rh0M5 zYmVn-mFjWIS5W&V@Ub6e%=hqd4YHY+xfeWt&P%|?_TO0p*}5}{+wqS3Cugr?<4!0{tRl_^dqiiQ-9*X`MWHm5c7_6>X0Y@Fl3KN z{A2OTT&Gt)c|ay{-xg1@>6A?(nM;~2D`)QEpNd2xgFQBBaY4!H+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|z0xH}AHi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJIp1j+!J2h$4{Vqs{2sR7aP@yYqQ1&PTe@uhj?nRzMk@jfod z@++Vm1t@I*G>jR@4gk_nr=l2d1eB8iVu&0sP%#h#0Z0)@JOZk}14x7T+&~-v#2^4t z1HvG^AUntb|C<>uKHz5f`H-Js=L>#^oiFqmEP>{Uyx?~D$-(Gg$-&4__(FWX6bBQ7 zIYRt^}0RzA^#=r**Bv`zFr1+8K8RFAQ;)_d) Rk~4}Ja!PUw48f!U0|4h5Suy|s diff --git a/Libft/ft_strdup.o b/Libft/ft_strdup.o deleted file mode 100644 index ada19c5ee0486eb467f07cc0d4dbe8f7ba0b764c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 736 zcmb7CJxjw-6uoWQrlne!4(ejTrJ@DvqGJ#R2M31^ZqJfd6w)?mib@dzS-KY79PHTs z3I%_F=-?c;I5@a9Le+EA7p>yrf&0$6pYP_8ySJD338DxAe8gY}EOIbl2Id9o@1rZj z?O*~?=&OjcMP*(Ht9oil2P8ykbGP*Ehsu_M=W%Zyhr+QK*-RmX&>JTKuyC&xk+3K1GtFeTM!9w54;9W!**Z{u3_U|-Zj`4 z{2zSW(*3X%?GGL5xM}j;wC1D#!d1zCRy99Q_QOJ)I&_}84B`s;o}&552)%mh)ohz+ z758Vaow-2@>>~Gs86JA0+=p3Q-$S13x{eqOTkCz?+qqH1W4Nn568szdz#cq&S78Yp z2WP=3DuDRA6Gd=_A3$OeoWY~m(&yKl8q2dBbI0C()G+@mPh#H^$JUXdn`fb}G|f;N U)jEk<*)SS98CK0K2In%-C!!=_w*UYD diff --git a/Libft/ft_striteri.o b/Libft/ft_striteri.o deleted file mode 100644 index a0a8a3eb480b1c2684ca86ec97c56499edd8e498..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 624 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg{|0V>=9Hi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJHe0A+y8gXskeu`o2i)PU&t_~iWDg2d#K_|m-c%)FHNcpn#J zd6+p0P{AKS^O%8b380}+r=l2d1d;<{h#W6aF%Sa*ND)X}0muO94*=2%K$;uG24WBZ zsR3b-UXU7c!2iPx7yni>t^C`}FmXY%{Evs+3_t(#GwcMKDYBwD{>MxHhMgRYoZTFZ z4wf8@423Vm=Su;@$Q&g9g4^Ne1Ad2{D}m}>0o5roa&+FyGC6ysoJ5PShN=l%cx z;(x21Rs!vrcz`+n8qAH*Z~{d;1^}APCIS@Y19=Pz_<%GY(6g}c1xfKE$uq>KmBbg9 V6lIpA7G*Nzl;jo|f=L6YegJtAPvQUo diff --git a/Libft/ft_strjoin.o b/Libft/ft_strjoin.o deleted file mode 100644 index de774eabb4c94570e4232da47ad82f2dc58cd1aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 888 zcmb7Cze`(D6h5!lG(XxJ1RrwX><{{2W`Q@!NI}pB58`Y`C;29Ed(KuMaUFz zb1RD5pR0j%jV>zgTw~S}(s|S-y*X_B^1+vsYLYlOs|k z_@;HPT-;dAS$ebddA;;T>%~`oj+pgy(%$A*Pv-~FOHuxh&4Nw9hq))X6b@q%_Z^TB zZ~@I^fsf!za2jjqJj-6m|JVA;IPX2adDeUJJ8u_D{#fex)H;iN8JZI zv6nnGhIQPJLa&AUneRaBCQ&`?s@TE%kc@S4K4Zk{Q-;ic@AnhbveDOlTHL2r2jB58 zTI{=nyCO!ko`OE(ee}&cnlY5Z(0>??N;d3ega9*C~Ra7D~DUwX+bhuyP48q7Y-$69pR~jbIh9PwX!K zgLIa5Vk4GfAs58L?jpqaX0xX!SU4~{Z|CF9?#|wQynPNZ#u=VrDigvfoH#!mLaZ&Vul?);ln(Jx?JX9`5n*RR4p|}cd%NXa-VsNo z~UirciCu_)VbAz$X`=!>}O+uY`CF5p34wShYr+|D-8dlLI=^afYxGZc!`)I(c*v@J&*ItRsk&iTfL5-U2p diff --git a/Libft/ft_strlcpy.o b/Libft/ft_strlcpy.o deleted file mode 100644 index b280b25b58ee194985258aabecda6f07dcdacef9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 768 zcmb7Cu}eZ>5Wm;co?__|SQ06;NDx#*;U-jDLxe-yN0?!tX7!@NMR0LU2x`+&`w!fN zmbPe#hK5%VJcouhUtspT=l9Zvh7RuTclX`>zI*q*`_K2UF(QQ^Y+TSZg9sEd1vPE- zhp{_}%F_3lh%}V5j>tA4^wgO?;1D9QzMUAv4tkb=`M9?XV^h1R=+v+mB6*O_?<93` zk~`hc?FzB6HhgZ#AR>JlJSy;o!#5bsu2_Pdg!VsU9K}!w&%pU>0N%|Ld=%aX-Gs7m z4J-HZ9eoafe@IVN9=Zj!(Y>WgO$~Qm0%X1V$T9+P3pAI8MwaP|TONfzOsyKK6RqH$ z2~&$(^-{Pq3v9=z_b9Cx>JH6dHRPq@R$HSc-mqWK9By!2RYNB7lB0R2(6ZC-byKB{ z`#nlL)=))f4)G0UiYgSdXW)L!_SWkK>o^Z{Ue3WBwUX#`3#$!$Q>CSf$Kf@|_vKao zl4(TP-8?73F**b92XKVnz>g&xGQmfIp>uw%p%6dFo-U5{qf9b?{)1CF%IMkrqHPy! Frf*NVcrE|{ diff --git a/Libft/ft_strlen.o b/Libft/ft_strlen.o deleted file mode 100644 index e5563189f7ffb9f76d73eb6efd9f398b04828652..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 624 zcmbVKp-uxq5S^oiD>>+;grrb)5(yZBI{~f&QBgM`r38}pD6oV|5=;|R9j?Dpi6a`hzWdZqgSy Cv`MJ| diff --git a/Libft/ft_strmapi.o b/Libft/ft_strmapi.o deleted file mode 100644 index 8eef3c68ca51aaefaa12c673617b608def692e64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 792 zcmb7Cze_?<6h5z~sZ>f3ymHZ&s6nWfY)YuMhK7c=o0yT{uj)mC1P@w*mV}0&A;7MOPl?D zv{m}VRv>a>AM)&dsxE|?J~UMT5Mph4eeEZ9*pnix$Fmj=Tf;+^)59o4s*o!tQ>NI@ zA7t{ILaZ#g>kSn|6>dO82R{Rzd zpAgOA?vb10NIL@T8C2u=8uKrPRr70sQ@@s&NB@pAuEJ9L?w6rNr)eZ=RrIycH=b$5 zNn5D1HqTLJDlSp?dudog^R?GAoEmFJG@9r58u#*jm1EKFmKLk{FXdZZ)ZIH!@5-Oo zFPlV!WQ=!=-Nm>Ft^NsM5X7-4NDzx{s06-Q3c2b`U7_nO)qvPC#h$sFP3K9`T(X!U UkxOQ?g%oAYTye%e`E`lD082u9{Qv*} diff --git a/Libft/ft_strncat.o b/Libft/ft_strncat.o deleted file mode 100644 index 9548586b43d63ff5f27709b1586807476c394701..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 968 zcmb7CzfTlV5T3^qcF#jj1Ig+Yf*nUfL>r~sL}?6#1qI#9Wj%uNI1XH+2{E~ZhU6NF z_ID-t516gg*w_&)td;7Wh6KAilVkbj?Y``V&@kDVdGqU=**EXt|MBT4ksuI@E8tZ= zOo2hSz}lQH7CWYr=)882&ODTsDHT@Ugc*iXOAE_OnQc#|Hw?z(+Ut@C9}m`GWl5=E zeXU*&LiMWl`g!e{Qj3pmjJ3s?N}VSFW1MM-bYwf4$+!=B6P(1ZAsGzfB=*mtZUp)r z^h4-8_$io)bC|i7doW*?Vkr*$TXMhujdt5|virM0y(5pJJ*m2`pnuwH6|sj0=rN%S ze$V)vR&giwecqnzE+E!MK6-!9UL$hJZR&A~^td18hUtcuxsUYLe}9J>KRD-?Lp|+W zjD`D{h#iW!AJ5QnfG2WISNQYjy}|Q*7s)*5;~ilBL4HYGZB7fCM~}$m{=hqqW6#bQ z%LHFbKk9hM5xE!oQ>*9>W&hccS>FWLkNzV6iOA_<5}-}=_fj>LM0b&o z_c^39(ova|-qEc$(U7vSz2BJZ<0zBRi)#&+p>`0@E&3o;s^MMnv!1ww+MvXJdyzzC-M1XRIlMH*xSG^z{WWYuH_#8vA{~b4wuP) zcgg=Kk*}A9uN`<7-X%~UL5or3>Ih( z&)Yfl8(y7BGujJ z%>h}a&-sop*Cn_(n=kjDbJXtZ4@pb&UdRnU#C=`#dXITt!`Dzz_i*(XciK90)sOW3 z+xNw1-Y1xsZ-2gwEWY7<(OMP(8lHn4hm*)N#`w@ho1@95aQ<&nq3|`OV^JRiwIA$N Wp|^giQcL{uR#nPDrM76+1^EXv5v9Wb diff --git a/Libft/ft_strrchr.o b/Libft/ft_strrchr.o deleted file mode 100644 index 13f006b4b3c7ee1284c5c581ec3c11f49aba071a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 672 zcmbVIyH3ME5L_n#8v#iHk|9l8QUVQf=K>@O3W^kTCuBfDkPyrvC?nC(<_qF7zmU#< zfM}>gcNF;mQ($JDyEsTlNUSusyEA)pkC)HM*9wtE2wo~ciwh4xYyv8;eqRzzKj#ia zrnkW}N?I2}o&DZ03ua~1hsgS>KkRp*Z2(hk6~h36hnPRs`+LY9`eo(-4xVA~UOwYLkv-AtxJK!_ zOQX!DRJp-OHOPnOx~c`KV+For(XDa^b*Dso1)umI4c3;fls%{qsn8UBW^)VFSMZ-? znLG9Sd*9d&QrxSbl*OBQQ_O{zKi5#RjI$Qk&{a{G;9sobb7D=fRGZUDTu5;zqbO`e ObS>N6oqXNa0 zmBUg9r&_KR99OJVR+lUHgt&2aI<6Y$rLzSb{3weJvIMEoLgPHvli;ZRF(iROoW%Z% zs52qoK;|J+;9FoOxI*UIxYQy3iN?D2K4|E@V3*n*eQq>Nli$(B2q2q#x2cVD*!D8i zXWuYw`|RhuE^NenFJt%3I6d@q+c#dHd8&Md247}t7T@p!=9?KH&h?DR80?d^Cp_KU zHrMTEIokL@>*jNg50b!60#l=XFS#|_k~puLb0eI=%mA?$JVVq!#E1cdYq_qAJnqqH zic!$G(!)O6JG%Hd-X-ie)(e{0FLH({^7qh-bGyhjGV8udSq$C+r3%RTh}A9L*gZH}NZnE`wGMPDP0uhefO z{e<&pIuu{S!7)9F#G&|0#Bn#Rc`4r^F9CZK66a{~)5Kl3<{^<{@tw!}wd}}FWTk}Q zc!HnqaVU!TwXm(`yd-Tk*G;zhG09hV7HWE`p8sd2%ut`UPalY1KVXx%?}|rmz2wv$ uL$6oMyi{D}cZzkTmX<0?b?eJznSHn5JRngnluA{HN^ZG!E?oIMn0^9Qn*u!m diff --git a/Libft/ft_substr.o b/Libft/ft_substr.o deleted file mode 100644 index d1abcbe0e1551f4589d91ffc49d0148a08dd3dff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1000 zcma)5F>ljQ5I)xpwh0hbtuSZ63BR!Y*+x++pZij;v$ znIbVDF*Gna{RPPcQhxw~fw^qYjTpMwNWpw(`zdL}(39`oy?6J0clJAf`}6znB_fR= zyo^HE*eO6E*P$}@{=c+iB+-6q)!sll>qrU{!d-ps_Bn)DTv%G{@0IsqfRC|`p7eyq zsw#)A5XFu1=1S2OJC)t_$_pVLKNyTFoVv| zuK|~VZNuJz%|f3*SvZH4v0UQ}G4|(?sHT1I?PXfM`&y%^=Yvm2Q|-_CRNx&gw`G>X zrY-{Tyq8%gG&SnVcL$UEM02P)5#=bn3hU|1fix)eklO-|G^-wCj6Md~7&Dx63=Z6V z!U3OoS^b<7PE+;AOokft*80eN$2Nu1jyX@I(eL9+Eg#_9Ohn^|1BY6t(nfqVsmXkD z+zDIg)6}f4oI9AbsQT15s53p(m$~lW1O65By^&fNo{I}NVXweZlIJ}JMa?OPaszSvlWI<5h&{9? k@zNFBJI}Y>t;BV=N~;wT<&{!tqevyUym>obc~~L;034LLZU6uP diff --git a/Libft/ft_tolower.o b/Libft/ft_tolower.o deleted file mode 100644 index 6feae5c437e7a3858d479fa91e0d6b7aeab4b71f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 600 zcmb7ByG{a85FG@CWR=xufmHhmYNI8I+EG|g&`k_rBmox9HBf42>laY^4cl4T5gTo{ z+{PcUP|pl^a7}ESX7y*vad)(pg_PjWv`1p;Ps2t6y@#hFzuGzUJvQ~2MlC&N*0zyV j+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T0Tu25o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNe&jdCVX-&`_vTQH(bNN=X1QM2;7z7>I!YqzEL=0c3#mTL5VVAk7WL0YD4_ zAT=Ni(hIf&NRtZwJ2PB-z|FAp1-HXaj#kFP7t7~M0pr0OXr>5Q>?Kg_`h2Mq3`k;) z423WF8Fm8W46Fvk2C09*@30eS-oyjU@z-GP0EdSF*qJaPI1SXpCJf~9fjj^OAm8%= kJp~I#kQ6_XJVSh1Nqk9uX+c415kpQ%Zh;|~G=S*`08)TIf&c&j diff --git a/Libft/get_next_line.o b/Libft/get_next_line.o deleted file mode 100644 index dcf776a4686982b7a8e2055048374f2b6a5d706e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2936 zcmb7GO>7%Q6rRn-@wzE>f+D#jQXGkkb6C_?2vVdVrwLLIIYd>2ICUEA4GuVVNsNjV zRWiy2DLoJY5)wZ(f`c9P&|B9hK)&RF1XLC3(YdWFD&S@#1@pc6vDdq4fsw~=-pu>` z-u&!Oe?9*DG-C!sqrYKvmj*NFXwRX~iB-Xd{@NpQ>YGRwkkw=WlLrYX+3_rG?dn{)CPL>b<68p^0EhoM(!g z*Vi&7{$An6Mj^}j@={L`107dIO{QR&>{VinMdTcX+iMpvI*Ts-JOg2LG!mluL+FhW zJ;m5v&{6aibZQhcb<%~Hz!BtswQhs`a=bHCJKkmcmBpl6UF5E1uy?(Cw}A-V z_-;4Zeiig5?S9W>(c;`|L zIPHIL@?ZUUHAh+JD9-BMsK^5`1>zc#`84C{y1*;2?#K5<<+lY}DT8&$w~ob%sa%1d zrEJRl)Abf?TSn|1!oR9=((xyiP12{>9(TKmkREJa4#Y_^*iaH4T}W>8I?~fUM4*Ek_Nj-b!FJ2WS8QUJaD0Ui@huNy|&v_ayo9Y_mqtV zqkM&ISPVLdTl>X1pZF1V(Yh2biT89Y0SwXSJ|?i{+KX9%xDuXgmF{`G@j|bKy_|}$4!s9rY@lwKOR9TeFxLM4h`2;MhfRP+p9up^&FgQ4 z(0We2j!RF_zoQ;!x}4EM`roQY_Kx%#TDS1sfTz^HI^)Me`3pY5r$P=kJ2T zwOs+F^)KZ7@@JCHXF=iGo&$v|8}EhCKd08ql8#(cG_B~2q97zcQUg7Mfo>lV4}i1I}C9id38eVq~n(zoD*X{9ARGGnZFU8 zM{UX{Zg6hT5V;I;ULCw-5fHf^P=jxqsS&<4Ht#zxuzM!`wsFyU4byM#yK8E l`+EQ4>fAcz+*CxJoLiQtf>pF^OO-1HDcYs#mN#ySd;{UChS2~3 diff --git a/Libft/libft.a b/Libft/libft.a deleted file mode 100644 index ab8296cf12d707cd6c3ffad5bb88aead415a8254..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35328 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 JW@C}{{{; +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/04 07:53:54 by eunwolee #+# #+# */ -/* Updated: 2023/08/12 22:19:32 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 14:07:59 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/libft.a b/libft.a deleted file mode 100644 index ab8296cf12d707cd6c3ffad5bb88aead415a8254..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35328 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 JW@C}{{{;sGE=kk`j`Ti$c{l3awGG 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 diff --git a/srcs/.DS_Store b/srcs/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9f6e21599556c132a1142caeb9dfa1b51b490c5d GIT binary patch literal 6148 zcmeHKO^(wr6n>sbJ8nmaE|6xH*&wl~P%EIbKuA#;7PCVNf(4+Nq=}}HGD+2>6eva6 za0lQ99EB5b5Doy}v&|??nI#Azzv}t(&-d)+b8N>%B*u$qNYo=D31@V=NPc77&c0v}sJVXm`3-{r-ekenZ*)hF_ zPY_d5tXKOb`%8oE@Qwg4H+kZq!E0f3-S51?{BSihTo$u1Rbzh*XK7NDgTXhkv+K0l zds22~_geR*Kh2kZ8I+4+9L%3{>2Xj_Lz91!=jmlW2%jeL^0as3VV;#ilErfsoJ27w zFPf5B&DYGS#gjls5hcPja2xQm+iZXhnm` zlU!$_XzfocU|vDVdw?~ofK|XMP*;HW2N%xh8LTv_tpka=0stLUD?^??8aT!^=ozdu zq6H>&C{TwAbHxxk9QCf@c?K(uI-G>LdSrXRQlAgR?QO(x^g^nB!Pw_$WSvD?^*h X8K7sd(uf+E{SZ(x*u*OER~7gPtB%9j literal 0 HcmV?d00001 diff --git a/srcs/builtin/builtin.o b/srcs/builtin/builtin.o deleted file mode 100644 index 1e08fc06653f9b965f3dc96b29ac048add47d885..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6200 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 diff --git a/srcs/builtin/ft_atolong.o b/srcs/builtin/ft_atolong.o deleted file mode 100644 index 2d0409f10e9d96fdb55184779cc54198bae33679..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4112 zcmcInZ){sv6~FI2-{)sLvGb2M$-2ht(lr^4owQ}N{Hv=KXkRl{tsNVv(!;S|lSdre z^K;To%QVkvr=k^&XhQ;l)O;gFLr6#nITfN)h3Gz^fdt}Pix72&fUV*~0xIEm?z_*8 zO~$ql9O>Tk&fj~^x#!+%|N5VQ{dXH<3Ios-z^H4O;uwHFj47hu2VM(%0)q?zJ{`n2 z4Jl@pRkoiklZFSDb^7y9pZ2MHI4jp8e=68ZQN}ol1FS;G2g}OZ6SI?6dSaqv&oTHv z`qYspzTk_Q@8^=_hGY; zZ&2E&BKI80uPyzF_=@RFtG_cX{<0s^U-`M>mibnszY8*$iy!DOQTe}E|-9dz?AMu3|zi!R7vA3j1Ue{}bT<>T>@ut30t9V>P2y{u1QdFZb6WlXkTmj6Kru!Pz2Y z>wn(Z*xp#{N1n}p`T8mNLByc8#31>;{%Rz({;-m&8HmYH!qY=aW9@ZAu1D+NL~h7; z@tS7+PUMZ8Zyjcb>abtEt^VX2-@SFmP(pvH|Ne6SkiTZD4Dl@cIUl}uDD);`)IvWr zUP!%W+|S;l+AK3K-XX+OA7C}~Q_lvlh+!aA`@hEUz(|YOsDCeY=W2qS{cOiQb7-YGktv zU*uRzyz^qHZ{bFCLSBsLuo<35=v&fk$S;xC^@;${?t>A$sEhENAnb`=? zyVneSG1kWD1{%kxU=Y0GAu-cys{Rb0U&K%XA-Wj_XukyF0eM5>x&)~d-omWLPQo!) z7km4F8&t>rg38dM0n#QokD(O)fLYx^E5NE_7wPRdgBet8SWr(2t9hCMo>d)R>R^-A zV3XCLu+sfoF$-&DhE`VhO1+|paIY8dtG#<^t-TasP<_>lBSD&=+C=n8S`CyjMw+8U zF@sjo!kBbLive-N5P~E0Y{xUXbbc~EXO~>3kdKcYNQ@@-$A<)WWbDA`e$e~&CBPpW zW^O6tCMRZ{T-nJd&z7xpxsWU5CleW#9Cs#4>C$t_qxPJgD-`Wg^3lS~Ogf(($1`-g zP{_H-Q%6s@$;Z-}$4@<-aI@2F(`WKY7Xc(~yns-(?c|)BDP(QyT%k1W;%&5(k2!hA zow9Q|Hfh<1g|#RQFXi4hs6iP0}3;izQ0v$-})PQ$sBg<)RAMTp!nTKKa=FsDc(i}FWd%z zYEC-zP4C^8f871Y<-z0%?e-b)a~Sg&moUDMK}|+>)I0>#)I?MF z6Nm-|epgWVEeuTZ6-iTT6a6Jg`>_&_V5?X^iVmGD8n}xD&^P6*p&9|a`kQm#J@m{s zM=KX2nfSNo$DwCo(63EuKZ=K%b`Tgq$COyql9ENeN-Szz$pYnrIGS<)(D+=hK17N7 zZ6Tj0m;XcVd!%Cs2#9&p6vSo*SPC3PQT`QeCq$|kij&W{O{W7tg`A?Dm?CM@L7|Qa zs4PTS0FESA!&iAkH+k6PF_ZUHd2f|(H~9{eKX`}lsq%+R{&9S-Xa$q2TBpf1eSxbr z9vtU7%pxZ5s`71B{xOsHn_RDQLqE@hkhGaRSmhkrVNiiPP(Q)dt2~Su45q)#b*$a4 zukf8!;WdoU9aSE$@&`>mVDg8nuz5+>CP=KsvHk*A7C8HP!|;JB4`6`^3}H1`<$DmS z$rIA>tHN+-lVK=q9O1#MJg~rfPasr83@HNZ0q#ZqD?9{-$+zkM;5)(FW%8X!!~`FC zMZxK=^4(QFV)8MQ=4~c_WTla22V$>M!IGkE-6qzkas7fQF~>UEdERz{ccV`Ci5xLw z39O9ztGYIe`fBZDRYloI(d4K(0#ft^wFCPuHttWNAK1tnz&HydWrA;$So9%De@)_)#Bqs%gdg8-5_HrHg+we(H2$mk{}<>Up!4SU zHGLB8KW&|o_Rqyln diff --git a/srcs/builtin/ft_cd.o b/srcs/builtin/ft_cd.o deleted file mode 100644 index 73ea5e72ce56a2743eb9637727bca0ca70a2e792..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6880 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 diff --git a/srcs/builtin/ft_env.o b/srcs/builtin/ft_env.o deleted file mode 100644 index f26d402e2994e9d10b5fa4faf4b5d61b1150577b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5512 zcmb_gYiu0V6}~&Ov)*LZ<8_=E2iwge@^A?8I*w^fNMbvQA#t1p5<@~MjMuwkd+~aA zJ2PuyfoSTakV;h4E$tsvK_x_!s_G9yMd?F@qN=EcmWSGksx44~YARKfwg^HS==a^Z z6FW;J`nuA&=W);Z?wPwY_Z<5d@BR7xgb)#d!6^#r=9B_qEC+o@m*NGd)pddSFk>)6 zy#_MLq!GimedmZD$bml8e|TtK52bI)OoSkw2IJ8NA(C8-ilb!VuT@nHs=VfuWnC2>%;!Odc=_UJ zi6PZ^-&5X?tFvw3VR0-CegjAs#KS{Nw`x3J<@1<|dSdE1w79#n4dpg zzTorzQQKUcOx^-j*-sYeNO>@uI}i8wkyTsIB%Ihu_7UsP*_#@;Aj4@Z{osx@LWiY37_GkatUJ= zo~2Wq+MHVDZBFegrMyaZJT;mxIH{7G%H>@r>zCZ=#bT8wBK46~R)e8iGj~{Te%eZ2 z)NIv9mf+>kx`b}+Zs=LQ*}Tfs@U;3$7`B-vUaDv`vb#aIOp|MPwc4=Kf|?Oy-Kc2? z=8{-%lWuW&&2oa^oiv1|OuKRYFX}o^U0fZ+5VKCuHPHwbfZ_FSh|F(n)yf>XO*itW ziy$pjmP_Ej33@#5urZ=Ruhf!3zK6Qb7b;0%zFLbFvqoflV_#&L7>HN z#$LhNBJE!BFuqT{;W%?#JdBBB5L#sNEl7GxT$?>2<6BgG@*9k3S%(?%@zc~kwi>fA z`7P+2Vi7Y6j6@wKjWk-j2yB;jla&N#UfRvVYJ|+4wOitr8_IUlx(zZBwc#e~GmyEL zmPuJZf;>xkq|NFE@4+!?*$(TAka=)guG{)5WQp(e3iERaNZg016{KyfT?v-b)?4eq zpQR}+taK=M#H}vKFVMarX%)dGP-l}ciDCX4Q{oSpHiNXwYPW+mX)CP(aJl_zVeJp) zHBpNPEfLz{Rt9o2Q(v1DiG9d*33yG^R-9_Wp+RuY^XjfR=^&SRo64w2p z+#RE6^TnAz6sITm0;HILyR`oQA~EzUDTV1jMtbup(XZX+6rB}v34g|o3_u| z11_KUI$>QG$_Jv>Es$k~2jkX6Xdg;iekfnR)Ved2Z)lQdD{&6BSa*l^!zm&9*wLi2 zg-mfQHRZTozEn(Y=xXn1-}-d9!&>3FSuZ_O$rt>5F+J+rxCz^{ zB0ZQNaWn38dZ#nx6iQ{sP46g8PG*X^K~(3VQmNpj5ANLKrT1pC`wt#&_i__rftbGD z!{%uRjR9O8Cq3n5OF75Bt>jL4Xc?UJ-h46djXQ;c7_*%tdEfT@j9>9YzUT|b9zm3- z6utad(aEJ~ySi`iV80kTaDBhXjyu^2d%~HX$`nM9F>D!Et?2f zTPgw3E;yM{ZbVkjxDKA6;2_uRc)pMmZhmY$l<5+{;~0=#IgfpPTQV^IM8>aeQ@_D`t6|`ukE*Ok)6!h<%~Zr0LdRy z8Zsk1cJ%1JEtwZEbac)UG49|DN?CifkQtj-P#i_cMY_3sQ3)lSGn2N9mB~N|036pX zxi)`&fsO3((j*>lvMjO{*OrHcoW!n!eY@~6$@UOm4eCuWXp5-k3$MBO0ORDAsbgQi z^yBXrBg<}Ozc~cTflhjx99S3EuXUdPcBX6f3c&B^I}Yeid? zeD+IQ9(gglwAsHW-}>&;U3Wfiq<@w`5-UKRpnlL{&;;mC&@AX7&|{#Vf_?}33rNS| zH-grJwt)77MnDzN3DEtZZ-H1o;V$_~a154CnpjQwco?i6H1URSlonZMX=343Cf=?z z@zPZ$-mWz9vQ_ZBzG>o(uHbpG)5M!z1@h9SiFdg&@k*wNx3mi6Wla-rZ{@`@LlY~H z@?rs^i4{qCvA3a#rI9}`#*-kLcuT8PSr}8FKoqupfbu^_sVh+7NVl*s{_ZZ7#14ewnhz-Q{7>gmt zW(+-c%rK7|Noe|j5rHP&HtOlz4AUCrZ`2?n7W=DF3kMwwHL=ec^|9|7H8aMN*l{Bc zq>JG@V{}0yuFwz77>2%f27!&xqu>|sF;a-FoiW8t@iy9N+qX;?#(vE}_A{L&wtA=fH8dz^ipYOu;40UW2 z{-5Lu=)5JvL6Q2fGO%DQSQa~~^vkMr79#j-;Rk!DYJGo|E^O6Iu?Muv_|GC5jPtv* zg5Az0h>qX|rzp_TEa=8$q~~PZ>^NR+B8&?A))E>NR`~+zey5x_hybY_0*oEVM2LR@ DLwljj diff --git a/srcs/builtin/ft_exit.o b/srcs/builtin/ft_exit.o deleted file mode 100644 index 93b0db8e974f72042eaa64b09ec2a31573a97315..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6336 zcmb_gd2Afj8Gk#ov**~mPC{&AOtv&8PFs6(DhIio1Cq4^NgN=7mdSc|Y%f{wE<0l< z0aC&yAc{bc0xf^E9Bm~Cq7)%$;hMsfAWWby7n5`^~(GH%qEQ z+o%2Bcf9w$peX~D5`R9*xA$$Ujogc7(T>^l1KHz}rkmu~a)!>RZa}Aou2SF2} z6rvf1ZSJsL+T}N`-n?m?_oxRIm!dw0oGe5mMSii{9dUcZ$XIqcSLl~Q!#G=?r{`ih z{(hi(wbWfDGK{R*JJfHadwa{~F#TP1b?3%Q&&>F-^y_sgnatqMZgPez^z`KleML%Y z_1!7=ber6_V^ZG%#H+a~&Z!SUJEOJwK9K8=$W`lbs5PxdU%FJvn?@l$Xj+(9tM847 zyZTf(tCOrb4K2pC=>i7JE zPYsOWjnk(aPu;X~KVshZQ`LC$^h*MNrE^8uMb5dr%$YsJeV4lGwd5T=%mnGj>IqxyMf2h?!%a zTtH4c&K|(7Po5Lw$93cE&7+9t7{-pnSI*_wshd{p#~!$QQTrUIQ^y`xjj<4Qh23*M z5)~(oL?w;=be@f<7&(pSh0g)@+1;;moEOjLh#Gpr^YbX?AA_#r(Q1Fj&!#tR4J=BS zJ974-gk3Bq2GfO|iFCPtXwWR!Rzz?lB76T3@-j{=Hl3Py7`=){ zmx2`i$S`h_!Fz+I3*HTD0lUbe-QgmqXWmqv1$i03=MT%f3W2@|f#&!31HA(9D-GIj zfQ5DholmHTfP(%rY4$@(2j4-j#)8Ve9YGjZV-KMRXFmrsYK%65$~{d#bhyLl!A<(f znX!;^PyA(a4V(#1e~sJ(aw0$rY&vxM2LA?1Z9QYD^(;%R(o)E=)G96c9ZSv_bPLDQ zbXRu>cG!3?_y$j-R~Meqy-?~d9ilf2-$ak~P0spDGT3YS?O0k&OZ3}`cZrN5TJ4$Cai7<79E9fG3qg#t1<#W*uKuyXt zeG9PT%Edyz&ZDRM^*m@tLt98MfqsRWXT(M1a`-(AfpT7$@@gLDWK;e?;H-Kg; z^K|a#e8xLp=udd`f{^~4M=y-)FMxK8FKQZh|B{6M8sv__#cd)?-QiAXigcrU6GKXO z^!GpsWwrh`@NKkmnb12h(K&^+A$>k*$Nf}XXZ()53!A}uFY*AoQ7T#){R@z;EYtrE z{Cz6w6nY~T{EGAnzlgj5Vhn?Usgc(~egslm6QS32nC72cN3#Anr;FGWh(f{ed*C7` z(RG7YwnTe?+LX)nYk-}2Hwb;JM{o4&gPmyC(-6e+h@(4IS2gg*&UG2 znjx%m#!B`Mia&l#H5O;O98}-qqVli(e zdscN>$#v<>6+N3ftn4;XMJBJbU_EJ~G{aQWOb%O_V%9Xa7t7l$6m4d5U9OO`2F!e3 z^gA{U%TC)vmdF)sVH&+yC58%CuD@Vr6O>)r+1;~RY}$C`YJp^76cL?aZ!eBBMU-vQ zf00ewX<-`~$nrXe{NjnBst8qh!sd%czAZc35oOoY|oIvKZ^! zxUqAK(X;lN)yAeR>sK3w$P8wUQraF6P|2fp1nFKL0=}7S!$FpdP+^-p#DIxCC}xbl ze7b*}$>mK^EW_Pwt{{mbHk(cxg`q*0a21&4a^Jy7Fn}Fdo!2ViJ|3 z;UV6E&1BKSNl%h{`|I*q)cL5&)VhG?Oz&yYjz_ow^;8wu>fX4s_0fzv*r12BHx8?U1lOjdTk_-`zw=_k( z#-)h&Aw?_(rg09Q6*-IfNzP(s+6W9ih^7rW1W@h{+s-k9J0zuXvz;| z&1AYf_&@8gc3S@r9Z4r&Sh&=1-*yZzV5Fv@jP26nIUO71PQ?I@<_wLkb~6U#yj1+E z2xG3>)R<56N0e!kwU#a|8mMUDl%@psYT-ait4nE7a1|{GfgU)hO{r)XrnD(3Etb+Q zI;bTp+MJY@OlhqtZGK7%Ry3jZS2TY>ZLV}_=Rui2(4{r3(;A_yIi)qGG=EA{1A8<@ z9X_b}R6V7M=e0m2^gXCgX;^Tfv=o6l%#%iA6=|-ua>mdm$52N_YwW@*FbB2sQgFLV zi$fK-hJb6>UqL{7w0O5R83Qfw96qEpA7n7z5DBf&nlUgvrG?-^3VwHK5nyn1A>5@w zAl(z{k8Y_T0`(P9(L!CIDloV1W11BmkEgrAd$HBn_4X1l{_<^<_CgRuqMHesO zeTS>Qoi7@$`gYc>xc=MU0!CtJe-)VP9|Y!l{t>|S{44=pax*Z}OZ!$}{FT+d02u$% zv@^AFJyRjqJq?VZ?k8QmeX>CEKu)76j(his z0lvz-^M89a&x@#<-%!I}TEoK?&R4t(thHvG-}=@1$~C+&yeif>yD~=AggOa@Wxpki zoW;rtMRQr?jSeCXjF-h!0%_hX2)Dd06m6##L(Q2+5%W;^{XX{-YTgnSglzW@ZXU*iA( diff --git a/srcs/builtin/ft_exit_two.o b/srcs/builtin/ft_exit_two.o deleted file mode 100644 index 57bd149796cfc067d8d173b681181d6bdb622d36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5120 zcmb_geQX@X6`$L?J)iGx@6NGFoH)Tpnt&5EKF0})^KFwD9LIdwPDn~&bG}>Ki_dq* z?w%8?DM@XpQZ-UZp%PN5!XLDve^8YQT8tElwrYu}qAFAZRi!AcLUF2opo*#?Ex5nm z?rdUTBb9!P{N}y)n>TOX%z`lw6%-+t9(pN#8w5_!JLAK(QpeSc3Ax*>S^$ zQMJDl5pSmd$S&X|scP5tR~mXKN4si&|B(JxNhgC^mA8L6zj^VMv$<-2=~{2T@9)Sb z^yf^Lue;yf(%%o|uAct4{&J;p#O3If;$gFx*Y&>L^LG@H=hZ2}Ln$HnsAutfUgvuJQi^?rM#zxU;P_ze89U4}miE%4Wlu||+LhRp=M4bh0Ws275-$TQ%F!1+79 z2gJr#i9}oehUF^?>65p)X>tBSOnf+(6f?82&JQDjS2ssq5)aQVIlU|r5StKJ!&Urw z;5Db0ofQ&KcFsgpQ8$aZwDWB*C6CWU0<~X`1UfgvhwE!rx#o-GwdSRcNcea^?8au_ zI=!rA-dgT_j=zh!ubp0YLasO0EN1X}Hq6dj_u|~#k`{5ie->k0|3Y);4EA*D)u8_7 z+>gcik3Oe-`y=SjOgCTt4fctXc^q^K^d$FnDJV{1?FIOA)B5EL&By!2W-&uM}>v(^ZtqLa3ahbyLKbQgg%(0uNvi4Dgfuf%GtDb4zfdes72ca zz7i*)m?O7SVP= zeu?<{lr{P(mR7p83*cwC${j*m3+|r$o`|*q zvKxMHN@Fc|@x3^VA3=$oLwAvmcEx`W7FTv^Ox%A0taJ&DTT1fr+!hkC521X3!Ekdd z1nde#wI{}?=`*xAK{44xbCFsMC{h!>1zM~fT@Q5SVEk^d7UeE&Ke)T!dxiE{U+xcS zCS*6lfrvKYGkzA4m()#Y;mvSI8De(i4Vdo26oU z{l?a|)(z-&#mumyGtueJ;Zkc(Wcth@D{D<= zb{i8$p;R`k%&yY-c($1DLlqn>l?rxdVE0}-b7wYp_rQTxJ3l7oiJ5&iBFGphz%Vt8 z%!HjQtuzayUg~OSu9r^;grUVqK%<~X*A>6!KltKw-%%I%|;tHMv!?H@2&UZjyA$_zo zZit?Nt{(iN+&c_@FDNEnBNh-|@}HCK?BI*h2b*pjeQw*tG%s`fJjsJt6KG!qu`%0I zf0haws}FUSDK>viVr!4qQm=c4?E=+1`K-)mfWJ90|=mhBNpznZKIPoV~ zMOT5)STqT-j&gfwtQ&-w+ZVftTVV;k2a*soAt9z)2{8mhOtaEG6E`8|a_OEaoe*=p zoXB)dh*?}h+yWuyXE~8+nh^80v|@oF#F`_mSb7Mt7D+2!TnMo!^6{eaT0@BWS%%7z zNQjk8`r>&LVyTh7SY!yX3Q34pAVMP`>5I1jLM-ai7w-pzSf=H~dnLqzFRfVj@h5l@ zkXF$A=H8dm{-=+RdbciWyhowQJ$efJKfqf^?56KP;O_~IjH?hZi#dBiefe)HN~U64 z8F(sG@`D9o;UnW_YFoIOu62|fM(wHO98X?YN%2HIa}44YyDH;2y?hOv zUvzlm`SN=$m<*_)=woVlud0Qo)P^Z_$&`BIlnOZ%o>qh5S5yUKwc%b>>s4!eRb@&| zg+EXm0HlDq_RBD(S6$Yt-qfqsxD%&U<@@2_L%reP@?JGCt%@_@;GxJi_=*NsPN^Mx zA@!;v_`sB^1V1%}73#4fR#HNExM}ROMu>GOaOAOd%qfVtkDmhI+b<(_;xY&Ky$>Bj z+rR1YF#p*CJ-ibf-*kzarJj}?%pD(q5$%}c6A=8ik~$VzC9%CyUn}+Qs&TH9z=yQ| zy}t%}61M*L0e=b9{YG(~>V98C$KJiRscKxf7Z;%~yuj%5t|tY(m6sClg5zIP^fLZ8 X<_wF1GhS|Y`}M*zY=r=@O|JJ(Mg3Xu diff --git a/srcs/builtin/ft_export.o b/srcs/builtin/ft_export.o deleted file mode 100644 index dc4fc6323649dd2ed4b763c51db7aa37c761d3f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6472 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 Ze%Xqg-(Q?1!d@*f;LfbLFyOX|e*s`TX?Fks diff --git a/srcs/builtin/ft_unset.o b/srcs/builtin/ft_unset.o deleted file mode 100644 index 25e79bac4c987c3791f64ac0b114951031033d18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4560 zcmb_fYitzP6}~&WWA9_UUSnfSjK#JhVA|Si8%K~pgAJG%Ljtu;fYN4|-5q-;-j`-( z9a~8#3QtN?wT{MZ~OlE(82LVKd??ngM13?Kcs~4wvUKo!5nH`&zsrWq;6!hwmD6I z$AQ7ooeNU}o>wLEw2W_If=|ET27Fd|qC#*f-?(=}LOd<+;v1^J^l}j2E%+SQ_9ian zdr!vm5)X;?x2Ugg=;ery=(+saHF8V&TIBfxzE$$QSq#s6+zW1SUU#kTE3q0)q?f;+x7F}&1(-UXRjR>r_LN- zJ^xNZT)C7OxDr(du80^!h|?GA#g&Wo3-(;6I5vu0F^7FyE`oJ_sM13(Z>drbFpev0lMNGKAM zi3SHf4?vAXCZS%2M3g4=PtZbr2VF>nUx%uX;Ew!8qEP95^x>v@<CYHFy;xt?|7n(9U*h8R%A=SjqKhPr~M|N`8}e z8n(x84u}|YaF|zF7m6K$icg_yfhZdi?NDi@OZy`9vxG82TN~ItQSHmH&l2xVX(qHs z+Sevx(jml<@wz>u;h@oT8GGNio<{bTNOkI-77y{E7%s;!3Yg+G$g)&=-( zT*lAf#FSOKj;%m|MlkreuGgPN?pSBI!JMY(oHXPWa5p6$gFY>XdmJRUn zlr|OE`&+bHVBg>7-L1!SV3l?>zz?Q{7-R)a=ZZ#oGCghDj#VkAd;7b4x;LadJ+!O0 zzh?vdzP@hYz3YWz=bTKoW))qloS9(la7?#5Co+4itZmq{nH}b|S*%n|JF~q~DjDVc z9@K;JN~P#z#&+y>GWQy}y<-Qvo&1!z!OZM;uzkivDZ*6K%uGAEO5W5Ts@PKwij^Du}UBoYqD(S)5LZT?im{rhBL=dLP8?GT- z-BXUQta7#Hid@04gn<%87$M2gg zZgdKhy|B#kw17D5bi=ldSz%WyVAPAIF~N2Y>M zSGBOOt9#1v6{@+1wM$_8|j5g$rQPot$P=Rc!Xh3>N(txC5Fcahw)2VsPVyP z4zZB%b3W}KZJ9pa)mJe$!RGe?3kh*n95$8%`eiz30WUGOrM%bC{*yVZcPk(*Btyf` z+lwzORMbF@`unpUGU^zFXcEG`@L3~JN5yhTF8#en-uz2r`?Krw9d^ChQTN(5_po#F zZ8vg%>XTK4)Pa{C|Ht;SV`XPq(%|@$;#UJ6@T%+H>qgqOz~0JvD1})Rfy( zuYGsRi@(pcw7Vy*j`>&mkIt!?-)K1SYDgbs2*T{m5^xl93c}iP4srqVXUJtp7)gZb zb3J4WWG{q?h)L%Jm6eaPSg<75qY`3~lw21j^zI_`y5yQ%G>#)`V#ssb627nB-dNLwWcn&b^!FV|tZ61-T<%Qq~? s6$Ljb^qWgQ>O`&VqLfZLLT6F6%~ECB6#9b|6ggIlqFbu=dVP=h7sYAp$^ZZW diff --git a/srcs/execute/checkbulitin.o b/srcs/execute/checkbulitin.o deleted file mode 100644 index 8bbb63a6c0a2fab45e9992ff735f088c7af18d84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4720 zcmb_fZ)_CD6@RyPdp_UZp3lY@gK@bkgqXDU8RG<({{~F#!wJMT!6Xgay}Px&_4)3) zyJtX&2nCd+5>Z4;KBZM6HH}DH^+VLEp=#7Nd;m3~ZGze+YMZ20k!YkS&4;uJ6-j?@ zcGiX~sOg`P-@NyJ^XAQ)ne}^fzr6g;M+u@3p>Y=hT?(U1gU}X(rdYp0Yt#LK7*9kC z^g75)aR$*0!?O-}zU=E`1LI@!dLaEu3hYmT+|fuBWh_F6nFY--3RbQlMaw9eGnNaBT7N&{!$uqT8NH-QVV+&rUpe>1Je$<| zYl`_3m&^G}@R8KC>-rP%Rm^;?zuRm4ZTy7(yn~hN?)P5l?`JZK+`sjgFV7$@�F6 z+oghG3~#%7KWTYhX$f{T`1e}D{mQGa*{}co744G6Q)>6SS^E2(oID7B+z#BpUk}Dw zLB2Wuslxt07B9;9VayX-ZX&8cXZO26+}MVR=km8GKP^a~ynTFzUb*ss^4yi9bmA?I zKD?xD{xH@EQbF~;OpxL6Duw*iX2#6X!4f{3FQyiS8ZG=dZ*sq_(aA;@=;*aJo&=FSA9`l*#IRPrC(cJ+G zMe6y(5G{NbOpQb)!CnSMlt%SU9#Jo%3sLx0u)0W8CKM8>G&J)z&~TWY#gxZW9|-MR z=h`@r90Ip3{+6`WU93Vr%FAPfK2W{PJpA>4>A8j7z2 z)3&2)2Pvx)%fZr0r~Vo6hZxF`&h|p?j_JLSk1@U~rI)~k)1Fp}vyb>!&}k>ptpzE! zCbodJD$DgOxCmth={p1YmWX~oWZ|JBrkjw@gOrsi()ivcSy>q8@%W$6Y44zWn86K+ z$H2Ok+jL%QBky+&=}!i7Urc{CkUy8wpNA|KU)wq#{<^gOW8h-J^&J#v-|<0s(nisp zg{BNAegT$N2J~NpALmu>AblCQxP_sZ-T_&JpH1oA0lou=aRQ3=b#$+@qpgWI!4k?Q z{UZ2_fR%pIW8iPFyd^@~IS7BjV04*w0phz5)j^G;{s>~ECCOsL+iXrL4J=j{{~MSV z!k4>&;k}7%U>(X``VMfh-@8e_JCH{r`aZ}a^3j++9pGar-3#R1&HAB0zNb~3t?;vF zss2cSkEe z%2z!rlb^Ek)46KV_Uuwuo-)IB&M}>XnQhjrRV-I5C$qIYGh>zt!>Ar(<#N%@jBeZE zX6`ieJ4eU6+`=?nC1!TJ2q9ykaKY5FGP7>JT(FG&WoOz&NwYF{+9lhavWi8TG^_)* zXSkl}Rb8@69$7{Xv#45f?a7i=NHey*e|U6&#zuAzkO5x~Rwn{F>i?-{L>$8euQHh^+VibcucO~cgO^#Kt9SgNrX#6C~;b^B}EMl`tvjlRv zGfc-Z50X-S@{|HOt%*dh=rzi3>LIKD96E65K5+#ki`QKlb;nuQs*) z`SN7@#gi><55G9we%rZ;%iV_`)ylh?+foPZ_NsDo>ipN%KYtkM(7msZf`oBUlVcQKFu7WNVGy@W!ce$><=f~?gw#T!O~ujV~pt|^7MG~XVh_^{?=oTs0Bf%DIo zNEi>x;B*(N>G=EVifC5-Y*y{dssmYdIIHSeRm-Ze=ngfBk>;$L7UQuaYE$%>+6t^a ztA?}cLRi#Cv%q4`3E&`~9YdlX@uLSIMJ`7}5J z>^upMpgRi^|Gd;Yz_GDT{*8v2(M{mUX2}&&2NU=he;63z`AL5X9-@7$BlV^Igh*-V z4Ofk4p*(PUivgpk9*0|CzqD?j&Kz^r^3 c?<2f7P$;i?N*EK>Ql5(5Ol6hmyXA`i1ae9hDF6Tf diff --git a/srcs/execute/execve.o b/srcs/execute/execve.o deleted file mode 100644 index 8bcab4adc355f3fc49ba5c2d68f4202181ba4559..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7992 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 Oy;(gsspm$7TKpeBYNIUx diff --git a/srcs/execute/freepipe.o b/srcs/execute/freepipe.o deleted file mode 100644 index 0122a54ef134a1197065bf67f38ee1f039c0bc80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5144 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 diff --git a/srcs/execute/pipe.o b/srcs/execute/pipe.o deleted file mode 100644 index 1965b0a7522ab9f6e1af405ec7e1febb2eade848..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6128 zcmb_g4Qw1o6`tF@**o8@&%g0c5|c}tHg<)5j^ipx6E}7oH_66ng6*^pq227=t?k3- zJ9qcabx2#Hb6P^FN-bJdq7o^nphWzI($YAn6tF;1OMw;yLZXERkX(tXRVp9}3gLUZ zvyO8OZ3>L;?R)d)%{Om;cHZ0j#re1Xr84GYDD?1y*3u&iLa7IxkR9=gkNyf*JxF~} zym|mKQJ9n{x}Gy9bFS>x2YLnvF4aA0P>e-*5|qamF@_&Gc957?bUk6`tW;)LD0KaD zJP*g|3!CHQ%z{GL3yZEN&3JxTH{x;2oFIQU-`>@C%e={$@atzn^OGVxs4s)`@KTwf zEOjZyTPN0QM&M2dUEskQcMtv(9wzM=7UP`}{yZHd^~OH8Dq?}VOWg! z?U38s+p<7e5!!p^>*8hOpG=TtG2XS}AgmBD2d)y&@o(Hn6yt3v!aH)6c)9)KSDf#t z!26L{rP&X}OJv93S5D7o?oMTry575a;R>}z+*+ql9uBqOknV_#^bS`jY@ra+T zfv?qb;m&g*U#DXiobt)DnHrJwcAQWIwt&Ut$7$l|TSKgJGLzR}I5 zC9&qz2j{BdC@|i+c(Hb_s&gh-&nkl#e0R~ADuLabWo%}SiG6h2E$1viPvg#&p^p!J za6U=DRdQ{Q!j~YU>Dd*p z#U>*e9ZIFmXwtM3R%$$#weXTx_^yjoaXC`BC-U~EBjvSAA{D+$ytYz1lOx-zHrC%1 zULTh5-pebXxH%lg>+bjawpGcIaG2Wg(l?@IDQ-QbjBTsJi{Ap&N~N<-j*!91`i)2h zFk?w5$fl(IvTCRXJzaBLC{?~o;A*Mk2LY|cSfxG;%~)hP?AM@PMqY)(H$!C4;+Aw{ zBbE?FWptHMApR6pQSNt{^Q15@eFx$ekk4O2SFBUy7r?mRKMXbt@=F!`x75O4!^6kq z7r_F4h5BLb-O`I2&o_1&6VvNp3q8w_C55G7gLQXXYmLTJWW~Z4VQsMr5?2gd;_VrFm)gJ zmr33hR5RdTBUvj~Cp`W3I;M1?66(ccF|~GwqhPAEQN12~j8t7r-3I=|9&(B#pYj}7=*M^vgftX>5NxZo zSDglT+`NOSk3(LADNA<-)ptEvFIUe(cBZwjPLpB{U&4w-|S?{22?^@@c0rCrPblDf<>if^&8*^p_XDyJ?_b^LG@Y4_mh5A zx%xI_2dE8eNEph4c!VCqHeI2rc&=^!tL;g7- zH5%_uC9jcjC)hv zCC}GK)eh*Lu{Ja^g|L;)Knm@|V+U%|p6~!zqjamf7u-Sk7*h>T?(?e|$j%1z2h{_f zexO`Ef@e%Fv?gL<&)7w+QtD}vM zws}>1>uS{7+FGDr)x>NoVaLo#Gm+1kvGLTn*^*$f-c;N&to^ag=7gEfj+<7jJ3BUJ zWRktej0UpVv>of;yxorNFcLfa2V3mqC|e-LcH0;_W+EwrscFV0>_j$c>UU?YQ5)%+ z8QYP{r0fwhoo2(jIho4ocFxG*W#{08!^SO>W$1g%X+@*UZNVu?W|o;uStb%(r$*l$aqR6VjGaX? zGZPGC(?d5b%h=DXY!--m+BAk}AY$W&WnvN2=8#w~W~GKlJef>fc`(?_yn zCKJ2AwZCgC-clz;$Gd~5;}+8SL;{S%&Mu-H-7qorZXo{CeQzDFpq!t+Vv`^WLu60! ziVDR6s(+U%D5pVGx2b~SjY&Ex#beS~AI65FC$f1~O<*WA5At0`LhlzJ;xraTS4!zi zK-7o6ENCqHlCJ{MCvzhD*gdbjUbf_^reuQ^FdLMYH|6%)5B)ypzpealOGnCYf9B9X zx?ina^5^rz4S#vGX2}E3k2c(RYUq6H!NcL~uIeS_`%?{h>ALclzp&xyUnQ!SI=Ar;-#!qtd?r#K<7C=`(u#U_D8=>VxHUl1zFl}I%V5?B;oNwwt?76o2X z(f)XT2^B?BF(L(2vZ4qptWcXTB9#)8m{+rfDHgQvY5xP@{H%k(eZGH2N{P`hq)25F z_GQ85zlk!jylusRl+Gv3m|>0m&lvW8`~QIvb1qPuITu~a2u&Dwbv}`EWf4}fI<6hG zI9&5G*3peW(9>tXUq*83t@+j$ARF4cII#_KhH z4JM;;sUQPHR^(+TxqmyCp5w|+MZQyN_sK9=tnrT&`0@f@sqtoKa#+k7%wGnt);NJ9_#ooLE96frY zF7F6}<1fbMUqea!N$>zTT}Wh~2FI^=#N{2kz^Oe7PWBYcsD2!r?4JTB`zKxAaTuK1 z2f@ky8CS2+|A(+sHi9GAM6MV0sNi5uySQ1E&!8Sb2d|Jl-CN%Ox%Y{B8uO+y30l~W zuVEI!0(t+xwWCgVs8`BG-MdekQD4x^(nWRhdtv(>MRjTeN#2DtP}I)!%hOE#im78- zZ=nQBPo%TRAd#baiKg!6EO8?-s#~U!bp9T6Fes7KkyRnbGc(DwPFZ6zKi7&2WDC2GlrfCZIELJ}dH05Jr?qJ3_5Uy_y0?)u(_ zkNO2cJC52>Do+3CwAyK>)pqK%9qJUSwT_PCv}G*RVVtRU)P9K5u^*ySKrQ|K?z@kK z$c%06ojvz_+;h%7=f00~-oAADoqtUiA|x<4MF1-}B>)(60Y42Z^1M?=wJ+X68;pRD zf+kc@h+*4hXJ^@`eSV;8%fJL5P&*BuqCb+4&K4q0QAF$}3WjZGyt11s3~PaHpX)F1 z!}vLVWBNFl^)>;E__EI6*sz@*9CV%SjJI=hd;c|O*Y|0IUu((RQ~W`Ej?2Jbt}s-j z$y9$g>N7o~@lSYI7*%tGkUn`{e@I%bPW5+#wl}rE1Hr-jzBo_umoAm^j$KHPIvy6M z`Wu|)8$ReGaY$VR&G_iN{)&S)XSh7o-@Dr1LhT||sfh`6UVkdSQaUr$-yEG^;IHr> z`YZ1$oj2brwZGSO6kqv7f0^Pa;wsx?g&ny<*0y^)CsM)VqtELmE!pHMFwX21M?ShW^!P^|V&Cggaq4)q?NqF~?bPwGIE9#I9S?&K ziGLigedL0XkXWu{(6Q#Woobxhb}%MIb>m!dQ0ZB|-H9`2YLy@8#HbSzx6mH=eD=4{ zKJW{DWn;nb@v!whaeLcCdqTU9B8~mZ=j^sqI4nO-(6Nw?FZ##@FACp3bon^!qYeFj zbZh(L$aCK>!uGML`M!ZXm0#uvA0yhw#mrrw1>#ou$HEiw^Ng_f!B{nNgI&y+vL>?S&hc1fGl;QaJZSlX|8Lz6Xk5`9kaBCaOL^$3(bJg4{E3T?A@N9$^ zLU46O1s;h=B-A}K9IvS08Xk&9tjxok!K@VBGg08?0EOfJVr*t;LerX|oN{Fa45x+Q z2M^hN=r0F9om*5?Tn%zY6C$fI+v;y?F=2B1=(Cvkpc);qR-oy| zDysvSn;GrG8Uh{W^6H3)z60SJF!D3elOWfDjI50^gBz$eXBx?hN~(+LIiOh7f5Acg zcR*6jHdvh(T8cV;Org?l#cl=NTW|+`VPPtiv0j+t+CZQ0DK{Q8aE2-8PG}6Ux-=t zz>2o3tOV#Il;2cmT?)(?jC8`<2D}nc8H0`1*FfJ*I@4?&2hF1}vMa0;pp}28O_+^f z!iTVn88VlFj;_M=0(fI->@ZNmSZuuvtnQAauwDu1=9u*w=-Z)gEUB_;ftAyiI$_d> zIgTm%WlVp7nsI6DFF;({uz@xjMmuaKsFnfTdly$neTF8bq4f`n6)9Guc)%Nf>xVfSvL{>RSC<1Ty40r zQJC~?w!>4j7gGtG(Hq+VlrXxiJAi-0lUyS#rl_t$cg(sEv^s!PmGw{{@4;c*OGgi5 zdK6OQ`q+1Y8jbbV6Tm8zYlX#IO40oh>p)<DoW zb~>4{vXd<3O3qk0m-m`7BH5c8bkpvxWT&&;$rnqGo9rl#j;0IQUNj;D#bVw|ZtU#w zlIzl$4I8&KdD(4Z5}DlOVgICq9tf(AlicoQido0rQFOO?=#HG^x?CaWjX3$d7`C0A zxw7q*)8#QwpMl+F6FYqQ!^=mT}Gpo zO}pseC{`?@SlR+=D2uiB{{Hss?Ty`^@3IH3@9VN{ktvQ9=n0XHIIfc|X6&JSdRVwl zrihDy{IVjOE~l}bLY|Luh0<7AWJc1iC>OUm1rO`_oL5FX3YA<(6!?XtRV+5!@lTyMP@W>m(t}CGQ3%oAU(*-iqD<0t&ryl;^|U_ zki`&Rv1(8j(mgAl8gT{#52@I)=VZ%cE4T0Mdj97}KbZIC&Fpq>0+ax|0en0%X{1-W4u)dI-qxm2n&3-H%#_`|iFdug6vj7~-fq8||n@99_HS?pK`LknZ zw@y2D_B8<7a$hw2q8z!ds(gR0Va&Lw%8fb=zs=05|Mn%>hCiMjZm8OoYdG@z%KF0( zt^Dypnf%q|FAkml($m`-%)_h89Y<^Gi+!`|Hy^m`pWi=HI^Deco{Ez%F1zFXc_USS z+CQg0lX&>Ht=|2w)*&T zz#hPU0AHzx0EYps(8o_a3qViA!E#0s>l;(VV9!9&n*c3h6{d(~S&LWzDPld-zF3GT zVzJO#e6Lf)7rhp-GEu}*rA4gn6tUoIU+kMG8U`!`V6awF#LA)#*>X|DGRO;v!IDG~ zYn0YvyF(GXAT8plP{i7!cVwxgh!swY)@eg_Qrhq>kkl#w^p4MK5etnDmGzujEb-bG zyEclR1ZZC@n-sB>m<|e=%@DK?fUd_z(-QOvAuJuJnkjD zQJY4XFe=4ZrtH(cDrlU~SsItnFMp8Zq-hy62z;wVOkqLYAG2l6v=g$aTzxELM0_@Q!;!=E`p22;FhN3 zRVleBB^wUWT`VPQQqsiYbS#oowj%7(LAY{UhW1MFw2V%RwLk4uR#7*_)v)4WF-J+iV#&W0?ZQmTZE+P3L5#|9i^?|VLOeHEB`{Jz77(&ATuA?khE z$E}Y6<7;&Btq|g8c57U#@hYsNvc&QKg<5aZIH56+lJm_^`~BeKAcDb%KaPO-xxsNC zfIL4lIPL~aUgw8w9Ek+~qqTwOOC%VVX+C&Qq%|MB7p?$5NnPxk!uL+$`AVFukH4MC z8^Mc*Ym?XUz_`U>H$7_mT?%_!VV~RM=ItgnY4$mNqMgYXJx8FeIon5S7lY}{HrsX5 oS@jYATN74`A96L0}XSMu8C-MGa12;wXw0rA1=>zWeS=Hrq0S zdMD?epL_4Q=bU@rJ@;;Y_TF3niU{EoD6IT|m8_ZoD6;^gx+G6p?XGjh+c*Zrgv5UwnmX&r&#caM;2`p>6K2MJ_ zPizc%BVA10<;AixcK2YfmFn&;+B<0Pnyu}dE|}~RQT|ORNv1*{#M4xI`m*_+0*6%U zt1?_gw<*1;Dwls10cYG$PO1-1%f?E5pHt)CRHNRE%5LRVg}&6lK+d-Eseao*uS$I- zYzmfVT_m25D`ERYAknXks*RWqeXQ76?W?Hfp?EA?Gdp>Om<>MIQm zoYdc2mA)S;D_;AL`qG7d*j2Iy^Venb8O!QiQ|{3^6|enDxE~vlTRT2m2(|PT{<`}w zm(AN8Qt9uw()T6xeYBn8DqabF^5d=8FH6ykPe--EIo)-TlTzM>arMC8Y7}A|nBVC} z086z3PQ_8=KWaJtw0Lpi2JOJau-LbMc<#}WVe4qMfj=7`cMYQc0^xicd z1da-{wH*sV7V?R|jtB3bjlFjkeB&p4Ctx4@k|%h54|Lo=8XC$Tm1FAfpFN_vV=CLn zb#ZJ=Z##yucg|C~%KM0+MMv4rIYv6H(U2i(MquZg$B)-f+_3rp{Mq-UZoN|O*H~B_ zI}U#U2gk#-d&>6PmF-W!_eGw~=<|o*u7lm}L~65`X02i8f( zgL8R$7*7?CgR~j^LE0>RQ*kV}B>-E-5a;&bu1(aOQQWeqaKA@7L!Z zeccqtM)avQ95c(-&QNP-crj=@8|xu$_U3L9?tIcN^b?4c^v&<~o3?Ic?Tqml{GF%9 zd$AZPi^T|h!0}hde$>gB;~SHHp6Fx8f#bT*UCUwaQQv`y4zX_x`{Q+Y{pDU;T^@Vv ztJ~E&mG|kc=+ozO*QdPCY2|&ehMwIE;m^p^bD3J}o&c6>@U%5LaYOro(F~%p` zH{B_xPb9>~_O5lUq9q|(0KOXE>9JZvkL|uO_LtAZ;`NQO8s7};L~XgyW9w_rpLI_7 z+^~jYNuLkFdEqclBfsCbzE+Qg!)(KuxezU|*GXiZ5dW_9y%sPLT5ZL~j z60ENkqH6gxwz_f%`-D#vQd7hfY>mzYa%T`CR_mLx#*9kCIrmB!7x%$dA!_EK|5@N? z(2a2TJdolRBzQN+W0_DQf=Bauz)fUP@QF+oUR$(Bz+MRO`K#1vkH|a)f#LV_zVjo1 zU#l^G1uTp)R6e1<02K5G)ZIadS1Im)1GQcs()R6~huQV|pQEnQ_LZJP9?)lTk}7R) z=uNiGz6z6p6VJ1)@fliMO)V_r0AK%~QS15>XbEY1itH>mq4=gtEv_IP_Fh z0bk@7K+!Q&3jkVAtQlyXcBQ!-n4Pt&gn16|7AVoK4w-j*v=uk+1$R6&=jqEq4_Du!q_odda?N!XqusAR+_w-Nd0!3h+F|CYNKkWwq>z(Kuub+c?s}+ z5NioxZuaQKA#)q(2Pt0?H@R+7(b5JHp^gX+UlIK-s;kkYeInKa)S%5b^T2ZY1;TVZ z`V7Cx7)uQcL*{Lu|3uA;;v#x6Y`p^l?Ucy-)ER_NUnk!h`!>*GZH38`ZW~=aOPCCW zq*sQ_=RErCxcLfbIqx|QQd>~zF7tQODbv?=9!@72fErX zqQB<=2m*7XZ-J}@X{?LV>eE2_XU0j^__>f`MgpQxFcJqBZA6s|&y$(BGfRXF73l?J5*uC|@n;iL;0+q$k$-0t8uZ6_|u=Ce+poy&<{%iftSSxzZc8gxW9UlO*} zjZtDS?__)PcBYB43)(w3uN7UJwyYJYZpWgTqSr1-!m{%_1_X?E#pymfz1<}pJ5@~g zdE!)2WKyM+C|MFYF3RQy21}w;*ly==d5f+ql+Dd`Nj}MJCiNi zcppfP&$e!ae>*x$Ct#WYIIOHxv6vbX#XkiAp%*@!_QZS~|*y;Dp! zXNy7+=4P^aMHCQcT5IJ8`(46SU>A#pqQwm&*S4?FZ;Pxb+5H0u4AxnOs00p|4qI#& z>o&LZ92B@&NKj8$L77iVggCAWWhC+Gijh@2hJ&jE!|QJxdi$p9_tX^j+*kYK2fubl zAKG>Tn4s@rKfowJrW0T$auy~Q>brpz3ezOX$H|~D<&pQPb|x&6JfK;aq)Eyj3V=O7 zR5Pv&ZXr)UX!l3y!)plNdVEN+&}Zt=@e=i`UudWs2a}8ve@ft(7=Ux}DU9ol;FB}m z^u-%r{H@ve(4x$oV$hxwcwu$vN@ve&CI4mdzn|I{-}=a{?{>U2qw(;2y>s5UYi8qT zAKyM_#j`!{E#7r|xUjLVF+P-?GpL;&f8h(OzVmXruCcTyJLl-L%WpntBz_u!5pw}c z0c!zFTH66P1NH$P0(=j^RPh_Y+W?-^GXaYLs{oe(x&b^!ac39z0=@}g^2VQFCZ7+C z!o*F{7%IAl!rVm>lgvyhky)N1rhO&i0Z$RneI?=nPZ7_1rJj~i#H6CsGq+I0WTOT$ zZ&1W^qD0IJ6fse#fy@^aF@dOF%ybkn`KeyaffO+*s$RS*QpCiJu`EvkC}N^erZP8E z#FVOZF>6!AG_G_p+fl@Hs6@PUQq&7jy7&cB#EXT}#XAZ`ytJr+ykStpONZ*ky9Y(Q zjHq7VyrM3m$_G#CUUSLuf{JoN`;%0Oa@a*Dw3lBc(dC5p@+;)Y+V4g%{GyGv`+Wb5 zMTs~i1=)PsnU+ZZoAj9&bczXR$_-}hM5@^TKkIOYod1W8gv>mSkOy{4A00-L8%&oJ zJ$Yroa=Km7fM8A12(_DgAjfN6_;uX+fo0L_eMU|7J4SsVX;dc-f8ZkHFDbR)*dx{mqPcIhm2tLKMel{Be=l`pfM~b)dR!c zY*BBjMocvqJsOi3SA=^knsPFDD99d{3;<}u(P#0VAI_AI5irJlf1$hM#ns zd0f&Co*?)lI#;>4mG=zl+Yd~8zYI(}c@LqTUBEacoB5k9RCji|xOE{gR5ag+3V(qv zg*AnL;I;<_6h0pq_k!30#qU!18im^wZc-RX>g7X|`djlL>srs~lFYC@Vn8tG*%G-G-D(ATl<$St=-&(=*e_QCUDR;yJ746hjt`BEsvCvyg z^;_=km~SLu;d$T;8T*+@_WI+5#@< z*5vC6{~1%yE4)M|A5v(adP!M5McWn@2U>V8s99T`NK0Y^}fL_i?~p#kKf_OjW%NmlmN-AzbF z)HFednbJ{O>NwL@>5OAZJEcx#T0*Ph=!}f7R_j<>+lr&Lu`^C>)e3ef{l0V0O_nu2 zs%P@w|8f5F|NnXZ=WKrS;oJW$6T&4>`0)ak@)H7}%my6yNOIcGT~)StJKLZ*ybm;? zltL8K%v*zbo3{BaYqoEh;vMQ9<%{;*5KhbzqLGzeF-+tX(~Rcw*?6i~2~6`sdybt- zRsRlyDJZmESWGi!b@%t0k?!uSHNbdRZ)@+mdQxRf#r3+9xcrk<4sn4=$6h?ulcqwk zy#s2zHY)svve$?KSD{X851p3&itW9k+CQOMEiQM$n#4u+BAHCWGE%)7ndS-xQ@naeTd4WGwS-BpwYaVhT-bPsW#tM2qcxv&i1-pV3}^C^Kz; zf2Qm`rlRmU3+H3wi>8x^D{uCv_QX>$)9hS5r7A>5jn`o%JcWJ2CA16ktJ$)m{@Uv= z5l>mHF79to^>0|M!@g?U$bQ(9o7dhhwh-S|KrO(o!(#B*3xZB5zYFc=0JqfHN}TRZ z02apQKnduN4lT7lxtt#r&!4;5HFj>5IC$D8&c5amXG3E61(z}W0$LuL@U@*qaA%4A zE`s>ygzvsNSZ|jhX7=tbz(MMgxAog#2kjs`cXRs~d>lOKF<(0WIDNUt&VfHX+HmHz zQgPNVhG$Gvh;iArwC(I$6>Z}SHBtE%Wd1+I&q#l>?whmLJL&JxX~Z}I`=1(%v^P91 zhT>-!3)_ft)wcZ8+aDP<&xm$$(CN#|=g-eNck@+a=!e~(qOlX+&p&1y+XiiFoEwY+ z8Zm#|IG)BBqHmLPFo8bH`2zk-^EIj0whZI>bJ%D*Cq~#bmb)r&?WB+u?^``cWm|37dyMUfo zK-Y`$!a44aMQQ1kAj_K&*$lm{*0yu;?3J^H2x!8s1Z-Ea|ua{SjlK`)~ zQhO0tXn(}VB|J|8`Mi3L=vI7Q1-N_sZvw4#UvIn({4PZ|3WMjydD36=8(R>Rq|KnQ z1N098?p?J;6!-zsk&tmea2d{ScXy*P2lxc(Xp4~tW}NQWQsXwz(!SLubUN^m(_Ok3 zjeQmPNH2^1I>?YaY?K491-P4qQR&bvexnBT2Fe!&jZMJPXlpHI7mVJ8kMBl&<^tSb z@y`dUb06VSe2;L}Ip z3V#}?#eJzUKsoz+nJ{i~=%s#Rze6tz8q5*W`Q^1!;a?Fl?uA@BT;3>j+SV&!$u}3D zF>vlq|ARmw_Zs7uz+36%8ezDA963 z3eNWwJ`EJ_@Gk&rbYE+Pfn|TcDvZSr-Q_jfK+DKC`;85bd`r-{&Y`zf8@n9(x>`B5 z($2QIM%e!;feP`Jt)T(Cy;KWICU*aMa<;!UkWf0&>-p!gO`sYT_n^to>2ahS8 z5U?wGm^#Zi+4Lj5E~8giwp(4n4MacOK>BiSAyNJ!zbH=tT*)7^W*hxToo(yrN2e8? zjdj_kofqd&G!aSlh6b!`E}l+>7AJ#x?9`zDs zvX)5kWhZMZ#R@>AXaKX0CN18k!&_HB(mu=ESd=` z(nCi?nMl?`pb4udZ$|s#iI~X7d;1)kDzF~iR^`D$ezD?tY>>AU&y7$1A;oiplCR^&L~;5-8B1|L81w(5gNuj2FAnnk zL3?z|@$le5NX?{&fV=k^7+9ozT8suyO|z42jh{a+8&)ZOv$?)pnl^?cYeyuUQPsk$yW6tC}h zUle@yJIjCmyJ&S?{y@C`%&8@}j%&?NmmvsT9Yrf(4PZN9H{e#lK>&|QX0)dOe+Ik* z@L=p}01E-j0UH6`fPMhy;d_9i0A@R=i!*@v02E$fDB`V#-9usKrice_jg-jy4n;YD z5}j6BOn6Gf%tkFHI%S@zlOkqQWu8fuqMcI>nJ_709#yuO4k==WR1KLZDPrbST1@d2 zG3zTWCVz@}8&Fy&!BTWBK&>ub_$Xq6QlauvLJ{v0$`-FH6!HF|Y%$GK#Cw1eJqebg zUVyU2dl*H$Rw-LdeiZS_rW*2oMG>!DN{cryig*=MTHs_+Sy*+zkqS|mogw{5ePOpy{VB6fj-cq*FvJSnlcKbJ*DjVAhIR&ykq{K7VJ zLti`&*l3oSC^wb%@pBN)^rk-c7U{1)nzw0N4>Xp^B#nWx6A|Q?CLZayG4KHP>cW7g zT|8ATt-8ejQ_Z7yX#Ng;z2*ax4(hBj^((Y(6nq7kijRI7(-t0`9@`wtT=&~_h|vN@NlF8`?PA%=s3GVL*>9a zFr30l0LoNAFM_D3u}SJqnlSdUojy9M1#Al#mw++`(yfnbu2D_A|8X6E;5HfOD~MBd zy^^D7cO8RWK-NI&wL`%0%z|ab&74vz7`K`!DSCrhcb8$aZO5`gq6)88xEdHoM>q(K zRoPi);}sKFVEFMZ%mdp8dUS7Pt)&j+Ud891T8_qgHVj|mBXE1tmz2{(KS7^*Cr~1Fa2jIvl zY4R8t=l>b}5rO;<;E&~RfWrFM$YbE0-=EvSGru_J|2)Mz=XrQc=dqEXD!QAG~$4MtUn`6`LW|-$la0X tZeeDvNKF2V!R$dRVJ0JqL^>)BMr|^YPi9&Lzl((Jy$J-^7L0@t{{zv-J6dW%bkq|&BDJ?+@Qur1$t0)vmP#`Wq5&}d7f=JR(?L9aJC*WLEFweH4 zT`#lP&)3gV{GG?UE{%gqjtiaeeeK<}<+-_A6|y z_=^h2+O49EUF_iw#q~SD;puoX=#M9Ta=1Z~TQ2kZr!zN|6eB!hfN7bB3$`8=cr~1n z*~blL5%WD_E_3$;CU($^*vA~dR_M2mb4GlRA$uOtb6Dn^?Wp%A9?E=r@+o^IbBBI{-6AO|1Ue~n<}6R{3``a+P&;{IHhp5RwgHBt!27m5))qTapA&(JBrDb eqj-bK8SAYSh*`kgBWq~-N5ILTnJVzB3VZ!laS*W=Ny?s8%iKpG{*hD znYq&LB4hICJ)ZkNX6Bp!|L31Ovm^ie2mke9xez{qhpzz2a=sc+@XSWpZz*=#*N10l z^+xu=~TZFZu4eHnKf?Ok=v%5|TfY|>%u`mND?xd;#H z0!R-pp4^mTmtws0%QVo7Qqy~FO;?{Sgc)jDJUFcy7UP|$)cw26TwPP6<-B(hUNoIf zxK1)U=w{KV7;n`~(^F-J5D(4DL(=TDc&Wb6#8~|iJY&xS1M^UwVW!Bmc*?$XG**l^ zP=xowC&bI$oSxR-yA9qUW5tnE;>A*fuq)>bC2xu+`yHoy)s!njq)ogI8RfxxAviU= zF~3|Fc#8bh`Im?%T~-$R+hgqc+aPO&7@ec(LExDwD!^+)HM{6KB&($pmW`-?8U47n zZ)}8&MqH;oD17ieP=$Tji}LULoUnYa9KY4tcl?0Zvv*|PvB#`=#|~GDi8p46v7?n8 z6HUI3v5*wiO+GQUcf>h1YB|SzzK)5*sKZ$IW8H2YFM0Iz)#c&>*irLwZJNT)C@V=C zlWQWd?>Kzi3!fevIpf&jnc63nFEe$%sQEvx?QW7L*7W;AozI65i_wuAj?vC>#Dq2@ zPbLo02h7(mF>m9Rc=8ZzJZy!Yq>k-{EFP<447OK`7Yp-q)Z`2Mcysn9Y|Hbv`sDtu z+IOP!Oy&2^*Va3|t`xt&}qCYO%pw>ewKYTV?dp36Uejybod zoYVa8Twb2iM=$RSY<*bU>c!X_0}Hoi+V)@2?L#IHRNRnnjLE3?{V0e@(VPa%cz@#9 zFuy(9=by}W^S${0niq+2X$Q+m*W5|wr#RNd->%WJsde{}oHXC&U1mQyRld=_Q;k=O zTsz8j;eA^R=G3f(J$l}~w!5aC|DyeddkAo819NAW*+V>=i|xwaM|2zgefcEcMCN%@ z-oAbS`-zt$pZL2tqR$Fn#kY}r(PR8>ac{*pkM@MPr@^PDpq`)SJI_$xT2)ukF|n`n zk^Sns@t%&=QS_R4|XZP^S+-U)%S+|{2qq>x%n=BPp2@oUO<1+?|ftuSIw%ot9>(Y`13Cl zmc3@?rL!*zUmW)1C}%BzVnsNN6I>wRTQk$L!(rA5A)8P$2R{sgivTwx*imQMtZAIh z{y2w9;Ww%^IPQm*6^NxD?Ic85u@Wc8TERi}kmZ#SaB7_Cn=-?$P!_Yna#&UAgONg1 zor#tgK(40!;qVHu;`>jxkuy8bZOfPa=e3M%B=c=_b}c>CpXye(XKT8$InOZ;_)wMxu zH6GAX%`zpiU&w!7=pstZU%*?G5|_`9QGA0J5~IuDrxkve#=oyl;di}(Ucj$X_+7*& z;-y5q>;Z*X!#5t~>fmKWyr%&19%J!4KZ%WN`-M7F>aZh=UYtF^gQ39`|lZ0b9oEn6!P!s@8mq(#&pH3 z=oo%h%}RJJbUT6QKdqd39Of+Tro5@*L6Ft{>+MHC3FQBCVebRaj{X}$_J$kx@JhU9 zP~BcJ8)UKnJi7t(FX`|F!fy2VV=pl}BnXtbOUWI;5$bK5UvN=*^f5+2bjtKmUKyTyaLhJ9W z*aA}Sztr9eTFp6GDeU{fw~_x;K!oRj8G<4>FWdqW@^Yb#y`Y4WeNe+sJny-L`xd;Ge9{U&&2`TCIkzNhc4vUy>l+Ha__ z%RK(-Iu%=`zh;g-)6;Kk5apcoa@L5Iyj*ICC8EjA4cpvIHl9j0ELpZ_@uH;-O-kFc zWZB}SklWf8LBFI~WHYgBYr@^`W?J3t>1eWlQB1UU$NMtT%+0N<+-+_ml}24>YH$#h z-MA*{O{Egq*7d6{&$eC>ja|8Z-3?Q7)oa2o0D#T19hKX*}c9?^sd{` zg=$_UiC(8?O%GJgHCL`%1=4v1-z(Q$hWEOzRcqFDb@qZ?v$kgg>6IILHM6=4wO4ks zZBI|v+Eqe3En)+1Y>PACX59W%%t%{@+-wdJG-4m3y2bFR9GV(Fn|5RIXhLM%bOO$a zoOYl;nu~&0B&$h0nI6iaS2QDXsV#0Yi~2-7n-f`0(ivAId0ne&QK@OxP~|ubjAvZj ze<_LAlG-jexlN#C`EsI}O!Q`vNu>bgB;4pGjzE%*W?aNG;cm(~v4MD^Uu5E&2Rxol zG%h9uW~JkZbk0#Es|jx3l%^ku>3BbysN&>sbJict;7X2aC1T>1wt?H!kGhrX)~&qO zS-P9nB30Kr*$IBHG6!z}0QeQ6#GgF8bW`cJ6rxO{o#fDyo_=Pg{K1^t%%Pv7$5FlHnAt}>;y7~LGVf=7l=4F$5 z@U>Dn77p(C)G8fKqaL4VXs6=N>-iZd?8|X$L34qtt8#b8=MMSLuF90SbN?e&Q~!8# z|J)-VY@Sv;z^een5z+A=rz(x-BrKbldW>Zz%}=INd9 zfBlv82a9*?3LiVT?DqHO3{?H<{@VIj!vnWnpS}C%yqEnmlocpfq4cBNgz`m{hf%m4 zA3%8(8LGIInvUF%sNxP~RNS|z;zn*%51NiV0~stH*x70` z$^sNTJU&px^MvVm03ua9OmPD7aKomGJGg1Zjgu2 z;+||e9)?I&62*+j-yT$PA6$TfhesT$c>lp4rMc~z)1}CyRFg8;2({Vy*c}*z-U$5U>1K* z!ZxyKfbL?e9g5{NKY3C@Qs|b@BUdJQ%(LDHp+~|9{75N9Tm4v#K53PO{!YqZMAihK zmGz*fN90)%D$b5bD>x!g3l7UU5m_IR^Obs`R?mQXc0|@iWP?|8&Z%l@&<8mABLsuD zOA)kshhHKf924@*lHlo0(*wSLZcEDoRVP~L}XOdA~HbyAX@o@&jzjM?}!Ag@A3opoSaz} zx=GGPO^A_0t1?(oF)U}O(Hhkd^%&wTG!fR*cSK~B^+WLt?Xb}a9V&Ha3@EIBxMNrb zg4VwYn9t#?;BTaVr}T}W?&5c3kb}|gnGp^ErnbO`Qe}NTKsj9FusnZQo{JF?RXtuc zs-~R9tZIK3q8|qyK{WE5%^&^QJJj%hqlP~Xc`+>KVP;ecA*`5*#lv#xFsG{{A}@_d zOjc)+_fIJA|MR5Y|F!o1XJR;LeGR-7w0@2#n*h8=_x1RN?pqJ*wnxx5tX)9L&Vr!w z3+YjU38FF+rK=4jE=W}vC+6n8gU~0AXCQJ=PWMxE_B5+lxL4-q`s0T14 z((Ek(D@TIXmzWX%&GC1t5EhL;l>qmu5WI8J5Zt3f@Ge7ew|4720qncL`-9f|7*8d` zqnM5vWuYNi2czaGcaRWB-TBYRg=*3f|28#2SV>%ylR3DFDR{bj%wH$Z(5PW=3F2@u^ zq%U~6zZ_c=esAM$5;w0cb)YzNw$y;)Y~Ed^Y5Q9^)MMXoc@6Y5&~8wiF=-oe?vL`Z#1;S z&;~<66mGY{puiQ{?ax!+Po{R&fm!pL5K#@)vMh4TKt%=aKy=Gi|6IZqUi6v_PKc7FY~BKb&> z{IepNee?VG6vPJ{Ka}?Llea^rD&Zy-XgnKD@ZQ06_il%bs4r_A zUeaXUXeKs*J{i{)j(2-x+PSz8!POWq4PC(sW diff --git a/srcs/lexer/lexer.c b/srcs/lexer/lexer.c index 44a7670..bee0494 100644 --- a/srcs/lexer/lexer.c +++ b/srcs/lexer/lexer.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 16:24:37 by eunwolee #+# #+# */ -/* Updated: 2023/08/12 22:19:09 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 13:36:41 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -67,15 +67,15 @@ static void check_char(t_data *data, t_token **token, int *i, t_bool *pre_pipe) if (!(*token)->str) program_error_exit("bash"); if (check_end(data->input[*i + 1]) == TRUE \ - && check_last_blank(&data->input[*i], *i) == FALSE) + && check_last_blank(data->input, *i + 1) == FALSE) (*token)->blank = TRUE; if (data->input[*i + 1] == '|' \ - || data->input[*i + 1] == '<' \ - || data->input[*i + 1] == '>' \ - || data->input[*i + 1] == '\'' \ - || data->input[*i + 1] == '\"' \ - || data->input[*i + 1] == '$' \ - || data->input[*i + 1] == '\0') + || data->input[*i + 1] == '<' \ + || data->input[*i + 1] == '>' \ + || data->input[*i + 1] == '\'' \ + || data->input[*i + 1] == '\"' \ + || data->input[*i + 1] == '$' \ + || data->input[*i + 1] == '\0') token_add_list(&data->tokens, token, TRUE); } } diff --git a/srcs/lexer/lexer.o b/srcs/lexer/lexer.o deleted file mode 100644 index 4bd49e44f4eac3be043915b2e82d48ba12e026ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7112 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 UEM1dR`Jrs9sF#VF)|bjZ0sgQop#T5? diff --git a/srcs/lexer/lexer_utils.c b/srcs/lexer/lexer_utils.c index fecaa48..becc792 100644 --- a/srcs/lexer/lexer_utils.c +++ b/srcs/lexer/lexer_utils.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/12 15:15:15 by eunwolee #+# #+# */ -/* Updated: 2023/08/12 22:27:46 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 14:09:25 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,11 +21,9 @@ t_bool check_end(char c) t_bool check_last_blank(char *str, int i) { - printf("%d\n", i); - printf("%c\n", str[i]); while (str[i] == ' ' || str[i] == '\t') i++; - if (str[i] == '\0') + if (str[i] == '\0' || str[i] == '|') return (TRUE); return (FALSE); -} \ No newline at end of file +} diff --git a/srcs/lexer/lexer_utils.o b/srcs/lexer/lexer_utils.o deleted file mode 100644 index dd45c33aff0f5a31dc57dde044725303390b3c6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3200 zcmb7GU2GIp6h1Svce_8Z+dujz$eK`XAJ}aRDkwh%3c^zSp(QrNWZ3Rb+p*i-b!S^3 zkWjZT#F#+i?+d{gAAtBkj4>^Vk)%BEpdrLWeK4jPBQ4PwjW0#8erM)Rf7U+WNzOg@ z{M_%}GxyAyxpnWie^wDG1meL1-oir!45|lDX!dl);cKsB?%_2cS1-eyImkwkt{03G z1!wN)-Fthw7j<{mW1obG@l+UF0AO$7p;0%6rLHHfLf*{uOQWtY$8&Lf(tlORi4=^z zlyp61^bYsyiQeA4F~ayAFYh|MZz1HEJlBWPGEssD^D;;m&&>2?c}XdrDx-gvct_=P zJcfMbqg)XWN!u$*@qUrfHS(N0_~9?761+q%mp1fFV#u%%SBiIE-nn~a-R^^2#9R?C z+xu#gLrU>-GN}!6{mqBOv(J}HBunw$F2VctA@K?)b1UXMA@Qc<`O5urvM5UOO=gF1 zu7W!V#7zXKjW(ox*61S-LE>Mw0(3|>;2?{$e+CGWQ`-~gWo zo-{4PYlFKE?D$q=b1;a5*#17&af(fN`FkLt(u-gw-in!Hxr~+pLw^{W-$S>jW3+W9 zc73bwb$V^4_F}_Xg`UQFs%=}NW1FERHU+k_iw&2gt%*ht&xC0b&#ihMlGjd$+b4lN zeqGbQnV+KD4^F9{t6MQzP;;OX`Fzg5hal;;ua-d2J1%vFv9XG+VHjD-v1ze@~&YAl5 zIxWP`C+Zmj*DpwwrUO+(J}0m=%3ni_>!1e0Q1G~?!OlzNLn1`0h->m7_zbI{HymM) z+^^NoFntcJc>MgX*reTn5FSrI1Rg4R)C%!Ed&Ex|6w+=%lzC+PBucS0dk3Qy{*qnl zc+d}UE&MGs^0A-kFR(K72S%;Ni91(b&T%zAz*eT7TUBjqd>-;Yk3r=luF--JUL|0o z?cyF9Nv0E-{>X@tx6EuN(z-d?65SMOvaK6iH@9qp-qsd{y|tOFeA0@gjT1)R8TH|U znYN-yiglX3`9%I?tiu>F(%BpW_GE{K5}8ydT0(a=o3>(I9S5!0p+xe9uAZos8l)xD z*bxi+#|(5Mgc?R{#7bsUhJHMoAGFY?jMyPFV_E}7I!*n$al$O!llFJ* z+K-21_dC8vv>2P%rZ``7ng?-TxwLI$?85!K=jKkD`#PZWF9BZ>mjcIg%`ovrvHmVA zAiiMMGpvBzJ=w-ox+m}Ve`4GoSna^sx$xOFbViTeEy>Qo&4cs&>aA^`JbAP4Ud!m& z;784=b;-y(r#YA7V6OEG;HzM+SUxA0^ae19E1OMRXC5%<2AEA;fHI0JkWE~#HDC}| zBb&G!WfYqiD8;k#|F&@34i~=$Ade#!$1p%W_S>o`%HN^Y1i}08c4j7NEh%K8oS8GC z1MEWq3?~cD+^+J4`sT~_Xyjk`m}p@|cmrd?=Z%YSQB)R1bzH11iuFbDSX_9ETDB-O zuT~is>X=Z*1br?l0>14+^%ezb14W@~bwyF(Jt)=yp#ouX*!!=+USEXO59{i<@W(}Y zT-5$48j9l4xM+wodhIo>4+}JC9`Be?Cxy3D1hBwagUwU+=Ii9=y9n>q=c~jN2PoTGURN@E?gmW zZ0P>i?w9&2GG=#)e;e!gM;Mj=4Xx1mPF<>%x?2bA0;_HzG&{N*jvtccT_deW`DNFg h*07`@=sEnA7y4WeH;r^*DA#6>t>mnWVgh3e(Z3d0?+E|^ diff --git a/srcs/lexer/quote.c b/srcs/lexer/quote.c index ce9a005..9d0a33c 100644 --- a/srcs/lexer/quote.c +++ b/srcs/lexer/quote.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 07:46:30 by eunwolee #+# #+# */ -/* Updated: 2023/08/12 22:30:13 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 13:39:07 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,11 +29,11 @@ void single_quote(char *input, t_token **token, int *i) while (input[*i] != '\'' && input[*i] != '\0') { if (s_check_char(input, *token, i, next_quote) == TRUE) - break ; + return ; *i += 1; } - // if (check_end(input[*i + 1]) == FALSE \ - // || check_last_blank(input, *i) == TRUE) + if (check_end(input[*i + 1]) == FALSE \ + || check_last_blank(input, *i + 1) == TRUE) (*token)->blank = FALSE; if (input[*i] == '\0') *i -= 1; @@ -65,8 +65,8 @@ void double_quote(t_data *data, char *input, t_token **token, int *i) break ; *i += 1; } - // if (check_end(input[*i + 1]) == FALSE \ - // || check_last_blank(input, *i) == TRUE) + if (check_end(input[*i + 1]) == FALSE \ + || check_last_blank(input, *i + 1) == TRUE) (*token)->blank = FALSE; if (input[*i] == '\0') *i -= 1; diff --git a/srcs/lexer/quote.o b/srcs/lexer/quote.o deleted file mode 100644 index c9c987baf8e8616f6f8ebfc774135a83e2e023b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8600 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

%Ccf7I zgBK$5u;rn;191=HyAcl|-iyd1@4JXULwpI*#DLC42oQ^YM>i@3p4#C>0jxWQAz{a(ZK1fhtBiiYRe zLJv3c$;(Z2f8F)jb zhzG?YLXn*rDyqt-SIoJ5zb(#dN0f%FE?U<)6iO*PvKM?E`_o z#4HlpK|wa3b}Nq3f8_{G47;TSaB{;LCy^=*{o5Gse)m6tkx-|LE7Ydkg%_d_I0c8( zWsmnS4H!(XBE%T}GdzaLJ6#~>hwGpz>QL7U=A3{u>m#>F8A{4f=&RBKZ2+5;aipV= zkI5i%vy;+H%7vjm*^bO2pq5hH(|SqL z{L<}I`zev6cG4J^p-r*@{o;pK(4-aST!38s7(EnA$_U^aA&4lOgn9q%w9I@~j7oDX zWPT1=BV;}Y#K4#ougDO!n1u$kEeu3pz^U-ctfXu~2ctCdeC06slhy|B@N5bFQMTTp zdT&q4L{fIq(K3#XlqO*S#sCZ`zzXwjbZv&r7omwUrg}GfU*`CK;Vi~~2>>thdpn!) zzn+fdK*M3wYDOF3cg%|p<+}4xu?-cGgKck0%1af~G)m`7HCPh94kH)D)HOHBda!UB zrfxmvnLn1^B*dJ>jJY^zu7}Cy6&$AnayA-7Mr9n1nhO@Qvu>2uAq_#+u~C}W%BC%E zJYUV?F&Q^8eg3O+w(Z!|Y?(JI=Z|s)VRFn@LlPP_KkAL}Z!o!_{{LiB-RX7tia)80 zIQC_=yWAC4H=E8oL9rukI_S~WyFhVc>}U>D;@1k=A6t|+z=dpFM zUJED?I}ZQ^H>J)IP~zR@(bd~QS#Jc}8q043WjP<@psTlovV0vt*xw>h_V*&RL{VoE zl=zP#!7r53v{BPXz48$ML}vNbp!g>*c9G7HXu3<&9!=Xc1ySw#G~NTq`!`sYIXdru zT)Ir>{qwY&c_`}tpWds>{qyp^n)1&u4@3R`KMx>JTm18Pug-(0@Ij;~J`=XpJ} diff --git a/srcs/lexer/tokenizer.o b/srcs/lexer/tokenizer.o deleted file mode 100644 index 66417b9aa34926f4bb49512c583d55ef010bcad9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7440 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 N&(;YBLPlDM{|1t8O(6gP diff --git a/srcs/minishell.c b/srcs/minishell.c index 7d08567..cfa455e 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/12 21:59:43 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 14:09:03 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,7 +33,6 @@ int main(int argc, char **argv, char **envp) // printf("abs home : %s\n", data->abs_home); if (get_input(data) == FALSE) continue ; - print_token(data); execute(data); input_free(data); } diff --git a/srcs/minishell.o b/srcs/minishell.o deleted file mode 100644 index 61aeeb7d10a8bdd6b6d3068beacce29715263b16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5008 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 diff --git a/srcs/redirect/heredoc.o b/srcs/redirect/heredoc.o deleted file mode 100644 index 3a6c8798a7e81bf5cb264b16160153c2fb1d5055..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5208 zcmb_ge{38_6@IsSyT0VkbAP{N}y+X6BnWvwQE&`lnak{zrl+LMU8CA>CZ1ASexxQ>t%Xx2g~UJi>EO z!gdAQkT`=VhT&OR5-^O# zd?AmdqjOp~GtkVvuoy7#J+uOTq`?VpHlIRVIyj;cycoAjDXBWnb zJf)m(haCNgJlhj`K>QN+E1~Q1VblJ=a=vhXC*`b_O9Q?Ibs3*oD&;MsU`|>t29@*W zW5LW3NpQ}82n*Q$WxoMmarBc}9#zhFPV%jm6e}wiadG3u{*}yZIp16vU(W~R^QKGJ z-EU$^;LrD^7rB4Smn}}hFVC1N9JC8L!x-GQa7VAo7e6JzmSpf;U&r&6uTt55gZD3Q z7c8DqzTbBw-wHXaAADRc-GHwXef5xFEo?>&HpJ5zpTj)<>7HLk^fWZn?}Tu{PtO;g z%dfdS8dx8^ynmKnyZVUo!qp>m>{6UAW9IR>c+ch7a!91-@*iNgHb9zZPCpTux!C%t zrO%Mvdg?}FxIbpwr(zL$c&_5Pn@&b(BmArFp_yIKPd8JKzs4o-@>;B$(Z@DP&0~RG z41HOG^;?>IPRBH=ZfT~|H(Gn%Kl{|1U35&5d~;Qp+dwt3tC5H2Ry=o8zY_Q)afh+c z&u}d7yXAH|4IlW}kM&Bf7U+{_SDnIH*YenK9Pg1O>}UI{XN^-=AGzxVobj=jRO1&E zsgB$tmT9V(JuLqGm`JW@6xER$L=KqAp4GL&NDX8~x@DCdh;AW@}S`xP{4Z=#Bj`V**%sP3|g@odt$ zzV_}jb7b=OfYc~=ELEOL{?%{sa&hIU#0mViRDTlbXMiPMM)e*<8LNCBs$Y3P=wR8z zK0ZizL`2)!{zOc0dhu-|DIC~yj6YN_4nx1qwwV$yLJwgLWwb?fK}WDTCEFoB51Tzw za^2#~uzh~3hxDzOpe9i15q$tEu?JN>MCqzr1(j0T#2Vb zhW1H2>q%!0{VS*v&!gG^QEsi=0#&c97JbmZD{Dw(LVImgjKKC8T4Lhkuzw9vT9cHx z4}OnwW4X@#`d?5buA=%hgIg+(LUkw`1iN@2?|mbQFNJn@Oq>Yq+mqt!u>Hk1)z7m{RhU(``ba&-1p%ThgaS8eYV5OIY3jHUx?}}35br^4rk-@UB`1yRHN!Z3cC4(Ip0HpRv+Y?*589)S=}f1$SqH3qv1B>vyNi>P zW+69-d^cPy=H2wrwgESNubI7nXr$fE?WYB1dbf+^(-u-KhFVtofSWDmEaPC&+3z9= zTj_i4g6&RN`8jztB&+xore474jXUpOc{62out z9c~n-x*vmm*Q~+;g1B56rsJ5?yyOND{J;PUSpm1aHksKIHb`C>)F+AKha;Af848wjCXVldRYb=Mp-d($T_ZdSw zKGtUp@7vjD7?hpN870%3AW-sC^Z|2}&l}fW&+wHSC|r)LLnIH_7|WaE^9?(1QPF|B zIlCZ@A`Y9KHVRXdfe{c`j#G3De(Z#WjEUl;Me-r{5B2ur*W+Ix@%{$i3($;3D7aX^ zkMhl14p*JreBeko@O}sfa~|^;gbN39ZgYa+67n*}CA)0#eIlDELYH z{;9ZSMdgFI{VZGC=sjsSy?1{7qo=j>k2z&95NZ= zNGc%?nGA6RmGm5w8R9T4={Z_6#Nk^`~|yaunwdhO+3A zqd2QDG&0Zi3YrXYz6)+MbXGzfdZnwJ?RXR?DaplokReWtaz)M`3~_>y5MN#x8izXuLx^HBoQYB|&y7U>j{6-H z4`skEWZlK7;lD`;=_%JqgDO9jv(lzB`9E{G)9(L+Bkf0Bm;7MWKEXRifS<~GfjyrD zaYDgRbm0BDX5%b_xC@*=x1uU7!PubGY3Zf!YKorGVi`?jw3>`opV4m4Xv(bCp3!uD zKue$#a9u`QnbAH3EWyr3gcCMRzISvPDWR2W(Tw-fEzMe zT>qX{4Rb|CYs_fP8Eq}FS*usdfgoT7TwYg68vEOips>-@Td{t28wY+C>T diff --git a/srcs/redirect/heredocutils.o b/srcs/redirect/heredocutils.o deleted file mode 100644 index 0b40238f39fbaffdabc7626c1074ea263891e949..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9848 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

#4B`6qr4G3OTR12A%KR#2?#EXP(*r)eE8|_ zHKLrtsOpnmXt^<<5Hx@}hNPPod@$Q{V|W*yzD5bl4ce9IaStYy|K3 zrMKw2vanyeTd^K0ylT}SQ`-RRU4kf-Ve~Au(tbc<<6#YeVE7tjX{)Tnuz7v5qL1Dz zQriq_*gkM!Ce*n5$|90Oy%^y(9vYG^1FZP6*ZAY3+y_O*C4@*BhXDmJ&b9`I!GVP5YQ=|>Z>$G!nf zP&pTovm^4xh^&cl|6op_7howlLmAYei{7PbUtzZ!w4oKIs11WR>L9kTQOwtB7A!3K z6}(oF=f>4DFUM~rPFL^|+j>z>9*&31eDnm^e zIvxGk!|3$zz2-iePHSGKH6d`=zK%6T5w{)x)&%#KHOE2m zU$`}&;-gdv`XkT~=y_1&TQyIDP6s^>3e~n_Hf`YFQsBR8YwAHEYOAwpLm4Rki@Am; z7|zt1WB3SC?=ev7_1d%{4obZ(pwz1erCy!g-?q%A4IxnK`9J~LhVLe6!-x2IA{VUT zO#u6=KxyY3Q2c8vw`s$>@E!SL&5uCwHxo6lg94(Bxe{o@SuJNCM>~##60Z}q2-FWs zTpuWLJvMFNZ4+)yYtDk=PYP_lb%hl)c^r+FtY;_oQ-J9*BNns@T54Vnj0WeuJhTJe9A z$DhpOsXJN!gFLGtZdCjSJd5ZpPdHvj%lkIyxj~5m% z4036GXJB<_(t9(}F3bM8%)1(4;j#dkPbwBgd+Pm-6^+Fb*{rZ8ZdE$1T3${}T#wkd zD;gx;(>;NQpV<~Jn^KMh*DS))_b&J|6#VJPe%rikBASVH=vjmn>r7`8N^{B`jFm}5 zmB@WkRuYd$+fGTM!nNmDLQdMu)<-{0K42_(E!UA8s)zM D8AfKT diff --git a/srcs/redirect/redirection.o b/srcs/redirect/redirection.o deleted file mode 100644 index 122c0157a1f907c333942cf989d61392e6c81290..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6136 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 Hj9u*CjBT0$ diff --git a/srcs/utils/env.o b/srcs/utils/env.o deleted file mode 100644 index a1e7dc9bedd2d5c2e9d6c80bac28d596d76bce4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6520 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 X?XX``FXT(5azT{PJNv_DpDgIV@H2Qm diff --git a/srcs/utils/list_clear.o b/srcs/utils/list_clear.o deleted file mode 100644 index cfd468c69bccce7f0ac2a298c2dc4045780c24a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 zcmb7GU2GIp6h1Svvp?PK(qCx#iAyX{)OOoaf>B~yDNvT8gq8@2X0qL#wqv)mo1JMX zDZz#kqlpP3_+|njB+|qeO?;52COkl5(5Q(%_+a(H^u-th7>cR&J9qB3+oeW1*>lf1 z-?``9bAM;Qe)QYl5h8^^-1xxr8k!gwR1Y3z`(J2p&~pSi5LB=O(3#5^1Q~{FPPm@# z+5P)Z^sm?jty@$=#Q9W!Jt$6Rr;nys6v!~r=D^sHksKJvo8z3n`?aoP2MTT~;IWAl^sQ0t}$kxvh1{B^mZ4|XwL6hof4eK!R0M_ zANwmOS~6en{ADcLZ1Iv0Wp{V^Z7vT>Mb59+GHS*Q_s zNcuKh+1R6czGYlr@y*M)f{)-sU6(l*V}v}#cCdUU_D)eO0Wb8M<2adPak6U$bzhv- zjPI9jasBGdBJ8WvPd&UbZ9FWkzZTR;lIjL4wl1Iu#9h~oZK0xQN0(@YQ2^vv^_!uU@XW0b3>j}~Fld66W z^&nXBg_gex+ARRO&o=~d8|+gn^&cTg{~3)!+E)+(pS)p2vy6`ZidL%%s274uLi-ji z`Df8Eod+wU_t0uv1M0;I(P!%vN(ibKD&Bz9p5_Qx!6aJ^B0ls3u(Dq`44}FzTm}(S znS&vNju$(XR1G&ML=KoVJChhnR>PFM6;6~p&~VY+`;g16E7sXnr3|5 zNoCWfaVnc1aqxDU@gtUPIm2cqLqmo+VY!CmCfzZIEZZg17(f(_*^V`2o9P&12fBLu z_EZ0{ZPB+>lq;8hk+r!D-B=} zpL~Y+YRF#vJTNo_mc96@FvRypLVWia;=3nDj7f;Esmyg7J-8QNGM;-W&3eFNE{ThG z2VEZX*CDA-JdKK?{1q)H2p$KlSa!-Ox|2jXD`z$jvkwPzEaiIos;kO-*CWuY6M6t<2;L~n+Jx>)=s{TJu(X7(BBm&; z$P+*(6`d5g=>f+1b9tQ5VWi-3M0kj00z=#vLj)3f1wu5SA;^H}bwJmS3KiMZ3M>TI z&;N69-kLsvj>T)bD&>Tf_zxlQOOWX5=ResjJ0Ni`quZq&lM+JsPfEE5GAc%54^b;P zipwzP7baCetb>2nGii&orAg01DGC=lY;}2~jnyxjQT#+nLq1-{VBRz-gIA?hv@JZw EKhHlCs{jB1 diff --git a/srcs/utils/temp.o b/srcs/utils/temp.o deleted file mode 100644 index 1d69be5f5dd625029ff3658d263c0d65ea7ad1a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8944 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 diff --git a/srcs/utils/utils.o b/srcs/utils/utils.o deleted file mode 100644 index 6287eb294ec6c31b0f028b9a568efc8ba2818247..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5832 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 From 76c73e168e9fa29e142c6df4d3a91b3696af60a2 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Sun, 13 Aug 2023 14:38:49 +0900 Subject: [PATCH 23/57] =?UTF-8?q?=EB=8F=99=EC=9A=B1=EB=8B=98=EA=B1=B0=20?= =?UTF-8?q?=ED=95=A9=EC=B9=98=EA=B8=B0=20=EC=A0=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Libft/ft_atoi.o | Bin 0 -> 892 bytes Libft/ft_bzero.o | Bin 0 -> 684 bytes Libft/ft_calloc.o | Bin 0 -> 776 bytes Libft/ft_isalnum.o | Bin 0 -> 760 bytes Libft/ft_isalpha.o | Bin 0 -> 680 bytes Libft/ft_isascii.o | Bin 0 -> 664 bytes Libft/ft_isdigit.o | Bin 0 -> 664 bytes Libft/ft_isprint.o | Bin 0 -> 664 bytes Libft/ft_itoa.o | Bin 0 -> 1160 bytes Libft/ft_memchr.o | Bin 0 -> 732 bytes Libft/ft_memcmp.o | Bin 0 -> 756 bytes Libft/ft_memcpy.o | Bin 0 -> 764 bytes Libft/ft_memmove.o | Bin 0 -> 856 bytes Libft/ft_memset.o | Bin 0 -> 700 bytes Libft/ft_putchar_fd.o | Bin 0 -> 696 bytes Libft/ft_putendl_fd.o | Bin 0 -> 876 bytes Libft/ft_putnbr_fd.o | Bin 0 -> 984 bytes Libft/ft_putstr_fd.o | Bin 0 -> 756 bytes Libft/ft_split.o | Bin 0 -> 2048 bytes Libft/ft_strchr.o | Bin 0 -> 732 bytes Libft/ft_strdup.o | Bin 0 -> 828 bytes Libft/ft_striteri.o | Bin 0 -> 696 bytes Libft/ft_strjoin.o | Bin 0 -> 936 bytes Libft/ft_strlcat.o | Bin 0 -> 888 bytes Libft/ft_strlcpy.o | Bin 0 -> 840 bytes Libft/ft_strlen.o | Bin 0 -> 700 bytes Libft/ft_strmapi.o | Bin 0 -> 848 bytes Libft/ft_strncat.o | Bin 0 -> 980 bytes Libft/ft_strncmp.o | Bin 0 -> 824 bytes Libft/ft_strnstr.o | Bin 0 -> 988 bytes Libft/ft_strrchr.o | Bin 0 -> 728 bytes Libft/ft_strtrim.o | Bin 0 -> 1408 bytes Libft/ft_substr.o | Bin 0 -> 1056 bytes Libft/ft_tolower.o | Bin 0 -> 664 bytes Libft/ft_toupper.o | Bin 0 -> 664 bytes Libft/get_next_line.o | Bin 0 -> 2808 bytes Libft/get_next_line_utils.o | Bin 0 -> 884 bytes Libft/libft.a | Bin 0 -> 37440 bytes libft.a | Bin 0 -> 37440 bytes minishell | Bin 0 -> 88496 bytes srcs/builtin/builtin.o | Bin 0 -> 5900 bytes srcs/builtin/builtin_utils.o | Bin 0 -> 8204 bytes srcs/builtin/ft_atolong.o | Bin 0 -> 4048 bytes srcs/builtin/ft_cd.o | Bin 0 -> 6772 bytes srcs/builtin/ft_echo.o | Bin 0 -> 4332 bytes srcs/builtin/ft_env.o | Bin 0 -> 5468 bytes srcs/builtin/ft_exit.o | Bin 0 -> 6288 bytes srcs/builtin/ft_exit_two.o | Bin 0 -> 5100 bytes srcs/builtin/ft_export.o | Bin 0 -> 6440 bytes srcs/builtin/ft_export_two.o | Bin 0 -> 4284 bytes srcs/builtin/ft_pwd.o | Bin 0 -> 5120 bytes srcs/builtin/ft_unset.o | Bin 0 -> 4628 bytes srcs/execute/checkbulitin.o | Bin 0 -> 4792 bytes srcs/execute/execve.o | Bin 0 -> 7796 bytes srcs/execute/freepipe.o | Bin 0 -> 5152 bytes srcs/execute/pipe.o | Bin 0 -> 5984 bytes srcs/execute/pipeutils.o | Bin 0 -> 6028 bytes srcs/execute/setpath.o | Bin 0 -> 7196 bytes srcs/init/init.o | Bin 0 -> 7220 bytes srcs/lexer/expand.o | Bin 0 -> 9844 bytes srcs/lexer/lexer.o | Bin 0 -> 6908 bytes srcs/lexer/lexer_utils.o | Bin 0 -> 2908 bytes srcs/lexer/quote.o | Bin 0 -> 8292 bytes srcs/lexer/tokenizer.o | Bin 0 -> 7228 bytes srcs/minishell.o | Bin 0 -> 4984 bytes srcs/parser/parser.o | Bin 0 -> 6212 bytes srcs/parser/syntax.o | Bin 0 -> 7828 bytes srcs/redirect/heredoc.o | Bin 0 -> 5204 bytes srcs/redirect/heredocutils.o | Bin 0 -> 9504 bytes srcs/redirect/redirection.o | Bin 0 -> 6172 bytes srcs/signal/signal.o | Bin 0 -> 4396 bytes srcs/utils/env.o | Bin 0 -> 6492 bytes srcs/utils/list.o | Bin 0 -> 3996 bytes srcs/utils/list_clear.o | Bin 0 -> 3432 bytes srcs/utils/temp.o | Bin 0 -> 7780 bytes srcs/utils/tree.o | Bin 0 -> 4512 bytes srcs/utils/utils.o | Bin 0 -> 6008 bytes 77 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Libft/ft_atoi.o create mode 100644 Libft/ft_bzero.o create mode 100644 Libft/ft_calloc.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_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 create mode 100644 Libft/ft_strmapi.o create mode 100644 Libft/ft_strncat.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 Libft/get_next_line.o create mode 100644 Libft/get_next_line_utils.o create mode 100644 Libft/libft.a create mode 100644 libft.a create mode 100755 minishell create mode 100644 srcs/builtin/builtin.o create mode 100644 srcs/builtin/builtin_utils.o create mode 100644 srcs/builtin/ft_atolong.o create mode 100644 srcs/builtin/ft_cd.o create mode 100644 srcs/builtin/ft_echo.o create mode 100644 srcs/builtin/ft_env.o create mode 100644 srcs/builtin/ft_exit.o create mode 100644 srcs/builtin/ft_exit_two.o create mode 100644 srcs/builtin/ft_export.o create mode 100644 srcs/builtin/ft_export_two.o create mode 100644 srcs/builtin/ft_pwd.o create mode 100644 srcs/builtin/ft_unset.o create mode 100644 srcs/execute/checkbulitin.o create mode 100644 srcs/execute/execve.o create mode 100644 srcs/execute/freepipe.o create mode 100644 srcs/execute/pipe.o create mode 100644 srcs/execute/pipeutils.o create mode 100644 srcs/execute/setpath.o create mode 100644 srcs/init/init.o create mode 100644 srcs/lexer/expand.o create mode 100644 srcs/lexer/lexer.o create mode 100644 srcs/lexer/lexer_utils.o create mode 100644 srcs/lexer/quote.o create mode 100644 srcs/lexer/tokenizer.o create mode 100644 srcs/minishell.o create mode 100644 srcs/parser/parser.o create mode 100644 srcs/parser/syntax.o create mode 100644 srcs/redirect/heredoc.o create mode 100644 srcs/redirect/heredocutils.o create mode 100644 srcs/redirect/redirection.o create mode 100644 srcs/signal/signal.o create mode 100644 srcs/utils/env.o create mode 100644 srcs/utils/list.o create mode 100644 srcs/utils/list_clear.o create mode 100644 srcs/utils/temp.o create mode 100644 srcs/utils/tree.o create mode 100644 srcs/utils/utils.o diff --git a/Libft/ft_atoi.o b/Libft/ft_atoi.o new file mode 100644 index 0000000000000000000000000000000000000000..061a592c6db7f9e146e403ff0530b299e700c793 GIT binary patch literal 892 zcma)4&nrYx6uyr!7(ea^MOn-O8!4>Vjkxs|lr&Q|x+X>>KhhH^MPuX{$--JT%1&8X zNn@dGZ2bckvoPLb7Q@2$&b<4^ouqtq?mg!__k8zzulxM@_EpW8QOU3%e2800LI|K8 zF-Y|v*j2q3wR<%*83pMQq_pB&mYchEL`+3~YA@^1^vFvIKDJxRkw`hay1W*fwdBUi z=Hkknlw+fMKcsX*ip*EIUZ!A3wZQy9%J_nuUym)vT~5k!e_=HgRwHfD@xG0yI>r`M ztGEqdZ9^2tc!2p41iF;?8RcUQdp&B*vk8O_npM~8^uO|`X}_BGPX1Bk==`H_NXblz zJin_+eAM#eR=sYxF%F~e{3NK8A%2zydnDek44$k)E7Pp{W>rzn7WvFop-?F4_VE2O ziC&)U(j`&Tt5_0F!4?jUX-a6Y{(Cbu4v$TV&%Q&E<;P`mL;M_$vPU9Ya@1Xv%LQo6 zw4cnqwCgMik^V%s&v0y!%Ur@_O62&paHb#V9uMlh{rb%<>VUC5$&9U_5v;GSImM|? n@EwSYFDL@udu79o!GnsC2EQka9moA7%yo4+Z^@Xox(NOoU0R&9 literal 0 HcmV?d00001 diff --git a/Libft/ft_bzero.o b/Libft/ft_bzero.o new file mode 100644 index 0000000000000000000000000000000000000000..cfe1fcb38b2a14fd921d7ec79f72985c3db1d65d GIT binary patch literal 684 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%*Z>v30aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7DmfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1- z%29yQ8cYzkbO33nQ-Lf5h>uUrh)*j@%uR)e#mA$%uK=pl0ZMy7&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNPGg+9SeXo50DSk&j52XkO>ALy->G8MTn=2n__UJvq^i`Sdt_Z)8v$I9qsSg51`;uYTqgYo z?q&T^o>3Y-fk?gt&V8rpi(KfESuPE=%3PU{AI)-^0>Fnvn}P!8cHKL$Y@au3$NRNC z&NtT89>t0jhKws{LbF_Bl%vMBavSG!D%?G^JV#VG|2f~e@{w^@`lu?A%g^fc$Uq>#7>XDJis* zEzp{IEuYPdUErw&tj{9LUjpjC!|G)IEVY(P%Rc%hc)T!&5x+x$%Ba)it0!)wG$A4T YO9OX(?m6C(;{*4sYPD|1C0nHM4T&sd0{{R3 literal 0 HcmV?d00001 diff --git a/Libft/ft_isalnum.o b/Libft/ft_isalnum.o new file mode 100644 index 0000000000000000000000000000000000000000..beb024fb43c977a5ff07b8d7ec035a1071eac39f GIT binary patch literal 760 zcmb7CJxjw-6uqg^inb<$gMvZ_hb~>592G4@a1g2BB9G7y6RnmF<;GA^&_iMi!w@$&gaR-6=75QiKQtbJJ!rgz$_4+ zrB6~C;NU|!e=YS--~v4AhciQl!LNju#Rk_Y;0rB26=5w9{?UT83t1GZUBCwTS#Y;C)9C-!H9B z8|SIDTw3b#V0>p$2cxXWX>d9R))S}k|Cq3$PI^*xUpdEBXW#KfTL*5lG1Q)Iaqk~* Cq*RFj literal 0 HcmV?d00001 diff --git a/Libft/ft_isalpha.o b/Libft/ft_isalpha.o new file mode 100644 index 0000000000000000000000000000000000000000..da20b0195bfc3228a1611cc01e4a7ae55c359431 GIT binary patch literal 680 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SOFEk0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7kxfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw$ z%29yPOc1v;0BNXGfh+`wk5A2rPb*5yO@)ZX$D_J01FF;kMnlbmav8W87+^}kLPkJR z0*JwO@pCb-0Wk=GECq>oK;1C|NDBb@K>Z8>K#UAPdZBJb7AA@v>e2bMv-U@G?GH!( z9+1^QRuq4q2!xf$-y;TLRq^-p09nUf|A1_I35qfx8%Q#AyZ(ti3}S!*G+r>A12PZ< z7^{L97%K!A1$fvwCID5b0L5g0xZ*zqz~Ys`kx!tF$(ff8qzMXu%Gp2$^CO!cpH>o| NS)7+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z82Ed{fLeg8dj5VMAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag;K7AI$Bf|LRP DvIs#H literal 0 HcmV?d00001 diff --git a/Libft/ft_isdigit.o b/Libft/ft_isdigit.o new file mode 100644 index 0000000000000000000000000000000000000000..a0e0f40d01b86d5d7227538c36481efb8e07fb54 GIT binary patch literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z4ETG*fLeeoOa6WyAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag<#WTt0=Qwad2 CK0yZn literal 0 HcmV?d00001 diff --git a/Libft/ft_isprint.o b/Libft/ft_isprint.o new file mode 100644 index 0000000000000000000000000000000000000000..8cf5033396fa25d36dbe5e96031092dc2714b779 GIT binary patch literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z6!?3@fLeg8I{tnhAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag;46lLatQwadc C8bMe9 literal 0 HcmV?d00001 diff --git a/Libft/ft_itoa.o b/Libft/ft_itoa.o new file mode 100644 index 0000000000000000000000000000000000000000..6b8424d68378e36d6a5611c4e94625e64d9abff7 GIT binary patch literal 1160 zcmb7D&ubGw7@e)54caCFD^w5+=)p@QcF=6!G8%5v|ISwItR z5o0ejhk7Z^dUc~{+Oko5X4TfDT+WZLztw&exB(;N<(Ae{vbsjfQbm@Z7OSNQk@BoR zeZGn+c(3$y{UyfqQV88ayMPRBBrmdQBn6#?@J09_KNa+8^r&a|krY&;llY+qEu14B z3iqdQ`dPPmBusuJT<#06=^v7W%ljVhJ9~yOzlqO3m~cBG4pLV*%`Qv6oC8g?`GDxX zcW9{K&~SMGf)Bzh5j@^KVA?K3!8}7T8enS*!@KJB7Xl7 zTVJvv*ywuAAm91~;Xs&${y{7ry1~K#*g!a6 zv#a~%+sW%KXfjsb3Gc&g25sIa05$@3iZ&n81@|7Ez}r_ajBW^5C9Faaoud%wBcQgG zK11?wGpA>P?cR43LB!=lj}KS(!5)uT^r#b0n^MSDM4nimS0cvq2h7+^8L8Qs_zqY% zfnP($kICz3r1TlfB~q`Zmgc5a9r5zWK=IT*6Fhnge0v%CRuP#r8f+8FP>*B@G}+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%cmNf@0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8z3?fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1z8@Z zSOF>+!31&34j>J6Dv*T$@$sn{@o7bgxv3Db_;^(JEr2R@fYKFE^PpS?ZU%-77#lmYz0vLaro;C-koUl&^PorL!T&(u(dqlZqxlB|e~U5DXrSB;{%sum z+d{8fUgU4(g$e;R|9B}4;6uKmbb*432yPZA{L*YzU)4VZ#P8m>=2n__UJv+|=CU Hj3NdADT-*# literal 0 HcmV?d00001 diff --git a/Libft/ft_memcmp.o b/Libft/ft_memcmp.o new file mode 100644 index 0000000000000000000000000000000000000000..4ae0e2bb654a43e15e6c99b8ab3cf36fdc659359 GIT binary patch literal 756 zcma)4Jxjw-6n&|+Em}X2Hb#UcobMF?HGi2jn& zwKzDMZW+4>?I1W7DeAe+?H3|=;N+fr-+Skski34re}#q6W&|E!5Nwc$fxrs5N&O$_ z@!aD*!ycZ3NWKK6idMPkYrjvL$H{R&RF5pkkFtyq6gMLcp;YGFE~GO>RmxwU2;wHwm5b(3Os2mk)45h4`%3h>x%bzJVov*=Lx4G8Xk6SS>L~f|5Zh*_+;4Xbm zgg^paN^_5MbWo${ab6sPlc2Mlb#nYKos!O*bgn<7Q|d@3)s|Hg+VoJ-n=WcwI!$@o z{05|xXv@2v&?^UU$C{_tBPgz3H?~@Og%VFs*IQ1a-;MKJ&QebHcSoJueSrCk*~g-& zn*Eb!5(Dse{`GoGysljx39W2sMl>9$Vb>bwt6-es0>l4A>?|7hf!&1=pQD29Au`q{ O-Bq@zY|GBr1@QxK3v*xq literal 0 HcmV?d00001 diff --git a/Libft/ft_memcpy.o b/Libft/ft_memcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..d0b66830935e4bef0eeb8229d790025509088e30 GIT binary patch literal 764 zcma)4Jxc>Y6nv*45ly@+EEFtK*xFcGDtfSmf=B{3vV?dc78iqDFbV<14?Jxw#max7 zrNP3|lvkz^l0ry%Sg7;dz2t%j4oqg=+qbhXB(ERupD7|^l<)y2z(+P&5SRfMx&90K zEQn^bB9oY$%aGD@>Ynnd&e>bJK^?g}Z8(p2=_5hMeGemLanG$5ik_@h4t6U$Qm(DW z&+m1S)mk4>y97|ZBHRE{I%QefFSw5CNjbdVlOA2tdaLtvNfSin$g?hh)8Nlr<~Sum z20zOEw%(%$O{2zr+5qF=yL#7n`(HjU{5Rn@dcv=Dgr9GV(?*ZXbAB4O1Dj#{Vuu{p zEpTydW84m)xMH`UZQ(b?N%IR3{yIWJGSBAKY)hT-f;ekkS(p!odcmdDec-DqIE04V z&zO%v|K7j8=9Hc>jyB1tTZWZRjon~s4*gj$%R2$l|Am$(t&5SBOfr^@@gxVE@pM`8 Lr0clF>LGmt?|yTx literal 0 HcmV?d00001 diff --git a/Libft/ft_memmove.o b/Libft/ft_memmove.o new file mode 100644 index 0000000000000000000000000000000000000000..215dd01afd4aabcfc28b0b90b7a1c2f4460f6e6b GIT binary patch literal 856 zcma)4K}!Nb6dp}fD%(AHFzVo;YY?4;E=euSAt6e^OAKO)9o8bWBoK;9T)Xsdif+=O zI_1%$m%u#)LYJk3_PyO%-H50M-@fm?dGDJyv-A4-J`6GDn_~C?0pOlU9DvOO35tKQ ztX%6#@5az%1kxoFqEe_;9PY$vEt{UiF8h##^k|l`1=#tRg9wp7)Q@ucil~-P56b&O zY;AhiEg8h6@A#crRxpqp6`6?%Q7DPxaZWEdIU&B!7n4ovvSlFkT!k6NN-ihA3d8`r zO_^pvfQ&Y!d_vB_;Z?-wXWM|+s8??5P5+B$xben~`hXkNJ~uKwepw$d<(jqz?Sn>$ zK56zvnGY1)XeigZ@MzIG@Lj&9b(BUDt0q7tJ#Mu5MSBF}MhdzXQ?3@AHMFF9t!UWp z1Z_sc<_ikV-M<8uT>)F14h`{6OSP4}xo%T6??@6Q?!*?Vti4Cdj7`3yAJ-R^6~40_ z=Buebbv6{fMb#4Wi@@`cPBt33?~o+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%H~)KfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1; z%29yQ7EBPg%mC6*rvh0B5FekK5ua9+n41a_i;qWjUjtOB1C)+{ng``Fa5FGuz}O(# z2#6(s7;G0m7Xup*g8;}IX`og2z^@m5N>w|9JFCD)3fxH(Uod-P{5B>)Nk51ng9?d@(_*-OvMt8XarF|cG zbe{5PJOr{GsQp0)6aUHDCpp!TLcjV9*qk2&>_OWOAO1pq6bZ67bOq`A(Rk0cI?lH zu66I)KM)kuT{>iM-1%@j1P#3Jy*E2E->~2F*XMVN$eJM>z$|btA`2kaft>h1;#Tu7 zT4OwBl0fE4Fb94+h;-x&N5#U_8?~oG=E*LNM6?%7*VG6zdl$8a>jfOvTh)4r`S>vY zJ*OtCY-5h>(l+ympr*m>SGe4CYkrht{=HvOOY_P*I!`Sv5LJv8-UZfx$#2QbQxcGn zOC{fh5PgS3Jo@Pbh==qV#Pk2rXU^c&>3!JwerG%gN4?I7GQ&A^zOUf8?u?vaIDU}n zZ!*s5J=y1vqBQg!ChMD=@TwZ?@|3K$ZP|;d^bM*uk>3FN<0#BK(*Cl2l{i>RYTp(Z j<=bMx$uu|18#(YS8ej!|B`_%H;6XZ6-|Wtk3N`S}%r`spy?IZcKHtBhM4=Ia14e;Z7%m0C=7A=E_`@Eh zzQi-IfJ2iQtjDIcWz;M`_jxXx&;9ZsGbCX>p8b#ravAh+)cWwus+P?oDQZ2a7wE`Z z)Cv;mAEK;xa(sGlXldI#FPjCeH#el!3nd{biERk*nX$3wBcxT1ODFU$ZpOIHqHtJo9x5hB=nuc@hUFF(6-NImD$_DW$n3vxW5?GZ6I8r$qDIZ<70QC?4XcD^7kIcntVwX)zH7$mmeYA3;z2 z7@lJ2#XF$aNUPABzYkwB-2aAirn^PYwcAdyEwtJYgv}pVj7-Wi=0HkXnI25F*fwe} z55ej*$0;D1Wh_q7gYGF?!& zaS;0QUWE4bkUkuVenZs+^3Q;i4$g+DcPCzt>R$)mjQDRC`wal)@hbZ@_8;K!-5$~H m(f$m_a1@85@EV9RqCFx0SbK$>WeSX-M;-kGLInkf4#h$JF1=_K9Q??a@4kEQ?p^Zk-d^70M3Di)3mgP5IWRzA8eC%k z2QDQ4AbUcOp2Xz746SXmY4_ru&t!*H8a8hT+8H||6)sdkE-=-D9`PBPN(H|D0wo3E>H7# z`EEz~PFMNauIIig?^bzEyUl0#u)fn)-c?{#>&Do*<^_S=kNm0;r;ehTv6$3lp!m-8A{1q5PD5i8&}83f9QIjC{PLtrw%)hv WyJn4aqh7JiAY(Z;lDbsHcKQT3j9ec8 literal 0 HcmV?d00001 diff --git a/Libft/ft_split.o b/Libft/ft_split.o new file mode 100644 index 0000000000000000000000000000000000000000..34c727b49092ba2f6d31d2490e2121323eb1eec3 GIT binary patch literal 2048 zcmb7FPiP!v6#u5C=~mm!T3d}EGzAYuTusD-#fT9*@PRG{=|T?;({(zrk?l67I~at4 zg-ImSp^$^3C-vBio;}Fg8gb*v2CD4QLnJejvU6D4q13Fu_syGaT(busyzhPQz2Eo# zeY4;GdjHPO0U@+U1QzfRIJXbW7#Q?4c!eATXr2y$PSP1rrX!{xX16fSn!Q*fL`tT4 z#yEQ>(;mvdI1a_5vtJAg@ff*>M4d!NrfFTNEzDKlXG4FyEKXMXk^R}pRC1c05%Dfx znlD>5)2V(mSG{1GZ=dctv5EP>*K8a`JepaI`Z)BzLYk(1(VSfm$|`-MB|Wz#^yR~_$)=GIIGV%a zxtlOk;quyRSJ6azA}F?`uSKuJ-Za?cwq)QSSE((p6+>n8lCHjdj1C8GD{xXH(j^fk ziooz7IV_Ng^nMzjS(|-9KfXjRp&y?T+|L;LNqnc%G-C1)y8epLm*~qRMQ`L@Eq3(f zCs>#JX^1M-^UCBVfzi<$v8u~AwgV%^9DE}VjBObd6KUO&+J^LtN%U2>+l3p|jLod= zo~QJkaHX^b5Lz`_O$1iiLsiP>te_MOVe8aJubQw|O&C=a$_;TRTdJ0cyS{N7^9iL@ zy3M03#xf|iq;*94LmNm16)CNQ(wkhzbsR#Brttt}cB7Nn2Na-)0Ng@I@Ia&fwCEgA z00RcxgZ>e(a({WAFNWmb^loc_&8pETyMDdPVKB1ZGGvfhr!`Gn)B|9DgCpb>9f6Rw6AOW zGW`mo5mh>0SM)7%V zLi_k#p)KaM{GkK6RpfjY_GiG;>KeOUu3v~ZM)IHRd-E`!D@BAm4Ne$WS5_>0;ON_$ z{u}cFaX)+FJ_Rnflj69qJ#pUyH_kZj??1Q?(LZjfaGvE4=q(5R8%R8zg%d2lL@YoG zJ|s+qG9;eB!nxFb>_tfQT%i9kP@#?mxZ(3Gr&x}$gi!tykRt$Q_e}38>Dj$L$9i^; zldNa=2B^?!VKN|hsp73ZeWFjNAINUJFlTG#mHEnCO_=tgoo&hJyoY~6VOmw})uv*X cp_8k&aKV{RT@||u+k$N?k5#TzE?da)55k_hwg3PC literal 0 HcmV?d00001 diff --git a/Libft/ft_strchr.o b/Libft/ft_strchr.o new file mode 100644 index 0000000000000000000000000000000000000000..0f0c202426d5830381eab492ee1bd9626e5043fb GIT binary patch literal 732 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%cmNf@0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8zY1fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1z8@Z zSOF>+!31&34j>J6Dv*T$@$sn{@o7bgxv3Db_;^(JEr2R@fYKFE^PpS?ZU%-77#lYqto@rOKTX16=XM1=)=nc z|NsBTr-cKg@VM&_AO$k|N9{=4FHG15rTbY#@XAkxh?JD~T^IDN4>LVgLYE|79!y literal 0 HcmV?d00001 diff --git a/Libft/ft_strdup.o b/Libft/ft_strdup.o new file mode 100644 index 0000000000000000000000000000000000000000..d96ab0ed5ffbdd7eee8fec0146c58f826f641262 GIT binary patch literal 828 zcmah{J4?e*6h6_~idq}NLBS!Yn|5(>RJ3ph3q>lp$R(sH719SarBw(BMImHy^k+D_ z`hdFW*fEPxL7`)DP|r#3wNVfceEGif%*nlZe1H2$04Sq?4@3-cO+rJU%_G*y|HHZ> z-W4^{$C*H&xn!K%X3GwB=;t&0`JpdWQwW+zyIhTk88JAOHN>17)pAWYY~H9e4=V-E zcebPXmT)w|IWgw}S*(g`Xq=lRUaae7GmLTmbH7Vbx*@nG_Y(djKuO4e*6=xp2;P;N zfH;DTUP|#N6!d*69?&W>_CpR4HR>hEGmPf`(|gQ)X6;vvxlW&XPQOPD%+2(ehZv)= z?8e7PM`nE1c6>;kB`MX(45;B{ksQzQnb*KE-<|Gl*yUw?=4J<&8L;-fc5p{cfr)zz zK3~R&XN9Aj?1Iu#6?G~xet}iX7+*lJ&(P$50Gre5`N&o>F8Xw2EKjc>O!L?rDaxtmvzgk8USA=scVb? literal 0 HcmV?d00001 diff --git a/Libft/ft_striteri.o b/Libft/ft_striteri.o new file mode 100644 index 0000000000000000000000000000000000000000..b14ffbd07af69e702ca1c6ba0618d99d4bb81546 GIT binary patch literal 696 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%*Z~#40aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj0F<{nFn$U9I!Anz}Y}Xe0*|#Zb4#lNqlKud1hWpe7uhfvU~)T zqX4B1m>_PM0HmQ#1+owzK0Y-gKCLJ*Hx(ilACKz33aC;CC>;Pb56WfWW?;yGu|c#E z5K90t*e-r91~woD0g$C2@flEetN_viKt51ELjVvX1CU;*Takr{VuyNkKJ{pRqu|k5 z`@^HN^uux2Hz0i;-L5}8l6~Ja*l;lLx2QryK6KZ<@#yviN`$`gV7%zjdG7xOpiuL1 z#?IO|FHipe|KFqeh(hdPWQ(EkgyB39s3OLyAO^+?0Y(8Hc8&=^RVqMn86eI8ng#-} ncxG_q6KG>{=4C@N9H^WPWH3Ln>G5eL@x>)YnI)-3nLs%J-wawt literal 0 HcmV?d00001 diff --git a/Libft/ft_strjoin.o b/Libft/ft_strjoin.o new file mode 100644 index 0000000000000000000000000000000000000000..0e88db478a65639c179019944de738852d5e1711 GIT binary patch literal 936 zcmaJ<&r2IY6rR-(Lv5NIB3SScO0O2_DF+WqyD$d>K@_}{Y1l?g$q&&D1|blMO2%Az z>fhqg&>y)qIqp?RVFNAXW{_g~z3kg&bEpr#c|YcT-@MtK?)~qF1tE-ifdvQw*AyfH z*mEF7`G4#^?>X%K9GZeax@1b(xvK5OUcO`Q?M!n&`ojU~(JUzlOf*8G?)Q*a$|@HR zvzDzYrIUQ=gHl^>gZq=qppfLEGw11KAjYGjGBu@g2WtN)Tg-VirDo?#GHHV;Bi8d3 z7KJ$QWAd+oWne;!JrQAmj1Hyx9^b18pF|G6$N)hjE@5WSV8bKvuGBwe^vQ_|_-RU8dYtJ2qZjgFyfeQEt@CL)7xk%rwfr!=z59z3UKp)F=76D6r0cD zmve8TVdkyF=t&Z)ZkL7$xa9qeCEM^OZ HvL*fkEIy)# literal 0 HcmV?d00001 diff --git a/Libft/ft_strlcat.o b/Libft/ft_strlcat.o new file mode 100644 index 0000000000000000000000000000000000000000..1a44b8f2d409487dbcfa82492673fcda67ba14d7 GIT binary patch literal 888 zcma)5ze^)Q6rS}*6i?k1EEFs(J5G3iWsMT#^B8&F6YER5gF&S)$IKlt{&_q}=FyujrC>G8RPF{_o~1Ga$| zlnjHwAUH|&2bj^le>$2Po{UJo1S#G0o*U+2J;&$g-fELQ>V*7gmr)qBkk-b2QZSG* zwXwdLOu2F=v%8vEl5+Zo=~1leVpzulOlX%$eDtafTiwQf=@q%Wm0VAUij?p7bM#P5 z4+PrJ%zt5Q#pDzxzyYu^W_Pg&NT5qekLlmFh)6Z&*$mhWnl)_JKa(ef`Y*hPm{12* zp>_hH5@q2ZR0A3oiWgA?rYHy>!W1vtzx$}|^MYvQWgM$j{)R#k0*pW(jWHaL(rSvA z#;=4Q5A4f6?}=r3-ahPy?(>q$dAYiZm%JLY|6FGi`4gT$x9p>Kv@6lj6>H_huN*lE z6%S4vxZ{>4t(tWzXZ3oW8h4G=Xp;i12B{{z+t|Vl#troQA;)*1r3lvkEVK3;%jxdu zJjJOIXhUG}8J7U&{jqPo&T-54o(K&AUqKv?(*J=XX^0V!+4RxqL2N4V@Rwb=?QX55 KlJ0As&af9Gnwnhz literal 0 HcmV?d00001 diff --git a/Libft/ft_strlcpy.o b/Libft/ft_strlcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..98c68f0743316b5bc1f76fa4c587c67bf9078b5f GIT binary patch literal 840 zcma)4Jxjw-6uqh17QYg~LBXMegNsm|1Q$gEZ?GUz!9^aWRur^~ruYFxr7EUfT*TGU zpWr0*195ZIv5Sy`f@5*8o}0YbI0#-ix%ZrR-?=v-PoM8!5hAUL@Bo^DD=uOHq8Aup z{znX`vlo?p4o_mRFNc&?X4~>=k0;H!WP|(Ftt!}$cVPq9x|#OXk(;DUudS}9(w59+ zx0bUDQcg_<&mR?useBRgc8U6aL{J(bWoAh(ZlqQ-o+jn*{T$UgrgB;NDN1cbOMcCH z80Z1q-St)q0~|b*bpv~F9Yi?-{h5afDZ*gJgKZKogggsjkrM%<5 zhp^2TQOH+FKk9&)D1q8$t-1$NW%r@7C?y>Ix~uR>C+4$$$m{V9O+PO~D4Nfgnts&6 z{iA$TGBM#s9Nh4}!cI6v0~#g=w2u?kDx#&1z`RQJj0?0qG3iNbw+{tiZgxb>DQ{*rY(D|W) XzfXYTM_#n#rnRw>Uf=ntGg(}!*iUF| z3>q9;gXZ8l1dh^>eaCm78WHrtchC2od+xd4%jd^eoXD6W9AFfD6p;pjB`_oY4?OAq ztDXrxc9Kx`3Ya~&<^?+NSv!{<`%pPr$Uez3LX;XK4Z&PEDWB#G9-mh(jw*-D+gp?O zjy7psGm#+69jcBBH3qX=;$k&lc7q=C&wLF%x~^+Z@6(oMiAtfCx(Y6W!@tZKih%<8 zRQmTi#{+5-9`9)voP@m9Str~7()+6Qu3Gh;>e#+KP|bRe%SvQf*R4nwU7>`K=Q;rZ^^!UuH9=jF#27dWeJ^%m! literal 0 HcmV?d00001 diff --git a/Libft/ft_strmapi.o b/Libft/ft_strmapi.o new file mode 100644 index 0000000000000000000000000000000000000000..42f0f023a9174375d2eec7f7338b8d8a2a5b0db6 GIT binary patch literal 848 zcmaJ-#ROosO5p6_{|_t*DwcfaoM9)?7$LBRo}fD1ZV z0QLs>K>ZJMOfEE>Xv`FXb7@+8rCl%fW4-KtUVhezcV-;U<1VcM5j+(8q{Or?ZdSGm zMNikNI~&zit(O*)9QoXctl?t};VvDpS@mhGNn^j#x?bBZR7!C~>;C<2OyQj2Q!~#< zc_p%*_~duM1n_j1{Zi5Zjh8acWw=icM;45J`3UqHdx^e9dkg;KuPFbIYW&S9zus1U zt)+r`yTy9-f+N+{Z&7|Tj`(h<8ud`@!x5&MZij`pUvMNqtT)S||<<=3Ly@7-<}{Yd1a>r{rbLgl+1a7Q(M=Dz;m z4T+iW&mH@0%qVN`lUTcskV6YndhjAN5PA~YgQ5d-uprVxFES0=EfLbR#9b^xps-rp zE`|OX9zBW&5h_Mh>>hH+F^32nXd%boq3Qc(XVX>i&=1~zKi~UinK}J)elf|IG0yM- zCV&qV%mc7l;2!1wv0dG3YoF%OWCYSBlhSqe+$2u&RldG@m8a2EMvu-SAfPlR*nT=g zUP^msd$(-6(yP6EUfY!N@uO@%uXW~iF&;~FHXx>3s9c$pPDO6j%iB&;lk)HLl{D$T zrkLrubbgbuiVl@q#CHZzH0uV-0c5n4>J{+m|K7nbz=O}809hk00VCJ8H4*$4{#i)` zjlKxHI9TfnztLybYubb`X4ac&3Y&aD>b;+ogpGbonXp&7!uS^OPRKj{XG7S7Pjr-| z8Spj~+W#sXVxY-eiXZYmG+O)1CRW}dMO`^8mujPL=0zh0x zm5@hEylWlZP53cLk>-Oq?nT1>r9>hn67_y45vT`zfGq>ze4E*2ouh zV!V3FjJ>>(pPDp}F-1qe4ZOdAG%S6e?7^-4!Pvv;oaTLm$9Qoa9(P<^g2%lTsf~J$ u7FzVtHhLR6pM%e|8C^{_XL8GxFWh>~F1u-5b!rIfj-v{8xmw+^N$wK9G^Wh} literal 0 HcmV?d00001 diff --git a/Libft/ft_strncmp.o b/Libft/ft_strncmp.o new file mode 100644 index 0000000000000000000000000000000000000000..d5f0590a942ffea99b4136fea66530a1a51a19c5 GIT binary patch literal 824 zcma)4Jxc>Y5Z#L!#jm@{s&93 z5KGZQut?6zlxYN02$m`#@l9?niHP99%e;9zGy67N?(41GDumG_@B=ghH$*}Jq7N9O z`j7C>^4#Os*eM9KmqKehnzTLc)r)dzv0nS^nF;M9FSTeE2Q?0&bz~#Hxe~GUPGWaG zv8wgVbmMuRixB6_fak@6A+`#o9$H6ZdTnbZ9`!V>fBO62)(Oro@8eQ*2odu+du^2e#ly;ZQO^Fma&}&o6E3KX1ebYa)Y2Wf zRhij>avs&;T?J9?Ir}V%v~5} zx&;lzx%#NrY>hveDS9z4WOeAtnJpCuSywIePWI>4Dz_MhwFguq~0 J5s7b7&o}l;ioyT@ literal 0 HcmV?d00001 diff --git a/Libft/ft_strnstr.o b/Libft/ft_strnstr.o new file mode 100644 index 0000000000000000000000000000000000000000..10bba56b90c572c309b9a3fe5211716834ae6601 GIT binary patch literal 988 zcmaJ=&r2IY6rS}*47R#Cc&OmPg9qCpR8JN!5j!vk3!*M~DN{)!7EBboK`EpJ7d3GY z_2U2FpWsPEh0RUdQ!a&E3Q1`p$Fv92@6FD%&JPFm-))_Uu?1`mLAQr4gsan!%C)y zqLi7<+}3KwmxcV!+x#0T=U>?MXIf`eFDA842~n52?0zY;>vC;-HJ6Q7rMy4if+nRk zY23`E@dJ#iQx&H0d<0iCx1S~8WV9)*mo@(kaSRxIwg9({xa9W+wHyAEd!q7H1mDx5 zQf!Gzp&=?>T|~S_6cO@9X_~qF12I4YZ#TaY2#R&H9`QCcH$SVUVyi(2owp(^HVmjj zt1f1E)!iFZeJB$Ol(dofh*Fd2lNTaca5!B6I%T$a7) zh)1W6yWdMpq3SqCh;xKqRc#)$&7dKV5AZmasfk{CX_yonp=402`JvP4;2o%Aq0|<^ zb^6s6dM(r6pSm_{nGI>+ykBI_ZpukL>`T(OPIor~KfZ%F%zVFWb})6&H8+sZyf28j u$BEa7piM04h(I_&8@lw+M*p1!8NE*%Gr8u=cm8%B{wL4mwoJZ}&9mP%!lxww literal 0 HcmV?d00001 diff --git a/Libft/ft_strrchr.o b/Libft/ft_strrchr.o new file mode 100644 index 0000000000000000000000000000000000000000..5df8815da6375cb5853e5789029454873c59165c GIT binary patch literal 728 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%xB(Tv0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8zI{fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zElV z%29yQ0Zb6LYyi?wrvh0B5FekK5ua9+n41a_i;qWj-wdcy2PjkE*cZr3jzuFpNXU4JxKFz~nN0fj&u{(T($+d`jPUgU4(fC_nZy1oEOd9Z@4 z2l9TrJo^9tfBdRn#2yAJh5=|iVmMy}s(`U7h=H*}fKh;lonrz}l?qT?28ca?_J9B^ o9WXfZ3A8ae^RmGV2GT&~Y#@XAkxh?JD~T^IDJn|NC;}-30DQw^DF6Tf literal 0 HcmV?d00001 diff --git a/Libft/ft_strtrim.o b/Libft/ft_strtrim.o new file mode 100644 index 0000000000000000000000000000000000000000..4a891a2cb4a204f63ecbe7a9aa3da2d1bf9add5c GIT binary patch literal 1408 zcmb_cL2DCH5PnWe}=m{WITHzdy!8SG#Xnq>ogawa)>k|0F6Dk`m#RaW@; zd}*1zF8RJnJ_*@5#;VFEdkcCQ8jqo$Whp2L(NKI-?v)>7>>)7fV+#}KP#)FNtVsQ5 zDRTEacYfr#+a7RtxyQZsphqmO(IuaIh`lLx;}~}h1fZ_rdxfsk*MNL(e&L!=F{j;S z`q~9lqtriE>KR>UQ{(0?-}=V5yQla9?z97@znY+;&qheC`_~eN01N|F=qD9kA>eKy zMBk7*JNbp}$_;&LjjEVFHOH9TCyRYT?1NE@*vSYxGnnj7!b>}Z`lo!t=!9sG*Hvvn zJVq~yg{V!>OJh$r-Tx3pk!+h?*j7#dPd`vcr}lGp&3bx6rwhlS)W;lPiWn}tO@m6aAI#`Jwn z;zGUCZHd*p+yvHfuY~^3j=wwsMzAU-Kv?*RrsxjMMvFMakJV|ZmnEb WuH9O)WcJgN`HTsxRI4>iaQ_D40uwU; literal 0 HcmV?d00001 diff --git a/Libft/ft_substr.o b/Libft/ft_substr.o new file mode 100644 index 0000000000000000000000000000000000000000..db439e35cfcacbe79efe23715dd4f782507200ea GIT binary patch literal 1056 zcmaJot5L8fz;I&Xah++>Beeeoh2-=_*dBm6!AxTTR!Jq_`wI#26 z(2IXSJoFzVCrMPA=)vwua?C|AutK~=4~;X~_vl8@fqCD2GxN=xUEaa(ABXb*#xcMH zeHOh*K>{7^Ec#XA|1eM0dI~kinLti+$%L?TRXd0SzQ*pY9dR9PhUU>OdpLj)k7oqh zgvf3bH#1pVR7#H@l^zPQdP~;`^_+xCa-2iEbn#GE%&5`?gvjN^dO1_f1z91c_j{#8 zNhQjwd5XdbfV_?gFQcD9pUBMP5J4xSODXSZJ$_sQIqD&W9yZdFPc0g5_)nbX@*8*j z6qmK3toU4}`!4fko4d6kmsaaLX}N2)__emVvp}T7x|AH;nN(OGt3x;K%dgz{$>jl; ztf^JaiRygNICL#ve&&Y9WhZEmtUHM6DMT>F%UGAs(f9CnA40u7?$ml E0X|8}Jpcdz literal 0 HcmV?d00001 diff --git a/Libft/ft_tolower.o b/Libft/ft_tolower.o new file mode 100644 index 0000000000000000000000000000000000000000..940856f607c9a3610ea6a8646714448622eb4e2a GIT binary patch literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAa64fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z9Qk`d76MsO{QZ1DR=4Yq<^u|yu76&#L3luBx9gwS!^j3h;{n5Z5vU@@svri&3IRp| z9(IliKvgP0aTy@)_zwZFcw}(o6KG>{<^@>=13=|$AcOglO^;72i7&~|$uCbW0;vN4 Db)`kr literal 0 HcmV?d00001 diff --git a/Libft/ft_toupper.o b/Libft/ft_toupper.o new file mode 100644 index 0000000000000000000000000000000000000000..137ae034299c5876940f6875451f8bafc47236ea GIT binary patch literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAa64fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z68U>T76MsS{QZ1DR=4Yq<`)W`u76&#L3luBx9gwS!^j3h;{n5Z5vU@@svri&3IRp| z9(IliKvgP0aTy@)_zwZFcw}(o6KG>{<^@>=13=|$AcOglO^;72i7&}7EhtDW0;vN4 DyER5X literal 0 HcmV?d00001 diff --git a/Libft/get_next_line.o b/Libft/get_next_line.o new file mode 100644 index 0000000000000000000000000000000000000000..3fe2879730db3b1523d6228938a97ac898c702c9 GIT binary patch literal 2808 zcmb7GTWDKl9RIS_?pU{;4C-a*SV14Ea&(RggCQi?14l3*(#jafX-!UTHBB^4Seb-H zPAfS*6ec*lqJ8Y}#U~#`)`_L*TlGO&e99n$1dh^&3bB^P-~YQTm!^UreBb|m`!4@; zHuwHGIKf!xIKzV3gQ*?EGKh(B2D3Ck@CSp(`3=kCL#56$q$d+i%UzDgw~9N1~(ACPU=`^ZSEpRHL&b+m5Ga-kXSL z?Of{WbSh!nuZ}2P4j&NIvSbdSIPy3CAY)P_cR(oEwlifMy zNwS9+n^HKz3z&~#^1Ssv){9Alf)c-oJWc^#274J0_UtuG8Wf5q+0yaQx%}TTW_kB4 zHyHHtyKa7$=}Q#MDw%b1R9nO1=XR~7mx!#=VtHoOa`RQDFSMzC4w;|dwftO_>$&xY zK7X1Fd>HrDZrgKz$< z>b1Q5j+YA{*s**nN(Fo#Zv1?pYE|sETE7&r%a$M8vAj?XB$Wx>xiHh`4N3airC1=h zNhVSoSE_y_Oi^oVjYflPh4TDG$nS^uW5_-lZn|#Y@_`OtT(7O#$s4L(FJHI3+|KH= zu<5MrBzPrrABi+-KXN>vE9K?`6!R4@AI5&J{KGTAxv^&kkm7*pvU0rzx`?$j7M?{s z7OeMZgkyW>G_n>^`Hn@wfWV#8aKaCBo4k;#G+q>rxbbZYBCOpyGUAc=a)s}mH1*BE zGxvRSUmUc4t^hM8>pxHDT{0`gdf^T~H~$sQijP(F+ry{bgTA79!j7=?i$hO|@3nR%pZWN^&!+ z!jl!>uztFW%eX13^~`O&g6+ZN%z%yyHS-LDOJ+r1I@g|lusA^byp2kN;(%7$ zgu!9Es=h?Ws&eyV!SPtdivJo}9HxsWOBxFz#o@5JtmLxNJYQaORnprn@9li^y`jIX z(xps`$g)>db;X;0=*U9E*g!3 zs;Em`>Lu(z#Fh0O^7lRJ$9K#48W7($<9!J~#YdRv>wtLw#ya+q^lkxafWD;P1;isW zE&!sB8Gj)kvil4Wu8cDh{*F|zC&q7-6Juw;!$S18oMdM|21F?1y5wJz{4qedHmIk= zl`$mw1wr?YOBj)GP(lFG@BI+49}d)i3w6kT2-JB+C9Uoe{ST153>zA6U=pqF$&;XU z&}zhiw2=JYpp_=Pm8M?bO4BoIrEhl7A9T>np3K^_*-U&YqtJKK(!PRhAzr_u>#C!C~{bp%enCKCcDs}AqaO>y4LL^7GC HtziEGhP9L- literal 0 HcmV?d00001 diff --git a/Libft/get_next_line_utils.o b/Libft/get_next_line_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..d4ef3003edb8ea27560f9b335abdf86315d80376 GIT binary patch literal 884 zcma)4&r1S96rQzE>DO-1!Jxw)x_0R#bWv(y4h0bgb%;@P#UM3gB?*GS43@q0=XmN; zAav>KCD==#P~cHIXy4nN!6k_L;LZ2FH#6UR`{VWNbCO_8n`2lI^N21969KFv(v<&# zjNI!>RyjNw1^E($aO{>7>M+k)C%IX!lrIJO(JUz#5M#L|QV^n8uU;04j%e1d&TAzh z_V?5tu`d%-ayJ&vl7^og6_pu;uq&e6C{*pRCd7~V)bq(Jed(th78$E3O}vdrA%biA z0*fOE)RgKO%t1O2UIXJkJ48f5cU45||Ix?Xedp~Dle;$~?luS9vqs!w+_ij2pYK=$ zy+iLm$l5J~=^Z0XN4ytw80u=<%NX1{fRBdLuxcd-bRtOHUZ{K4m}Kc74ROmZ2F-iR1%b z<|b+z2!De9fDauYyJFnOc9-KaeF5Y6)}!PL$$7~j+KLtd$0l)%@iU0rr literal 0 HcmV?d00001 diff --git a/Libft/libft.a b/Libft/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..439649fbc9a9748b9b755e54b77a8dc12b73887c GIT binary patch literal 37440 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 REe1SB!55i&uy6d|{|mRr*y8{I literal 0 HcmV?d00001 diff --git a/libft.a b/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..439649fbc9a9748b9b755e54b77a8dc12b73887c GIT binary patch literal 37440 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 REe1SB!55i&uy6d|{|mRr*y8{I literal 0 HcmV?d00001 diff --git a/minishell b/minishell new file mode 100755 index 0000000000000000000000000000000000000000..95f3852adb9600fd3eead228d263510254e56f78 GIT binary patch literal 88496 zcmeIbdwg6~)i-{UrX{^jxEDnku}A@-DFPN~AjL+fVlbi=ug@e+rfq1Ngj{ILLp7LG zI}L$8FQDR$dPh)+CS%6VW*MUN&iPNJ*J*_$9R3v0MnW>#-MXr|wJF)$ zy0lH;!uq)Fvr3P3&JW=z4NcK2>-Ed{CX)*nd}KlLJs&*p!&k1ICm zglQd(8n2Y35|3pmN2XFZW;$%FF<11y1P4On-%X`sfc|+;(xDRX-_p?zHDbJw*LLc&- zhcDAuW~ES?mj&{qnwq;#de=#is(FcI!DSD;GI&LNgEAm*Yh!muXR7n0Q%^c2K#t;- zG?f6cqyX>3YdX79D^EHnKmxya;LGy#OhGB}|2PMueu|%>2Al>KC(?gRuO01OJGvlt z`4l|G-6vvK9HMs(vC9wByGvqM(iDelUZ?$J=@xO1tJh!i`ls*S=stORl>zSQ`-n># z#833@tbk1YYe)T0@7}$;chrlmW8c6BUvm#k8cN`#p=6LI(R)utAd%1mv2^#YM0&BG z=&u<~q-!$$wY%2WJ_E>4q_-w6+X||?6X{w%L1ukNg3yKH8Cx-9^ek&#W)W zZevbRF%BkgJds|TOQgHWz)!?(ssS+U$J&WjlS%Zh&7cg^NoBZZ6hB^;&TsC^iT<^j z5XxQt2ZTKN){c@53KI_sUu|B$g zVwA+bG=v8mY9713B({zLVfIWXj#Pk(RO@f3fE-XBE5)AW*7I2=F%c4=l4>&9YgFvq zy;2~Nfzm@)m0?|l>?tTudhrfbnG?;AYVQG&Yi-W|uYZGGW9^Pa$u?R{O{RCKB+)p! zg<|<-OiYV9wnr&!K!)L(M{%XTbD;64*1)XLlMRQIBXK(u*B?^e-~DLsy(Q`HN3-`! z*}(qZm83F4D*ZJhXV&b94bX`L$p_Mi;RA6(_ei4gK_N0CL`Jf|Rt1fr8EX%@bob8w znw{%w{z3_R=D|GPWx~a_l*eve{Fl=oHiMPwKqXs!- zmwpuUg#Q*rYQs^>+?qkF8TKD;0rp;6&(R_*+fFwuJa5x?`Dc=zG~6*8kSo8mRk3Ya z8|r~X(lsMu!DxMK^(Y^RgdSrWt52*S~mY`uB;FmlElR zpq1PFb&7SHV9^&to?L(JPUxv*gq79A4C$I}S*de2R|2GqoZC!ttJu*C@pLb3=Uc=u zvqwYS2E*itNGM6&j3myi&8)Bad92rzr((pmOshbhRL8Elw|af|&o|WkJW%~RZ9y!$$&!d zC?0crfA@~`E4{-d>9sr58DxJIDu5rxw=S>1cA#oC?8N`IS{__kN%m~yaQ$BY zTGkwREq*aEQ0x156MJ-bY#jr3NP!ah{uL-BENwJPL(kV{z6Mc>r6O->U#g3}> zLjH*{!*ETGDbT~HsF0&60`Pce*6xa}vp#h+XquzhcS;t7FEzVjTXOyoTAN=ofX;Wz;uq+z zO`32I4207~;rbKMg6+Lxl_hQh6c)oc zPB}2PW$i1c|9gGSi?P1L^Td&KNI8NO^A|5}sChB)7aU>+)s_7*cmr~Ag{z0GlT4 zUmC*BM00IU%Tb%trYWIpU%Vg_jWJ&qh@Jf%kl3Zwyk0o+V6+#EAL3?Ty=!-Qu>pxU z7mzM$t-pJewj}ZTFq@cv{Vq^M_Xv-XNZ;lE6mtp8IB@Fw;gUA95LAr+RXo>5s;mn5 znaRTvK@vSJhZ-O^0MnpfDrx%#)siK zM$mP0hSI+lb}a2AWZ?r<8_2O$IWk0sS44Av>YpNGCXrq+Q|!2R^~}7KA0^HiPRfZI zdC`1_{XQ_sUQEr18(r#ry2&g0xHC?1E|F>&TMhq&#{EAW>(qcqg!9i~kUULEOl40+ zqkt;{%Y~lnKPqMXG*I;e5`2epgjG=SXz3xv_cFsW

M(*vn}D$DIB1{5u=O`I1le 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 literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_atolong.o b/srcs/builtin/ft_atolong.o new file mode 100644 index 0000000000000000000000000000000000000000..d4877ee96bb07cbd2efe041c70c5a8ed6f0365b2 GIT binary patch literal 4048 zcmbtW|8G;*6~FI2-)ARI{G5a@p+vudP6|`UycN`VeHhYKg`{ZYH zIxrcrmy968D4M5=PT$dwM*EMh>6PBEWv54Y1bNQK7$=j9jgqL4VGNmrrIb-9=53Q< zbU%0C*&kHgtb((b76syzOf`v_9AgD9J~)^+M=0NFyidg*II}Uf&r=NsZCyMolgv_N zE#6VFUzW)4g1~zV>s1}-8oYQemo|+|{G?e}2k#wwlNh_;jAa|exd@fSx_H^aA126I zo1Z0;XeTG=+I`~L`Q_q?TD(_k@IJp!yyDBbb=Ui*z?*Q=V|A566FNlAdK1}`$g60S zGA~(~A;UP_y%vg^7xghJjMKoQBmWHNA&#mB&m1B5zR%vqMR409MDJ0rlMaRpZ&k_J@BdcRVPEN}mZy5=%h#mIo_Rg-2kmOaZ#&B?OdJ0VMNOSqpeQ}j zGp}9U<5}~j;VqxJfkS)nUU3t&eTZAtCidPdZhW)tjozGt#JqFS6_SflYN)4M(FH1M zeX0l9^inoW#=XLLOxLl4VJ8Q(aMC9MI&C!rn8w; zFu_8Ht-*Xe|8l6?95K_`oS6?jkv(}bo*6of5Bq2~n=XWobRQ~&dg6(vkMwtjgPnVW zg`pFyRuAB#TqYIt z3rE;3{R5DHhwhVL$yFyFaHKN}19v${=)Ot*KB_WVdj`NDk=B8N`+DlbZ8X>sH zZ9DWM2Xv_RA1}Iq#am;4MG~G3x;hAeVyI6KMBl}hPtQk2%CpaPHvaN~FPr~Zdi&4E zV5eK*H256&S76#P8aECmq7x#W9xNhSCF#qgfM~Bszf1~f4ovz}q<|{9l8tD+T>qCC zDih)j1O}o$ty#ftxbRHUdWpyv9zE+#1l~C9Zy0&&FmwYNAS_?!9~FKoDbQWxE6bLC^emH3`6YjY+cS+Q zO0W&QbH!P{$d9oDKL1bTCmQL$1QEq`gJ(qC0Qxqq6Gx@7avyQ8BQAW)nOEd}*Ss^x z(Z%*7Qj(;9`x;5m;=q!XNffH?Y{qg{&I}Hdx9a+)LUzflj-*YBCUI~56<)8#xEA3X zBD^)pH^+Eegl~`V9T)f`F}^FJWT&~TG)1_gzR%@9arX;c#Q<-FH%IuUB;Oe04@9^c z;U0CEyWwewaCd}rHDv><>hrvQp387B)w78=V!{X2kKs%4HpoDdZ;$b95&kWJs0X<+ z%;hUwDslFr9s3Q$co7?bY)|qXG0H7?cWhn#Ke@ZiT_xUHLMkz?PV)`wA>NAahG||` zq0D7CN77~cr3sQd1 zTb}1z)iM6iWmgx5!~Hl-BfiqhC`PfRN#;HDUtV_Z@X$@Ms}eb{#VI-1eoWIFyr zhX?rq8W-e6NPLbRf5*|Ft6mXuLdd6ud>j(jmhTav4+yzm$bgU#Hcn+6T`3xXN5MoS zNS`4E)C49yApGAGI{Anm0t=U|2OV8T?hY9>FS5|ro@4{nXcdO6lvQL#^#gCzzU~-Y J`+j4V{{kVB;O+nb literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_cd.o b/srcs/builtin/ft_cd.o new file mode 100644 index 0000000000000000000000000000000000000000..21270c1093894f7158d8055da1517d962d244d10 GIT binary patch literal 6772 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 TnWe{%YQBC_%#zkC2%-N2&S~oa literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_env.o b/srcs/builtin/ft_env.o new file mode 100644 index 0000000000000000000000000000000000000000..f2624cd06ecf0db95d9599c6a0d453cc04d5ea8a GIT binary patch literal 5468 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 literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_exit.o b/srcs/builtin/ft_exit.o new file mode 100644 index 0000000000000000000000000000000000000000..dfedba1d812dbb83c62ae3035f4ded71765151a8 GIT binary patch literal 6288 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 literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_exit_two.o b/srcs/builtin/ft_exit_two.o new file mode 100644 index 0000000000000000000000000000000000000000..39f06da1b4cfc1d8ad414dc012f6326be2ad1991 GIT binary patch literal 5100 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 gmN?xm)f*T81_B3Qm;e9( literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_export.o b/srcs/builtin/ft_export.o new file mode 100644 index 0000000000000000000000000000000000000000..3f5d2430116fe9133f7b72e0d5eb681ef814e0b5 GIT binary patch literal 6440 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 literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_export_two.o b/srcs/builtin/ft_export_two.o new file mode 100644 index 0000000000000000000000000000000000000000..0edb516452df885937e89393691b5a899d8cbbd0 GIT binary patch literal 4284 zcmb7HUu;`f89(=4pPR%YpqRY`3;^lbAWS zWnX7$X+#ybT{4fUgO#U&Dm0-!jJ+^H)v2YdsEPWr6$!Mbk%u8AG>9qP0 z)NwrxKKVP}`Tm^W`Oe>a{Qjr^{H%^KMPn$yKJW|`Auwn=xSsUSp}l_BaY@E_Ixrb= zlWb>Mjy>r}1;Vn9Mu(0*(7oDC)vXa8L4FWmOmyL6r@a`GmX$0x`BY|98msX<9Lk?4 zL&;Q->}K6!S;KasIBEe@*et8>+1|t7UHAV@Huy4466mEWJeW2>dU)|fB5zMnz8mrG z(}aWE-WYqc-qkD0ns}+qNS0!%@iKD$b27he4K7kB$e8X{tMKBvT-vrW@o~FQ1Meg5 zHhRky?3`R@sgkIPmreXINzUs0UY1GhCMT$?(UlctO+1lbE}pE$d%Fs6@PEW}PULEi z_sZ=$FdtC01)6%#AJX-Q+upV-$s>W-NStEI@ zhTEWeKVO!3mnGhD94xtogazoZN4}m;0ry*=?Oee$uodzb?4j zz`_^wGaXDsL1dpqJDRe6EsVVmN%d#Il|PK)M)788Ib_aGt;|K2$<=w?EXP*N@nE4)R#VevL|@qX3tFV&dbp|mz3aHItfb$9}2UAXZCC`8ug3NS!tC8 z&&cdZU)qYI99=G5S7xKjOA~8rYcg--YL@;Ks?4_o`L50u@6JV6sBLNLE(>0`-o3V- z$8A{WqIYT7hym6bl3&HRN`F*lMQJ8)n_I z?Cy2!H{J9RkC-{%yxZ5*V!8P7gS==G#6rjH@ofG?D4tGdlW`}N&4lcHKAYdgdg(F_ zCDZZDXlTOD7s%Dw748Ukg!Tz*duLY%wD32&!d;Jll@;>ILL^a4rJYnJGU8bFWGLJCe(%CgP4AiKQ~B!kC>-vr+V%a`4rRJH-M^WgM0q zi|0|;$ro@l4%_*}x=L5M^c0XRqryrQ6NxmL8GU(EERWln9QH7C#&fKYI%zXylk$~7 zE7tfO)^F=om-ad5F@QUd`83Ugq74&mgh?3qKDqYOq z11r9U^?O;n2?O`}jzIW^P-wSM=!*QdGS&`N8GIk58l=X$`r41^idBOY%{cW+^c%1; z_z_BVn~ck86t|6_>(tlMb)>bCkMRX6L1a?~Y5S|YzmF2=lMNK-X->1ys1-1B0%MQV z#h!gt*`>9)k^e>OKhhUlFBuc1p=tvJz0ixBRsznOO%T>A`%9Spt|0jmVM7)K-K{P%Z zvxb@QiSMY}f5+*W#$@QisUG-gRcLQf4m5+i!64dQWTMR@O{fW?od)ufb~TihJFJ#} zK}OPQfgWmKxif0{y-_JA4>M)5MQLfOt3MAEO7BtdzEzs9wKbU^W4(cvbLxR+oNhrB z*9Y#9adZ*{)rg~&zbxZqzBTb)N8H8#xc$dx(TmNMfZ5s4cNrYGoetmo39qj=_!H9{WurcZB(9*< z0N;$3TMQmBICpr{H1q+^VQc8;jj$QK#o$e_Y1#>gt4FzC3l5?4e$I5{;a}puBL8}k zcVe(#Gx#Qh>%YV}2Dq*dd82PYwHb)#xoYrjNUjNeYeU?RWDr@W&x=v2zk428O(Xph zZ$k%26b=1|KzFK+HDd2zp0Nt;KZC>zwf$8{{I-svz@BRVmb7!Ved7Oja{VeBWg~ZD&L^RfwlE#c{7Q@nWzl-w70-6wfE5 F^j|6>3o8Hs literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_pwd.o b/srcs/builtin/ft_pwd.o new file mode 100644 index 0000000000000000000000000000000000000000..bd4671ab7a910870eaeaae8b4be89fe7e9be58f4 GIT binary patch literal 5120 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 literal 0 HcmV?d00001 diff --git a/srcs/execute/execve.o b/srcs/execute/execve.o new file mode 100644 index 0000000000000000000000000000000000000000..c52600f55377a6b793ee9803cd4a4394f643f545 GIT binary patch literal 7796 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 literal 0 HcmV?d00001 diff --git a/srcs/execute/pipe.o b/srcs/execute/pipe.o new file mode 100644 index 0000000000000000000000000000000000000000..1e87795518985da8f5ddd01a51bf4ddc16726eb8 GIT binary patch literal 5984 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 F@gIxFGKByD literal 0 HcmV?d00001 diff --git a/srcs/execute/pipeutils.o b/srcs/execute/pipeutils.o new file mode 100644 index 0000000000000000000000000000000000000000..56ebd0a018a6be506cf53b0460a05c46bef2a877 GIT binary patch literal 6028 zcmb_geQX@X6`xz*?A`k8yNhEd4vw261Y#)mU7VyCVv;!ak+bt<96O1L=w^MlwwIjm zuDf^PLPH60f-oj1;X`WwAXR~?QE3s45Go)jU!{>~R1qZlK~+%%RnmeQN=w~P)&0HQ z+1S3AmR5}J&HI@5-n@Cc^JeybasI=9`55z*F?0Yg;BM+70JH@FKk=W@uASoy92Yt+ z51)*nLfENlUN7ba1Ei|G@g2QWyh}-vLyxG-KP47`*mv{y>}K{Ugq>rWdPF!epO z-kJUuaoY|1xr5lx6hTa(S^XKA!7Qni`umgcH!0$KpxklPI*&0iRN_y|<m7u=|68m_oDq%MRRsaqYd{hU} zX2jPFK`p=@3zah&K#i10eh_x_%2dy1tO!hdwi__L(YgsP-a6B@W~ciSWA7(MKL{tr zZl6eu#{p|2iLv;(#OUqkSm@wlSP5}#JW)IPl4mSY3&A<)!6tt0?3}deGu8PAIb%j#P}v;t1~vfxB3NA8jJsRR##Vj4p(-t1DZ9=)@iB8 zppn)iDcwq%MlPQ(QK%(+hbcZ8arXbfYm~YUbW(hrUNoXLGt4ZO@L3XqnVT?4sUmHf=?> zc5JYso3!MXtvi;*nwG6>vQoQQDIe{#5Jyx;X~?E^Okx^)G)%V1$QahJo=&qNRWBNO zoHkm%U@;?;XSzCo30NUx8ABO86(QLTZ5y}7S#M8Y9K%$(Sg+dM*$t7peM?UVQ2Qq8 z+j`cc?}>MG_QczJL3VEL?jyXVuh$_Gag1(hC*AJu_~s6lS93;+S$0npK+RLt&`gvw z65A}ISl$e3Fom(Uo}RXTb!+EMakaO~1|{VLWYEdBkI*oT;-6T^H<83_92n*vJnut(NGj-%Stqrp<4-FYWJ@Ks*u(wZNTr6n>MDTK$p?*Ixq8m2w@xy zU*wwrxdEg%;iDDYL~2);6B!7RI;$80^83Vng0T}A@@)G$gmPI>I$Hd;O&voYl8)xi zBONk-3q7lR5goOM0G@4kkzN&9Op;C&>43}G_EluhDtA$j_6WeU?E$h_d|{5owvPNL zq`oK6JqC~l{f`4Bq@BtM;LG4sx|u1@gN_pYRll+T*rwI6@+Hu3kbGCI(f~{`NLoZO zfLrn8q=5$ITc8gSos21e08OcoQZ33ypl$#9S|*cm*^e=c?2%W1_N_tpDtKwR|8<~< z)To>WEJnvanJEY&&hPWit7Y51{iMM)!NDNmu#L0@X@Ol#hVz zP_AIgCoa9zt9V@x4SvNB`Za)bWtjOkBkmwEH8Ra0zm3jE3u+|c^?nLFCaqLf0bfJw zy@o04T)M@tY;x&q!%9DBd-CgQr@~(qQIe3`6Sg)mnS9G_@Z{TwE(1>5=q~_8q`0yV z_(zn<^-S3h+I|Y1eq{`_oq(>ea@3V?Kr-$jM-QPp2C3BV|1MC2v|0H9upP>cOrclG zrhB}~3DT~(LuuCCku)WN?${zmS6Z2#SXiIXe7@wbJ;;rAb$SC@=D zv~Q<%?{90d@Gk>a18xLRA-ffD58z?IlYmzMw8dz%{1Xtu0u}>S0uq3o0D2+s1Uv}% z9^hHPDF78q{MbtXoCefrBa?`>2rUtfswIiu1qcz<9}-bP5+d6AB%+-xe9;yp5p5Hp zMQ=2T=oJ?t+LI)rH&KYFu91jJo$y5`28o6MO8{t8B}hbNLm1LwLn0~w^Z?Ol?Ifbz zDYU52lZfiS5YZMR5$!rLBV~X@w6}$5gD|8sL>SWXMOqnvnDJ#HqHQHYrH4aWho^ke zc}1e90m2s*3=&Zd5i?SqB@q=};fu~B644PQMBt`1I;GG^XGVKbaC9c2T{ON+NFMo& zad+2vZtG#5V%QU|@cEC3AQr;rS0B;7n4A>zBjv&HT~d3c`^`zgb^vmJar8tSv+AXx zcSh)mcrMa=7&-B>9z@{rcs>nQ5~3xLz{n)6|NEmNTCmJ0JfsULJ!&j(`N|jL$=dq` zg#<@Y`*Li}_@F{&ad~YTrUc+pUP$I0+EE3Kd|jaNiaB2zkb50V_gjpro>yiH)SXtt ztID6_wQ?5^ba6@Ez`alKa&Wa>T#=9R5J(>ltmph@9sswXi}NmCCJ$k}i_h=kOQF^X za(NeD)ykK)^7>XT9pnBkUe(2A`FdV~LHvZ3=Q+;&Yq+ocV+`)F9m)Oj5$=T>mo-Sv(eo3H1Sa`_480auYn+f(7F($!(D1~9&pTG!-M6&c`Ih>pQhS;@;|7;yCmanMD`}oA=Qm%fRWe6UjrkrH9rML z+8ci;#;Kaq_Hc*3`woux%q(HfK?3>uDV;f() zOIbUz1`t__)M_vdAu%M-Rx}N?7u(9K6KD+}#GYCw4ODHJmP$;^q;6Ee)_vc(=jP#d z8cZDJKmYUm=l}nE9@jVTeE8RY2ZZo=1v-Ea@G!e50BsQqS))xcY-{K0UROV?krx3^^NWxlih4f`F} z|57tt8Je2PB`)YMo9`>opxWOMi;ec6dJfI1@Jkju&jG3`f5~DoXPNorfMr8j?N3+Z z$LJL8yAcP^=r8E6(EEiHZL0mft^6%l4l4CCJUQeA{mJ->$yBw!zgPKt{1f^s?<-y~ z-}!Y;5I<8H24q+j333cOn=#H!^Un^tw zmGCqiW%YU^y%O~T~#P0gbW%JTwb^Ur&ez&W2EfzSV_ai=@18B42 zTLnQQK<+fmN)4iQ3obo zxz2Tl)9V9z+mI2-g9NA?C>i z@G4i5vU0WUDt?dgpn4E$n4@qX#4A%nWva4jqj*LL_4Fn1I`uH7YU!99IO)tcol@Jb z*NkOD7~JHaP% z;i_SyplZvcANACxm&sSTOw@XW+q2GE?oHYm5ffWFyAwBv)|hAobn-HZrgF)Ae{`=^ zva^MJbmgknw$`?2vy`^1T-64yb@i&&RqZQ;T}s(8YtTwn%2v#_%Ee?k)0z^oP1)X3 zva~O@-r8&B3Pr0FyQwfRkj$qy;T-EO6moWK+xm@mY;!Vo+qRySZLKTUwA$%CqMDCw zw-H6m!r@%VSyrrA%I-~Ks?FJa*3MYDoai^L!E71#eX?A!MK)g+mf4F5L?v%$`}0;h zO4-ewo3_P8_tx!kk?gfihAH~3vLs9^zqcq5ydzF!tkfQdw5?<*m2t(%l1L}ZNl`W> zvK^Go7b|5^F6^=LHdMK+T^6>3iX}_r`L-mrP&(LFm{*u6S?O%a!u2CLzP0qC_09uXy&YBA15LzCQBBQ%vpV9GnL8a(xQ~@&$u*A9QUXcqAO-G zFOnrfDTr_fN=aG@(lC)=mU;gqOSl+emzFH5xq20-zBF{5Teo)ZG`DTIGj4Y8+!8lU zks3&=dO6Qq3Q%%98NBe6O^Iv=;kva3MaDu63MsQMm+YTrvN=l>N(eWd%`2jSIx|`` zUm0)+$AMKU6-s8RkhbKr%@lC=W<}W=D55ZU&ay;ha9Hq`*dsjko=d|Gx;K1qfB0|r zha(G{!u6iHc#qSr7T)lNhP8{X3tb=5a2tA;L-6@f2$!JG=h@KU4TnP1;reTaW(h7z zKQGHbD}2uNuWR&%slI&CTDSW-YyB)zrJcw0@`io(IE%>=iBNX~PNbwb)^FEIFc!J@*z772?fFS_eVF$^c zZ{OPYLDInEo5OQbHt%sD-RJ8EdL7`?>h+VrLVpjPM|j@?3i$jyAZ2?My=TXt(0dmK zwIhSeFuQl*FVN4?j+Do6JbM>$5^$Mu>K5<9WZ-tcNnO+HjJD=DI<}t!JUiY;@AdKm zg2&=vj*=XGyu(pCM}bRA|9<)xA=D-l8GUF{**zic!qjxRGfRJ6D(8%xYm=HQ z{YTEVSw>$=S?wDfx)`0`Q~O(>x>M+u1GK*Il|TvYE@KrijkR6EXb0X7C)zzh<58D3 zBgW&PSw3xdqwzE_Q`M4DV;nR?(R!PWJ0S~U(P*hQeEArGK$~CtF?|M*(^2v_gr5g$ z)7BU-0QWG}YlZQ$OScD&F_->a#P|(pIq!9i(~(~vHQs|<&ehQ@YU#VS7hT-|y3^}T1MU#F}Aw$ji|$S=;#G>AJNfGVGoqG+FBz3 z{5v}86vh>x&yv2;C+hwPA_RedS>0bj)`Qd&b&NU+(sxyaWWA3MQp|0EC>W@XfU9dl zXM)#uhWmh;wOfq=V43gj!mwR>tIrq$EhFC+G#+u~-4WyKF1>x8@svyNXq2^;e(qRe zJnPDPqFA5XIupoC@V7I8uT*T5d89-Lyt2qf83`mMj&|%F4&3M;-mrh)K|NZ;xi68w5NI_y+9&KLPOM;&}e(VdIt~|0Q;4JU~dkOa_gI0eO$ob1ReFruaW8 zeF2!w%|ofr%Y$)$8XF$a3jyxO4(7~yc=2<~Cx41L@!*lkD$N1rm@t5I@wXrjeu3YV zA{BjX|1aM&nx0vaURnxROZ{)(SiZ|X^oO!gQ@PR(m7AIdI0J9hP#f2zmcszt)f z06b&jfF8gez?T6>0M7t^40sdpE`Zy>iv_R%umaElxDC(?r~n=YJOOwPz+(-6f@j=v zU^E_S6rDoH^w7AgDdP51zj&7`5f4Nq;?k!TcZ3pg=~Kj=pxkqBQN-=0+;i7a#BHbs zaz|0bjiyB0FBEYLse#-{6me@QD<)47j|FAL(}5x$7s~2&uoUsg!dSNB0E)PUmIKgu zYEi_)M)~4-MiCD<<%{P4MLZ~!h}SVi{Q%{QXEa4Ta+R;OO2p$_4NNN$k7H%UQ<(#K zOe-sJs_~vjqkdL9t~lP@Xy@s93$XE4MmtZx8IP#EoQyq^dHrlNxG3nT;JT7RLgV|AKr}DX=-J`JE z@^{Cd%Iku5FTw67%8u_2vQ@>m8PD1$wjd*q$MaFRj)+B|Ae&Fwvwo@l-@ngd6}uFJ zyIdu0#j>m0ulZ~|+57Cz%u!7K)Uk#9h0vN|0r0D;k}4~D>NhGDlw%47iZ@03K+7LH zkn>xN&x_YTr{*}t7JBshnwRv2{w}?yOZWLV>zC}+SAd(}rRzOkPla0D|NDtkEfO_PR zhBpucLU~g6KqtHx2Rrm&%|G?9<8?8F_0;$15hs&6Z~@HN=Uv|i58fMk^!lAL{d!0{ z^yNM58~ho45iF7ZoDMzE1AiM4P?x^wNybx)czoc3{v%8dsV#gLEy`Q>3=COhRlBktC4<2 zff>(3z?5$U#;ZWf&5CaZMr+xRarpChE37H}3Y3%=6)MqN_r@vF-pAVKLOb#^h IF@|yf2P)eO6#xJL literal 0 HcmV?d00001 diff --git a/srcs/init/init.o b/srcs/init/init.o new file mode 100644 index 0000000000000000000000000000000000000000..304457d15aaf8f3664af477e880c1af1733b40e6 GIT binary patch literal 7220 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 J76vD8G7upf1_cDq|Jt+@$n(8JJX{=so$bM z1-iSF+Ai`pSKmiPLJj-94%kyJiA;b=^+jUgIEm!zd*7iC{3ou%!)_g3oX1$9j^^nL zBoa|gjRkgUDfH*-`$>sDNNftAon?}q0F&yAcYifVA~)zO)d$X(<2z?cWCBd8PuQ0T z1oQR1o~LimP3lYUPE6|W@1?#GX~nTG)EA8Jgk5Ph6Z?837E;xX%@eLLc4>xAjY#JH zFEK`2ryK#0TPe?9tyc{vu^Re-{QdloGXC{+NKv*|==yYuF)V+tffF?LUo;XE8uQ~f zCjEOs?w2F8_0g@cPfn3zUjw?!QAMAth}lr7kPz{^Fm4*)-~z_30Md4BMWtesmBy0q zHy#}@zo2yZhTiw}U#a&E?Yrh1%3Spgb&L(QjQWPXW5f3T7fnNU-!OWHy;pt1^}gYb zu`yEEe~q~YR%6~NJF9N&9Bvt%7)%c54bJHw!7O?G6NArD=i$|(2!LSvhP;?7a6=iqmD< zn84ApVehBX+FHZhBhubR?7uvFX(>mrl+CWwR(n(bwY9E+$DxFr8SYy#5r49V%pK0q zYF&b&i@u@r@cn``3G{I0!q8bsjypjSr8$O6`p=qt!B?{PjB9`n8hJVqbMlN1#FU;j zK5)+Pr#{=Cp_aG%_q~m9JtXay6N`OHTd>M?5NSuamfuzA8t_R=$KC||Ho>5mmBIF;si@Eu~M$nxz+PAkk4>(F3v%6> zB-A)@O}P$EyGaNC9XV1scp2kqkBR+8ccF3Xv&=&H^8)!}jK7&cK4i>eOhJ!uF{d#x z%|FTJcFk%06X#Lvy}VTA8Yr70s;cYYC%R|G;k*LLNzFI*b++!MuOnp-cD(BvXoMDI zjo}uE6(XVQ>w8;C|7Y_Dz3;jXR_U`$ri8No(X-HU$ouYirrfH_%QKk09d5{$Q|6D^ za7C;n7S1?jmm82ZjfhX0L|k*4$MYTKkMZZ1o@+Duqbe)kJp)tEdq>gI4xzMH?hCez z>f3g;>mX&?Vee@F8Pkw=^zy%otW6G4a?!={h(ZeR1z+=-E+TeN(N=Eo{@Z8zot}K& z#GF$kA9}#vMe45RW>DN>vi33@kjD4Fgrvf{1F2p%pEc3VvMLx2#CocBX~|S19;;f~ zP+MPHU$sbZYnC?DgQ{KDP}{I#F-s+bsk*4vrzPvOzC<7vstvNbjgjtTAi2A)S=*&W z;|cVwi|^ct&W*Uyw8!JoRNa>54XL`8KydSxuBG+0OPANCLOWPKUDuI<33VE-Y4ND0 z)g_XVU4gV#*Aj_EQoUL<%6e3-FOtU1KakF(SR|Han%a#CSSFT=^u)AK74hzB+PKBb z+S@w3=%!mFYgb#>w}PeKySc3yU|kEfO>K9hZSyv-Z}YBe2fBV!YX`y29ql^e^P+e2 zI+AT|^=@iry3;J!s|9zcy;@QW#enBumG4Xt5OfqmfjarF4);YAi-?YN8jNI!s9@9EX9C zq=u`npy-WBw@ZudVyG!<)Ic&B*v*phI8>=oEfA&|2qXeY4e^X>;j|j;jYLB%8R_XY za1zn=Vo_jLB7#V#RRK~uz{Oi|LeQ9qgdifSnx;!{Ac@;Ju?2~RTh;(99711HTU*ms zb<6r~UbTH|t5;Q7aA!zO1k$|>Drsv8MxdKE0p7CGssJe+;Eu2LF}XTwI2!1gAR*!FWhxm`Lr7(>oLFtISkl zTA)nh7UjTR<)eoc_sj~V#8iq)oB1|oQPxjeJL^uzDu)?2Z_9iz);Juv2UxA9_0ueh z!$EzF@kQvFjrU4hE!36T8p|yT^;FNI@wkd}W|pk=xVqbK%OMMI9K={rJ`)%HGDef? zQ#xHB7%QG;nlM8t78aAh3RvYb!AQp3w?Og^&?RKQ!?6Y^dl~mLDd_*5 zvVBCN9M*wo=@sAnw?OYkHCYSsIM$2h=YZU5?E!cZ)oL!`Z%`M13yq0cE&vqh{UboF z=9&CI02%)fjfsDZ*39WKX5l6nV&zV>oKHt<!YojUmj!hi9)jwv2iH=4PNzZ*f}(MD^EbOz5Vd#+Ei1f;QB>%WVCuYs zbap{o93pFX<TD;C9XT31ax`}2XzY+NxL?FTjKlW|eG{-Y=rVO~Cyjv|je#7E zfgFv29F1ZeE8LDqP}wFlMoD8?j>fVajb%9+%Sa-p4^GkG@Z!P{cK)HFo@)n>lWg$~W47}Q^dWvh zK)KIBRu2NTE^!g+UPI!necw- zLp+nrnuKEpan@n1_%ej6tSHZUcJ-S!eY9rV8!zm9<-xv3-uvFkCDuE8AKg2+=4I_z z!>9Wpe+2dWs6RzLgL)Bl1obMaNJW73)rtxoR+{f=nh=H39??N+P$+2;N?V%>B?v;d zO8M=QE|4@OV(KrU289wop?@c+3IApH_!lpt$$xUvh|$f+Q2gjC+jOZPffjl!j3a*Z z=+t9LeC#f8C*n?T3-oc5#?rj>Au(<3bf+JSRA$Tz+{ps1^4G!X6+c`YsvN!EQ|aCv zseJ9Xu8LQ`?K%E4UiZu87sA&c`T34Y+pAwmuY0|;BHlW^;@-bM_=g|AmbhNOf6#I5 z!fg+IJiFKZ{?W3EVAYd*?@K-Qb~&8-3)D5J_n?MQzm9qc^=Z_fqMk$j4eDi7%3&_V zb}s62R3GYns4>)UpdLki7L^XutEhBtFoe-j!exRAB`0E0wvyjU>EIBHPL^a*P9;|1 zgcPkgu_!x9U6hH5MOi=&q_adUI$V-PDTi2;gCvV`HL)mtOI>u=AXX3Rd{h+5e8i$u zCl34T{pan#sTth5MK2nO#Jh3PhNERJ#V$pe*Gg1yD7Nsu9qP#&YN+)vQ2uNbZ zQ00ttZ6X#O;rXa2l%0u130vx-)I}`HWl|UALt;^ilv4EUAQnAHq%KNN#G-5^S)gR0 z3lxgpN*;mi3(#c!+1HuL`m--5ll2?E(^X@#{_KmxWc}Hfg30=g6KmSj#!P)~liOKf zKZ3a^0QAXy(PcW5_<~?~-lVu6!IMGWHH2I<Ae zgUz;r7e%?7yJ3jw58>FZm}%$@G{#gyb>m2 z-djDq($5`XUU&iH?Y1sB({qv+px0uHbBD@HftL9BEDyK%xzo0d+lXQ7FuRlfh42~Y)7CEX3^9ZC^nzsrVMA6Rd&otI-Tg4CgNLmfbUvId>+LFjv%HkKQDyScEl7*jfuB%$Eh3iev!2{%kaY| zXl4Jvj_GUhy@%~s$Rhh{UXID;cxX`z(tO?lzA(&}_&N67Ld1WHSd_t}*%*gIQilDQ z=G7N0TA1Hzsi@`ketrjzho9e>=1pO~Da_mb{5}ugMH%jbWkr6Dy=C#}QG0?{Y!iEm!|)<> zV=uYU=i#@6$xm3j1US4o#@#miD(oGx-|V)H#&+gr*s&Ec^mCJKtJ#JWjcZqd_&zG&<%PUpbPLFJlOD7P;&^7lG+`j?RxKn^6cU;nL zK$5$HPU61)k7)x>pv&1OIht!V&6sW}E=(6((7+9iAe zOybi`oM5Sh$1#ZLwSf4&NLeW9GZKDZ!u=9%m#|U7DhUCEp8KWVmq9DQjr&`>r1!%f zDu+<1-?*Q7ByHTs9+b3k|N4=njr$heRb3cw6zPXSvZsJ$b+f<8qbYvb{qN+_|B^?O zY_|ORJUWy|-;zhy=(HJYC<^vOjy|U1b9gkBjt212TTLY6J@{V`RsUK{KTn8$TmfRi z0Px(OEbtkfemT&85FkB}3uO{a^2dKekX=zNCbUITfhc{QmSV8tc9Kcxkd q!Cs6>Y8q3G-x#EvhR^2s0fm0HF*F%JVbFY$bUZLVTcS5W&i@}L2YVd= literal 0 HcmV?d00001 diff --git a/srcs/lexer/lexer.o b/srcs/lexer/lexer.o new file mode 100644 index 0000000000000000000000000000000000000000..0bf6fac9ae60038ed68f4c82624b748b5f4d9bc4 GIT binary patch literal 6908 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 Ss^3h*dl4(%L1Cdc67(n6z{Rcr literal 0 HcmV?d00001 diff --git a/srcs/lexer/quote.o b/srcs/lexer/quote.o new file mode 100644 index 0000000000000000000000000000000000000000..b055c9e079fc07ae792676da569805559cf0a58c GIT binary patch literal 8292 zcmd5>4{TeYz=rp=s7(1(so6&~{t5B#xJEY3!xQwx+{?Ic}%L3SbTC;sF`v zx>>y6ckdoW(pr-ZEwF>`ecyfe-S58p?z@lop8oFEPd}(*%%(CtQ0=JG^zfsitVDHE z`+q2pkOIoHQpaiolTmG;P83})7!w7PH`|9oM-DBtEpDH~xmIpZX)zZ!3Ay$Ss z%+@!gaC|vqbjIeeA2KFu)@vm7L=L-Q4ycXir1bx+#Ph8%@nn;^8B1C`Q7it^sf<9Z z^==u2Jomfw3>Y?Xa|5ReMx2-}}_7{nN#3kB6>3Yx7Rg!sfRM&5B8eua}1A!~~N!Eu}LioMrm_ z+1s~ooAwV~FEvj7l`R~5&3iHEl*5?!Z0iE79QC&gn2RlwoKb13cZ&8ytl2p^PyU*G z#sBbMCwjbXXVJmfxeEWnx5eu-!*kO^*Mv)Mgk!^V-iuory%$ek`@{#+p|`we5zVG= zV?*ew^v7F|hu$jtgKR5><|bdZ!N2p*nF|G8d60K1WFlcRC!FCg7O%ZP5hhkAmM}9w zdwV@RIpJj9Df%@DfAQ`eNOD5uQs{k1*gR!8@HDg(dcSsY-nM=w*Vl{q5$i+z%+3s5 zojiRNu%E&>%z{W6nk{dz-#bNteTTfhy!u%LA30ObJU?Wrn@d@M3)?P-XI}j%>x$u& zRIbZhOD{Ic+8?riA^vAzZYeaoyTk_I;@vZq#_slBv^xhTZ>}vL1lUz^5U^OdwL}MD zw&Z($Eo>K4&xEeZT`vv888}XK5Y|qI-Yg%4YCl;A;myZGZceJqzh&0Q`!?UHKtHQqv>Xed% z_stYGKlOpg1H!utwk?te2$o_GiSN!lP_@f7A&pR%dB6%?92JC@x9u044=kR3v@3SQ zJn+~sI*wNGKLh^%*J)Y`ixxdiqtSel4bb(+A4^9wWB!vyE}zO~{G0lEdV6~PokH5Z zsjnBUp3QwdecQTNJ{QXe(#C|53;cR9TQGWJEU+&%nv3R61$G-JjdXS#UAwX;PDC^D zefZTql+C8|frGmT^MRpg?7o9XHud&w+S-$kA7{1gz;GTG1PojyvT4HzjOS7(qXi={ zl***?Nh6(RW4bYsD&Te+Efn)Cl_@YoAH@W$n8~NcGDh4_vONR)4u;sF1H&Pf$JH3u zJ7FqI&;=!f`?qZ8^;pt~9mg}8WASWpw5%Dg>?xR2q%z~h0u#E0>~SN*3c5-2lG2@u z<&1bLXW%|0T6B#bg>R3u6swrnG$$S{L;)g5-XsDr4`Di$FR;8x#&d=k%#6%Qs(E_o z(OfQiisiD|0;wC(1gR4lkLCnwI6u8&6x zNd`!Y2O)@#($3-fUeE=}n*@7fOt7Q@2WDe>A{`xDXr$5x%jRHiJe8457JETP>zU#S zlQ98|TrQi_W7)XDFp-|j;wEWpw5|6n;i~7cM?LR;-s4-|;%T%s;rgX)VX9~ElASBJ zyLY%1{LHEC5ZvQ-BR$ydw!KSKkK0XsxUhAiXBBSSjvl}@Ir>+q9_r~>xf8E`b(|?u zuopK}=a#BweeDp^aV=wnZ=$=sXyDel#I`V_rU~OnVH*ta*kBLtoNJ)@akPD8s@r`J zSat;$0sNsjDIeo)vlq`@sE<+;?m>&ykASE02CD7wJ9w&t)I%5oaZn;A1>)dFvo9_X2Wbt^j1>uSaJ4|}rzgrq zRNG;?8mULC5RX2*ghd8^t)>)TNIeMxX6)JWYys&foiiN3m__bS*3-1LxnVYcPFVZZp;=#$9eGLsDekG(W0liJL ze2Qrlal%V`omv9CFgD`TGM0Q0hTGvHmlu!akSe@57|de0w2s*11z?xe9oE7H#Ed!($+w%DvhQ zs95j)O#70>AFyjrgBO+`bZUQS$q)Io?^yhBvv$Ga53dlu6*v#9(!OuWkN6Q#2M5CN zop@iS+(XwbDkQVXw`k~#GYaz$3mohrjdl zYf0!#piZOyHtMsee}PIVkud2Up9&=oYJ2E`LdTxi5!t51M{EX_3LRZ)Uy%LcKvSDK zQLJ^y?mN~&M*nYgDD%?`sP%~k5rg?DS8@CrP_JnZ`GovNpV~<3L8ZAGLGg>i=z>s5S7)?3UjJm_q5Kn93--gl|5%muJ@BVz|8v(HO)Yb`##-P0%CeR( zymY*E>*d6)-ZRtg?EdB!->FnheFAaM0EU?35iHpB%%x^MKlkI=tM{ng+7VsBuIEVTO^|6CgJJSk%*3= z97rdMM0C)kh|UX%=m^PybdpF!M@wo^4j>Vw1*t{Zfkc!pq}I!5l87=r#!{guBM}{; zc2pF~S|l1-z@mIcB1&))i}C=8C{ak!B{WGihAOcrsgj6tq_m6DEr}@q%7OH2LL&Ns zky`XSLn8X&ky>b3Wth551xqC8h$$DBg2nnPf8rPG#~~1f(kF^U6TEngRQ%{J)^D9D z+ix6Twh5oj*HGs?2Nd$gD%6R0=mg!qE$wG)z~lRZvP-k>Mx?hJ^;+u1&>$Y!(s+@ld8Cy^kP ziRCNa^Zw88cY$I)7XVng7&ii`&D%cq%R$PY%Ky@U0^(ID&%_%AjLUhhy_d$KL_uM6@G5ndPMeMjhNcZ?my+!3xg#<}kpUk-Lzgs%i>kgRAs$5qGO5GQz> zKwZ;A;tep-v4iuZW#S#?16bhNU_0KLoK3vm+($*BM#z zH(dD=cRa|w(7_xnjwD|Tb9@o5{v-E9xYIGn>m29EX0E=-l?&VkY-fr$x}1{F^L0{sF*}~QOux*&eJ}9 zM()$^miOr~+O3*>>VRkiP=mb3+Nb-(KK1>AeY%&N&=e29^M$?t_W|gh>~{1 zR1aSrieC)#mN*yn7pW1Zf zR~1zLbLP&kgq5ojd>x+fy*NCydyOyt%3?yPM><3fMKZ^?%Q&zs^{VfOa=3v{Uie};PM^LQ`)}znJhK1* literal 0 HcmV?d00001 diff --git a/srcs/lexer/tokenizer.o b/srcs/lexer/tokenizer.o new file mode 100644 index 0000000000000000000000000000000000000000..6d4f13e61a56edf85d9284e3217019e061c5d0a9 GIT binary patch literal 7228 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 literal 0 HcmV?d00001 diff --git a/srcs/parser/syntax.o b/srcs/parser/syntax.o new file mode 100644 index 0000000000000000000000000000000000000000..6d889576592158c84d0646f77ed0d0bfccb9bf59 GIT binary patch literal 7828 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 O|9i@@;JLUFTc7Vv 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 C(PS_H literal 0 HcmV?d00001 diff --git a/srcs/redirect/heredocutils.o b/srcs/redirect/heredocutils.o new file mode 100644 index 0000000000000000000000000000000000000000..937d503e6fd5f90b304f477f709c7af5ca8e7c6e GIT binary patch literal 9504 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 UZlS~5bd^6R;CCBSg;cQr0e)s`{Qv*} literal 0 HcmV?d00001 diff --git a/srcs/redirect/redirection.o b/srcs/redirect/redirection.o new file mode 100644 index 0000000000000000000000000000000000000000..0b25790ffd28a48a51bc61abbe64fdc2ae10b08b GIT binary patch literal 6172 zcmb_geQaCR6~BJZ*YU@z?KJ%eO$ug|HXW_)^aC;y+JwZ^F=-o;v`v8W>ew%_SI0K? zb4d^#W&IdkKxzj}{4;HnnAo%p0b*ZlFljKx*wBDY+bRJ=8cgX_25h5LWn1<;_uZGo zX(rIbmCrrro_o&ko_p`R=f3CPoPYa2HH~awNMoTpZh+V~~7M z>^3kNk&l!px^5cdrX^eLf!N@{Y}=N$D3(Nc1bJi`V~a@TWQT~^Mc32DaAj04nhMsatY<-HE^(YZybif;oH^&rs~@G=*O3K@}p6a3uZPk>V( zw4A-5xrOFWB%jB*T^}j$iXVR~e)vo@e*ECM`0>iSzlfb7pZH`9&Da~@p!U$=ac527 zXe)Y}&qDVubWxByKDixocXYD$@LwJA)C=*+w&x#ZQv}g`_IT{f7ZN}O68LI(a-^-RL&Oiq2>+YXgC^b65936 z8=`21H*N@TXj#k3rBpdmGSbSYh;-L=^z_HrK;Nzyx+%Z00ll}o z7b<18kr$9V#Sid z^7JNQ`mxt#MR;o18%XayE9qGes)8aoxB#RW&^UMq2MOFv|W6nP*gtO7Km)8(|X&(AmYN(SQOeG&`}VT2P`IPdbd-4 z0C5}0;q=fQC5rlUFz$4Yg8dTYRBHKa)WiRb%E8o^z-p|1%9BoIIe!P7@w2EL{NJb* zt|A1Ldr&+164abGqIU7iQP=PYYB!sCn|zKOceg;Psx`{V@tlzEB~#^O@r-EoBVM<1 zGItla$|-2H_FaOo)f%#7E{coFPeG2|3G!MogSMgyZABGYV-?y;3+)79qC5g}?A}Xg z;Tg1W6Q<0)jc*(*s%+No1pgbUu439TTW)b{CvEvNL5jr~#f)oWKmrgc%0A*~hi6{H_-(jJ3+isV#O^MQ+)(=FOE z$O7MJXP(z!~kbv>tx}k~KWmU+7A#8PjM;yB*J|dA_mrVOEjdc<)@HBsViFbp@kG@UlEslI?Tzqpf)44ln-jiKfQ7#Xb zYK)b?O)Y77Xl;7so99PY1}CyBUw%E%@Zx=KkN=2Aezp1ek@Lr%+P~8E;vbR%t~URH`WLkQHSj ziAC9-RHL9(AQZ}hq#|qSNEaBXD5cQ`qR@#a6{P@aMJJC`bReaQju@%v)X5RY(Iyow zv{cdQB^4cN=}1>1sq!E>B3-DYqGKgPr94e4O5GBR5(ud%qev{uN~EGhC9Nn$lZx`S z#G)iYD#{sBh1T3c_bUn+Rh79nCOR(YpL+)`)Ndaf$L)R0F&=aTwHi11P!#k9+5R3K zjOl4PKBD#qk13st?2Di5xV^+W6PDF3{rWb{D}cY#3w@;nHO*J;S8++J|8M6 z(~|8E3+v+!t7e&_6VK3$?1U`d>7l30=TsSee_LfK=iam2UEwvZ1b4Z5xCVYH#DrQI z;eMC8D9o2YwIadSB>4IS-L)>>GuZ7|21otJ>g7B@g zd_%(54Ny}ZYvTczx^$2)cC~Re0sjj5b1x87*9dojv-f$>`%kD6oV%{)t^>0{A)-+c z&n%{UF<0BT4}LSl!zy!um3ng<&1dx>?Ao}J;BL4m5IwH1g3FV@oVW(a< zh;h}{L4=avHH5E@C%8lP4k|7@=Zs!}@LNAc4?Fl#RM^1vw}WHz){lW>bJq`n*MMIv z`A=wL(WWbz>>dUuyZgY&E+zH5WqSww@WYrEe;j&hZw1G>_OF)hcF9AMg9$sjvdF#( z?EnNj$1Ig?vZI17(QoG{`j3iqcG(VLZhPOnc8k?kFgH;s`OdXx`T}3|q?`Bck8k&? hFMYlG{|O!ch2)u@$`#56n6Mq8FH=2TDbj1re*x7IM3Vpj literal 0 HcmV?d00001 diff --git a/srcs/signal/signal.o b/srcs/signal/signal.o new file mode 100644 index 0000000000000000000000000000000000000000..e2c39024a7935424929c3f10b057a0a899eb602c GIT binary patch literal 4396 zcmbVPeQaA-6~E6f&v}U*J8k-rve9}{w`>C2Nob(3c5Su<+|h_CX-n31dUc*(60a|I z@Uzo~r5`M9l_)Js8K6oaF^NeOR8YnK8Az-dLu)3!{(&J7AR$pPiJ=7vMCjPU?{|G) zYr8=(j(qO9=kuL=@3|lT`OUw)TQ7vB3pBtw;0&7>5U>eolK&6z$A+@vva<1c#1zD^ z^0Ta>bG)b+5X;)%JGlQg@Avwd1c31v@_a;ybrjTz(9q$cg z{VU}?&&jHWRpVuI!+Dz3#=FJ^1bkWLH)59g4@QMhsn*0xkB_^Kl}nE~9!zWF9Z>Ui zr5r}Qqt;omB&){D4?Ss9SsPDNNo=JO@Xf|Dt!P(`C-WOm+qLoTt%>*3|1n;1a(vbC z?osh#YX1KEU*p;NG2~UWO1Wd%T*k8Y_Ed~TjH~rLt%R-E2wbAWSP#}Upk}oGi@LoJh^~F3+C0 zGJWET7Cpmct}(Ya7`S64b)j@scBhwDqGxNg3#qxj#nk8iaBXE}B{kc(ID38e)zpOp zw;j&#)azK7y`H+z^-DkKDv>IZnd@6leRMH;mSvQh{?U;qUXh=VhN4?eLnKuG&9f)| zmAbI=8Az^{bHym6jj?P4TqCIxM zl*T(c+rcG1)S2kq{($fbwwLs>Be}GzNWvD$z1g8cx-gmSaV8u$KkgKgkL1V3(z(oD zRO0@8-u03LJ)iWFeQEns1A`syiH@#>mpLkG`Q!l)IV2ryue|Fx$?-yVB3*Qnec4>r z8+BY)j9AX`Y!N4Rx>)i=Hdh3KA4+?U7{v#1x*V;x6JL)bOBqiyT8BtF>7GY zpp+}ycioA6y(!BAm$Qo@esw%Ke z=#f1wyEc6+^k67}EvIjV;Gs|myQwZJ_Ou9Ltk>F5xj{p6^$EmU8{FNhN9fYFX%}>+ zAp%N3kA`hkY-2*)=@M$u^hhX#7}$B?CYc49?f7uh27F4!hc2RNj2XQLvX4O7%mhQB zhq&FpfC4NZd!{@=!lE70Uf@X};qzr8TVCFQtLT0LsMR&7yA5N02?C?8Zh$06t$bvV zithongFi$Yh?@GvE2rL+T^cp$7q6ari|pDzqZRcFYynB2cJL=?1Dnmj#VKx&z~*w? zCG-g&0BQ$+gEr7co0CkgP1-d2w*^l}?V$8dhW-vFrH8ceJLv3#wI0?)n5L3x(#-Jv zJ`>TJ!|gs3)mp>b!SJo2H*2wQ2Ax?lYqag*lFzKwc8jLN;0&tju{xmjW+V?1eHzU= z(exC^PM~gT`oo~6*36Ha_0n;Sng&gz2D($|3LdFM+$j<$)6}zpeV!>?1FoR?t(nlt zC9&!9j*01WOQBa^=(u#_Fyt<93V0s)RUjvWzOMrboMiI;I&*o+bLt43VDjH31K>iE zKST!L=Smr&HdmbGEAPd|L=2*QT!M0Z9J7v@s8d%IWsJ+YA?4v-ulnt$XF@ZV&0jzF zjUWH>wHMd*y!M&v&p+;+|LqT^y59bM zKOwp!&F2D-G^uBtwCjQ0%yQXI<+-XIOLtz`akooYCEgdIxTNg-vaS6t_ivrJ2un@V z-i|bpaBx5^o3p*jTl4?EER!X#kVG`MlyQ>Yq$k99cHBvf@+;*F88`uiR=+P)972ZQ}Zv+~r%@#v5lYt;6if2(sh37SE)z6Rq>p+O8t%+esc{ktb%J5 zoD7~qZhBIvhnfFavx*~5(ZQ=tKJSE8{miq9w&&o*hrj9Q!m`}0e&JabUxoHj%N{*y s4X3lNU~s%sB^4IllDXorux`H>nNdDx<(y-d{Kr%kVWgBUWH5$*15{nMM*si- literal 0 HcmV?d00001 diff --git a/srcs/utils/env.o b/srcs/utils/env.o new file mode 100644 index 0000000000000000000000000000000000000000..02b46b99ce92856a6ca04614fd9dc2347c1bae94 GIT binary patch literal 6492 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 X!)F_OW5vf?ov!$*5J@Cbl<&U)8{vth literal 0 HcmV?d00001 diff --git a/srcs/utils/list.o b/srcs/utils/list.o new file mode 100644 index 0000000000000000000000000000000000000000..c2370e2b2f170a711d9a399fca0cec2cdd9013a6 GIT binary patch literal 3996 zcmb7GTWl2989p<+GkdewYwS?dK(dNx3>DtB9S}|n1qW}kcI-68Kxq^-UGI+ViPyWU zow0FJNKg$`R?b6E6RDN@kV=)>htP+-G`$9ts1UVLDw_o$me?8y%&uz~9>C=xt3kjhF1YY1Ec!;kg7_bk9DLIeui__BD$|fQU!PvvDC*I)dU1g-?c2FsBw~4BM%?F2fl4=J4T1 z{jl(HPD#8=+FHn0Tv*@m@p4mBRdbQ`Zp6DLv#-bo`#HFc)Dq7sO_!P0jCVoK>2+D3 z7WTki!FY8~ZNke{Dn-*M<>pPh1>UQ2e6M?L#m5n;tc#X-<*8@#OlhufSQfEew*R4A z=XE%5S$x|t8tSX$^38Z=6W(wCM?B}*O3U%qB;Elze}DV0c=_@?>T-;Q(n+gSFpTjL zzjn$iay`#TXR=KQF3~$!5AH)y)BKsU#&i{{;ROw2<9^P{^?cI{i`OKcG#L|wx;E4|h;R?sjdetY4kj^){u^?ijduv~By65j%0}Y2 z$s2$h6aIsKG+VotUA~cciv|2HiPv>zXKR_8+2zwWMaMY~AbUAer+byNm0dxsmZ?M5 zv&-)!PP{#x>bUnOiQBH@q)GU&-8BzNpkPx7<;zi~??=zWO2H5IOPoFh2{) zd@)y=NiLdI+bWlm1B0plRDW`Z>+KsD?1zbWO>*d(ibEa_SD+2lG{-khYc@(O2Dqo6s zX@U56PsRW7LOk(>d*hwTCVZLH-69Yl?K-gKE3vP}RGhcKb~wHki($V8gUV=EARdb` zCWN*Fk*zp|dWRV8!lk(xA`th2;Vxx8Gt%yYGBSjQ(GSm zXCU4J2h~pPeMq7G1usPeeh(1}>b$=~&*Sx1u=-H=8bngVqPZ@b%tc1RC}+aL?Mk!cU8GY=}wSCFn8rd}W5#W?G`n|9ax*0eO!w za$mc8ere9t{*E`SO4+q!`&pY-(rq98Gf_a3VCC317)de0RxXBXiD*9}q=&)Ev8S20 zm*ZUPYp+CimKb}OF`>JCWG9ESY|T$48F!LP^eOVUgE~L>_`clb%06@Mgdm8>C_!Rgh@Q=V8Fx!ss1!7@TUzavF3{_rCBo2`FSsCZVQr#+T zzgB5}u2$Cf|K#xgBzJ>J92>_Rz)S??Zz?ex$IdfBABpqze!lx&=Ot@f|CtwKKiOH> z_TKmRy^&A8da8b9_w&Eh(tp@&&0&&n*GDY|CBGK+hdE^cV);-R36=S23%<3iUZu*Bk_ zrRxbW$KF60PiJ%kHST%@J{ND?)ve-K@*tOlyV5C4N%o@f5n$gtr4V1_gUo z6y;95or04CR;*IqZn%eqs8|&GFE!h71Nogwmxzx1w!|p3`*wsut28 zhdizY^cgMsuBPf^ngW*yPiUd&Z7qgS$FwFB!rwyvn1&~+&uT%)@EBU|*Y0^r>xLEC zr-hJ@_QYu)lS+)3`!#VJkjrbmsqbnL;Hqe*U(n)c5E?_fQ7!sZLm2~_j!M-9P5-$T zIlrFvm=-;Ow0)|IiTN>xg|YW>V`AI&UEn0)#GI2dBjq+J4!Es56)*#X7hvu)D$_b5Vc9Kxl&cr)MMqlaKK$0zxJt)ga+jP;)isk*-k#>U?s V8Cv_{khc4qK|P-<7Rz}c{tL`idVBx? literal 0 HcmV?d00001 diff --git a/srcs/utils/list_clear.o b/srcs/utils/list_clear.o new file mode 100644 index 0000000000000000000000000000000000000000..e10d8c58258a99940e27a02b8ffebb3ae522d9fc GIT binary patch literal 3432 zcmb7G|8G-O6um=D>LFr&pr2i z&bjBEd+)jT_KRCT-*z)5NDK|w1#YJ%3ho4C*PM9C;o-bCN%<~~H^{x;;e*~*%17J%W#j3_NS3UX@w|LZpXd1{X|X^b zW4?STE8-<{xs0Y7$qCJbUuC?P`5);rl_GOxJc+MYBM)%E%R7r= z*?4w-xn!y`-o}b}$L=zobvU=|e0zDk4!(Y`{b#&Xb^>`>YQZ?98);ST>t37+V>5g| zJ2^O8#TaeTx7ZIp(Te$MW9mpAyHOgTs!QwnOCE2G$7{ktC_hF}9h2?h)L%w7?1+`? z*UsxhS&^l4k2?hFF*0IDsAri-3g=!-t5 zE-mU)#Sr{40d6ja7Hy8-)WzVz3pMvKo=>RBV)(i(|HV&NtmZEk6e zL5pl|jkLCJVrD*NMhljnF{2sXwA55aOXedf7VXoA^U3_-Xty@0WwJRfAKjjvm`EDw zK9t8mHj4rM-MwaXS2FcP|6ofj(y}FDrpH;O9^Gpqji`p2&t^0&n#=2xNlT0F(hc1l z(=r)0s%k~u!Zn(-3MSJHi)rdGKEMiwsgD|3I!xG(uD<>rHn3-J4;!)6jA^Bj77Deb z*l9DM3^vSznI)0SYs{cq-^z|_28<U+c|qQs>}0FU~7 zsBD)@*jX9|sTUT5`>X9dC|)}qsuMVYrMuZuD@H45=5*d^A=-#{|?8XAE~pF_A^3$M~kgzozRtyJe0PZ$5Tdtaet$_%w2x@d%b zzoM1aE%>ZEjx;^u>D&QG=>Zx6ZA>Mt(H`&p8d%l$G#H?`*+&x#i_QKT$khZznZMrY z$2|TJ*$Hn6`u9WX)Nc(jFU9b#hgKCsb1%UU`Zhp>#72Jvl2$?7!2Fw?{zjL-3w=96 zlgFPxzW^3D1)0}CN9sYN2vv_`;BGRk^x8Sc`@7;$?JJnBVcdQ;5hk$Gs^LW26gt;$ zzPW93DsG*-MsEcDOG$%ip~(LgFcEDN>8+%IXt7B*NC7$DB#fx?oAj~&<3leT@d^qC zqIpp668<2$_#Z8bNmn*Wvb%Vnbh>}9rdF)BUewpdj=$i0eN%evl{4GkO@&`Qa`STA zGaty&&$e71xpfwPZ-74pUjcsy{tc{PA`Re&!L;T0G1@^K2O=s4f~Y!H5y04aFhR79 zjbIRM3PH4M+>0ugpiwaQqFp42wvT30SEu2C7z$>@fqt11fLhTS33ui{JOzK?nh_O zrV78?09`DBRuF{00@Wla8L*%mDYNX&U@WKSw8$9QaB&t=R;j<_DWPI;Nz6;qCaF%4 z-BlmSiZUom%BZXiDKoNL8I%1=LUtzxWiP-0`YRK%D-s2fsLcF59`c2`geqGDIkRV0cz zHBUhz@8&~X9^kT<%QKMhQ|J#i$qq;qeP9FE!(2kx_8~5VkaSl$d%l+I5H>x87Ul(_ aK3H5RD0S(psg^&3T;UHS{vvAjR{sN^5Dn)5 literal 0 HcmV?d00001 diff --git a/srcs/utils/temp.o b/srcs/utils/temp.o new file mode 100644 index 0000000000000000000000000000000000000000..2fc91dae72206aaf06c9302d31bcbd72a45df350 GIT binary patch literal 7780 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 ez9H>s%zAi9ean*#e<)2;7jc0Bm4)ohzj`t literal 0 HcmV?d00001 diff --git a/srcs/utils/utils.o b/srcs/utils/utils.o new file mode 100644 index 0000000000000000000000000000000000000000..6a8bcdc8e6b1cd0fda3565f7a798261d216ad0e9 GIT binary patch literal 6008 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 s!o+PjSF+Q%|H5kHI&Uf&eQ6FYoux^ Date: Sun, 13 Aug 2023 14:39:04 +0900 Subject: [PATCH 24/57] . --- Libft/ft_atoi.o | Bin 892 -> 0 bytes Libft/ft_bzero.o | Bin 684 -> 0 bytes Libft/ft_calloc.o | Bin 776 -> 0 bytes Libft/ft_isalnum.o | Bin 760 -> 0 bytes Libft/ft_isalpha.o | Bin 680 -> 0 bytes Libft/ft_isascii.o | Bin 664 -> 0 bytes Libft/ft_isdigit.o | Bin 664 -> 0 bytes Libft/ft_isprint.o | Bin 664 -> 0 bytes Libft/ft_itoa.o | Bin 1160 -> 0 bytes Libft/ft_memchr.o | Bin 732 -> 0 bytes Libft/ft_memcmp.o | Bin 756 -> 0 bytes Libft/ft_memcpy.o | Bin 764 -> 0 bytes Libft/ft_memmove.o | Bin 856 -> 0 bytes Libft/ft_memset.o | Bin 700 -> 0 bytes Libft/ft_putchar_fd.o | Bin 696 -> 0 bytes Libft/ft_putendl_fd.o | Bin 876 -> 0 bytes Libft/ft_putnbr_fd.o | Bin 984 -> 0 bytes Libft/ft_putstr_fd.o | Bin 756 -> 0 bytes Libft/ft_split.o | Bin 2048 -> 0 bytes Libft/ft_strchr.o | Bin 732 -> 0 bytes Libft/ft_strdup.o | Bin 828 -> 0 bytes Libft/ft_striteri.o | Bin 696 -> 0 bytes Libft/ft_strjoin.o | Bin 936 -> 0 bytes Libft/ft_strlcat.o | Bin 888 -> 0 bytes Libft/ft_strlcpy.o | Bin 840 -> 0 bytes Libft/ft_strlen.o | Bin 700 -> 0 bytes Libft/ft_strmapi.o | Bin 848 -> 0 bytes Libft/ft_strncat.o | Bin 980 -> 0 bytes Libft/ft_strncmp.o | Bin 824 -> 0 bytes Libft/ft_strnstr.o | Bin 988 -> 0 bytes Libft/ft_strrchr.o | Bin 728 -> 0 bytes Libft/ft_strtrim.o | Bin 1408 -> 0 bytes Libft/ft_substr.o | Bin 1056 -> 0 bytes Libft/ft_tolower.o | Bin 664 -> 0 bytes Libft/ft_toupper.o | Bin 664 -> 0 bytes Libft/get_next_line.o | Bin 2808 -> 0 bytes Libft/get_next_line_utils.o | Bin 884 -> 0 bytes Libft/libft.a | Bin 37440 -> 0 bytes libft.a | Bin 37440 -> 0 bytes minishell | Bin 88496 -> 0 bytes srcs/builtin/builtin.o | Bin 5900 -> 0 bytes srcs/builtin/builtin_utils.o | Bin 8204 -> 0 bytes srcs/builtin/ft_atolong.o | Bin 4048 -> 0 bytes srcs/builtin/ft_cd.o | Bin 6772 -> 0 bytes srcs/builtin/ft_echo.o | Bin 4332 -> 0 bytes srcs/builtin/ft_env.o | Bin 5468 -> 0 bytes srcs/builtin/ft_exit.o | Bin 6288 -> 0 bytes srcs/builtin/ft_exit_two.o | Bin 5100 -> 0 bytes srcs/builtin/ft_export.o | Bin 6440 -> 0 bytes srcs/builtin/ft_export_two.o | Bin 4284 -> 0 bytes srcs/builtin/ft_pwd.o | Bin 5120 -> 0 bytes srcs/builtin/ft_unset.o | Bin 4628 -> 0 bytes srcs/execute/checkbulitin.o | Bin 4792 -> 0 bytes srcs/execute/execve.o | Bin 7796 -> 0 bytes srcs/execute/freepipe.o | Bin 5152 -> 0 bytes srcs/execute/pipe.o | Bin 5984 -> 0 bytes srcs/execute/pipeutils.o | Bin 6028 -> 0 bytes srcs/execute/setpath.o | Bin 7196 -> 0 bytes srcs/init/init.o | Bin 7220 -> 0 bytes srcs/lexer/expand.o | Bin 9844 -> 0 bytes srcs/lexer/lexer.o | Bin 6908 -> 0 bytes srcs/lexer/lexer_utils.o | Bin 2908 -> 0 bytes srcs/lexer/quote.o | Bin 8292 -> 0 bytes srcs/lexer/tokenizer.o | Bin 7228 -> 0 bytes srcs/minishell.o | Bin 4984 -> 0 bytes srcs/parser/parser.o | Bin 6212 -> 0 bytes srcs/parser/syntax.o | Bin 7828 -> 0 bytes srcs/redirect/heredoc.o | Bin 5204 -> 0 bytes srcs/redirect/heredocutils.o | Bin 9504 -> 0 bytes srcs/redirect/redirection.o | Bin 6172 -> 0 bytes srcs/signal/signal.o | Bin 4396 -> 0 bytes srcs/utils/env.o | Bin 6492 -> 0 bytes srcs/utils/list.o | Bin 3996 -> 0 bytes srcs/utils/list_clear.o | Bin 3432 -> 0 bytes srcs/utils/temp.o | Bin 7780 -> 0 bytes srcs/utils/tree.o | Bin 4512 -> 0 bytes srcs/utils/utils.o | Bin 6008 -> 0 bytes 77 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Libft/ft_atoi.o delete mode 100644 Libft/ft_bzero.o delete mode 100644 Libft/ft_calloc.o delete mode 100644 Libft/ft_isalnum.o delete mode 100644 Libft/ft_isalpha.o delete mode 100644 Libft/ft_isascii.o delete mode 100644 Libft/ft_isdigit.o delete mode 100644 Libft/ft_isprint.o delete mode 100644 Libft/ft_itoa.o delete mode 100644 Libft/ft_memchr.o delete mode 100644 Libft/ft_memcmp.o delete mode 100644 Libft/ft_memcpy.o delete mode 100644 Libft/ft_memmove.o delete mode 100644 Libft/ft_memset.o delete mode 100644 Libft/ft_putchar_fd.o delete mode 100644 Libft/ft_putendl_fd.o delete mode 100644 Libft/ft_putnbr_fd.o delete mode 100644 Libft/ft_putstr_fd.o delete mode 100644 Libft/ft_split.o delete mode 100644 Libft/ft_strchr.o delete mode 100644 Libft/ft_strdup.o delete mode 100644 Libft/ft_striteri.o delete mode 100644 Libft/ft_strjoin.o delete mode 100644 Libft/ft_strlcat.o delete mode 100644 Libft/ft_strlcpy.o delete mode 100644 Libft/ft_strlen.o delete mode 100644 Libft/ft_strmapi.o delete mode 100644 Libft/ft_strncat.o delete mode 100644 Libft/ft_strncmp.o delete mode 100644 Libft/ft_strnstr.o delete mode 100644 Libft/ft_strrchr.o delete mode 100644 Libft/ft_strtrim.o delete mode 100644 Libft/ft_substr.o delete mode 100644 Libft/ft_tolower.o delete mode 100644 Libft/ft_toupper.o delete mode 100644 Libft/get_next_line.o delete mode 100644 Libft/get_next_line_utils.o delete mode 100644 Libft/libft.a delete mode 100644 libft.a delete mode 100755 minishell delete mode 100644 srcs/builtin/builtin.o delete mode 100644 srcs/builtin/builtin_utils.o delete mode 100644 srcs/builtin/ft_atolong.o delete mode 100644 srcs/builtin/ft_cd.o delete mode 100644 srcs/builtin/ft_echo.o delete mode 100644 srcs/builtin/ft_env.o delete mode 100644 srcs/builtin/ft_exit.o delete mode 100644 srcs/builtin/ft_exit_two.o delete mode 100644 srcs/builtin/ft_export.o delete mode 100644 srcs/builtin/ft_export_two.o delete mode 100644 srcs/builtin/ft_pwd.o delete mode 100644 srcs/builtin/ft_unset.o delete mode 100644 srcs/execute/checkbulitin.o delete mode 100644 srcs/execute/execve.o delete mode 100644 srcs/execute/freepipe.o delete mode 100644 srcs/execute/pipe.o delete mode 100644 srcs/execute/pipeutils.o delete mode 100644 srcs/execute/setpath.o delete mode 100644 srcs/init/init.o delete mode 100644 srcs/lexer/expand.o delete mode 100644 srcs/lexer/lexer.o delete mode 100644 srcs/lexer/lexer_utils.o delete mode 100644 srcs/lexer/quote.o delete mode 100644 srcs/lexer/tokenizer.o delete mode 100644 srcs/minishell.o delete mode 100644 srcs/parser/parser.o delete mode 100644 srcs/parser/syntax.o delete mode 100644 srcs/redirect/heredoc.o delete mode 100644 srcs/redirect/heredocutils.o delete mode 100644 srcs/redirect/redirection.o delete mode 100644 srcs/signal/signal.o delete mode 100644 srcs/utils/env.o delete mode 100644 srcs/utils/list.o delete mode 100644 srcs/utils/list_clear.o delete mode 100644 srcs/utils/temp.o delete mode 100644 srcs/utils/tree.o delete mode 100644 srcs/utils/utils.o diff --git a/Libft/ft_atoi.o b/Libft/ft_atoi.o deleted file mode 100644 index 061a592c6db7f9e146e403ff0530b299e700c793..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 892 zcma)4&nrYx6uyr!7(ea^MOn-O8!4>Vjkxs|lr&Q|x+X>>KhhH^MPuX{$--JT%1&8X zNn@dGZ2bckvoPLb7Q@2$&b<4^ouqtq?mg!__k8zzulxM@_EpW8QOU3%e2800LI|K8 zF-Y|v*j2q3wR<%*83pMQq_pB&mYchEL`+3~YA@^1^vFvIKDJxRkw`hay1W*fwdBUi z=Hkknlw+fMKcsX*ip*EIUZ!A3wZQy9%J_nuUym)vT~5k!e_=HgRwHfD@xG0yI>r`M ztGEqdZ9^2tc!2p41iF;?8RcUQdp&B*vk8O_npM~8^uO|`X}_BGPX1Bk==`H_NXblz zJin_+eAM#eR=sYxF%F~e{3NK8A%2zydnDek44$k)E7Pp{W>rzn7WvFop-?F4_VE2O ziC&)U(j`&Tt5_0F!4?jUX-a6Y{(Cbu4v$TV&%Q&E<;P`mL;M_$vPU9Ya@1Xv%LQo6 zw4cnqwCgMik^V%s&v0y!%Ur@_O62&paHb#V9uMlh{rb%<>VUC5$&9U_5v;GSImM|? n@EwSYFDL@udu79o!GnsC2EQka9moA7%yo4+Z^@Xox(NOoU0R&9 diff --git a/Libft/ft_bzero.o b/Libft/ft_bzero.o deleted file mode 100644 index cfe1fcb38b2a14fd921d7ec79f72985c3db1d65d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 684 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%*Z>v30aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7DmfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1- z%29yQ8cYzkbO33nQ-Lf5h>uUrh)*j@%uR)e#mA$%uK=pl0ZMy7&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNPGg+9SeXo50DSk&j52XkO>ALy->G8MTn=2n__UJvq^i`Sdt_Z)8v$I9qsSg51`;uYTqgYo z?q&T^o>3Y-fk?gt&V8rpi(KfESuPE=%3PU{AI)-^0>Fnvn}P!8cHKL$Y@au3$NRNC z&NtT89>t0jhKws{LbF_Bl%vMBavSG!D%?G^JV#VG|2f~e@{w^@`lu?A%g^fc$Uq>#7>XDJis* zEzp{IEuYPdUErw&tj{9LUjpjC!|G)IEVY(P%Rc%hc)T!&5x+x$%Ba)it0!)wG$A4T YO9OX(?m6C(;{*4sYPD|1C0nHM4T&sd0{{R3 diff --git a/Libft/ft_isalnum.o b/Libft/ft_isalnum.o deleted file mode 100644 index beb024fb43c977a5ff07b8d7ec035a1071eac39f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 760 zcmb7CJxjw-6uqg^inb<$gMvZ_hb~>592G4@a1g2BB9G7y6RnmF<;GA^&_iMi!w@$&gaR-6=75QiKQtbJJ!rgz$_4+ zrB6~C;NU|!e=YS--~v4AhciQl!LNju#Rk_Y;0rB26=5w9{?UT83t1GZUBCwTS#Y;C)9C-!H9B z8|SIDTw3b#V0>p$2cxXWX>d9R))S}k|Cq3$PI^*xUpdEBXW#KfTL*5lG1Q)Iaqk~* Cq*RFj diff --git a/Libft/ft_isalpha.o b/Libft/ft_isalpha.o deleted file mode 100644 index da20b0195bfc3228a1611cc01e4a7ae55c359431..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SOFEk0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7kxfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw$ z%29yPOc1v;0BNXGfh+`wk5A2rPb*5yO@)ZX$D_J01FF;kMnlbmav8W87+^}kLPkJR z0*JwO@pCb-0Wk=GECq>oK;1C|NDBb@K>Z8>K#UAPdZBJb7AA@v>e2bMv-U@G?GH!( z9+1^QRuq4q2!xf$-y;TLRq^-p09nUf|A1_I35qfx8%Q#AyZ(ti3}S!*G+r>A12PZ< z7^{L97%K!A1$fvwCID5b0L5g0xZ*zqz~Ys`kx!tF$(ff8qzMXu%Gp2$^CO!cpH>o| NS)7+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z82Ed{fLeg8dj5VMAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag;K7AI$Bf|LRP DvIs#H diff --git a/Libft/ft_isdigit.o b/Libft/ft_isdigit.o deleted file mode 100644 index a0e0f40d01b86d5d7227538c36481efb8e07fb54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z4ETG*fLeeoOa6WyAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag<#WTt0=Qwad2 CK0yZn diff --git a/Libft/ft_isprint.o b/Libft/ft_isprint.o deleted file mode 100644 index 8cf5033396fa25d36dbe5e96031092dc2714b779..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z6!?3@fLeg8I{tnhAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag;46lLatQwadc C8bMe9 diff --git a/Libft/ft_itoa.o b/Libft/ft_itoa.o deleted file mode 100644 index 6b8424d68378e36d6a5611c4e94625e64d9abff7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1160 zcmb7D&ubGw7@e)54caCFD^w5+=)p@QcF=6!G8%5v|ISwItR z5o0ejhk7Z^dUc~{+Oko5X4TfDT+WZLztw&exB(;N<(Ae{vbsjfQbm@Z7OSNQk@BoR zeZGn+c(3$y{UyfqQV88ayMPRBBrmdQBn6#?@J09_KNa+8^r&a|krY&;llY+qEu14B z3iqdQ`dPPmBusuJT<#06=^v7W%ljVhJ9~yOzlqO3m~cBG4pLV*%`Qv6oC8g?`GDxX zcW9{K&~SMGf)Bzh5j@^KVA?K3!8}7T8enS*!@KJB7Xl7 zTVJvv*ywuAAm91~;Xs&${y{7ry1~K#*g!a6 zv#a~%+sW%KXfjsb3Gc&g25sIa05$@3iZ&n81@|7Ez}r_ajBW^5C9Faaoud%wBcQgG zK11?wGpA>P?cR43LB!=lj}KS(!5)uT^r#b0n^MSDM4nimS0cvq2h7+^8L8Qs_zqY% zfnP($kICz3r1TlfB~q`Zmgc5a9r5zWK=IT*6Fhnge0v%CRuP#r8f+8FP>*B@G}+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%cmNf@0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8z3?fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1z8@Z zSOF>+!31&34j>J6Dv*T$@$sn{@o7bgxv3Db_;^(JEr2R@fYKFE^PpS?ZU%-77#lmYz0vLaro;C-koUl&^PorL!T&(u(dqlZqxlB|e~U5DXrSB;{%sum z+d{8fUgU4(g$e;R|9B}4;6uKmbb*432yPZA{L*YzU)4VZ#P8m>=2n__UJv+|=CU Hj3NdADT-*# diff --git a/Libft/ft_memcmp.o b/Libft/ft_memcmp.o deleted file mode 100644 index 4ae0e2bb654a43e15e6c99b8ab3cf36fdc659359..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 756 zcma)4Jxjw-6n&|+Em}X2Hb#UcobMF?HGi2jn& zwKzDMZW+4>?I1W7DeAe+?H3|=;N+fr-+Skski34re}#q6W&|E!5Nwc$fxrs5N&O$_ z@!aD*!ycZ3NWKK6idMPkYrjvL$H{R&RF5pkkFtyq6gMLcp;YGFE~GO>RmxwU2;wHwm5b(3Os2mk)45h4`%3h>x%bzJVov*=Lx4G8Xk6SS>L~f|5Zh*_+;4Xbm zgg^paN^_5MbWo${ab6sPlc2Mlb#nYKos!O*bgn<7Q|d@3)s|Hg+VoJ-n=WcwI!$@o z{05|xXv@2v&?^UU$C{_tBPgz3H?~@Og%VFs*IQ1a-;MKJ&QebHcSoJueSrCk*~g-& zn*Eb!5(Dse{`GoGysljx39W2sMl>9$Vb>bwt6-es0>l4A>?|7hf!&1=pQD29Au`q{ O-Bq@zY|GBr1@QxK3v*xq diff --git a/Libft/ft_memcpy.o b/Libft/ft_memcpy.o deleted file mode 100644 index d0b66830935e4bef0eeb8229d790025509088e30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 764 zcma)4Jxc>Y6nv*45ly@+EEFtK*xFcGDtfSmf=B{3vV?dc78iqDFbV<14?Jxw#max7 zrNP3|lvkz^l0ry%Sg7;dz2t%j4oqg=+qbhXB(ERupD7|^l<)y2z(+P&5SRfMx&90K zEQn^bB9oY$%aGD@>Ynnd&e>bJK^?g}Z8(p2=_5hMeGemLanG$5ik_@h4t6U$Qm(DW z&+m1S)mk4>y97|ZBHRE{I%QefFSw5CNjbdVlOA2tdaLtvNfSin$g?hh)8Nlr<~Sum z20zOEw%(%$O{2zr+5qF=yL#7n`(HjU{5Rn@dcv=Dgr9GV(?*ZXbAB4O1Dj#{Vuu{p zEpTydW84m)xMH`UZQ(b?N%IR3{yIWJGSBAKY)hT-f;ekkS(p!odcmdDec-DqIE04V z&zO%v|K7j8=9Hc>jyB1tTZWZRjon~s4*gj$%R2$l|Am$(t&5SBOfr^@@gxVE@pM`8 Lr0clF>LGmt?|yTx diff --git a/Libft/ft_memmove.o b/Libft/ft_memmove.o deleted file mode 100644 index 215dd01afd4aabcfc28b0b90b7a1c2f4460f6e6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 856 zcma)4K}!Nb6dp}fD%(AHFzVo;YY?4;E=euSAt6e^OAKO)9o8bWBoK;9T)Xsdif+=O zI_1%$m%u#)LYJk3_PyO%-H50M-@fm?dGDJyv-A4-J`6GDn_~C?0pOlU9DvOO35tKQ ztX%6#@5az%1kxoFqEe_;9PY$vEt{UiF8h##^k|l`1=#tRg9wp7)Q@ucil~-P56b&O zY;AhiEg8h6@A#crRxpqp6`6?%Q7DPxaZWEdIU&B!7n4ovvSlFkT!k6NN-ihA3d8`r zO_^pvfQ&Y!d_vB_;Z?-wXWM|+s8??5P5+B$xben~`hXkNJ~uKwepw$d<(jqz?Sn>$ zK56zvnGY1)XeigZ@MzIG@Lj&9b(BUDt0q7tJ#Mu5MSBF}MhdzXQ?3@AHMFF9t!UWp z1Z_sc<_ikV-M<8uT>)F14h`{6OSP4}xo%T6??@6Q?!*?Vti4Cdj7`3yAJ-R^6~40_ z=Buebbv6{fMb#4Wi@@`cPBt33?~o+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%H~)KfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1; z%29yQ7EBPg%mC6*rvh0B5FekK5ua9+n41a_i;qWjUjtOB1C)+{ng``Fa5FGuz}O(# z2#6(s7;G0m7Xup*g8;}IX`og2z^@m5N>w|9JFCD)3fxH(Uod-P{5B>)Nk51ng9?d@(_*-OvMt8XarF|cG zbe{5PJOr{GsQp0)6aUHDCpp!TLcjV9*qk2&>_OWOAO1pq6bZ67bOq`A(Rk0cI?lH zu66I)KM)kuT{>iM-1%@j1P#3Jy*E2E->~2F*XMVN$eJM>z$|btA`2kaft>h1;#Tu7 zT4OwBl0fE4Fb94+h;-x&N5#U_8?~oG=E*LNM6?%7*VG6zdl$8a>jfOvTh)4r`S>vY zJ*OtCY-5h>(l+ympr*m>SGe4CYkrht{=HvOOY_P*I!`Sv5LJv8-UZfx$#2QbQxcGn zOC{fh5PgS3Jo@Pbh==qV#Pk2rXU^c&>3!JwerG%gN4?I7GQ&A^zOUf8?u?vaIDU}n zZ!*s5J=y1vqBQg!ChMD=@TwZ?@|3K$ZP|;d^bM*uk>3FN<0#BK(*Cl2l{i>RYTp(Z j<=bMx$uu|18#(YS8ej!|B`_%H;6XZ6-|Wtk3N`S}%r`spy?IZcKHtBhM4=Ia14e;Z7%m0C=7A=E_`@Eh zzQi-IfJ2iQtjDIcWz;M`_jxXx&;9ZsGbCX>p8b#ravAh+)cWwus+P?oDQZ2a7wE`Z z)Cv;mAEK;xa(sGlXldI#FPjCeH#el!3nd{biERk*nX$3wBcxT1ODFU$ZpOIHqHtJo9x5hB=nuc@hUFF(6-NImD$_DW$n3vxW5?GZ6I8r$qDIZ<70QC?4XcD^7kIcntVwX)zH7$mmeYA3;z2 z7@lJ2#XF$aNUPABzYkwB-2aAirn^PYwcAdyEwtJYgv}pVj7-Wi=0HkXnI25F*fwe} z55ej*$0;D1Wh_q7gYGF?!& zaS;0QUWE4bkUkuVenZs+^3Q;i4$g+DcPCzt>R$)mjQDRC`wal)@hbZ@_8;K!-5$~H m(f$m_a1@85@EV9RqCFx0SbK$>WeSX-M;-kGLInkf4#h$JF1=_K9Q??a@4kEQ?p^Zk-d^70M3Di)3mgP5IWRzA8eC%k z2QDQ4AbUcOp2Xz746SXmY4_ru&t!*H8a8hT+8H||6)sdkE-=-D9`PBPN(H|D0wo3E>H7# z`EEz~PFMNauIIig?^bzEyUl0#u)fn)-c?{#>&Do*<^_S=kNm0;r;ehTv6$3lp!m-8A{1q5PD5i8&}83f9QIjC{PLtrw%)hv WyJn4aqh7JiAY(Z;lDbsHcKQT3j9ec8 diff --git a/Libft/ft_split.o b/Libft/ft_split.o deleted file mode 100644 index 34c727b49092ba2f6d31d2490e2121323eb1eec3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmb7FPiP!v6#u5C=~mm!T3d}EGzAYuTusD-#fT9*@PRG{=|T?;({(zrk?l67I~at4 zg-ImSp^$^3C-vBio;}Fg8gb*v2CD4QLnJejvU6D4q13Fu_syGaT(busyzhPQz2Eo# zeY4;GdjHPO0U@+U1QzfRIJXbW7#Q?4c!eATXr2y$PSP1rrX!{xX16fSn!Q*fL`tT4 z#yEQ>(;mvdI1a_5vtJAg@ff*>M4d!NrfFTNEzDKlXG4FyEKXMXk^R}pRC1c05%Dfx znlD>5)2V(mSG{1GZ=dctv5EP>*K8a`JepaI`Z)BzLYk(1(VSfm$|`-MB|Wz#^yR~_$)=GIIGV%a zxtlOk;quyRSJ6azA}F?`uSKuJ-Za?cwq)QSSE((p6+>n8lCHjdj1C8GD{xXH(j^fk ziooz7IV_Ng^nMzjS(|-9KfXjRp&y?T+|L;LNqnc%G-C1)y8epLm*~qRMQ`L@Eq3(f zCs>#JX^1M-^UCBVfzi<$v8u~AwgV%^9DE}VjBObd6KUO&+J^LtN%U2>+l3p|jLod= zo~QJkaHX^b5Lz`_O$1iiLsiP>te_MOVe8aJubQw|O&C=a$_;TRTdJ0cyS{N7^9iL@ zy3M03#xf|iq;*94LmNm16)CNQ(wkhzbsR#Brttt}cB7Nn2Na-)0Ng@I@Ia&fwCEgA z00RcxgZ>e(a({WAFNWmb^loc_&8pETyMDdPVKB1ZGGvfhr!`Gn)B|9DgCpb>9f6Rw6AOW zGW`mo5mh>0SM)7%V zLi_k#p)KaM{GkK6RpfjY_GiG;>KeOUu3v~ZM)IHRd-E`!D@BAm4Ne$WS5_>0;ON_$ z{u}cFaX)+FJ_Rnflj69qJ#pUyH_kZj??1Q?(LZjfaGvE4=q(5R8%R8zg%d2lL@YoG zJ|s+qG9;eB!nxFb>_tfQT%i9kP@#?mxZ(3Gr&x}$gi!tykRt$Q_e}38>Dj$L$9i^; zldNa=2B^?!VKN|hsp73ZeWFjNAINUJFlTG#mHEnCO_=tgoo&hJyoY~6VOmw})uv*X cp_8k&aKV{RT@||u+k$N?k5#TzE?da)55k_hwg3PC diff --git a/Libft/ft_strchr.o b/Libft/ft_strchr.o deleted file mode 100644 index 0f0c202426d5830381eab492ee1bd9626e5043fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 732 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%cmNf@0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8zY1fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1z8@Z zSOF>+!31&34j>J6Dv*T$@$sn{@o7bgxv3Db_;^(JEr2R@fYKFE^PpS?ZU%-77#lYqto@rOKTX16=XM1=)=nc z|NsBTr-cKg@VM&_AO$k|N9{=4FHG15rTbY#@XAkxh?JD~T^IDN4>LVgLYE|79!y diff --git a/Libft/ft_strdup.o b/Libft/ft_strdup.o deleted file mode 100644 index d96ab0ed5ffbdd7eee8fec0146c58f826f641262..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 828 zcmah{J4?e*6h6_~idq}NLBS!Yn|5(>RJ3ph3q>lp$R(sH719SarBw(BMImHy^k+D_ z`hdFW*fEPxL7`)DP|r#3wNVfceEGif%*nlZe1H2$04Sq?4@3-cO+rJU%_G*y|HHZ> z-W4^{$C*H&xn!K%X3GwB=;t&0`JpdWQwW+zyIhTk88JAOHN>17)pAWYY~H9e4=V-E zcebPXmT)w|IWgw}S*(g`Xq=lRUaae7GmLTmbH7Vbx*@nG_Y(djKuO4e*6=xp2;P;N zfH;DTUP|#N6!d*69?&W>_CpR4HR>hEGmPf`(|gQ)X6;vvxlW&XPQOPD%+2(ehZv)= z?8e7PM`nE1c6>;kB`MX(45;B{ksQzQnb*KE-<|Gl*yUw?=4J<&8L;-fc5p{cfr)zz zK3~R&XN9Aj?1Iu#6?G~xet}iX7+*lJ&(P$50Gre5`N&o>F8Xw2EKjc>O!L?rDaxtmvzgk8USA=scVb? diff --git a/Libft/ft_striteri.o b/Libft/ft_striteri.o deleted file mode 100644 index b14ffbd07af69e702ca1c6ba0618d99d4bb81546..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%*Z~#40aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj0F<{nFn$U9I!Anz}Y}Xe0*|#Zb4#lNqlKud1hWpe7uhfvU~)T zqX4B1m>_PM0HmQ#1+owzK0Y-gKCLJ*Hx(ilACKz33aC;CC>;Pb56WfWW?;yGu|c#E z5K90t*e-r91~woD0g$C2@flEetN_viKt51ELjVvX1CU;*Takr{VuyNkKJ{pRqu|k5 z`@^HN^uux2Hz0i;-L5}8l6~Ja*l;lLx2QryK6KZ<@#yviN`$`gV7%zjdG7xOpiuL1 z#?IO|FHipe|KFqeh(hdPWQ(EkgyB39s3OLyAO^+?0Y(8Hc8&=^RVqMn86eI8ng#-} ncxG_q6KG>{=4C@N9H^WPWH3Ln>G5eL@x>)YnI)-3nLs%J-wawt diff --git a/Libft/ft_strjoin.o b/Libft/ft_strjoin.o deleted file mode 100644 index 0e88db478a65639c179019944de738852d5e1711..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 936 zcmaJ<&r2IY6rR-(Lv5NIB3SScO0O2_DF+WqyD$d>K@_}{Y1l?g$q&&D1|blMO2%Az z>fhqg&>y)qIqp?RVFNAXW{_g~z3kg&bEpr#c|YcT-@MtK?)~qF1tE-ifdvQw*AyfH z*mEF7`G4#^?>X%K9GZeax@1b(xvK5OUcO`Q?M!n&`ojU~(JUzlOf*8G?)Q*a$|@HR zvzDzYrIUQ=gHl^>gZq=qppfLEGw11KAjYGjGBu@g2WtN)Tg-VirDo?#GHHV;Bi8d3 z7KJ$QWAd+oWne;!JrQAmj1Hyx9^b18pF|G6$N)hjE@5WSV8bKvuGBwe^vQ_|_-RU8dYtJ2qZjgFyfeQEt@CL)7xk%rwfr!=z59z3UKp)F=76D6r0cD zmve8TVdkyF=t&Z)ZkL7$xa9qeCEM^OZ HvL*fkEIy)# diff --git a/Libft/ft_strlcat.o b/Libft/ft_strlcat.o deleted file mode 100644 index 1a44b8f2d409487dbcfa82492673fcda67ba14d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 888 zcma)5ze^)Q6rS}*6i?k1EEFs(J5G3iWsMT#^B8&F6YER5gF&S)$IKlt{&_q}=FyujrC>G8RPF{_o~1Ga$| zlnjHwAUH|&2bj^le>$2Po{UJo1S#G0o*U+2J;&$g-fELQ>V*7gmr)qBkk-b2QZSG* zwXwdLOu2F=v%8vEl5+Zo=~1leVpzulOlX%$eDtafTiwQf=@q%Wm0VAUij?p7bM#P5 z4+PrJ%zt5Q#pDzxzyYu^W_Pg&NT5qekLlmFh)6Z&*$mhWnl)_JKa(ef`Y*hPm{12* zp>_hH5@q2ZR0A3oiWgA?rYHy>!W1vtzx$}|^MYvQWgM$j{)R#k0*pW(jWHaL(rSvA z#;=4Q5A4f6?}=r3-ahPy?(>q$dAYiZm%JLY|6FGi`4gT$x9p>Kv@6lj6>H_huN*lE z6%S4vxZ{>4t(tWzXZ3oW8h4G=Xp;i12B{{z+t|Vl#troQA;)*1r3lvkEVK3;%jxdu zJjJOIXhUG}8J7U&{jqPo&T-54o(K&AUqKv?(*J=XX^0V!+4RxqL2N4V@Rwb=?QX55 KlJ0As&af9Gnwnhz diff --git a/Libft/ft_strlcpy.o b/Libft/ft_strlcpy.o deleted file mode 100644 index 98c68f0743316b5bc1f76fa4c587c67bf9078b5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 840 zcma)4Jxjw-6uqh17QYg~LBXMegNsm|1Q$gEZ?GUz!9^aWRur^~ruYFxr7EUfT*TGU zpWr0*195ZIv5Sy`f@5*8o}0YbI0#-ix%ZrR-?=v-PoM8!5hAUL@Bo^DD=uOHq8Aup z{znX`vlo?p4o_mRFNc&?X4~>=k0;H!WP|(Ftt!}$cVPq9x|#OXk(;DUudS}9(w59+ zx0bUDQcg_<&mR?useBRgc8U6aL{J(bWoAh(ZlqQ-o+jn*{T$UgrgB;NDN1cbOMcCH z80Z1q-St)q0~|b*bpv~F9Yi?-{h5afDZ*gJgKZKogggsjkrM%<5 zhp^2TQOH+FKk9&)D1q8$t-1$NW%r@7C?y>Ix~uR>C+4$$$m{V9O+PO~D4Nfgnts&6 z{iA$TGBM#s9Nh4}!cI6v0~#g=w2u?kDx#&1z`RQJj0?0qG3iNbw+{tiZgxb>DQ{*rY(D|W) XzfXYTM_#n#rnRw>Uf=ntGg(}!*iUF| z3>q9;gXZ8l1dh^>eaCm78WHrtchC2od+xd4%jd^eoXD6W9AFfD6p;pjB`_oY4?OAq ztDXrxc9Kx`3Ya~&<^?+NSv!{<`%pPr$Uez3LX;XK4Z&PEDWB#G9-mh(jw*-D+gp?O zjy7psGm#+69jcBBH3qX=;$k&lc7q=C&wLF%x~^+Z@6(oMiAtfCx(Y6W!@tZKih%<8 zRQmTi#{+5-9`9)voP@m9Str~7()+6Qu3Gh;>e#+KP|bRe%SvQf*R4nwU7>`K=Q;rZ^^!UuH9=jF#27dWeJ^%m! diff --git a/Libft/ft_strmapi.o b/Libft/ft_strmapi.o deleted file mode 100644 index 42f0f023a9174375d2eec7f7338b8d8a2a5b0db6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 848 zcmaJ-#ROosO5p6_{|_t*DwcfaoM9)?7$LBRo}fD1ZV z0QLs>K>ZJMOfEE>Xv`FXb7@+8rCl%fW4-KtUVhezcV-;U<1VcM5j+(8q{Or?ZdSGm zMNikNI~&zit(O*)9QoXctl?t};VvDpS@mhGNn^j#x?bBZR7!C~>;C<2OyQj2Q!~#< zc_p%*_~duM1n_j1{Zi5Zjh8acWw=icM;45J`3UqHdx^e9dkg;KuPFbIYW&S9zus1U zt)+r`yTy9-f+N+{Z&7|Tj`(h<8ud`@!x5&MZij`pUvMNqtT)S||<<=3Ly@7-<}{Yd1a>r{rbLgl+1a7Q(M=Dz;m z4T+iW&mH@0%qVN`lUTcskV6YndhjAN5PA~YgQ5d-uprVxFES0=EfLbR#9b^xps-rp zE`|OX9zBW&5h_Mh>>hH+F^32nXd%boq3Qc(XVX>i&=1~zKi~UinK}J)elf|IG0yM- zCV&qV%mc7l;2!1wv0dG3YoF%OWCYSBlhSqe+$2u&RldG@m8a2EMvu-SAfPlR*nT=g zUP^msd$(-6(yP6EUfY!N@uO@%uXW~iF&;~FHXx>3s9c$pPDO6j%iB&;lk)HLl{D$T zrkLrubbgbuiVl@q#CHZzH0uV-0c5n4>J{+m|K7nbz=O}809hk00VCJ8H4*$4{#i)` zjlKxHI9TfnztLybYubb`X4ac&3Y&aD>b;+ogpGbonXp&7!uS^OPRKj{XG7S7Pjr-| z8Spj~+W#sXVxY-eiXZYmG+O)1CRW}dMO`^8mujPL=0zh0x zm5@hEylWlZP53cLk>-Oq?nT1>r9>hn67_y45vT`zfGq>ze4E*2ouh zV!V3FjJ>>(pPDp}F-1qe4ZOdAG%S6e?7^-4!Pvv;oaTLm$9Qoa9(P<^g2%lTsf~J$ u7FzVtHhLR6pM%e|8C^{_XL8GxFWh>~F1u-5b!rIfj-v{8xmw+^N$wK9G^Wh} diff --git a/Libft/ft_strncmp.o b/Libft/ft_strncmp.o deleted file mode 100644 index d5f0590a942ffea99b4136fea66530a1a51a19c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 824 zcma)4Jxc>Y5Z#L!#jm@{s&93 z5KGZQut?6zlxYN02$m`#@l9?niHP99%e;9zGy67N?(41GDumG_@B=ghH$*}Jq7N9O z`j7C>^4#Os*eM9KmqKehnzTLc)r)dzv0nS^nF;M9FSTeE2Q?0&bz~#Hxe~GUPGWaG zv8wgVbmMuRixB6_fak@6A+`#o9$H6ZdTnbZ9`!V>fBO62)(Oro@8eQ*2odu+du^2e#ly;ZQO^Fma&}&o6E3KX1ebYa)Y2Wf zRhij>avs&;T?J9?Ir}V%v~5} zx&;lzx%#NrY>hveDS9z4WOeAtnJpCuSywIePWI>4Dz_MhwFguq~0 J5s7b7&o}l;ioyT@ diff --git a/Libft/ft_strnstr.o b/Libft/ft_strnstr.o deleted file mode 100644 index 10bba56b90c572c309b9a3fe5211716834ae6601..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 988 zcmaJ=&r2IY6rS}*47R#Cc&OmPg9qCpR8JN!5j!vk3!*M~DN{)!7EBboK`EpJ7d3GY z_2U2FpWsPEh0RUdQ!a&E3Q1`p$Fv92@6FD%&JPFm-))_Uu?1`mLAQr4gsan!%C)y zqLi7<+}3KwmxcV!+x#0T=U>?MXIf`eFDA842~n52?0zY;>vC;-HJ6Q7rMy4if+nRk zY23`E@dJ#iQx&H0d<0iCx1S~8WV9)*mo@(kaSRxIwg9({xa9W+wHyAEd!q7H1mDx5 zQf!Gzp&=?>T|~S_6cO@9X_~qF12I4YZ#TaY2#R&H9`QCcH$SVUVyi(2owp(^HVmjj zt1f1E)!iFZeJB$Ol(dofh*Fd2lNTaca5!B6I%T$a7) zh)1W6yWdMpq3SqCh;xKqRc#)$&7dKV5AZmasfk{CX_yonp=402`JvP4;2o%Aq0|<^ zb^6s6dM(r6pSm_{nGI>+ykBI_ZpukL>`T(OPIor~KfZ%F%zVFWb})6&H8+sZyf28j u$BEa7piM04h(I_&8@lw+M*p1!8NE*%Gr8u=cm8%B{wL4mwoJZ}&9mP%!lxww diff --git a/Libft/ft_strrchr.o b/Libft/ft_strrchr.o deleted file mode 100644 index 5df8815da6375cb5853e5789029454873c59165c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 728 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%xB(Tv0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8zI{fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zElV z%29yQ0Zb6LYyi?wrvh0B5FekK5ua9+n41a_i;qWj-wdcy2PjkE*cZr3jzuFpNXU4JxKFz~nN0fj&u{(T($+d`jPUgU4(fC_nZy1oEOd9Z@4 z2l9TrJo^9tfBdRn#2yAJh5=|iVmMy}s(`U7h=H*}fKh;lonrz}l?qT?28ca?_J9B^ o9WXfZ3A8ae^RmGV2GT&~Y#@XAkxh?JD~T^IDJn|NC;}-30DQw^DF6Tf diff --git a/Libft/ft_strtrim.o b/Libft/ft_strtrim.o deleted file mode 100644 index 4a891a2cb4a204f63ecbe7a9aa3da2d1bf9add5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1408 zcmb_cL2DCH5PnWe}=m{WITHzdy!8SG#Xnq>ogawa)>k|0F6Dk`m#RaW@; zd}*1zF8RJnJ_*@5#;VFEdkcCQ8jqo$Whp2L(NKI-?v)>7>>)7fV+#}KP#)FNtVsQ5 zDRTEacYfr#+a7RtxyQZsphqmO(IuaIh`lLx;}~}h1fZ_rdxfsk*MNL(e&L!=F{j;S z`q~9lqtriE>KR>UQ{(0?-}=V5yQla9?z97@znY+;&qheC`_~eN01N|F=qD9kA>eKy zMBk7*JNbp}$_;&LjjEVFHOH9TCyRYT?1NE@*vSYxGnnj7!b>}Z`lo!t=!9sG*Hvvn zJVq~yg{V!>OJh$r-Tx3pk!+h?*j7#dPd`vcr}lGp&3bx6rwhlS)W;lPiWn}tO@m6aAI#`Jwn z;zGUCZHd*p+yvHfuY~^3j=wwsMzAU-Kv?*RrsxjMMvFMakJV|ZmnEb WuH9O)WcJgN`HTsxRI4>iaQ_D40uwU; diff --git a/Libft/ft_substr.o b/Libft/ft_substr.o deleted file mode 100644 index db439e35cfcacbe79efe23715dd4f782507200ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1056 zcmaJot5L8fz;I&Xah++>Beeeoh2-=_*dBm6!AxTTR!Jq_`wI#26 z(2IXSJoFzVCrMPA=)vwua?C|AutK~=4~;X~_vl8@fqCD2GxN=xUEaa(ABXb*#xcMH zeHOh*K>{7^Ec#XA|1eM0dI~kinLti+$%L?TRXd0SzQ*pY9dR9PhUU>OdpLj)k7oqh zgvf3bH#1pVR7#H@l^zPQdP~;`^_+xCa-2iEbn#GE%&5`?gvjN^dO1_f1z91c_j{#8 zNhQjwd5XdbfV_?gFQcD9pUBMP5J4xSODXSZJ$_sQIqD&W9yZdFPc0g5_)nbX@*8*j z6qmK3toU4}`!4fko4d6kmsaaLX}N2)__emVvp}T7x|AH;nN(OGt3x;K%dgz{$>jl; ztf^JaiRygNICL#ve&&Y9WhZEmtUHM6DMT>F%UGAs(f9CnA40u7?$ml E0X|8}Jpcdz diff --git a/Libft/ft_tolower.o b/Libft/ft_tolower.o deleted file mode 100644 index 940856f607c9a3610ea6a8646714448622eb4e2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAa64fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z9Qk`d76MsO{QZ1DR=4Yq<^u|yu76&#L3luBx9gwS!^j3h;{n5Z5vU@@svri&3IRp| z9(IliKvgP0aTy@)_zwZFcw}(o6KG>{<^@>=13=|$AcOglO^;72i7&~|$uCbW0;vN4 Db)`kr diff --git a/Libft/ft_toupper.o b/Libft/ft_toupper.o deleted file mode 100644 index 137ae034299c5876940f6875451f8bafc47236ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAa64fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z68U>T76MsS{QZ1DR=4Yq<`)W`u76&#L3luBx9gwS!^j3h;{n5Z5vU@@svri&3IRp| z9(IliKvgP0aTy@)_zwZFcw}(o6KG>{<^@>=13=|$AcOglO^;72i7&}7EhtDW0;vN4 DyER5X diff --git a/Libft/get_next_line.o b/Libft/get_next_line.o deleted file mode 100644 index 3fe2879730db3b1523d6228938a97ac898c702c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2808 zcmb7GTWDKl9RIS_?pU{;4C-a*SV14Ea&(RggCQi?14l3*(#jafX-!UTHBB^4Seb-H zPAfS*6ec*lqJ8Y}#U~#`)`_L*TlGO&e99n$1dh^&3bB^P-~YQTm!^UreBb|m`!4@; zHuwHGIKf!xIKzV3gQ*?EGKh(B2D3Ck@CSp(`3=kCL#56$q$d+i%UzDgw~9N1~(ACPU=`^ZSEpRHL&b+m5Ga-kXSL z?Of{WbSh!nuZ}2P4j&NIvSbdSIPy3CAY)P_cR(oEwlifMy zNwS9+n^HKz3z&~#^1Ssv){9Alf)c-oJWc^#274J0_UtuG8Wf5q+0yaQx%}TTW_kB4 zHyHHtyKa7$=}Q#MDw%b1R9nO1=XR~7mx!#=VtHoOa`RQDFSMzC4w;|dwftO_>$&xY zK7X1Fd>HrDZrgKz$< z>b1Q5j+YA{*s**nN(Fo#Zv1?pYE|sETE7&r%a$M8vAj?XB$Wx>xiHh`4N3airC1=h zNhVSoSE_y_Oi^oVjYflPh4TDG$nS^uW5_-lZn|#Y@_`OtT(7O#$s4L(FJHI3+|KH= zu<5MrBzPrrABi+-KXN>vE9K?`6!R4@AI5&J{KGTAxv^&kkm7*pvU0rzx`?$j7M?{s z7OeMZgkyW>G_n>^`Hn@wfWV#8aKaCBo4k;#G+q>rxbbZYBCOpyGUAc=a)s}mH1*BE zGxvRSUmUc4t^hM8>pxHDT{0`gdf^T~H~$sQijP(F+ry{bgTA79!j7=?i$hO|@3nR%pZWN^&!+ z!jl!>uztFW%eX13^~`O&g6+ZN%z%yyHS-LDOJ+r1I@g|lusA^byp2kN;(%7$ zgu!9Es=h?Ws&eyV!SPtdivJo}9HxsWOBxFz#o@5JtmLxNJYQaORnprn@9li^y`jIX z(xps`$g)>db;X;0=*U9E*g!3 zs;Em`>Lu(z#Fh0O^7lRJ$9K#48W7($<9!J~#YdRv>wtLw#ya+q^lkxafWD;P1;isW zE&!sB8Gj)kvil4Wu8cDh{*F|zC&q7-6Juw;!$S18oMdM|21F?1y5wJz{4qedHmIk= zl`$mw1wr?YOBj)GP(lFG@BI+49}d)i3w6kT2-JB+C9Uoe{ST153>zA6U=pqF$&;XU z&}zhiw2=JYpp_=Pm8M?bO4BoIrEhl7A9T>np3K^_*-U&YqtJKK(!PRhAzr_u>#C!C~{bp%enCKCcDs}AqaO>y4LL^7GC HtziEGhP9L- diff --git a/Libft/get_next_line_utils.o b/Libft/get_next_line_utils.o deleted file mode 100644 index d4ef3003edb8ea27560f9b335abdf86315d80376..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 884 zcma)4&r1S96rQzE>DO-1!Jxw)x_0R#bWv(y4h0bgb%;@P#UM3gB?*GS43@q0=XmN; zAav>KCD==#P~cHIXy4nN!6k_L;LZ2FH#6UR`{VWNbCO_8n`2lI^N21969KFv(v<&# zjNI!>RyjNw1^E($aO{>7>M+k)C%IX!lrIJO(JUz#5M#L|QV^n8uU;04j%e1d&TAzh z_V?5tu`d%-ayJ&vl7^og6_pu;uq&e6C{*pRCd7~V)bq(Jed(th78$E3O}vdrA%biA z0*fOE)RgKO%t1O2UIXJkJ48f5cU45||Ix?Xedp~Dle;$~?luS9vqs!w+_ij2pYK=$ zy+iLm$l5J~=^Z0XN4ytw80u=<%NX1{fRBdLuxcd-bRtOHUZ{K4m}Kc74ROmZ2F-iR1%b z<|b+z2!De9fDauYyJFnOc9-KaeF5Y6)}!PL$$7~j+KLtd$0l)%@iU0rr diff --git a/Libft/libft.a b/Libft/libft.a deleted file mode 100644 index 439649fbc9a9748b9b755e54b77a8dc12b73887c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37440 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 REe1SB!55i&uy6d|{|mRr*y8{I diff --git a/libft.a b/libft.a deleted file mode 100644 index 439649fbc9a9748b9b755e54b77a8dc12b73887c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37440 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 REe1SB!55i&uy6d|{|mRr*y8{I diff --git a/minishell b/minishell deleted file mode 100755 index 95f3852adb9600fd3eead228d263510254e56f78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88496 zcmeIbdwg6~)i-{UrX{^jxEDnku}A@-DFPN~AjL+fVlbi=ug@e+rfq1Ngj{ILLp7LG zI}L$8FQDR$dPh)+CS%6VW*MUN&iPNJ*J*_$9R3v0MnW>#-MXr|wJF)$ zy0lH;!uq)Fvr3P3&JW=z4NcK2>-Ed{CX)*nd}KlLJs&*p!&k1ICm zglQd(8n2Y35|3pmN2XFZW;$%FF<11y1P4On-%X`sfc|+;(xDRX-_p?zHDbJw*LLc&- zhcDAuW~ES?mj&{qnwq;#de=#is(FcI!DSD;GI&LNgEAm*Yh!muXR7n0Q%^c2K#t;- zG?f6cqyX>3YdX79D^EHnKmxya;LGy#OhGB}|2PMueu|%>2Al>KC(?gRuO01OJGvlt z`4l|G-6vvK9HMs(vC9wByGvqM(iDelUZ?$J=@xO1tJh!i`ls*S=stORl>zSQ`-n># z#833@tbk1YYe)T0@7}$;chrlmW8c6BUvm#k8cN`#p=6LI(R)utAd%1mv2^#YM0&BG z=&u<~q-!$$wY%2WJ_E>4q_-w6+X||?6X{w%L1ukNg3yKH8Cx-9^ek&#W)W zZevbRF%BkgJds|TOQgHWz)!?(ssS+U$J&WjlS%Zh&7cg^NoBZZ6hB^;&TsC^iT<^j z5XxQt2ZTKN){c@53KI_sUu|B$g zVwA+bG=v8mY9713B({zLVfIWXj#Pk(RO@f3fE-XBE5)AW*7I2=F%c4=l4>&9YgFvq zy;2~Nfzm@)m0?|l>?tTudhrfbnG?;AYVQG&Yi-W|uYZGGW9^Pa$u?R{O{RCKB+)p! zg<|<-OiYV9wnr&!K!)L(M{%XTbD;64*1)XLlMRQIBXK(u*B?^e-~DLsy(Q`HN3-`! z*}(qZm83F4D*ZJhXV&b94bX`L$p_Mi;RA6(_ei4gK_N0CL`Jf|Rt1fr8EX%@bob8w znw{%w{z3_R=D|GPWx~a_l*eve{Fl=oHiMPwKqXs!- zmwpuUg#Q*rYQs^>+?qkF8TKD;0rp;6&(R_*+fFwuJa5x?`Dc=zG~6*8kSo8mRk3Ya z8|r~X(lsMu!DxMK^(Y^RgdSrWt52*S~mY`uB;FmlElR zpq1PFb&7SHV9^&to?L(JPUxv*gq79A4C$I}S*de2R|2GqoZC!ttJu*C@pLb3=Uc=u zvqwYS2E*itNGM6&j3myi&8)Bad92rzr((pmOshbhRL8Elw|af|&o|WkJW%~RZ9y!$$&!d zC?0crfA@~`E4{-d>9sr58DxJIDu5rxw=S>1cA#oC?8N`IS{__kN%m~yaQ$BY zTGkwREq*aEQ0x156MJ-bY#jr3NP!ah{uL-BENwJPL(kV{z6Mc>r6O->U#g3}> zLjH*{!*ETGDbT~HsF0&60`Pce*6xa}vp#h+XquzhcS;t7FEzVjTXOyoTAN=ofX;Wz;uq+z zO`32I4207~;rbKMg6+Lxl_hQh6c)oc zPB}2PW$i1c|9gGSi?P1L^Td&KNI8NO^A|5}sChB)7aU>+)s_7*cmr~Ag{z0GlT4 zUmC*BM00IU%Tb%trYWIpU%Vg_jWJ&qh@Jf%kl3Zwyk0o+V6+#EAL3?Ty=!-Qu>pxU z7mzM$t-pJewj}ZTFq@cv{Vq^M_Xv-XNZ;lE6mtp8IB@Fw;gUA95LAr+RXo>5s;mn5 znaRTvK@vSJhZ-O^0MnpfDrx%#)siK zM$mP0hSI+lb}a2AWZ?r<8_2O$IWk0sS44Av>YpNGCXrq+Q|!2R^~}7KA0^HiPRfZI zdC`1_{XQ_sUQEr18(r#ry2&g0xHC?1E|F>&TMhq&#{EAW>(qcqg!9i~kUULEOl40+ zqkt;{%Y~lnKPqMXG*I;e5`2epgjG=SXz3xv_cFsW

M(*vn}D$DIB1{5u=O`I1le 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 diff --git a/srcs/builtin/ft_atolong.o b/srcs/builtin/ft_atolong.o deleted file mode 100644 index d4877ee96bb07cbd2efe041c70c5a8ed6f0365b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4048 zcmbtW|8G;*6~FI2-)ARI{G5a@p+vudP6|`UycN`VeHhYKg`{ZYH zIxrcrmy968D4M5=PT$dwM*EMh>6PBEWv54Y1bNQK7$=j9jgqL4VGNmrrIb-9=53Q< zbU%0C*&kHgtb((b76syzOf`v_9AgD9J~)^+M=0NFyidg*II}Uf&r=NsZCyMolgv_N zE#6VFUzW)4g1~zV>s1}-8oYQemo|+|{G?e}2k#wwlNh_;jAa|exd@fSx_H^aA126I zo1Z0;XeTG=+I`~L`Q_q?TD(_k@IJp!yyDBbb=Ui*z?*Q=V|A566FNlAdK1}`$g60S zGA~(~A;UP_y%vg^7xghJjMKoQBmWHNA&#mB&m1B5zR%vqMR409MDJ0rlMaRpZ&k_J@BdcRVPEN}mZy5=%h#mIo_Rg-2kmOaZ#&B?OdJ0VMNOSqpeQ}j zGp}9U<5}~j;VqxJfkS)nUU3t&eTZAtCidPdZhW)tjozGt#JqFS6_SflYN)4M(FH1M zeX0l9^inoW#=XLLOxLl4VJ8Q(aMC9MI&C!rn8w; zFu_8Ht-*Xe|8l6?95K_`oS6?jkv(}bo*6of5Bq2~n=XWobRQ~&dg6(vkMwtjgPnVW zg`pFyRuAB#TqYIt z3rE;3{R5DHhwhVL$yFyFaHKN}19v${=)Ot*KB_WVdj`NDk=B8N`+DlbZ8X>sH zZ9DWM2Xv_RA1}Iq#am;4MG~G3x;hAeVyI6KMBl}hPtQk2%CpaPHvaN~FPr~Zdi&4E zV5eK*H256&S76#P8aECmq7x#W9xNhSCF#qgfM~Bszf1~f4ovz}q<|{9l8tD+T>qCC zDih)j1O}o$ty#ftxbRHUdWpyv9zE+#1l~C9Zy0&&FmwYNAS_?!9~FKoDbQWxE6bLC^emH3`6YjY+cS+Q zO0W&QbH!P{$d9oDKL1bTCmQL$1QEq`gJ(qC0Qxqq6Gx@7avyQ8BQAW)nOEd}*Ss^x z(Z%*7Qj(;9`x;5m;=q!XNffH?Y{qg{&I}Hdx9a+)LUzflj-*YBCUI~56<)8#xEA3X zBD^)pH^+Eegl~`V9T)f`F}^FJWT&~TG)1_gzR%@9arX;c#Q<-FH%IuUB;Oe04@9^c z;U0CEyWwewaCd}rHDv><>hrvQp387B)w78=V!{X2kKs%4HpoDdZ;$b95&kWJs0X<+ z%;hUwDslFr9s3Q$co7?bY)|qXG0H7?cWhn#Ke@ZiT_xUHLMkz?PV)`wA>NAahG||` zq0D7CN77~cr3sQd1 zTb}1z)iM6iWmgx5!~Hl-BfiqhC`PfRN#;HDUtV_Z@X$@Ms}eb{#VI-1eoWIFyr zhX?rq8W-e6NPLbRf5*|Ft6mXuLdd6ud>j(jmhTav4+yzm$bgU#Hcn+6T`3xXN5MoS zNS`4E)C49yApGAGI{Anm0t=U|2OV8T?hY9>FS5|ro@4{nXcdO6lvQL#^#gCzzU~-Y J`+j4V{{kVB;O+nb diff --git a/srcs/builtin/ft_cd.o b/srcs/builtin/ft_cd.o deleted file mode 100644 index 21270c1093894f7158d8055da1517d962d244d10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6772 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 TnWe{%YQBC_%#zkC2%-N2&S~oa diff --git a/srcs/builtin/ft_env.o b/srcs/builtin/ft_env.o deleted file mode 100644 index f2624cd06ecf0db95d9599c6a0d453cc04d5ea8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5468 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 diff --git a/srcs/builtin/ft_exit.o b/srcs/builtin/ft_exit.o deleted file mode 100644 index dfedba1d812dbb83c62ae3035f4ded71765151a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6288 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 diff --git a/srcs/builtin/ft_exit_two.o b/srcs/builtin/ft_exit_two.o deleted file mode 100644 index 39f06da1b4cfc1d8ad414dc012f6326be2ad1991..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5100 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 gmN?xm)f*T81_B3Qm;e9( diff --git a/srcs/builtin/ft_export.o b/srcs/builtin/ft_export.o deleted file mode 100644 index 3f5d2430116fe9133f7b72e0d5eb681ef814e0b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6440 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 diff --git a/srcs/builtin/ft_export_two.o b/srcs/builtin/ft_export_two.o deleted file mode 100644 index 0edb516452df885937e89393691b5a899d8cbbd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4284 zcmb7HUu;`f89(=4pPR%YpqRY`3;^lbAWS zWnX7$X+#ybT{4fUgO#U&Dm0-!jJ+^H)v2YdsEPWr6$!Mbk%u8AG>9qP0 z)NwrxKKVP}`Tm^W`Oe>a{Qjr^{H%^KMPn$yKJW|`Auwn=xSsUSp}l_BaY@E_Ixrb= zlWb>Mjy>r}1;Vn9Mu(0*(7oDC)vXa8L4FWmOmyL6r@a`GmX$0x`BY|98msX<9Lk?4 zL&;Q->}K6!S;KasIBEe@*et8>+1|t7UHAV@Huy4466mEWJeW2>dU)|fB5zMnz8mrG z(}aWE-WYqc-qkD0ns}+qNS0!%@iKD$b27he4K7kB$e8X{tMKBvT-vrW@o~FQ1Meg5 zHhRky?3`R@sgkIPmreXINzUs0UY1GhCMT$?(UlctO+1lbE}pE$d%Fs6@PEW}PULEi z_sZ=$FdtC01)6%#AJX-Q+upV-$s>W-NStEI@ zhTEWeKVO!3mnGhD94xtogazoZN4}m;0ry*=?Oee$uodzb?4j zz`_^wGaXDsL1dpqJDRe6EsVVmN%d#Il|PK)M)788Ib_aGt;|K2$<=w?EXP*N@nE4)R#VevL|@qX3tFV&dbp|mz3aHItfb$9}2UAXZCC`8ug3NS!tC8 z&&cdZU)qYI99=G5S7xKjOA~8rYcg--YL@;Ks?4_o`L50u@6JV6sBLNLE(>0`-o3V- z$8A{WqIYT7hym6bl3&HRN`F*lMQJ8)n_I z?Cy2!H{J9RkC-{%yxZ5*V!8P7gS==G#6rjH@ofG?D4tGdlW`}N&4lcHKAYdgdg(F_ zCDZZDXlTOD7s%Dw748Ukg!Tz*duLY%wD32&!d;Jll@;>ILL^a4rJYnJGU8bFWGLJCe(%CgP4AiKQ~B!kC>-vr+V%a`4rRJH-M^WgM0q zi|0|;$ro@l4%_*}x=L5M^c0XRqryrQ6NxmL8GU(EERWln9QH7C#&fKYI%zXylk$~7 zE7tfO)^F=om-ad5F@QUd`83Ugq74&mgh?3qKDqYOq z11r9U^?O;n2?O`}jzIW^P-wSM=!*QdGS&`N8GIk58l=X$`r41^idBOY%{cW+^c%1; z_z_BVn~ck86t|6_>(tlMb)>bCkMRX6L1a?~Y5S|YzmF2=lMNK-X->1ys1-1B0%MQV z#h!gt*`>9)k^e>OKhhUlFBuc1p=tvJz0ixBRsznOO%T>A`%9Spt|0jmVM7)K-K{P%Z zvxb@QiSMY}f5+*W#$@QisUG-gRcLQf4m5+i!64dQWTMR@O{fW?od)ufb~TihJFJ#} zK}OPQfgWmKxif0{y-_JA4>M)5MQLfOt3MAEO7BtdzEzs9wKbU^W4(cvbLxR+oNhrB z*9Y#9adZ*{)rg~&zbxZqzBTb)N8H8#xc$dx(TmNMfZ5s4cNrYGoetmo39qj=_!H9{WurcZB(9*< z0N;$3TMQmBICpr{H1q+^VQc8;jj$QK#o$e_Y1#>gt4FzC3l5?4e$I5{;a}puBL8}k zcVe(#Gx#Qh>%YV}2Dq*dd82PYwHb)#xoYrjNUjNeYeU?RWDr@W&x=v2zk428O(Xph zZ$k%26b=1|KzFK+HDd2zp0Nt;KZC>zwf$8{{I-svz@BRVmb7!Ved7Oja{VeBWg~ZD&L^RfwlE#c{7Q@nWzl-w70-6wfE5 F^j|6>3o8Hs diff --git a/srcs/builtin/ft_pwd.o b/srcs/builtin/ft_pwd.o deleted file mode 100644 index bd4671ab7a910870eaeaae8b4be89fe7e9be58f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5120 zcmb_gYiu0V6}~&WGu~u8yPG%x2ghR5k{6A=jzhpeAaRm~&4ZBINpQ+zvfdqgr`hbT zW@ZzICIlrwV+C3eMf3+kRPY0&B88S#vBc(99R|d``BH zsA11QE7M)fr)Uk=M@^9WEvC8tn*M<+PDeGQ^}6hMw22SR(^L?Ki zj`C`t#0_z2OsX^T*_DwhLz?-%D);{Z$(xxG5Vf}nA)zL|e63ct%u0Tb<(`3Wv7FCP zKqFobAEfl5&d66C{&ImK&GS1X`OcI57aP);RA=P#=U2-Yn)x1V;@k8o`MmwLGp_e} z$#;(2tm=Q|D^&MjUY=R6?6WIH)7-p%aw$Sg=z*7(;GL=9IrQLp@SLGEt=B4Z@hcgJNno^CpJa3XiC-U#B3oD|7h_)Y?vKp5ZMcoUe?g_gao?S1ak|z1=vAZBLo9$sI@9fX4xAt1)YRz&o>#BS9*G&E!q`nRI$&Tv{|X| z35 zG;#Pq;@v}u)Y%=0S&`W||H=g-n%K~`dfp}arMiLy5obgKgFr(`sFaiefW7mw&4u?OxP-VVDp-Ah#<<>1LfDegeZ@p zx)KtJ&5*w>SnV?a)L4wSmuDd{WtRE|v`~MIDk7pUK()j)7b^M|DlO6yhw=+qBRk$f z9Zk+q?i%}xZ~X){yxP6U$kF5nnB7d}uF?baW>wGzZ`VWgW*_D>w3krnzeM#uL>Xy4 z1(j2-H6rNAc;$Lww7}j1QErGEh0r!rMhW(N#CNqD4m3wo@@eC{(AQ!NWq66P6q*ZG z3O&XV*xUl8*k^nVw$E>^5!xU+=r^EBK$I1&bD`2omoXpuUP2jRq(i$WZY+d-AMxcW z!-V#UdfSCY4((g0^lzj30z^5#bp=$ra-MN1v_JeJVXO)5#W90R^BI=JjRDwiLzJZ{ zp>M%lhv>}J*sh&|t*e;$K7yCE-UQX7tTb+g-T_#-NEo+=c3<4!)P4Nol<^>JfACA% zC#QdD+ISSWKj5k*LL;}f3zfbb)e~q^Hn%YGlq-dig7$ZQL)@4L+n@f% zl(8VhH(@g#fulc;>ID+5YkdW(RatGk4*eQnrC%8Tg#CBgYhyxh!1xsa?OgqjFdHz{ zoX%Ol3p2JXK{KiFX^Pap0L5Fh1U!8ns&2CEY+VVpMA>4jg7(+@MPaNB?SYtaHEe(8 zgK^`!5Z{(EtkB**$Eb$(j&^@M%A z;qCGq$Q+WPU?KkeqC!P}(FOU4a~-@c@$eJlxXgdEAjnaE|FfZa1-tF3-JLJqz3Mx4 zWns!`u{wXCW`6p;#-exM{>E7yCr?~()2qKpc09DS*y-JFcdk4!a_WQmrPR+0b2?J{ z?arQ?kLucsYrX2$IUT<{HQHH7-*do=?MSWr+3b#M9>3)u*SfdAdG}vm>3HhE$`6-e z6IMfbWGu)Sq;gqSG_F?mXe$$}6MwB%w&Bg7OZp=aR|VtNUFMEnyqRSLujsq*vte@gyPp|R#=pwqk@G6pUE&7d)?6=mfqnXu0#7Q41dgY5+K$2Y z@3O%0zYzaoXtFc^F%pa7E&}bBXfmQ|Gf%4e5w+u1b(XeKZMk2KYn#*-ZAgu2qiW(w zwTiYJI+9)aK)cRd7+ zk>`#>1MlK@A2oj{F|#ga4z>?KV+mbZX!ctpael+0z3Tup`f017vFyYm=|lPWZZxu; zKNv|EVOa)aiYwMO`Evtb!PtJeB=DsdyvI}f)1K;M)1B%l{!d^A*L8k`33K|#7((!M aF(UB)1j|D0e;p#o^66}~(B@IEH%^&^RcV|5XEI0bthCn0X*Hg=OuH?Jo3BXI~}yxtw}PP5)w z&CI$EO-pF163eO7@Q{%DHxlIs6)gxTf*+w&M1@k7@B=C+7D}Zch^PuEAqdR(&D=?1 zHx&={%IBVQzI*4pXYSl{_WF$*SO3)@L?9^8K|+u|c4-LOD#-UZ_yO&z>J5zX88qJq zr=TPVqG_6=&p4j#`6Jn}kz2lRO-X}%q|7x5;VvH%r~En8npV^&>Ltx~EEm?aored9 zcHNxf^Sq>Z(5o`On-hePBOc=O`RI@ z-?LKhh{`$O zBcK1c{La#)x+9+(UoBr)%6DxE-+}*<&pA=MT`p!JI-|j#jTeYE+Aw zwr}Tc?;_^oo|l$jU!!;KX7D|j7ide~S1)Um7QTizsA)^iv)umyZ&-{;KIt+q%DzqQ zpTCMxbs3lL-+<)%h79Jb;A1=W0rB->tPSE$Z;XowgpDsj{0yE8L;ni8ADZ+BA-6X^ zOL>3l+&=5h_GoVQo!sd^rE{~7U(e0f-_6ZsAp_Ce+)U~UAIZ&TujJ+)zv4Qx*~>r4 z&U3A~?EJRu<;G_|#wl}nb`H}D`{#3Wn=iUk=SJsG|0pm!I{$|^7Zw(Br+=J2_R1hr zBVDNEtEKd`ZrO%eO>gY&?&T%&Dn-wYU$TWyCZqc4m0zUOTftUpO#4wy~#s=wN`gTp`5pbV;CN<`j<}?~dqd2G(^nSJ|FIlDbF{j5VW(DXwS^6C`gTa|ydH z_GeQstjQwA28V_Qk7&cYKb6%+jvUNtnkY;awOZaO3sCY4xrT3W#@>H-UCWfR4rP`5O9 zqY#hCTP3Z4{V_zKDX=!#5)LMxJemCS=aQ+F?a8JMt5F9c-JolZ473H499h3=JASnr!a|Y2?iL}Un-{sU zMnN>b0?K;|C7>m6i(Fmi#zDS5thFqFrG-d-6!W*jZ)8-7#QiYES^R`~B_irp8&&i$ zc_E*Nu$}Xi+w+H6`4+kdA%Rd#{{G=bF8~OKLM5nIAt9wH{A*|t{vEo22=b@5A%s2h z8i@jjE~5`NH7Mt1uDaH1=;76#L!k>cDd?lhx$=2>E&oJ#@QTmVYvuaz#=l8#IXw}3 z16}+rbniiw$;98Ga>`MaW$*w*IVRKu^ikTMiK->v)>3K(Hdj!_+tg`l@GAMV`d!#% z+7q2>7xW6eu~O(!zW|%7D#bqai?CgOeL%!U@IWwvE)s~1L&cAyYlbMB604xnN|&03 zK2Ink)HS}{6ID0B{yOoEDYXFYlJ>TV7&&4upo_nZE(1~SPHcs0Q`V^4q1{l{33aD$ zuMeq1uw91EsCo$Ydk|$qO2i*R+@GeiJjU@@1LBW2qkD|teTgTbdXz2dEOY^|vQ?R-48IN>`S}?l~%IqYtS!p zl?R2|3hjP{-BGmzwj2JQl)Bc(_hK`?11HX#!_P^yBk@ZpRoSk-1^s)#%Ain566B|P zASB{f0lp0&a##F1%*!ytxj3W#3(U|bmeEW$a=K{bZ)~(7)($Ve4qY!9k0kDa>Qo+5 z2cX^eeORcwe0wOQ4#RdMAC9WyK0cCC4c{JZRc+rs)aLH3%X4_OdeXUS zFkJC(M#KWb%OBd$_fMbh>NWK~*vwWYC2?LI*qB=Mt8~zOUSe!ZdGT|+@W0Gq?N|wE zB^esF%8f6Gi%CfSEOo@A~2H*q|}BeDU$1?xtjYT{p9!4Js1pbj+M#V)47}bKk=nngTUtBYF+sc5h zQZMQmV^iNJKO83eg#DorW!xL1E!>M%cbOZ2%W1vfc(#8n#_b*7-NG8SGL*&9{?#K*#+$bI2hJ)DU2hn4*oLi2YykBCBk01~YPC8D5I1c{U?tq9Mv zI~&KYBR@RP=^{)mY0zrWa5`y%yN|ozU^DzlLq-n`SoQ&go%a3(^P)Z^`bFWpU`c`av@#c zbEt1ZN7njDoT9VI=ua++?=36bF&*%H}f63>})|PzU?UL_@GKzEmk*`plLR^ksuYAU= z6m@-Y&-|mnlIxX{;AoTg9^SKFM^Nd`d#Adfv*MPc5jM`FocB+zp7>E8k65Zu&Q~T<(}rc6)km!Ty|Ar(EM zd8cj*v*HLtAHxKqUa`%Iicw4v+uJudoDm~K2QtD9RhO}fV&2IMM|YL&DYH_mJLs0T zgj1a~DmMIO({_aIshVYo3iG+^h11iv)I7ApGK!{U;J~>p=IJpk>?At7u^E+V0kK)> zdCSVr3aeTLqh2=hCy z!?LQDUZ@rgfr<1|71_ppYa*~Lur{$m4JJN!Eb+Ie63Kg76Uze2@kgm_62Zj4ik+(; zifxT4IO)MP0CvP;IN+gBU|>Zs5sT4>W8DEy8}dk)xul^BoXf+zT7n6>?^{h0AtI_! zBs8!>h{jC|n$adfG`0%L8z)43MPPmoO>@H`V=tym1Q3A`O&>=82hmP4xL9llOfiAK zJ?~F3;wG)Q=mt6nIR#-k=P9@5|GRPl)x(fLs1bv`5_|<(4TUD4ehLXG%hcECQr|!o z5W!cW8bV?D|0djPF>k`8<+lP^C{qUqBV(z5&C|J@`TWup|{ZfWJIg^ww~1LuzySZXp8m~^lP;9DeYzGe$1hab!c0l|4zHm ztvv_LS(Re1_7&JJzp+b1(-;tJLKO}~w?f7CqH2XG8{;2=N-3S%dT36fq=nY$+uaeZ z2lh$g8x8z?x9H== zV7uYxl3JIKKZ3DheYfWj6cH}zBhIS zCZkcaF-Fb5s?Y-onoWOYcady_iZn#uhKlj#y_N9c_-?2Uo(AEn(3*mVq&VO4L9vZf*Y@qnO#8?*d-a`3b`YyRK8eidXrWE+Gp zdJIyBJPYB0{}zPD96!M`FE7u`IfR&o_;@HhYJ_+kR=J3qpa?NzNr+pK5O=7AxD^R; zXG(fTNQm2C((@D$;<1nexx)!@<4cJ9mk_tK9LSwbh+AFu;+Z7GV=8;`v=ZX+mA#m{ z2{Dg&{|bVMoe;OQ43$}g5QC9i%rAtPa3mMcB_SSM3Gq*W&;&$sF>w-N9+X^6sf3tg z<-lDMVvdx(m@4rT%$>3qTC(sRq0qme_***g*&z{_Nd}VfhRAd1#bDYXFaLuZ_|`2s zUWmR#@)@OH<2Gmc1Nw%<0n~v&;N65q#YqU5m4dzCZu);;M$>iMN`tOkFB)lcWABy^ zhRL3_KQN-SdjYhCdvEG0aRG4GtQQ>5UUVzR4)FTJi(Pu##uoGLfxuNPVPQrwK1ozg1arejplq$^(8e>R~qp~G50wL0_r>ijet9!hDKnW zhb7K$Hn!J7qkm`3)8U=ac&G$Fq=38IhPsG~It84m#V+ diff --git a/srcs/execute/execve.o b/srcs/execute/execve.o deleted file mode 100644 index c52600f55377a6b793ee9803cd4a4394f643f545..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7796 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 diff --git a/srcs/execute/pipe.o b/srcs/execute/pipe.o deleted file mode 100644 index 1e87795518985da8f5ddd01a51bf4ddc16726eb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5984 zcmb_gdyo{x8SkCho?CY3ZWoTn@sic>IE=S@cX;uXC2+vWa&U^r>kws}o1MLzuuLYWQzMELkR zFd305`e|Cp94rY1Ow%@W_HMYO`_j)PPa-^mJTiqbcZeXn+xH=^X@*m>t$e>QR^$0N z=rcf_1Wf5ig!HT zF!!Ke6eBDOj}GMvm&LR4*#bFK<84;FZcoudqFfYssj1#P!c>K)7mGPl%j-K#2aVNu zG11>&vY*xw>bP=Qyh7g>4DzbR8xnYP1;jPcaag2W7SD~Zs2kOIk5u8U`iIF-A*s8`eV%QT4p$fR?qf z8eWI$_xYH>8xVMd0#B$c!kFLWn*8@KXXRbQ>iKII>-n09;so%h zIe#%a^jWffEZ2QAT-QA((}&tx5dP05K!1wn!9_c@9Aah91s2`+^-Gv(qx(YIdfprP z=(v$@`Eak$Go!F>kn{hC>*%A5jqd^Uua56q9}Y5RK6>HxNhYuQL8~5NY;fl=M0Id5 zu~Sr~E5C~0{#-T@oiju#^Vd6laL@VQbW&F~+<6Y`eV*2P_?Cvsvw`c6MGswphL+>M zxQLQIR6gU*%5e9&%1Gc~_qkKg!`$-A;qEh)zwE8NzxP1r>F5w`Y%F}`#NNtz7Ck(2 zp!@W_ou}spqCY-bc|Q={*M@ey85n0-b7e5dqC=k}XFPTCy0nXXs`2UIN-Z z03A6Wns*VR@8>?$ay=8zS~)YGF&)FUilu_hSO;a_xRKNI{qdcq?O26;yrnhKoM?_W zy4I$a)@EplMXia}_Jz!`4JT<1nnt-~CW}_lOc*S=*6Oo$dslL$xzo%Qil&`hQP{CV z&u7+R*Ka5ka!zvn$~8{1TQ_cA-`mohXlYA0neD7vPi}M&LefMkE96Yz+tyAU<8)hj z%Na0pIo7Y4gH{P&N4->bn3XRvQ|rS3tekhO{=AuqlkLWiwd*_ChMtX`40&g}Mscz` zb#ycatXxJb+6BXO93)_i_34huN}h}3F=SNNl3`@XFhN=gUz3b(Bh8Z8RWaJ4R!G?l z+B$lAI<{!*SKr#HZP>D|Q`4BS1B285XqzlgXBW2>jUIOdrwz)Qmn#&xI;ag-5 zvH=qz6$~w#)B7(ecnMj-M(>Q37eWD#O;B3Cyu%Yb0MoV$wq_JECc~6z0|k7T#Oeno z2Ike(bGh!G-F2t;*2SjHteY5^grqKA%jCM%^-HJU5Lq0N@KuoK!tnV>1RsN7FtEB_ zu8TydjWOPcmRZ<}N|ddx$5Al>)Je*+2Dy$L7EE7?gJ*~{Nf^jy!nNbn@Kp5l-0``o z4_pFQYuz{qs2yX~1~4>ZbyvdwI_Ob~DiZlTMD`V?~uGYq~^fCM{-w8E&28} z4NU2P5?+g{fm&BYt^iY|rRrSp9c1cY>MHOrle|30!h;YRLCTzP1uOyL=`cmL1Y+=- zS`zCXgeFnQCbxFE?8V@Qoj#=H_TF!sgL<`b4Yy>@;yTZ9#*lgf^2>z0Fvh|+A=bBGkftba5auaV zoEn!zRIp~LO|1vNfgbNVrq1x?_K-Tym#>ehbj)$by`kY!cn$Zc?{^y9l>1RrBSZpqhj1F2MSby34n3h^hDZ^2W*PeZIV@!Hw3% z**r_733BD$I97apM;Z_6o~beX=slBc0dc~FKcj=eBdML0cWe57eaAaLoJd=nuALbW z?PT(&vn>_cN~AwY3d#u(=?;jBKPK6z(CLl}=`<#d_5b)#0-6Sz45C8MK{ztwNJ`Y| zVN-&lGcz4L$x26e8jJ45^&q;UNTX|`DX{&SJ>!skP*gs|s z#5Nxp`sa${lV<+)gZ|lXer@W^{ZDV7-F7tlLG#@QB87F6XU29}v&+)F*h^ncJ@J|` zd1mQ8Yxeo0*WUFMPrjhy0q1~PL7kvp(00&WAUbhA45D56ThO0Dl%Qlx{#4LH5N(#5 zL4BYy=m6*&pvOS8sqtg9!{>sd(1s=x?QwcM6ndx0L@ysM7*uHYlZgfvCQ2e?qTC`( zltjoxIYq!zmLd}+E&)&Zi%cD;L`TX^WTKQMO!RJ(iC%Znk=}YT(KZlXlugM*308P1 z!bFKzc#S|LFWRuQyeRYuArrmgB2?P5WTLGmuxK}viMF@EqKrx=O1Z*BpBpmug9H|3 zC^AvP5m=PF$VBVo$0ba(*Mt}4B=VvpCA^^dg;oZ|t9>K**pJlZ+WmJv@Wmb$7>osC zYE9^Vpis24K(Vv*hF`oW@Ub>^vHjADTL11yek(zLc-QlzkD*(t{9ZxSLDmiAKp^n1 zx>{lsEE%l4;fy<2f8rB$vh3JNz~#yrGifbq|JcyyS1$V&{+1mK)n zHcFl>t`wLp&kt6-)1z__vU~Q1o&LEB$~abd6OR1Dm2fD@BT9--?Bby=uB3FXDs6m{ z(#5BycteV-DPD7yxAyY(6z|CLRb6~dig!a!@x^EPmR?>1H>IBk(L+)~TX^jj;C1m@ zWq{WcNB__yeq}FTkmAWKZ|ma86u%m#o`-mEitAb4-^KM5-wIRtGH_e}3q~$vc~YL3 zAgt>V25^CRmT&CkTT|S~a;u9QDZUMW`vVV+2~f_5dU-&RCqKm5dpsC^hEFIX&=jxl z;?ukMRVf}xaVa4KLRREC2_F1Cmkuei(aRM@zAB-}+d^k$xXtM0SETrrS-t=fVAe2M zcwAY@^2uFbOSlxO=TmQm_ye*8lqHga_m@40na3hD-4Bl6ltxrF(2rwHu~1FVfs_4l za4cfekl>p=ds7=Y`OWwADU*c#Z7eAHkAS0p(_va@@co`X1=m*BP8o{)j)0@9QWAVA zIQD1Ve4)n$2Xp;ygERRzL61W4OHAl~&Jg|mW=4Ntjd5q~Rr;nXoqRzOVs}forwa{C z8-JbEE_+4Qj9dX%R9pi6o2=$tiu!b8yJnku#{F;2?MydS4c9hYBF%gzr_r@EQ!e6Q F@gIxFGKByD diff --git a/srcs/execute/pipeutils.o b/srcs/execute/pipeutils.o deleted file mode 100644 index 56ebd0a018a6be506cf53b0460a05c46bef2a877..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6028 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 IF@|yf2P)eO6#xJL diff --git a/srcs/init/init.o b/srcs/init/init.o deleted file mode 100644 index 304457d15aaf8f3664af477e880c1af1733b40e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7220 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 J76vD8G7upf1_cDq|Jt+@$n(8JJX{=so$bM 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 diff --git a/srcs/lexer/lexer.o b/srcs/lexer/lexer.o deleted file mode 100644 index 0bf6fac9ae60038ed68f4c82624b748b5f4d9bc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6908 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 Ss^3h*dl4(%L1Cdc67(n6z{Rcr diff --git a/srcs/lexer/quote.o b/srcs/lexer/quote.o deleted file mode 100644 index b055c9e079fc07ae792676da569805559cf0a58c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8292 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 diff --git a/srcs/lexer/tokenizer.o b/srcs/lexer/tokenizer.o deleted file mode 100644 index 6d4f13e61a56edf85d9284e3217019e061c5d0a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7228 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 diff --git a/srcs/parser/syntax.o b/srcs/parser/syntax.o deleted file mode 100644 index 6d889576592158c84d0646f77ed0d0bfccb9bf59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7828 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 O|9i@@;JLUFTc7Vv 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 C(PS_H diff --git a/srcs/redirect/heredocutils.o b/srcs/redirect/heredocutils.o deleted file mode 100644 index 937d503e6fd5f90b304f477f709c7af5ca8e7c6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9504 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 UZlS~5bd^6R;CCBSg;cQr0e)s`{Qv*} diff --git a/srcs/redirect/redirection.o b/srcs/redirect/redirection.o deleted file mode 100644 index 0b25790ffd28a48a51bc61abbe64fdc2ae10b08b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6172 zcmb_geQaCR6~BJZ*YU@z?KJ%eO$ug|HXW_)^aC;y+JwZ^F=-o;v`v8W>ew%_SI0K? zb4d^#W&IdkKxzj}{4;HnnAo%p0b*ZlFljKx*wBDY+bRJ=8cgX_25h5LWn1<;_uZGo zX(rIbmCrrro_o&ko_p`R=f3CPoPYa2HH~awNMoTpZh+V~~7M z>^3kNk&l!px^5cdrX^eLf!N@{Y}=N$D3(Nc1bJi`V~a@TWQT~^Mc32DaAj04nhMsatY<-HE^(YZybif;oH^&rs~@G=*O3K@}p6a3uZPk>V( zw4A-5xrOFWB%jB*T^}j$iXVR~e)vo@e*ECM`0>iSzlfb7pZH`9&Da~@p!U$=ac527 zXe)Y}&qDVubWxByKDixocXYD$@LwJA)C=*+w&x#ZQv}g`_IT{f7ZN}O68LI(a-^-RL&Oiq2>+YXgC^b65936 z8=`21H*N@TXj#k3rBpdmGSbSYh;-L=^z_HrK;Nzyx+%Z00ll}o z7b<18kr$9V#Sid z^7JNQ`mxt#MR;o18%XayE9qGes)8aoxB#RW&^UMq2MOFv|W6nP*gtO7Km)8(|X&(AmYN(SQOeG&`}VT2P`IPdbd-4 z0C5}0;q=fQC5rlUFz$4Yg8dTYRBHKa)WiRb%E8o^z-p|1%9BoIIe!P7@w2EL{NJb* zt|A1Ldr&+164abGqIU7iQP=PYYB!sCn|zKOceg;Psx`{V@tlzEB~#^O@r-EoBVM<1 zGItla$|-2H_FaOo)f%#7E{coFPeG2|3G!MogSMgyZABGYV-?y;3+)79qC5g}?A}Xg z;Tg1W6Q<0)jc*(*s%+No1pgbUu439TTW)b{CvEvNL5jr~#f)oWKmrgc%0A*~hi6{H_-(jJ3+isV#O^MQ+)(=FOE z$O7MJXP(z!~kbv>tx}k~KWmU+7A#8PjM;yB*J|dA_mrVOEjdc<)@HBsViFbp@kG@UlEslI?Tzqpf)44ln-jiKfQ7#Xb zYK)b?O)Y77Xl;7so99PY1}CyBUw%E%@Zx=KkN=2Aezp1ek@Lr%+P~8E;vbR%t~URH`WLkQHSj ziAC9-RHL9(AQZ}hq#|qSNEaBXD5cQ`qR@#a6{P@aMJJC`bReaQju@%v)X5RY(Iyow zv{cdQB^4cN=}1>1sq!E>B3-DYqGKgPr94e4O5GBR5(ud%qev{uN~EGhC9Nn$lZx`S z#G)iYD#{sBh1T3c_bUn+Rh79nCOR(YpL+)`)Ndaf$L)R0F&=aTwHi11P!#k9+5R3K zjOl4PKBD#qk13st?2Di5xV^+W6PDF3{rWb{D}cY#3w@;nHO*J;S8++J|8M6 z(~|8E3+v+!t7e&_6VK3$?1U`d>7l30=TsSee_LfK=iam2UEwvZ1b4Z5xCVYH#DrQI z;eMC8D9o2YwIadSB>4IS-L)>>GuZ7|21otJ>g7B@g zd_%(54Ny}ZYvTczx^$2)cC~Re0sjj5b1x87*9dojv-f$>`%kD6oV%{)t^>0{A)-+c z&n%{UF<0BT4}LSl!zy!um3ng<&1dx>?Ao}J;BL4m5IwH1g3FV@oVW(a< zh;h}{L4=avHH5E@C%8lP4k|7@=Zs!}@LNAc4?Fl#RM^1vw}WHz){lW>bJq`n*MMIv z`A=wL(WWbz>>dUuyZgY&E+zH5WqSww@WYrEe;j&hZw1G>_OF)hcF9AMg9$sjvdF#( z?EnNj$1Ig?vZI17(QoG{`j3iqcG(VLZhPOnc8k?kFgH;s`OdXx`T}3|q?`Bck8k&? hFMYlG{|O!ch2)u@$`#56n6Mq8FH=2TDbj1re*x7IM3Vpj diff --git a/srcs/signal/signal.o b/srcs/signal/signal.o deleted file mode 100644 index e2c39024a7935424929c3f10b057a0a899eb602c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4396 zcmbVPeQaA-6~E6f&v}U*J8k-rve9}{w`>C2Nob(3c5Su<+|h_CX-n31dUc*(60a|I z@Uzo~r5`M9l_)Js8K6oaF^NeOR8YnK8Az-dLu)3!{(&J7AR$pPiJ=7vMCjPU?{|G) zYr8=(j(qO9=kuL=@3|lT`OUw)TQ7vB3pBtw;0&7>5U>eolK&6z$A+@vva<1c#1zD^ z^0Ta>bG)b+5X;)%JGlQg@Avwd1c31v@_a;ybrjTz(9q$cg z{VU}?&&jHWRpVuI!+Dz3#=FJ^1bkWLH)59g4@QMhsn*0xkB_^Kl}nE~9!zWF9Z>Ui zr5r}Qqt;omB&){D4?Ss9SsPDNNo=JO@Xf|Dt!P(`C-WOm+qLoTt%>*3|1n;1a(vbC z?osh#YX1KEU*p;NG2~UWO1Wd%T*k8Y_Ed~TjH~rLt%R-E2wbAWSP#}Upk}oGi@LoJh^~F3+C0 zGJWET7Cpmct}(Ya7`S64b)j@scBhwDqGxNg3#qxj#nk8iaBXE}B{kc(ID38e)zpOp zw;j&#)azK7y`H+z^-DkKDv>IZnd@6leRMH;mSvQh{?U;qUXh=VhN4?eLnKuG&9f)| zmAbI=8Az^{bHym6jj?P4TqCIxM zl*T(c+rcG1)S2kq{($fbwwLs>Be}GzNWvD$z1g8cx-gmSaV8u$KkgKgkL1V3(z(oD zRO0@8-u03LJ)iWFeQEns1A`syiH@#>mpLkG`Q!l)IV2ryue|Fx$?-yVB3*Qnec4>r z8+BY)j9AX`Y!N4Rx>)i=Hdh3KA4+?U7{v#1x*V;x6JL)bOBqiyT8BtF>7GY zpp+}ycioA6y(!BAm$Qo@esw%Ke z=#f1wyEc6+^k67}EvIjV;Gs|myQwZJ_Ou9Ltk>F5xj{p6^$EmU8{FNhN9fYFX%}>+ zAp%N3kA`hkY-2*)=@M$u^hhX#7}$B?CYc49?f7uh27F4!hc2RNj2XQLvX4O7%mhQB zhq&FpfC4NZd!{@=!lE70Uf@X};qzr8TVCFQtLT0LsMR&7yA5N02?C?8Zh$06t$bvV zithongFi$Yh?@GvE2rL+T^cp$7q6ari|pDzqZRcFYynB2cJL=?1Dnmj#VKx&z~*w? zCG-g&0BQ$+gEr7co0CkgP1-d2w*^l}?V$8dhW-vFrH8ceJLv3#wI0?)n5L3x(#-Jv zJ`>TJ!|gs3)mp>b!SJo2H*2wQ2Ax?lYqag*lFzKwc8jLN;0&tju{xmjW+V?1eHzU= z(exC^PM~gT`oo~6*36Ha_0n;Sng&gz2D($|3LdFM+$j<$)6}zpeV!>?1FoR?t(nlt zC9&!9j*01WOQBa^=(u#_Fyt<93V0s)RUjvWzOMrboMiI;I&*o+bLt43VDjH31K>iE zKST!L=Smr&HdmbGEAPd|L=2*QT!M0Z9J7v@s8d%IWsJ+YA?4v-ulnt$XF@ZV&0jzF zjUWH>wHMd*y!M&v&p+;+|LqT^y59bM zKOwp!&F2D-G^uBtwCjQ0%yQXI<+-XIOLtz`akooYCEgdIxTNg-vaS6t_ivrJ2un@V z-i|bpaBx5^o3p*jTl4?EER!X#kVG`MlyQ>Yq$k99cHBvf@+;*F88`uiR=+P)972ZQ}Zv+~r%@#v5lYt;6if2(sh37SE)z6Rq>p+O8t%+esc{ktb%J5 zoD7~qZhBIvhnfFavx*~5(ZQ=tKJSE8{miq9w&&o*hrj9Q!m`}0e&JabUxoHj%N{*y s4X3lNU~s%sB^4IllDXorux`H>nNdDx<(y-d{Kr%kVWgBUWH5$*15{nMM*si- diff --git a/srcs/utils/env.o b/srcs/utils/env.o deleted file mode 100644 index 02b46b99ce92856a6ca04614fd9dc2347c1bae94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6492 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 X!)F_OW5vf?ov!$*5J@Cbl<&U)8{vth diff --git a/srcs/utils/list.o b/srcs/utils/list.o deleted file mode 100644 index c2370e2b2f170a711d9a399fca0cec2cdd9013a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3996 zcmb7GTWl2989p<+GkdewYwS?dK(dNx3>DtB9S}|n1qW}kcI-68Kxq^-UGI+ViPyWU zow0FJNKg$`R?b6E6RDN@kV=)>htP+-G`$9ts1UVLDw_o$me?8y%&uz~9>C=xt3kjhF1YY1Ec!;kg7_bk9DLIeui__BD$|fQU!PvvDC*I)dU1g-?c2FsBw~4BM%?F2fl4=J4T1 z{jl(HPD#8=+FHn0Tv*@m@p4mBRdbQ`Zp6DLv#-bo`#HFc)Dq7sO_!P0jCVoK>2+D3 z7WTki!FY8~ZNke{Dn-*M<>pPh1>UQ2e6M?L#m5n;tc#X-<*8@#OlhufSQfEew*R4A z=XE%5S$x|t8tSX$^38Z=6W(wCM?B}*O3U%qB;Elze}DV0c=_@?>T-;Q(n+gSFpTjL zzjn$iay`#TXR=KQF3~$!5AH)y)BKsU#&i{{;ROw2<9^P{^?cI{i`OKcG#L|wx;E4|h;R?sjdetY4kj^){u^?ijduv~By65j%0}Y2 z$s2$h6aIsKG+VotUA~cciv|2HiPv>zXKR_8+2zwWMaMY~AbUAer+byNm0dxsmZ?M5 zv&-)!PP{#x>bUnOiQBH@q)GU&-8BzNpkPx7<;zi~??=zWO2H5IOPoFh2{) zd@)y=NiLdI+bWlm1B0plRDW`Z>+KsD?1zbWO>*d(ibEa_SD+2lG{-khYc@(O2Dqo6s zX@U56PsRW7LOk(>d*hwTCVZLH-69Yl?K-gKE3vP}RGhcKb~wHki($V8gUV=EARdb` zCWN*Fk*zp|dWRV8!lk(xA`th2;Vxx8Gt%yYGBSjQ(GSm zXCU4J2h~pPeMq7G1usPeeh(1}>b$=~&*Sx1u=-H=8bngVqPZ@b%tc1RC}+aL?Mk!cU8GY=}wSCFn8rd}W5#W?G`n|9ax*0eO!w za$mc8ere9t{*E`SO4+q!`&pY-(rq98Gf_a3VCC317)de0RxXBXiD*9}q=&)Ev8S20 zm*ZUPYp+CimKb}OF`>JCWG9ESY|T$48F!LP^eOVUgE~L>_`clb%06@Mgdm8>C_!Rgh@Q=V8Fx!ss1!7@TUzavF3{_rCBo2`FSsCZVQr#+T zzgB5}u2$Cf|K#xgBzJ>J92>_Rz)S??Zz?ex$IdfBABpqze!lx&=Ot@f|CtwKKiOH> z_TKmRy^&A8da8b9_w&Eh(tp@&&0&&n*GDY|CBGK+hdE^cV);-R36=S23%<3iUZu*Bk_ zrRxbW$KF60PiJ%kHST%@J{ND?)ve-K@*tOlyV5C4N%o@f5n$gtr4V1_gUo z6y;95or04CR;*IqZn%eqs8|&GFE!h71Nogwmxzx1w!|p3`*wsut28 zhdizY^cgMsuBPf^ngW*yPiUd&Z7qgS$FwFB!rwyvn1&~+&uT%)@EBU|*Y0^r>xLEC zr-hJ@_QYu)lS+)3`!#VJkjrbmsqbnL;Hqe*U(n)c5E?_fQ7!sZLm2~_j!M-9P5-$T zIlrFvm=-;Ow0)|IiTN>xg|YW>V`AI&UEn0)#GI2dBjq+J4!Es56)*#X7hvu)D$_b5Vc9Kxl&cr)MMqlaKK$0zxJt)ga+jP;)isk*-k#>U?s V8Cv_{khc4qK|P-<7Rz}c{tL`idVBx? diff --git a/srcs/utils/list_clear.o b/srcs/utils/list_clear.o deleted file mode 100644 index e10d8c58258a99940e27a02b8ffebb3ae522d9fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3432 zcmb7G|8G-O6um=D>LFr&pr2i z&bjBEd+)jT_KRCT-*z)5NDK|w1#YJ%3ho4C*PM9C;o-bCN%<~~H^{x;;e*~*%17J%W#j3_NS3UX@w|LZpXd1{X|X^b zW4?STE8-<{xs0Y7$qCJbUuC?P`5);rl_GOxJc+MYBM)%E%R7r= z*?4w-xn!y`-o}b}$L=zobvU=|e0zDk4!(Y`{b#&Xb^>`>YQZ?98);ST>t37+V>5g| zJ2^O8#TaeTx7ZIp(Te$MW9mpAyHOgTs!QwnOCE2G$7{ktC_hF}9h2?h)L%w7?1+`? z*UsxhS&^l4k2?hFF*0IDsAri-3g=!-t5 zE-mU)#Sr{40d6ja7Hy8-)WzVz3pMvKo=>RBV)(i(|HV&NtmZEk6e zL5pl|jkLCJVrD*NMhljnF{2sXwA55aOXedf7VXoA^U3_-Xty@0WwJRfAKjjvm`EDw zK9t8mHj4rM-MwaXS2FcP|6ofj(y}FDrpH;O9^Gpqji`p2&t^0&n#=2xNlT0F(hc1l z(=r)0s%k~u!Zn(-3MSJHi)rdGKEMiwsgD|3I!xG(uD<>rHn3-J4;!)6jA^Bj77Deb z*l9DM3^vSznI)0SYs{cq-^z|_28<U+c|qQs>}0FU~7 zsBD)@*jX9|sTUT5`>X9dC|)}qsuMVYrMuZuD@H45=5*d^A=-#{|?8XAE~pF_A^3$M~kgzozRtyJe0PZ$5Tdtaet$_%w2x@d%b zzoM1aE%>ZEjx;^u>D&QG=>Zx6ZA>Mt(H`&p8d%l$G#H?`*+&x#i_QKT$khZznZMrY z$2|TJ*$Hn6`u9WX)Nc(jFU9b#hgKCsb1%UU`Zhp>#72Jvl2$?7!2Fw?{zjL-3w=96 zlgFPxzW^3D1)0}CN9sYN2vv_`;BGRk^x8Sc`@7;$?JJnBVcdQ;5hk$Gs^LW26gt;$ zzPW93DsG*-MsEcDOG$%ip~(LgFcEDN>8+%IXt7B*NC7$DB#fx?oAj~&<3leT@d^qC zqIpp668<2$_#Z8bNmn*Wvb%Vnbh>}9rdF)BUewpdj=$i0eN%evl{4GkO@&`Qa`STA zGaty&&$e71xpfwPZ-74pUjcsy{tc{PA`Re&!L;T0G1@^K2O=s4f~Y!H5y04aFhR79 zjbIRM3PH4M+>0ugpiwaQqFp42wvT30SEu2C7z$>@fqt11fLhTS33ui{JOzK?nh_O zrV78?09`DBRuF{00@Wla8L*%mDYNX&U@WKSw8$9QaB&t=R;j<_DWPI;Nz6;qCaF%4 z-BlmSiZUom%BZXiDKoNL8I%1=LUtzxWiP-0`YRK%D-s2fsLcF59`c2`geqGDIkRV0cz zHBUhz@8&~X9^kT<%QKMhQ|J#i$qq;qeP9FE!(2kx_8~5VkaSl$d%l+I5H>x87Ul(_ aK3H5RD0S(psg^&3T;UHS{vvAjR{sN^5Dn)5 diff --git a/srcs/utils/temp.o b/srcs/utils/temp.o deleted file mode 100644 index 2fc91dae72206aaf06c9302d31bcbd72a45df350..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7780 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 ez9H>s%zAi9ean*#e<)2;7jc0Bm4)ohzj`t diff --git a/srcs/utils/utils.o b/srcs/utils/utils.o deleted file mode 100644 index 6a8bcdc8e6b1cd0fda3565f7a798261d216ad0e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6008 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 s!o+PjSF+Q%|H5kHI&Uf&eQ6FYoux^ Date: Sun, 13 Aug 2023 17:16:10 +0900 Subject: [PATCH 25/57] fix norm --- Makefile | 1 + incs/bulitin.h | 73 +++++++++------- incs/freepipe.c | 37 --------- incs/minishell.h | 8 +- incs/parse.h | 10 ++- incs/pipe.h | 47 ++++++----- incs/struct.h | 23 +++--- incs/utils.h | 7 +- srcs/.DS_Store | Bin 6148 -> 6148 bytes srcs/builtin/builtin_utils.c | 156 ++++++++++++++++------------------- srcs/builtin/ft_atolong.c | 4 +- srcs/builtin/ft_echo.c | 66 +-------------- srcs/builtin/ft_unset.c | 5 +- srcs/execute/checkbulitin.c | 53 +++++++----- srcs/execute/execve.c | 144 ++++++++++++++++++-------------- srcs/execute/freepipe.c | 6 +- srcs/execute/pipe.c | 52 ++++++++---- srcs/execute/pipeutils.c | 59 ++++++++----- srcs/execute/setpath.c | 61 +++++++++----- srcs/init/init.c | 17 ++-- srcs/lexer/expand.c | 105 +++-------------------- srcs/lexer/expand_check.c | 107 ++++++++++++++++++++++++ srcs/lexer/lexer.c | 61 +++++++------- srcs/lexer/lexer_utils.c | 11 ++- srcs/lexer/quote.c | 31 ++++--- srcs/lexer/tokenizer.c | 8 +- srcs/minishell.c | 18 ++-- srcs/redirect/heredoc.c | 112 ++++++++++++++++++++++--- srcs/redirect/heredocutils.c | 153 ++++++++-------------------------- srcs/redirect/redirection.c | 78 ++++++++++-------- srcs/signal/signal.c | 48 ++++++----- srcs/utils/env.c | 9 +- srcs/utils/utils.c | 14 ++-- 33 files changed, 818 insertions(+), 766 deletions(-) delete mode 100644 incs/freepipe.c create mode 100644 srcs/lexer/expand_check.c diff --git a/Makefile b/Makefile index 4f43cae..0709f70 100644 --- a/Makefile +++ b/Makefile @@ -18,6 +18,7 @@ SRCS = $(SRCS_DIR)/minishell.c \ $(SRCS_DIR)/lexer/tokenizer.c \ $(SRCS_DIR)/lexer/quote.c \ $(SRCS_DIR)/lexer/expand.c \ + $(SRCS_DIR)/lexer/expand_check.c \ $(SRCS_DIR)/lexer/lexer_utils.c \ $(SRCS_DIR)/parser/syntax.c \ $(SRCS_DIR)/parser/parser.c \ diff --git a/incs/bulitin.h b/incs/bulitin.h index 734d747..9f30d5a 100644 --- a/incs/bulitin.h +++ b/incs/bulitin.h @@ -1,40 +1,53 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* bulitin.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/13 16:06:06 by eunwolee #+# #+# */ +/* Updated: 2023/08/13 16:12:07 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + #ifndef BULITIN_H # define BULITIN_H # include "struct.h" - -#define LLONG_MAX 9223372036854775807 -#define LLONG_MIN (-LLONG_MAX - 1) - /*signal*/ -void sig(void); -void handle_sigint(int sig); -void init_base(int ac); -void child_handler(int signum); + +# define LLONG_MAX 9223372036854775807 +# define LLONG_MIN (-LLONG_MAX - 1) + +/*signal*/ +void sig(void); +void handle_sigint(int sig); +void init_base(int ac); +void child_handler(int signum); /*builtin*/ -void exec_bulitin(int bulitnum,t_data *data); -int check_bulitin_func(char *name); -void ft_cd(t_data *data, t_leaf *cur_root); -void ft_echo(t_leaf *cmd); -void ft_exit(t_data *data, t_leaf *cur_root); -void ft_pwd(t_data *data, t_leaf *cur_root); -void ft_unset(t_data *data, t_leaf *cur_root); -void ft_export(t_data *data, t_leaf *cur_root); -void ft_env(t_data *data, t_leaf *cur_root); -char *check_keyval(t_data *data, char *str); -void abs_init(t_data *data); -char **sort_bubble(char **str, int size); -int check_name(char *str); -int check_underbar(char ch); -char **sort_bubble(char **str, int size); +void exec_bulitin(int bulitnum, t_data *data); +int check_bulitin_func(char *name); +void ft_cd(t_data *data, t_leaf *cur_root); +void ft_echo(t_leaf *cmd); +void ft_exit(t_data *data, t_leaf *cur_root); +void ft_pwd(t_data *data, t_leaf *cur_root); +void ft_unset(t_data *data, t_leaf *cur_root); +void ft_export(t_data *data, t_leaf *cur_root); +void ft_env(t_data *data, t_leaf *cur_root); +char *check_keyval(t_data *data, char *str); +char **sort_bubble(char **str, int size); +int check_name(char *str); +int check_underbar(char ch); +char **sort_bubble(char **str, int size); long long char_to_long_long(char *str, int *flag); -int is_num_str(char *str); -void exit_not_num(t_data *data, char *str); +int is_num_str(char *str); +void exit_not_num(t_data *data, char *str); + /*builtin utils*/ -char **join_cmd(t_leaf * com_leaf); -int count_args(char **args); -t_list *create_env_node(char *key, char *value); -void add_env_back(t_data *head, char *key, char *value); -void update_env(t_data *data, char *key, char *value); +char **join_cmd(t_leaf *com_leaf); +int count_args(char **args); +t_list *create_env_node(char *key, char *value); +void add_env_front(t_data *head, char *key, char *value); +void update_env(t_data *data, char *key, char *value); #endif \ No newline at end of file diff --git a/incs/freepipe.c b/incs/freepipe.c deleted file mode 100644 index 39ccbcf..0000000 --- a/incs/freepipe.c +++ /dev/null @@ -1,37 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* freepipe.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/08/08 17:49:42 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 23:07:36 by kichlee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../../incs/minishell.h" - -void close_pipe(int i, t_pipe *base,t_data *data) -{ - if (i == data->info->pipe_num) - close(base->com[i - 1].fd[0]); - else if (i == 0) - close(base->com[i].fd[1]); - else - { - close(base->com[i - 1].fd[0]); - close(base->com[i].fd[1]); - } -} - -void check_file(int fd,t_data *data) -{ - if (fd < 0) - { - close(fd); - data->error_code = 1; - if (data->info->parent ==1) // 자식에서 종료 or 부모에서 종료 확인해주기 - program_error_exit("bash"); - } -} diff --git a/incs/minishell.h b/incs/minishell.h index f910b25..bc732f3 100644 --- a/incs/minishell.h +++ b/incs/minishell.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:05:33 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 17:52:44 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 16:03:55 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,10 +16,12 @@ # include # include # include -#include +# include # include # include # include +# include +# include # include "struct.h" # include "init.h" # include "parse.h" @@ -29,7 +31,5 @@ # include "pipe.h" # include "message.h" # include "../Libft/libft.h" -#include -#include #endif \ No newline at end of file diff --git a/incs/parse.h b/incs/parse.h index 38f2c15..e6533fb 100644 --- a/incs/parse.h +++ b/incs/parse.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/04 07:53:54 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 14:07:59 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 17:02:14 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,6 +28,7 @@ void lexer(t_data *data); /*lexer_uitls*/ t_bool check_end(char c); t_bool check_last_blank(char *str, int i); +void quote_utils(char *input, t_token **token, int *i); t_bool syntax(t_data *data); @@ -35,4 +36,11 @@ void parser(t_data *data); t_bool expand(t_data *data, t_token **token, int *i, t_bool quote); +/*expand_check*/ +t_bool check_heredoc(t_data *data, t_token *token, int *i); +t_bool check_question(t_data *data, t_token *token, int *i); +t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote); +t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote); +t_bool check_special(t_data *data, t_token *token, int *i); + #endif \ No newline at end of file diff --git a/incs/pipe.h b/incs/pipe.h index 7ffcaa8..9a36635 100644 --- a/incs/pipe.h +++ b/incs/pipe.h @@ -1,30 +1,39 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* pipe.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/13 16:03:34 by eunwolee #+# #+# */ +/* Updated: 2023/08/13 16:03:34 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + #ifndef PIPE_H # define PIPE_H -int g_exit_status; -//info init void info_init(t_info **info); -void pipe_init(t_pipe **pipe); +void pipe_init(t_pipe **pipe); void count_pipe(t_data*data); -void execute_cmd(t_data *data,int flag); -int fork_heredoc(t_data *data); -int check_bulitin(t_data * data); -void heredoc_flag(t_leaf *leaf,t_data *data); -void check_file(int fd,t_data *data); -void check_redirect(t_leaf *leaf,t_data *data); -void recover_std(t_data *data); -// void mk_heredoc(t_data *data); -void mk_heredoc_pipe(t_data *data); -void link_pipe(int i, t_pipe *base,t_data *data); -void check_redirect(t_leaf *leaf,t_data *data); -void do_cmd(t_data *data); -void exec_fork(t_data *data); +void execute_cmd(t_data *data, int flag); +int fork_heredoc(t_data *data); +int check_bulitin(t_data *data); +void heredoc_flag(t_leaf *leaf, t_data *data); +void check_file(int fd, t_data *data); +void check_redirect(t_leaf *leaf, t_data *data); +void recover_std(t_data *data); +void mk_heredoc_pipe(t_data *data); +void link_pipe(int i, t_pipe *base, t_data *data); +void do_cmd(t_data *data); +void exec_fork(t_data *data); void abs_path(t_data *data); char *set_path(t_data *data, t_leaf *leaf); -char **join_cmd(t_leaf * com_leaf); -void close_pipe(int i, t_pipe *base,t_data *data); +char **join_cmd(t_leaf *com_leaf); +void close_pipe(int i, t_pipe *base, t_data *data); void wait_child_processes(t_data *data); -char *search_path(t_pipe *base); +char *search_path(t_pipe *base, t_data *data); void execute(t_data *data); +void write_str(char *content, int fd, t_data *data); #endif \ No newline at end of file diff --git a/incs/struct.h b/incs/struct.h index 964681d..996271c 100644 --- a/incs/struct.h +++ b/incs/struct.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:24:15 by eunwolee #+# #+# */ -/* Updated: 2023/08/12 15:57:40 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 16:03:30 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,7 @@ # define STRUCT_H # define BUF_SIZE 1024 + typedef enum e_bool { FALSE, @@ -41,7 +42,6 @@ typedef struct s_token t_bool blank; } t_token; -//tokens와 envs에서 통용되는 리스트 구조체 typedef struct s_list { struct s_list *pre; @@ -69,21 +69,19 @@ typedef struct s_pid typedef struct s_pipe { t_pid *com; - - char **cmd_path;//명령어 +옵션 + char **cmd_path; char *command; - char **cmd_abs; // 절대경로 + char **cmd_abs; } t_pipe; typedef struct s_info { - // 항상 기준은 파이프 한커맨드라는건 파이프 기준으로 < 히어독은 포크로 진행되기때문에 - char **heredoc_file; // 한 커맨드에 여러개 리다이렉션이 들어올수 있다 - int oristdin; // 이놈은 redirection이 나오면 fd 가변경 되는데 안돌려주면 계속 그 fd 를 사용 - int oristdout; // 같은이유 - int pipe_num; // fork 를 해주기위해서 갯수가 필요함 + int index; + int heredoc_flag; + char **heredoc_file; + int oristdin; + int oristdout; + int pipe_num; int parent; int pipe_index; } t_info; @@ -101,5 +99,4 @@ typedef struct s_data char *abs_home; } t_data; - #endif \ No newline at end of file diff --git a/incs/utils.h b/incs/utils.h index 4268ded..7018541 100644 --- a/incs/utils.h +++ b/incs/utils.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:32:09 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 08:38:22 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 16:03:25 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -34,16 +34,15 @@ t_bool tree_add_left(t_leaf *parent, t_token *new_token, int leaf_type); t_bool tree_add_right(t_leaf *parent, t_token *new_token, int leaf_type); void tree_clear(t_leaf *leaf); -t_bool error_back_readline(t_data *data, char *str, int error_code,int flag); +t_bool error_back_readline(t_data *data, char *str, int error_code, int flag); void program_error_exit(char *str); void input_free(t_data *data); void data_free(t_data *data); -void init_base(int ac); +void init_base(int ac); /*temp.c 임시 함수*/ void tree_print(t_leaf *leaf); void print_token(t_data *data); void env_array_print(t_data *data); void check_leak(void); - #endif \ No newline at end of file diff --git a/srcs/.DS_Store b/srcs/.DS_Store index 9f6e21599556c132a1142caeb9dfa1b51b490c5d..560a81880407bb203c19c3557b05a18e2c68e33a 100644 GIT binary patch delta 36 scmZoMXfc@J&&atkU^g=(=VTrh!_C<&8yPqIu +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/22 13:20:41 by eunwolee #+# #+# */ -/* Updated: 2023/08/10 21:59:09 by kichlee ### ########.fr */ +/* Updated: 2023/08/13 17:15:16 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,28 +14,28 @@ int count_args(char **args) { - int count; - - count = 0; - while (*args != NULL) - { - count++; - args++; - } - return (count); + int count; + + count = 0; + while (*args != NULL) + { + count++; + args++; + } + return (count); } -char **join_cmd(t_leaf * com_leaf) +char **join_cmd(t_leaf *com_leaf) { - int i; - char **str; - t_leaf *temp; - t_leaf *leaf; - - i = 1; - temp = com_leaf; - leaf = com_leaf; - while(temp && temp->right_child) + int i; + char **str; + t_leaf *temp; + t_leaf *leaf; + + i = 1; + temp = com_leaf; + leaf = com_leaf; + while (temp && temp->right_child) { temp = temp->right_child; i++; @@ -46,47 +46,42 @@ char **join_cmd(t_leaf * com_leaf) str[0] = leaf->token->str; i = 1; while (leaf) - { - if (leaf->right_child) - { - str[i] = leaf->right_child->token->str; - leaf = leaf->right_child; - i++; - } - else - break ; - } + { + if (leaf->right_child) + { + str[i] = leaf->right_child->token->str; + leaf = leaf->right_child; + i++; + } + else + break ; + } return (str); } -t_list *create_env_node(char *key, char *value) +t_list *create_env_node(char *key, char *value) { - printf("\ncreate env_node start!\n"); - t_list *new_node = (t_list *)malloc(sizeof(t_list)); - char *key_equal; - - if (!new_node) - return NULL; + t_list *new_node; + char *key_equal; - new_node->pre = NULL; - new_node->next = NULL; - new_node->token = (t_token *)malloc(sizeof(t_token)); - if (!new_node->token) - { - free(new_node); - return NULL; - } - new_node->token->type = T_CMD; // 환경 변수는 T_CMD로 설정 - new_node->token->redirect_type = 0; // 환경 변수의 리다이렉션 타입은 0으로 설정 - new_node->token->str = key; // key 값을 환경 변수 노드의 token의 str에 할당 - key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key) + 2); - key_equal = ft_strdup(key); - key_equal[ft_strlen(key)] = '='; - key_equal[ft_strlen(key) + 1] = '\0'; - printf("\n===========keyequl=======%s\n", key_equal); - new_node->env = ft_strjoin(key_equal, value); - - return new_node; + new_node = (t_list *)ft_calloc(sizeof(t_list)); + if (!new_node) + return (NULL); + new_node->token = (t_token *)ft_calloc(sizeof(t_token)); + if (!new_node->token) + { + free(new_node); + return (NULL); + } + new_node->token->type = T_CMD; + new_node->token->redirect_type = 0; + new_node->token->str = key; + key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key) + 2); + key_equal = ft_strdup(key); + key_equal[ft_strlen(key)] = '='; + key_equal[ft_strlen(key) + 1] = '\0'; + new_node->env = ft_strjoin(key_equal, value); + return (new_node); } void ft_lstadd_front(t_list **lst, t_list *new) @@ -97,34 +92,29 @@ void ft_lstadd_front(t_list **lst, t_list *new) *lst = new; } -void add_env_front(t_data *head, char *key, char *value) +void add_env_front(t_data *head, char *key, char *value) { - if (head->envs == NULL) - { - printf("\nenv dose not exit!\n"); - head->envs = create_env_node(key, value); - } - else - { - printf("\nenv exit!\n"); - ft_lstadd_front(&(head->envs), create_env_node(key, value)); - } + if (head->envs == NULL) + head->envs = create_env_node(key, value); + else + ft_lstadd_front(&(head->envs), create_env_node(key, value)); } -void update_env(t_data *data, char *key, char *value) +void update_env(t_data *data, char *key, char *value) { - t_list *tmp; - char *key_equal; - tmp = env_search(data, key); - if (!tmp) - add_env_front(data, key, value); - else - { - free(tmp->env); - key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key) + 2); - key_equal = ft_strdup(key); - key_equal[ft_strlen(key)] = '='; - key_equal[ft_strlen(key) + 1] = '\0'; - tmp->env = ft_strjoin(key_equal, value); - } + t_list *tmp; + char *key_equal; + + tmp = env_search(data, key); + if (!tmp) + add_env_front(data, key, value); + else + { + free(tmp->env); + key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key) + 2); + key_equal = ft_strdup(key); + key_equal[ft_strlen(key)] = '='; + key_equal[ft_strlen(key) + 1] = '\0'; + tmp->env = ft_strjoin(key_equal, value); + } } diff --git a/srcs/builtin/ft_atolong.c b/srcs/builtin/ft_atolong.c index e5ef585..781989d 100644 --- a/srcs/builtin/ft_atolong.c +++ b/srcs/builtin/ft_atolong.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* ft_atolong.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/10 20:31:59 by kichlee #+# #+# */ -/* Updated: 2023/08/10 20:38:53 by kichlee ### ########.fr */ +/* Updated: 2023/08/13 16:10:44 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/builtin/ft_echo.c b/srcs/builtin/ft_echo.c index c235532..f572520 100644 --- a/srcs/builtin/ft_echo.c +++ b/srcs/builtin/ft_echo.c @@ -6,80 +6,20 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:30:59 by kichan #+# #+# */ -/* Updated: 2023/08/12 21:30:31 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 17:09:55 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" void ft_echo(t_leaf *cmd); -// static void check_flag(char **av, int *idx, int *flag); -// static void print_line(char *line); static void check_flag(t_leaf *cmd, int *cnt, int *flag); static void print_line(t_leaf *cmd); -// void ft_echo(t_leaf *cmd) -// { -// int i; -// int flag; -// int blank; -// char **cmd; - -// cmd = join_cmd(cmd->left_child->right_child); -// blank = count_args(cmd); -// i = 1; -// flag = FALSE; -// check_flag(cmd, &i, &flag); -// while (cmd[i]) -// { -// print_line(cmd[i]); -// if(i < blank - 1) -// printf(" "); -// i++; -// } -// if (flag == FALSE) -// printf("\n"); -// } - -// static void check_flag(char **av, int *idx, int *flag) -// { -// int i; -// int j; - -// i = 1; - // while (av[i] && av[i][0] == '-' && av[i][1] == 'n') -// { -// j = 1; -// while (av[i][j] != '\0') -// { -// if (av[i][j] != 'n') -// return ; -// j++; -// } -// i++; -// *idx += 1; -// *flag = TRUE; -// } -// } - -// static void print_line(char *line) -// { -// int i; - -// i = 0; -// while (line[i]) -// { -// if (line[i] == '$' && line[i + 1] != '\0') -// break ; -// printf("%c", line[i]); -// i++; -// } -// } - void ft_echo(t_leaf *cmd) { - int cnt; - int flag; + int cnt; + int flag; cnt = 0; flag = FALSE; diff --git a/srcs/builtin/ft_unset.c b/srcs/builtin/ft_unset.c index bbf6517..2df55f1 100644 --- a/srcs/builtin/ft_unset.c +++ b/srcs/builtin/ft_unset.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* ft_unset.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 22:51:02 by kichlee #+# #+# */ -/* Updated: 2023/08/09 19:29:16 by kichlee ### ########.fr */ +/* Updated: 2023/08/13 16:42:31 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,4 +28,5 @@ void ft_unset(t_data *data, t_leaf *cur_root) env_remove(data, cmd[i]); ++i; } + data->env_array = env_to_array(data); } diff --git a/srcs/execute/checkbulitin.c b/srcs/execute/checkbulitin.c index 79ff96f..b49aa09 100644 --- a/srcs/execute/checkbulitin.c +++ b/srcs/execute/checkbulitin.c @@ -1,24 +1,37 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* checkbulitin.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/13 17:07:47 by eunwolee #+# #+# */ +/* Updated: 2023/08/13 17:07:50 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "../../incs/minishell.h" -int check_bulitin(t_data * data) +int check_bulitin(t_data *data) { - int bulit; + int bulit; + t_leaf *temp; - bulit = check_bulitin_func(data->root->left_child->right_child->token->str); - if(data->root->left_child->right_child == NULL) //no command but redirection 존재 - { - check_redirect(data->root,data); // redirection 실행 - recover_std(data); // 다시 돌려놔줘야함 안그러면 redirect로 바꾼곳으로 계속출력됨 - // free(data); - return (TRUE); - } - if(bulit != 0) - { - check_redirect(data->root,data); - exec_bulitin(bulit,data);// flag 에 따라 return 부모 프로세스 or exit 자식 쿠 - recover_std(data); // 커맨드가 하나이기 때문에 바로 종료 - // free(data); - return (TRUE); - } - return (FALSE); -} \ No newline at end of file + temp = data->root->left_child->right_child; + if (temp != NULL) + bulit = check_bulitin_func(temp->token->str); + if (temp == NULL) + { + check_redirect(data->root, data); + recover_std(data); + return (TRUE); + } + if (bulit != 0) + { + check_redirect(data->root, data); + exec_bulitin(bulit, data); + recover_std(data); + return (TRUE); + } + return (FALSE); +} diff --git a/srcs/execute/execve.c b/srcs/execute/execve.c index fb6ceff..0a9b1ce 100644 --- a/srcs/execute/execve.c +++ b/srcs/execute/execve.c @@ -1,19 +1,33 @@ -#include "../../incs/minishell.h" +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* execve.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/13 17:07:56 by eunwolee #+# #+# */ +/* Updated: 2023/08/13 17:08:02 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ +#include "../../incs/minishell.h" void do_cmd(t_data *data) { - int builtnum; + int builtnum; + t_leaf *temp; - builtnum = check_bulitin_func(data->root->left_child->right_child->token->str); + temp = data->root->left_child->right_child; + if (temp != NULL) + builtnum = check_bulitin_func(temp->token->str); if (data->root->left_child->left_child != NULL) - check_redirect (data->root,data); // redirect가 있는거는 먼저실행 - if (data->root->left_child->right_child== NULL) //커맨드가 없을때 종료하기 + check_redirect (data->root, data); + if (temp == NULL) exit(0); if (builtnum != 0) { exec_bulitin(builtnum, data); - exit(0); // 실행 후 종료돼야함 + exit(0); } else exec_fork(data); @@ -22,79 +36,83 @@ void do_cmd(t_data *data) void execute(t_data *data) { count_pipe(data); - data->env_array = env_to_array(data); - heredoc_flag(data->root,data); //heredoc 이 있는 지판별해준다 - data->info->heredoc_file= (char **)ft_calloc(data->info->heredoc_flag+1,sizeof(char *)); - if (!data->info->heredoc_file) // 파이프 기준으로 <root, data); + data->info->heredoc_file = (char **)ft_calloc(data->info->heredoc_flag + 1, \ + sizeof(char *)); + if (!data->info->heredoc_file) program_error_exit("bash"); - if (!data->info->pipe_num && !data->info->heredoc_flag)//단일 커맨들일때 히어독도 x - if(check_bulitin(data) == TRUE) // bulitin 일때는 바로 실행하고 종료 아닌경우에는 sigle command frok 해야함 + if (!data->info->pipe_num && !data->info->heredoc_flag) + if (check_bulitin(data) == TRUE) return ; - if(data->info->heredoc_flag) // heredoc 일 경우에는 무조건 fork 를 해줘야함 - { // 시그널 함수 때문인거같음 ctrl +d 눌렀을때 종료가되면안되는데 포크안햇을시 종료가됨 + if (data->info->heredoc_flag) + { if (fork_heredoc (data)) - { - // free(data); return ; - } } - execute_cmd(data,0); //그 외일경우 실행해 주기 - // free(data); + execute_cmd(data, 0); } -void exec_fork(t_data *data) // 이제경로 찾고 하던 대로해주면됨 +void exec_fork(t_data *data) { - t_pipe *base = data->pipe; - if(!data->root->left_child->right_child) + t_pipe *base; + + base = data->pipe; + if (!data->root->left_child->right_child) return ; - abs_path(data); - base->command = set_path(data ,data->root->left_child->right_child); + abs_path(data); + base->command = set_path(data, data->root->left_child->right_child); if (!base->command) - program_error_exit("bash"); + { + printf("bash: %s: command not found\n", \ + data->root->left_child->right_child->token->str); + data->error_code = 127; + exit(data->error_code); + } execve(base->command, base->cmd_path, data->env_array); - // if (execve(base->command, base->cmd_path, data->env_array) == -1) - // exit(1); } -void execute_cmd(t_data *data,int flag) // flag 는 자식이랑 부모 차이를 두기위해서 주는거임 -{ // 부모에서 exit 하면 return 자식에서 하면 exit - int i; +void execute_single_cmd(t_data *data, t_pipe *base, int i, int flag) +{ + if (i < data->info->pipe_num) + if (pipe(base->com[i].fd) < 0) + error_back_readline(data, "bash", EPIPE, 1); + base->com[i].pid = fork(); + if (base->com[i].pid == -1) + { + if (flag) + program_error_exit("bash"); + else + error_back_readline(data, "bash", ENOMEM, 1); + } + if (base->com[i].pid == 0) + { + signal(SIGINT, child_handler); + signal(SIGQUIT, child_handler); + data->info->parent = 1; + if (data->info->pipe_num != 0) + link_pipe(i, base, data); + do_cmd(data); + } + else + data->root = data->root->right_child; + if (data->info->pipe_num) + close_pipe(i, base, data); +} + +void execute_cmd(t_data *data, int flag) +{ + int i; + t_pipe *base; + t_leaf *head; - i = data->info->pipe_index; - t_pipe *base = data->pipe; - t_leaf *head = data->root; - + i = 0; + base = data->pipe; + head = data->root; while (i < data->info->pipe_num + 1) { - signal (SIGINT, SIG_IGN); - if (i < data->info->pipe_num) - if (pipe(base->com[i].fd) < 0) - error_back_readline(data,"bash",EPIPE,1); - base->com[i].pid = fork(); - if (base->com[i].pid == -1) - { - if (flag) - program_error_exit("bash"); // 자식일때는 exit ; - else - error_back_readline(data,"bash",ENOMEM ,1); - } - if (base->com[i].pid == 0) - { - signal (SIGINT, child_handler); - data->info->parent =1; - if (data->info->pipe_num !=0) - link_pipe(i, base,data); - do_cmd(data); - } - else - data->root = data->root->right_child; // pipepe 순회하기 root 바꿔주기 - if (data->info->pipe_num) - close_pipe(i, base,data); - signal(SIGQUIT, SIG_IGN); + execute_single_cmd(data, base, i, flag); i++; } - data->root = head; // root 는 원래 root 로 다시 돌려주기 + data->root = head; wait_child_processes(data); - - // free_cmd(base); -} \ No newline at end of file +} diff --git a/srcs/execute/freepipe.c b/srcs/execute/freepipe.c index 988d743..be50156 100644 --- a/srcs/execute/freepipe.c +++ b/srcs/execute/freepipe.c @@ -12,7 +12,7 @@ #include "../../incs/minishell.h" -void close_pipe(int i, t_pipe *base,t_data *data) +void close_pipe(int i, t_pipe *base, t_data *data) { if (i == data->info->pipe_num) close(base->com[i - 1].fd[0]); @@ -25,13 +25,13 @@ void close_pipe(int i, t_pipe *base,t_data *data) } } -void check_file(int fd,t_data *data) +void check_file(int fd, t_data *data) { if (fd < 0) { close(fd); data->error_code = 1; - if (data->info->parent ==1) // 자식에서 종료 or 부모에서 종료 확인해주기 + if (data->info->parent == 1) program_error_exit("bash"); } } diff --git a/srcs/execute/pipe.c b/srcs/execute/pipe.c index 1032e9d..d92dc6f 100644 --- a/srcs/execute/pipe.c +++ b/srcs/execute/pipe.c @@ -1,41 +1,65 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* pipe.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/13 17:08:11 by eunwolee #+# #+# */ +/* Updated: 2023/08/13 17:08:23 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "../../incs/minishell.h" -void link_pipe(int i, t_pipe *base, t_data *data) +void link_pipe(int i, t_pipe *base, t_data *data) { if (i == data->info->pipe_num) { - if (dup2(base->com[i - 1].fd[0], STDIN_FILENO) == -1 || close(base->com[i - 1].fd[0]) == -1) + if (dup2(base->com[i - 1].fd[0], STDIN_FILENO) == -1 \ + || close(base->com[i - 1].fd[0]) == -1) error_back_readline(data, "Bad file descriptor", EBADF, 1); } else if (i == 0) { - if (close(base->com[i].fd[0]) == -1 || dup2(base->com[i].fd[1], STDOUT_FILENO) == -1 || close(base->com[i].fd[1]) == -1) + if (close(base->com[i].fd[0]) == -1 \ + || dup2(base->com[i].fd[1], STDOUT_FILENO) == -1 \ + || close(base->com[i].fd[1]) == -1) error_back_readline(data, "Bad file descriptor", EBADF, 1); } else { - if (close(base->com[i].fd[0]) == -1 || dup2(base->com[i - 1].fd[0], STDIN_FILENO) == -1 || dup2(base->com[i].fd[1], STDOUT_FILENO) == -1) + if (close(base->com[i].fd[0]) == -1 \ + || dup2(base->com[i - 1].fd[0], STDIN_FILENO) == -1 \ + || dup2(base->com[i].fd[1], STDOUT_FILENO) == -1) error_back_readline(data, "Bad file descriptor", EBADF, 1); } } -// 정상 종료 확인해주고 수정; -void wait_child_processes(t_data *data) +void wait_child_processes(t_data *data) { - int i; - int status; + int i; + int status; i = 0; + signal (SIGINT, SIG_IGN); while (i < data->info->pipe_num + 1) - { + { waitpid(-1, &status, 0); i++; } - if (WIFSIGNALED(status) ==1 && data->info->heredoc_flag!=0) // signal 에 의해 종료가 되었는지 아닌지 확인 + if (WIFSIGNALED(status)) { - data->error_code = WTERMSIG(status); // 시그널로 종료시 시그널 번호를 저장 예 ctrl +c경우 2 번 - ft_putendl_fd("", STDERR_FILENO); // 빈문자열 출력을 위한 ctrl+c 이런거 눌렀을때 바로 새줄 + if (status == 3) + ft_putendl_fd("QUIT: 3", STDERR_FILENO); + else if (status == 2) + ft_putendl_fd("", STDERR_FILENO); + data->error_code = WTERMSIG(status); + } + i = 0; + while (i < data->info->index) + { + unlink(data->info->heredoc_file[i]); + i++; } - else - data->error_code = WEXITSTATUS(status); } diff --git a/srcs/execute/pipeutils.c b/srcs/execute/pipeutils.c index c6d5209..0d4d887 100644 --- a/srcs/execute/pipeutils.c +++ b/srcs/execute/pipeutils.c @@ -1,21 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* pipeutils.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/13 17:08:32 by eunwolee #+# #+# */ +/* Updated: 2023/08/13 17:09:02 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "../../incs/minishell.h" -void count_pipe(t_data*data) +void count_pipe(t_data *data) { - t_leaf *temp = data->root; - while(temp) + t_leaf *temp; + + temp = data->root; + while (temp) { - data->info->pipe_num++; - temp= temp->right_child; + data->info->pipe_num++; + temp = temp->right_child; } - if(data->info->pipe_num!=0) - data->info->pipe_num--; // 파이프가 1나일때 2개가됨 - data->pipe->com = (t_pid *)ft_calloc(data->info->pipe_num+1,sizeof(t_pid));// 하나를 여유롭게 생성하는이유는 herdoc 때문에 하나를 여유롭게생성 - if(!data->pipe->com) + if (data->info->pipe_num != 0) + data->info->pipe_num--; + data->pipe->com = (t_pid *)ft_calloc(data->info->pipe_num + 1, \ + sizeof(t_pid)); + if (!data->pipe->com) program_error_exit("bash"); } -void heredoc_flag(t_leaf *leaf,t_data *data) +void heredoc_flag(t_leaf *leaf, t_data *data) { if (!leaf) return ; @@ -24,19 +39,23 @@ void heredoc_flag(t_leaf *leaf,t_data *data) if (leaf->token->type == T_REDIRECT) { if (leaf->token->redirect_type == T_HEREDOC) - data->info->heredoc_flag++; + { + if (leaf->left_child == NULL) + return ; + data->info->heredoc_flag++; + } } } - heredoc_flag(leaf->left_child,data); - heredoc_flag(leaf->right_child,data); + heredoc_flag(leaf->left_child, data); + heredoc_flag(leaf->right_child, data); } -void recover_std(t_data *data) +void recover_std(t_data *data) { - if (dup2(data->info->oristdin,STDIN_FILENO)== -1) - error_back_readline(data,"Bad file descriptor",EBADF,1); - close(data->info->oristdin); - if (dup2(data->info->oristdout,STDOUT_FILENO)== -1) - error_back_readline(data,"Bad file descriptor",EBADF,1); - close(data->info->oristdin); + if (dup2(data->info->oristdin, STDIN_FILENO) == -1) + error_back_readline(data, "Bad file descriptor", EBADF, 1); + close(data->info->oristdin); + if (dup2(data->info->oristdout, STDOUT_FILENO) == -1) + error_back_readline(data, "Bad file descriptor", EBADF, 1); + close(data->info->oristdin); } diff --git a/srcs/execute/setpath.c b/srcs/execute/setpath.c index 147fa5a..3b6b8a5 100644 --- a/srcs/execute/setpath.c +++ b/srcs/execute/setpath.c @@ -1,6 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* setpath.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/13 17:09:09 by eunwolee #+# #+# */ +/* Updated: 2023/08/13 17:09:17 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "../../incs/minishell.h" -static char **get_path_envp(char **env) +static int check_path(char *str); + +char **get_path_envp(char **env) { char *path; int i; @@ -12,35 +26,33 @@ static char **get_path_envp(char **env) while (env[i]) { if (ft_strncmp("PATH=", env[i], 5) == 0) + { path = env[i]; + return (ft_split(path, ':')); + } i++; } - if (path == NULL) - return (NULL); - return (ft_split(path, ':')); + return (NULL); } void abs_path(t_data *data) { int i; - t_pipe *pipe = data->pipe; - char *temp; + char *temp; i = 0; - // 환경 변수 array에 담아주기 - pipe->cmd_abs = get_path_envp(data->env_array); - if (!pipe->cmd_abs) - program_error_exit("bash"); - while (pipe->cmd_abs[i]) + data->pipe->cmd_abs = get_path_envp(data->env_array); + if (!data->pipe->cmd_abs) + return ; + while (data->pipe->cmd_abs[i]) { - temp = pipe->cmd_abs[i]; - pipe->cmd_abs[i] = ft_strjoin(temp, "/");// 절대 경로 만들어주기 + temp = data->pipe->cmd_abs[i]; + data->pipe->cmd_abs[i] = ft_strjoin(temp, "/"); free(temp); i++; } } - static int check_path(char *str) { if (!ft_strncmp("./", str, 2) || \ @@ -53,11 +65,11 @@ static int check_path(char *str) char *set_path(t_data *data, t_leaf *leaf) { char *tmp; - t_pipe *base; - - base= data->pipe; - base->cmd_path=join_cmd(leaf); //ls - l - y -t - if (!base->cmd_path[0][0]) + t_pipe *base; + + base = data->pipe; + base->cmd_path = join_cmd(leaf); + if (!base->cmd_path) exit(1); if (check_path(base->cmd_path[0]) == 1) { @@ -68,15 +80,22 @@ char *set_path(t_data *data, t_leaf *leaf) return (NULL); } else - return (search_path(base)); + return (search_path(base, data)); } -char *search_path(t_pipe *base) +char *search_path(t_pipe *base, t_data *data) { char *tmp; int k; k = 0; + if (!base->cmd_abs) + { + printf("bash: %s: No such file or directory\n", \ + data->root->left_child->right_child->token->str); + data->error_code = 127; + exit(data->error_code); + } while (base->cmd_abs[k]) { tmp = ft_strjoin(base->cmd_abs[k], base->cmd_path[0]); diff --git a/srcs/init/init.c b/srcs/init/init.c index bb52bdc..01d8b92 100644 --- a/srcs/init/init.c +++ b/srcs/init/init.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:52 by eunwolee #+# #+# */ -/* Updated: 2023/08/12 21:57:19 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 17:07:19 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -42,8 +42,7 @@ void env_init(t_data *data, char **envp) } } - -void pipe_init(t_pipe **pipe) +void pipe_init(t_pipe **pipe) { *pipe = (t_pipe *)malloc(sizeof(t_pipe)); if (!*pipe) @@ -51,14 +50,10 @@ void pipe_init(t_pipe **pipe) (*pipe)->cmd_path = NULL; (*pipe)->command = NULL; (*pipe)->cmd_abs = NULL; - } t_bool get_input(t_data *data) { - t_pipe *pipe; - t_info *info; - data->input = readline("minishell$ "); if (!data->input) program_error_exit("bash"); @@ -77,10 +72,8 @@ t_bool get_input(t_data *data) return (FALSE); } parser(data); - pipe_init(&pipe); - info_init(&info); - data->pipe= pipe; - data->info= info; + pipe_init(&data->pipe); + info_init(&data->info); return (TRUE); } @@ -96,5 +89,5 @@ void info_init(t_info **info) (*info)->oristdout = dup(STDOUT_FILENO); (*info)->pipe_num = 0; (*info)->pipe_index = 0; - (*info)->parent =0; + (*info)->parent = 0; } diff --git a/srcs/lexer/expand.c b/srcs/lexer/expand.c index dd36148..8d6043b 100644 --- a/srcs/lexer/expand.c +++ b/srcs/lexer/expand.c @@ -6,35 +6,15 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:20:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/12 21:08:53 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 16:48:09 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" t_bool expand(t_data *data, t_token **token, int *i, t_bool quote); -static t_bool check_heredoc(t_data *data, t_token *token, int *i); -static t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote); -static t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote); -static t_bool check_question(t_data *data, t_token *token, int *i); static void replace(t_data *data, t_token *token, char *name); - -static t_bool check_special(t_data *data, t_token *token, int *i) -{ - if (!ft_isalpha(data->input[*i]) && data->input[*i] != '_') - { - token->str = ft_strncat(token->str, "$", 1); - while (!ft_isalpha(data->input[*i]) && data->input[*i] != '$' && check_end(data->input[*i]) == FALSE) - { - token->str = ft_strncat(token->str, &data->input[*i], 1); - if (!token->str) - program_error_exit("bash"); - *i += 1; - } - return (TRUE); - } - return (FALSE); -} +static char *get_name(t_data *data, int *i); t_bool expand(t_data *data, t_token **token, int *i, t_bool quote) { @@ -47,14 +27,7 @@ t_bool expand(t_data *data, t_token **token, int *i, t_bool quote) && check_other(data, *token, i, quote) == FALSE \ && check_special(data, *token, i) == FALSE) { - name = ft_strdup(""); - while (ft_isalnum(data->input[*i]) || data->input[*i] == '_') - { - name = ft_strncat(name, &data->input[*i], 1); - if (!name) - program_error_exit("bash"); - *i += 1; - } + name = get_name(data, i); replace(data, *token, name); } if (quote == FALSE) @@ -66,57 +39,21 @@ t_bool expand(t_data *data, t_token **token, int *i, t_bool quote) return (FALSE); } -static t_bool check_heredoc(t_data *data, t_token *token, int *i) +static char *get_name(t_data *data, int *i) { - t_list *tmp; - - tmp = ft_lstlast(data->tokens); - if (tmp && tmp->token->redirect_type == T_HEREDOC) - { - token->str = ft_strncat(token->str, "$", 1); - if (!token->str) - program_error_exit("bash"); - *i -= 1; - return (TRUE); - } - return (FALSE); -} - -static t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote) -{ - if (quote == FALSE && (data->input[*i] == ' ' || data->input[*i] == '\t')) - { - token->str = ft_strncat(token->str, "$", 1); - if (!token->str) - program_error_exit("bash"); - return (TRUE); - } - return (FALSE); -} + char *name; -static t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote) -{ - if (data->input[*i] == '\'') - return (TRUE); - else if (data->input[*i] == '\"') - { - if (quote == TRUE \ - || check_end(data->input[*i + 1]) == TRUE) - { - token->str = ft_strncat(token->str, "$", 1); - if (!token->str) - program_error_exit("bash"); - } - return (TRUE); - } - else if (data->input[*i] == '\0') + name = ft_strdup(""); + if (!name) + program_error_exit("bash"); + while (ft_isalnum(data->input[*i]) || data->input[*i] == '_') { - token->str = ft_strncat(token->str, "$", 1); - if (!token->str) + name = ft_strncat(name, &data->input[*i], 1); + if (!name) program_error_exit("bash"); - return (TRUE); + *i += 1; } - return (FALSE); + return (name); } static void replace(t_data *data, t_token *token, char *name) @@ -137,19 +74,3 @@ static void replace(t_data *data, t_token *token, char *name) } free(name); } - -static t_bool check_question(t_data *data, t_token *token, int *i) -{ - char *tmp; - - if (data->input[*i] == '?') - { - tmp = ft_itoa(data->error_code); - token->str = ft_strncat(token->str, tmp, ft_strlen(tmp)); - if (check_end(data->input[*i + 1]) == FALSE) - token->blank = FALSE; - *i += 1; - return (TRUE); - } - return (FALSE); -} diff --git a/srcs/lexer/expand_check.c b/srcs/lexer/expand_check.c new file mode 100644 index 0000000..8f75645 --- /dev/null +++ b/srcs/lexer/expand_check.c @@ -0,0 +1,107 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* expand_check.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/13 16:23:58 by eunwolee #+# #+# */ +/* Updated: 2023/08/13 16:30:15 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +t_bool check_heredoc(t_data *data, t_token *token, int *i); +t_bool check_question(t_data *data, t_token *token, int *i); +t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote); +t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote); +t_bool check_special(t_data *data, t_token *token, int *i); + +t_bool check_heredoc(t_data *data, t_token *token, int *i) +{ + t_list *tmp; + + tmp = ft_lstlast(data->tokens); + if (tmp && tmp->token->redirect_type == T_HEREDOC) + { + token->str = ft_strncat(token->str, "$", 1); + if (!token->str) + program_error_exit("bash"); + *i -= 1; + return (TRUE); + } + return (FALSE); +} + +t_bool check_question(t_data *data, t_token *token, int *i) +{ + char *tmp; + + if (data->input[*i] == '?') + { + tmp = ft_itoa(data->error_code); + token->str = ft_strncat(token->str, tmp, ft_strlen(tmp)); + if (check_end(data->input[*i + 1]) == FALSE) + token->blank = FALSE; + *i += 1; + return (TRUE); + } + return (FALSE); +} + +t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote) +{ + if (quote == FALSE && (data->input[*i] == ' ' || data->input[*i] == '\t')) + { + token->str = ft_strncat(token->str, "$", 1); + if (!token->str) + program_error_exit("bash"); + return (TRUE); + } + return (FALSE); +} + +t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote) +{ + if (data->input[*i] == '\'') + return (TRUE); + else if (data->input[*i] == '\"') + { + if (quote == TRUE \ + || check_end(data->input[*i + 1]) == TRUE) + { + token->str = ft_strncat(token->str, "$", 1); + if (!token->str) + program_error_exit("bash"); + } + return (TRUE); + } + else if (data->input[*i] == '\0') + { + token->str = ft_strncat(token->str, "$", 1); + if (!token->str) + program_error_exit("bash"); + return (TRUE); + } + return (FALSE); +} + +t_bool check_special(t_data *data, t_token *token, int *i) +{ + if (!ft_isalpha(data->input[*i]) && data->input[*i] != '_') + { + token->str = ft_strncat(token->str, "$", 1); + while (!ft_isalpha(data->input[*i]) \ + && data->input[*i] != '$' \ + && check_end(data->input[*i]) == FALSE) + { + token->str = ft_strncat(token->str, &data->input[*i], 1); + if (!token->str) + program_error_exit("bash"); + *i += 1; + } + return (TRUE); + } + return (FALSE); +} diff --git a/srcs/lexer/lexer.c b/srcs/lexer/lexer.c index bee0494..cff4b52 100644 --- a/srcs/lexer/lexer.c +++ b/srcs/lexer/lexer.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 16:24:37 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 13:36:41 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 16:54:50 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,12 +14,14 @@ void lexer(t_data *data); static void check_char(t_data *data, t_token **token, int *i, t_bool *pre_pipe); +static void blank_char(t_data *data, t_token **token, int *i, t_bool *pre_pipe); +static void normal_char(t_data *data, t_token **token, int *i); void lexer(t_data *data) { int i; t_token *token; - t_bool pre_pipe; + t_bool pre_pipe; pre_pipe = FALSE; token = token_create(); @@ -37,45 +39,48 @@ static void check_char(t_data *data, t_token **token, int *i, t_bool *pre_pipe) || data->input[*i] == '>' \ || data->input[*i] == '\'' \ || data->input[*i] == '\"') - { tokenizer(data, token, i); - token_add_list(&data->tokens, token, TRUE); - } else if (data->input[*i] == '$') { expand(data, token, i, FALSE); token_add_list(&data->tokens, token, TRUE); } else if (data->input[*i] == ' ' || data->input[*i] == '\t') - { - if (*pre_pipe == TRUE) - { - *pre_pipe = FALSE; - return ; - } - while (data->input[*i] == ' ' || data->input[*i] == '\t') - *i += 1; - if (data->input[*i] == '|') - *pre_pipe = TRUE; - token_add_list(&data->tokens, token, TRUE); - *i -= 1; - } + blank_char(data, token, i, pre_pipe); else + normal_char(data, token, i); +} + +static void blank_char(t_data *data, t_token **token, int *i, t_bool *pre_pipe) +{ + if (*pre_pipe == TRUE) { - (*token)->blank = FALSE; - (*token)->str = ft_strncat((*token)->str, &data->input[*i], 1); - if (!(*token)->str) - program_error_exit("bash"); - if (check_end(data->input[*i + 1]) == TRUE \ - && check_last_blank(data->input, *i + 1) == FALSE) - (*token)->blank = TRUE; - if (data->input[*i + 1] == '|' \ + *pre_pipe = FALSE; + return ; + } + while (data->input[*i] == ' ' || data->input[*i] == '\t') + *i += 1; + if (data->input[*i] == '|') + *pre_pipe = TRUE; + token_add_list(&data->tokens, token, TRUE); + *i -= 1; +} + +static void normal_char(t_data *data, t_token **token, int *i) +{ + (*token)->blank = FALSE; + (*token)->str = ft_strncat((*token)->str, &data->input[*i], 1); + if (!(*token)->str) + program_error_exit("bash"); + if (check_end(data->input[*i + 1]) == TRUE \ + && check_last_blank(data->input, *i + 1) == FALSE) + (*token)->blank = TRUE; + if (data->input[*i + 1] == '|' \ || data->input[*i + 1] == '<' \ || data->input[*i + 1] == '>' \ || data->input[*i + 1] == '\'' \ || data->input[*i + 1] == '\"' \ || data->input[*i + 1] == '$' \ || data->input[*i + 1] == '\0') - token_add_list(&data->tokens, token, TRUE); - } + token_add_list(&data->tokens, token, TRUE); } diff --git a/srcs/lexer/lexer_utils.c b/srcs/lexer/lexer_utils.c index becc792..f7f3f63 100644 --- a/srcs/lexer/lexer_utils.c +++ b/srcs/lexer/lexer_utils.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/12 15:15:15 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 14:09:25 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 17:02:47 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,3 +27,12 @@ t_bool check_last_blank(char *str, int i) return (TRUE); return (FALSE); } + +void quote_utils(char *input, t_token **token, int *i) +{ + if (check_end(input[*i + 1]) == FALSE \ + || check_last_blank(input, *i + 1) == TRUE) + (*token)->blank = FALSE; + if (input[*i] == '\0') + *i -= 1; +} diff --git a/srcs/lexer/quote.c b/srcs/lexer/quote.c index 9d0a33c..f6c47c1 100644 --- a/srcs/lexer/quote.c +++ b/srcs/lexer/quote.c @@ -6,17 +6,20 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 07:46:30 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 13:39:07 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 17:02:36 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" void single_quote(char *input, t_token **token, int *i); -void double_quote(t_data *data, char *input, t_token **token, int *i); +void double_quote(t_data *data, \ + char *input, t_token **token, int *i); static t_bool find_next_quote(char *input, t_token *token, int i, char quote); -static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next_quote); -static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next_quote); +static t_bool s_check_char(char *input, \ + t_token *token, int *i, t_bool next_quote); +static t_bool d_check_char(char *input, \ + t_token *token, int *i, t_bool next_quote); void single_quote(char *input, t_token **token, int *i) { @@ -32,11 +35,7 @@ void single_quote(char *input, t_token **token, int *i) return ; *i += 1; } - if (check_end(input[*i + 1]) == FALSE \ - || check_last_blank(input, *i + 1) == TRUE) - (*token)->blank = FALSE; - if (input[*i] == '\0') - *i -= 1; + quote_utils(input, token, i); } void double_quote(t_data *data, char *input, t_token **token, int *i) @@ -65,11 +64,7 @@ void double_quote(t_data *data, char *input, t_token **token, int *i) break ; *i += 1; } - if (check_end(input[*i + 1]) == FALSE \ - || check_last_blank(input, *i + 1) == TRUE) - (*token)->blank = FALSE; - if (input[*i] == '\0') - *i -= 1; + quote_utils(input, token, i); } static t_bool find_next_quote(char *input, t_token *token, int i, char quote) @@ -86,7 +81,8 @@ static t_bool find_next_quote(char *input, t_token *token, int i, char quote) return (TRUE); } -static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next_quote) +static t_bool s_check_char(char *input, \ + t_token *token, int *i, t_bool next_quote) { if (next_quote == FALSE \ && (input[*i] != ' ' || input[*i] != '\t')) @@ -101,7 +97,8 @@ static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next_quot return (FALSE); } -static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next_quote) +static t_bool d_check_char(char *input, \ + t_token *token, int *i, t_bool next_quote) { if (next_quote == TRUE && input[*i] == '\"') return (TRUE); @@ -116,4 +113,4 @@ static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next_quot if (!token->str) program_error_exit("bash"); return (FALSE); -} \ No newline at end of file +} diff --git a/srcs/lexer/tokenizer.c b/srcs/lexer/tokenizer.c index 85db38a..6dde8cf 100644 --- a/srcs/lexer/tokenizer.c +++ b/srcs/lexer/tokenizer.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:26:13 by eunwolee #+# #+# */ -/* Updated: 2023/08/12 18:41:45 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 17:03:12 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,10 +27,7 @@ void tokenizer(t_data *data, t_token **token, int *i) single_quote(data->input, token, i); else if (data->input[*i] == '<' || data->input[*i] == '>') token_redirect(data, *token, i); - if ((data->input[*i] == '\'' || data->input[*i] == '\"') \ - && (data->input[*i + 1] != ' ' && data->input[*i + 1] != '\t') \ - && (data->input[*i + 1] != '\0')) - return ; + token_add_list(&data->tokens, token, TRUE); } t_token *token_create(void) @@ -71,7 +68,6 @@ void token_redirect(t_data *data, t_token *token, int *i) else token->redirect_type = T_OUTPUT; } - } void token_add_list(t_list **head, t_token **token, t_bool create_flag) diff --git a/srcs/minishell.c b/srcs/minishell.c index cfa455e..7d0348e 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -6,14 +6,12 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 14:09:03 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 16:12:52 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -char *abs_home; - int main(int argc, char **argv, char **envp) { t_data *data; @@ -22,23 +20,17 @@ int main(int argc, char **argv, char **envp) (void)argv; init(&data, envp); init_base(argc); - - abs_home = ft_strdup(env_search(data, "HOME")->env + 5); - - sig(); + data->env_array = env_to_array(data); + if (!data->env_array) + program_error_exit("bash"); while (TRUE) { - // abs_init(data); - // system("leaks minishell"); - // printf("abs home : %s\n", data->abs_home); + sig(); if (get_input(data) == FALSE) continue ; execute(data); input_free(data); } - // free(data->abs_home); - // system("leaks minishell"); data_free(data); - // atexit(check_leak); return (0); } diff --git a/srcs/redirect/heredoc.c b/srcs/redirect/heredoc.c index 1a10178..fe687ef 100644 --- a/srcs/redirect/heredoc.c +++ b/srcs/redirect/heredoc.c @@ -1,31 +1,117 @@ -#include "../../incs/minishell.h" +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* heredoc.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/13 16:21:48 by eunwolee #+# #+# */ +/* Updated: 2023/08/13 16:22:09 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ +#include "../../incs/minishell.h" int fork_heredoc(t_data *data) { int status; + pid_t pid; - data->pipe->com[data->info->pipe_index].pid =fork(); //인덱스 부여해주기 pid 갚곂치지않게 가장 마지막 인덱스 주기 - if (data->pipe->com[data->info->pipe_index].pid == 0) + pid = fork(); + if (pid == 0) { - signal (SIGINT, child_handler); + signal (SIGINT, child_handler); mk_heredoc_pipe(data); - execute_cmd(data,1); // heredoc 실행후 다시 커맨드 확인해주러가기 - exit(0); + execute_cmd(data, 1); + exit(data->error_code); } else { signal (SIGINT, SIG_IGN); - data->info->pipe_index++; - waitpid(data->pipe->com[data->info->pipe_index].pid,&status,0); - if (WIFSIGNALED(status)) // signal 에 의해 종료가 되었는지 아닌지 확인 + waitpid(-1, &status, 0); + if (WIFSIGNALED(status)) { - data->error_code= WTERMSIG (status);//시그널로 종료시 시그널 번호를 저장 예 ctrl +c경우 2 번 - ft_putendl_fd("", STDERR_FILENO); // 빈문자열 출력을 위한 ctrl+c 이런거 눌렀을때 바로 새줄 + data->error_code = WTERMSIG (status); + ft_putendl_fd("", STDERR_FILENO); return (1); } else - data->error_code= (status); + data->error_code = (status); } return (1); -} \ No newline at end of file +} + +void mk_num(char *str, int num) +{ + int i; + int j; + + i = 0; + j = 1; + while (i < 3) + { + if (i == 0) + { + str[13 + i++] = num / 100 + '0'; + num %= 100; + } + str[13 + i++] = num / (100 / (j * 10)) + '0'; + num %= (100 / (j * 10)); + j *= 10; + } +} + +char *mk_filename(void) +{ + char *str; + int exist; + int i; + + str = ft_strdup("/tmp/here_doc000"); + i = 0; + exist = 0; + while (exist == 0) + { + mk_num(str, i++); + exist = access(str, F_OK); + if (exist != 0) + unlink(str); + } + return (str); +} + +void do_heredoc(t_leaf *leaf, t_data *data) +{ + int fd; + t_leaf *temp; + + temp = leaf; + while (temp) + { + if (temp->token->redirect_type == T_HEREDOC) + { + fd = open(data->info->heredoc_file[data->info->index], \ + O_WRONLY | O_CREAT | O_TRUNC, 0644); + write_str(temp->left_child->token->str, fd, data); + } + temp = temp ->left_child; + } +} + +void mk_heredoc_pipe(t_data *data) +{ + t_leaf *pipe; + + pipe = data->root; + while (pipe) + { + data->info->heredoc_file[data->info->index] = mk_filename(); + if (pipe->left_child->left_child \ + && pipe->left_child->left_child->token->redirect_type == T_HEREDOC) + { + do_heredoc(pipe->left_child->left_child, data); + data->info->index++; + } + pipe = pipe->right_child; + } +} diff --git a/srcs/redirect/heredocutils.c b/srcs/redirect/heredocutils.c index 0724afa..533a224 100644 --- a/srcs/redirect/heredocutils.c +++ b/srcs/redirect/heredocutils.c @@ -1,18 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* heredocutils.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/13 16:16:20 by eunwolee #+# #+# */ +/* Updated: 2023/08/13 16:21:41 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "../../incs/minishell.h" -void heredoc_parser(t_data *data, int fd, char *str); -char *heredoc_expand(t_data *data, char *str, char *tmp, int *i); +static void heredoc_parser(t_data *data, int fd, char *str); +static char *heredoc_expand(t_data *data, char *str, char *tmp, int *i); +static void heredoc_replace(t_data *data, char **tmp, char *name); void write_str(char *content, int fd, t_data *data) { char *str; - data->env_array=env_to_array(data); //환경변수 가져오기 추후에 필요할 수있음 + (void)data; while (1) { str = readline ("> "); if (!str \ - || (!ft_strncmp (content, str,ft_strlen(content)) && \ + || (!ft_strncmp (content, str, ft_strlen(content)) && \ (ft_strlen(content) == (ft_strlen(str))))) { free (str); @@ -23,7 +36,7 @@ void write_str(char *content, int fd, t_data *data) } } -void heredoc_parser(t_data *data, int fd, char *str) +static void heredoc_parser(t_data *data, int fd, char *str) { int i; char *tmp; @@ -42,11 +55,9 @@ void heredoc_parser(t_data *data, int fd, char *str) free (str); } -char *heredoc_expand(t_data *data, char *str, char *tmp, int *i) +static char *heredoc_expand(t_data *data, char *str, char *tmp, int *i) { char *name; - t_list *env; - int j; *i += 1; name = ft_strdup(""); @@ -55,14 +66,25 @@ char *heredoc_expand(t_data *data, char *str, char *tmp, int *i) name = ft_strncat(name, &str[*i], 1); *i += 1; } + heredoc_replace(data, &tmp, name); + if (str[*i] != '\0') + *i -= 1; + return (tmp); +} + +static void heredoc_replace(t_data *data, char **tmp, char *name) +{ + int j; + t_list *env; + env = env_search(data, name); if (!env) { - tmp = ft_strncat(tmp, "$", 1); - if (!tmp) + *tmp = ft_strncat(*tmp, "$", 1); + if (!*tmp) program_error_exit("bash"); - tmp = ft_strncat(tmp, name, ft_strlen(name)); - if (!tmp) + *tmp = ft_strncat(*tmp, name, ft_strlen(name)); + if (!*tmp) program_error_exit("bash"); } else @@ -70,112 +92,9 @@ char *heredoc_expand(t_data *data, char *str, char *tmp, int *i) j = 0; while (env->env[j] != '=') j++; - tmp = ft_strncat(tmp, \ + *tmp = ft_strncat(*tmp, \ &env->env[j + 1], ft_strlen(&env->env[j + 1])); - if (!tmp) + if (!*tmp) program_error_exit("bash"); } - if (str[*i] != '\0') - *i -= 1; - return (tmp); -} - -void mk_num(char *str, int num) -{ - - int i=0; - int j=1; - while(i<3) - { - if (i ==0) - { - str[13+i++]= num/100 +'0'; - num %=100; - } - str[13+ i++] = num /(100/(j *10)) + '0'; - num%= (100 / (j*10)); - j*=10; - } - -} - -char *mk_filename() // 파일이름 유니크줘서만들어주기 -{ - char *str; - int exist; - int i; - - str = ft_strdup("/tmp/here_doc000"); - i=0; - exist=0; - while(exist ==0) - { - mk_num(str,i++); // doc000 doc100 doc 200 순으로접근 유효성검사 - exist =access(str,F_OK); //access 가 가능하면 1리턴해줘서 while문 탈출 . - if (!exist) - unlink(str); - } - return (str); -} - - - -void do_heredoc(t_leaf *leaf,t_data *data) -{ - int fd; - t_leaf *temp; - temp = leaf; - - while(temp) - { - - if(temp->token->redirect_type==T_HEREDOC) - { - fd = open(data->info->heredoc_file[data->info->index], O_WRONLY | O_CREAT | O_TRUNC, 0644); //임시파일오픈 - write_str(temp->left_child->token->str,fd,data); //limiter 들고가서 작성하기 - } - temp = temp ->left_child; //순회하기 - } - -} - - -// void mk_heredoc(t_data *data) -// { -// t_leaf *temp; -// int fd; -// // herdoc_signal(); -// temp =data->root->left_child -> left_child; -// while(temp) -// { -// data->info->heredoc_file[data->info->index] = mk_filename(); //설명했듯이 이중 배열 -// if(temp->token->redirect_type == T_HEREDOC) -// { -// fd = open(data->info->heredoc_file[data->info->index], O_WRONLY | O_CREAT | O_TRUNC, 0644); //임시파일오픈 -// write_str(temp->left_child->str,fd,data); //limiter 들고가 -// // do_heredoc(temp,data); // 실제 here _doc 이 나왔을경우 만들러가기 -// data->info->index++; //순회하면서 heredoc 찾기 -// } -// temp = temp ->left_child; -// } -// } - - -void mk_heredoc_pipe(t_data *data) -{ - - - // herdoc_signal(); - - t_leaf *pipe = data->root; - while(pipe) - { - data->info->heredoc_file[data->info->index] = mk_filename(); //설명했듯이 이중 배열 - if(pipe->left_child->left_child && pipe->left_child->left_child->token->redirect_type == T_HEREDOC) - { - do_heredoc(pipe->left_child->left_child,data); // 실제 here _doc 이 나왔을경우 만들러가기 - data->info->index++; //순회하면서 heredoc 찾기 - } - pipe = pipe->right_child; - } } diff --git a/srcs/redirect/redirection.c b/srcs/redirect/redirection.c index a26c37b..0f47f81 100644 --- a/srcs/redirect/redirection.c +++ b/srcs/redirect/redirection.c @@ -1,61 +1,73 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* redirection.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/13 16:16:07 by eunwolee #+# #+# */ +/* Updated: 2023/08/13 16:16:13 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "../../incs/minishell.h" -void do_input_redirect(t_leaf *leaf,t_data *data) +void do_input_redirect(t_leaf *leaf, t_data *data) { int fd; + t_leaf *temp; - t_leaf *temp; fd = 0; - temp =leaf; - - if (temp->token->redirect_type == T_HEREDOC) // heredoc 일경우 전에만들어 준 heredoc 으로 접근해줘야함 + temp = leaf; + if (temp->token->redirect_type == T_HEREDOC) { - fd = open (data->info->heredoc_file[data->info->index-1], O_RDONLY);// 만들어지면 바로 ++을해줘서 인덱스 -1 로 접근을해야 전에 만들어진 heredoc으로 접근 + fd = open (data->info->heredoc_file[data->info->index - 1], \ + O_RDONLY); dup2 (fd, STDIN_FILENO); return ; } - else if (temp->token->redirect_type == T_INPUT) // 그냥 인풋 - { + else if (temp->token->redirect_type == T_INPUT) fd = open (temp->left_child->token->str, O_RDONLY); - } - check_file (fd,data); - dup2 (fd, STDIN_FILENO); - close (fd); + check_file (fd, data); + dup2 (fd, STDIN_FILENO); + close (fd); } -void do_output_redirect(t_leaf *leaf,t_data *data) +void do_output_redirect(t_leaf *leaf, t_data *data) { - int fd; - t_leaf *temp =leaf; - fd = 0; + int fd; + t_leaf *temp; + fd = 0; + temp = leaf; if (temp->token->redirect_type == T_APPEND) - fd = open (temp->left_child->token->str, O_WRONLY | O_APPEND | O_CREAT, 0644); + { + fd = open (temp->left_child->token->str, \ + O_WRONLY | O_APPEND | O_CREAT, 0644); + } else if (temp->token->redirect_type == T_OUTPUT) { - fd = open (temp->left_child->token->str, O_WRONLY | O_TRUNC | O_CREAT, 0644); + fd = open (temp->left_child->token->str, \ + O_WRONLY | O_TRUNC | O_CREAT, 0644); } - check_file (fd,data); + check_file (fd, data); dup2 (fd, STDOUT_FILENO); close (fd); } - - - -void check_redirect(t_leaf *leaf,t_data *data) +void check_redirect(t_leaf *leaf, t_data *data) { - - t_leaf *temp = leaf->left_child->left_child; + t_leaf *temp; - while(temp) + temp = leaf->left_child->left_child; + while (temp) { - if(temp->token->redirect_type == T_INPUT ||temp->token->redirect_type == T_HEREDOC) - { - do_input_redirect(temp,data); // input or heredoc - } - else if (temp->token->redirect_type == T_OUTPUT ||temp->token->redirect_type == T_APPEND) - do_output_redirect(temp,data); // output or append - temp=temp->left_child; + if (temp->token->redirect_type == T_INPUT \ + ||temp->token->redirect_type == T_HEREDOC) + do_input_redirect(temp, data); + else if (temp->token->redirect_type == T_OUTPUT \ + ||temp->token->redirect_type == T_APPEND) + do_output_redirect(temp, data); + temp = temp->left_child; } } diff --git a/srcs/signal/signal.c b/srcs/signal/signal.c index 46ea5a9..abf87c3 100644 --- a/srcs/signal/signal.c +++ b/srcs/signal/signal.c @@ -6,46 +6,44 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/15 18:40:34 by kichlee #+# #+# */ -/* Updated: 2023/08/11 06:30:57 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 17:15:53 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void init_base(int ac) +void init_base(int ac) { - - struct termios termi; - - if (ac != 1) - exit(1); - if(tcgetattr(STDIN_FILENO,&termi)== -1) - exit(1); - termi.c_lflag &= ~(ECHOCTL); - if (tcsetattr(STDIN_FILENO, TCSANOW, &termi) == (-1) + struct termios termi; + + if (ac != 1) + exit(1); + if (tcgetattr(STDIN_FILENO, &termi) == -1) + exit(1); + termi.c_lflag &= ~(ECHOCTL); + if (tcsetattr(STDIN_FILENO, TCSANOW, &termi) == -1 || tgetent (NULL, "xterm-256color") == -1) - exit(1); + exit(1); } -void handle_sigint(int sig) +void handle_sigint(int sig) { - printf("\n"); - rl_on_new_line(); - // rl_replace_line("", 0); - rl_redisplay(); - (void) sig; + printf("\n"); + rl_on_new_line(); + rl_replace_line("", 0); + rl_redisplay(); + (void)sig; } -void child_handler(int signum) +void child_handler(int signum) { - printf("\n"); - exit(EXIT_SUCCESS); - (void) signum; + printf("\n"); + exit(EXIT_SUCCESS); + (void)signum; } - -void sig() +void sig(void) { signal(SIGINT, handle_sigint); signal(SIGQUIT, SIG_IGN); -} \ No newline at end of file +} diff --git a/srcs/utils/env.c b/srcs/utils/env.c index 93cc39d..7948c88 100644 --- a/srcs/utils/env.c +++ b/srcs/utils/env.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* env.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 06:38:21 by eunwolee #+# #+# */ -/* Updated: 2023/08/10 17:26:25 by kichlee ### ########.fr */ +/* Updated: 2023/08/13 16:49:27 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -37,7 +37,11 @@ t_list *env_search(t_data *data, char *key) t_list *cur; tmp = ft_strdup(key); + if (!tmp) + program_error_exit("bash"); env = ft_strncat(tmp, "=", 1); + if (!env) + program_error_exit("bash"); cur = data->envs; while (cur) { @@ -63,7 +67,6 @@ t_bool env_remove(t_data *data, char *key) return (TRUE); } -//리턴값 더블포인터를 data->env_array에 담아서 사용하시고, 쓰고 나서 더블포인터만 free해주면 됩니다 char **env_to_array(t_data *data) { t_list *cur; diff --git a/srcs/utils/utils.c b/srcs/utils/utils.c index 385c3d9..324fd77 100644 --- a/srcs/utils/utils.c +++ b/srcs/utils/utils.c @@ -6,23 +6,23 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/12 19:40:44 by eunwolee #+# #+# */ -/* Updated: 2023/08/11 17:59:50 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 16:13:19 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -t_bool error_back_readline(t_data *data, char *str, int error_code,int flag); +t_bool error_back_readline(t_data *data, char *str, int error_code, int flag); void program_error_exit(char *str); void input_free(t_data *data); void data_free(t_data *data); //input 관련 에러일 때 사용 -t_bool error_back_readline(t_data *data, char *str, int error_code,int flag) +t_bool error_back_readline(t_data *data, char *str, int error_code, int flag) { if (flag) perror(str); - else + else printf("%s\n", str); data->error_code = error_code; return (FALSE); @@ -38,7 +38,7 @@ void program_error_exit(char *str) //input 한번 끝났을 때 사용 void input_free(t_data *data) { - int i; + int i; ft_lstclear(&data->tokens); data->tokens = NULL; @@ -49,7 +49,7 @@ void input_free(t_data *data) free(data->pipe); free(data->pipe->com); i = -1; - while(++i < data->info->heredoc_flag) + while (++i < data->info->heredoc_flag) free(data->info->heredoc_file[i]); free(data->info->heredoc_file); free(data->info); @@ -60,4 +60,4 @@ void data_free(t_data *data) { ft_lstclear(&data->envs); free(data); -} \ No newline at end of file +} From 9a06db9caac9939a6d874e03dc6f15b5dd68d557 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Sun, 13 Aug 2023 21:09:09 +0900 Subject: [PATCH 26/57] . --- makefileeee | 124 ----------------------------------- srcs/builtin/builtin_utils.c | 6 +- srcs/signal/signal.c | 4 +- 3 files changed, 5 insertions(+), 129 deletions(-) delete mode 100644 makefileeee diff --git a/makefileeee b/makefileeee deleted file mode 100644 index 460b374..0000000 --- a/makefileeee +++ /dev/null @@ -1,124 +0,0 @@ -SHELL = /bin/bash -SPINNER = /-\|/ -IDX = 0 - -NAME = minishell - -LIBS_DIR := ./libs -LIBFT_DIR := ${LIBS_DIR}/libft -LIBFT_INCS_DIR := ${LIBFT_DIR}/incs -LIBFT := ${LIBFT_DIR}/libft.a -LIBREADLINE_DIR := ${LIBS_DIR}/libreadline -LIBREADLINE_INCS_DIR := ${LIBREADLINE_DIR}/include/readline -LIBREADLINE := ${LIBREADLINE_DIR}/lib/libreadline.8.dylib - -INCS_DIR = ./incs -SRCS_DIR = ./srcs -OBJS_DIR = ./objs - -CC = cc -CFLAGS = -Wall -Wextra -Werror -I${INCS_DIR} -I${LIBFT_INCS_DIR} -I${LIBREADLINE_INCS_DIR} -MD -LDFLAGS = -L${LIBREADLINE_DIR}/lib -lreadline -L${LIBFT_DIR} -lft -AR = ar rcs -RM = rm -f - -SRCS = minishell.c \ - builtin/cd.c \ - builtin/echo.c \ - builtin/env.c \ - builtin/exit.c \ - builtin/export.c \ - builtin/pwd.c \ - builtin/unset.c \ - execute/execute.c \ - execute/exec_builtin.c \ - execute/exec_extern.c \ - execute/redirection.c \ - lexer/lexer.c \ - lexer/expand.c \ - lexer/ifs.c \ - lexer/meta.c \ - lexer/quote.c \ - lexer/token.c \ - lexer/tokenizer.c \ - parser/parser.c \ - parser/create_cmd_list.c \ - parser/here_doc.c \ - parser/syntax_err_occurred.c \ - subsystem/subsystem.c \ - subsystem/signal.c \ - subsystem/termios.c \ - utils/convert_path.c \ - utils/ft_getenv.c \ - utils/path.c \ - utils/print_err.c - -SRCS := ${addprefix ${SRCS_DIR}/, ${SRCS}} -OBJS := ${SRCS:${SRCS_DIR}/%.c=${OBJS_DIR}/%.o} -DEPS := ${OBJS:.o=.d} - - -all: ${NAME} - - -${NAME}: ${OBJS} - @printf "\bdone\n" - ${eval IDX = 0} - @${CC} ${LDFLAGS} -g -o ${NAME} ${OBJS} - @echo "Build ${NAME}: done" - - -${OBJS}: ${LIBFT} - - -${LIBFT}: - @make -C ${LIBFT_DIR} - - -${OBJS_DIR}/%.o: ${SRCS_DIR}/%.c | ${OBJS_DIR} - ${eval IDX = ${shell expr ${IDX} + 1}} - ${eval T_IDX = ${shell expr ${IDX} % 32}} - ${eval T_IDX = ${shell expr ${T_IDX} / 8 + 1}} - ${eval CHR = ${shell echo ${SPINNER} | cut -c ${T_IDX}}} - @if [ ${IDX} = 1 ]; then\ - echo -n "Build dependencies in ${NAME} ... ";\ - fi - @printf "\b${CHR}" - @${CC} ${CFLAGS} -g -c $< -o $@ - - -${OBJS_DIR}: - @echo "Build ${NAME}" - @mkdir -p ${OBJS_DIR} - @mkdir -p ${OBJS_DIR}/builtin - @mkdir -p ${OBJS_DIR}/execute - @mkdir -p ${OBJS_DIR}/lexer - @mkdir -p ${OBJS_DIR}/parser - @mkdir -p ${OBJS_DIR}/subsystem - @mkdir -p ${OBJS_DIR}/utils - - -clean: - @echo "Remove dependencies in ${NAME}" - @make -C ${LIBFT_DIR} clean - @rm -rf ${OBJS_DIR} - - -fclean: - @echo "Remove dependencies in ${NAME}" - @make -C ${LIBFT_DIR} fclean - @echo "Remove ${NAME}" - @rm -rf ${OBJS_DIR} - @${RM} ${NAME} - - -re: - @echo "Re-build ${NAME}" - @make fclean - @make all - - -.PHONY: all clean fclean re bonus - - --include ${DEPS} \ No newline at end of file diff --git a/srcs/builtin/builtin_utils.c b/srcs/builtin/builtin_utils.c index 24d81d7..e2816dd 100644 --- a/srcs/builtin/builtin_utils.c +++ b/srcs/builtin/builtin_utils.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/22 13:20:41 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 17:15:16 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 21:08:51 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -64,10 +64,10 @@ t_list *create_env_node(char *key, char *value) t_list *new_node; char *key_equal; - new_node = (t_list *)ft_calloc(sizeof(t_list)); + new_node = (t_list *)ft_calloc(1, sizeof(t_list)); if (!new_node) return (NULL); - new_node->token = (t_token *)ft_calloc(sizeof(t_token)); + new_node->token = (t_token *)ft_calloc(1, sizeof(t_token)); if (!new_node->token) { free(new_node); diff --git a/srcs/signal/signal.c b/srcs/signal/signal.c index abf87c3..0fc268e 100644 --- a/srcs/signal/signal.c +++ b/srcs/signal/signal.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/15 18:40:34 by kichlee #+# #+# */ -/* Updated: 2023/08/13 17:15:53 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 21:08:03 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,7 +30,7 @@ void handle_sigint(int sig) { printf("\n"); rl_on_new_line(); - rl_replace_line("", 0); + // rl_replace_line("", 0); rl_redisplay(); (void)sig; } From 2b6a40b3f32f54a1c3a820ef233979f0af7a24a8 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Sun, 13 Aug 2023 21:19:10 +0900 Subject: [PATCH 27/57] lexer leak --- srcs/lexer/lexer.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/srcs/lexer/lexer.c b/srcs/lexer/lexer.c index cff4b52..f6626b0 100644 --- a/srcs/lexer/lexer.c +++ b/srcs/lexer/lexer.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 16:24:37 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 16:54:50 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 21:18:58 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,6 +30,8 @@ void lexer(t_data *data) i = -1; while (data->input[++i]) check_char(data, &token, &i, &pre_pipe); + free(token->str); + free(token); } static void check_char(t_data *data, t_token **token, int *i, t_bool *pre_pipe) From d0890b8330d5c02feeac34d7ec5f063fd74f7146 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Mon, 14 Aug 2023 07:54:50 +0900 Subject: [PATCH 28/57] =?UTF-8?q?makefile=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Libft/Makefile | 107 +++++++++++--------- Libft/{ => incs}/libft.h | 0 Libft/{ => srcs}/ft_atoi.c | 0 Libft/{ => srcs}/ft_bzero.c | 0 Libft/{ => srcs}/ft_calloc.c | 0 Libft/{ => srcs}/ft_isalnum.c | 0 Libft/{ => srcs}/ft_isalpha.c | 0 Libft/{ => srcs}/ft_isascii.c | 0 Libft/{ => srcs}/ft_isdigit.c | 0 Libft/{ => srcs}/ft_isprint.c | 0 Libft/{ => srcs}/ft_itoa.c | 0 Libft/{ => srcs}/ft_memchr.c | 0 Libft/{ => srcs}/ft_memcmp.c | 0 Libft/{ => srcs}/ft_memcpy.c | 0 Libft/{ => srcs}/ft_memmove.c | 0 Libft/{ => srcs}/ft_memset.c | 0 Libft/{ => srcs}/ft_putchar_fd.c | 0 Libft/{ => srcs}/ft_putendl_fd.c | 0 Libft/{ => srcs}/ft_putnbr_fd.c | 0 Libft/{ => srcs}/ft_putstr_fd.c | 0 Libft/{ => srcs}/ft_split.c | 0 Libft/{ => srcs}/ft_strchr.c | 0 Libft/{ => srcs}/ft_strdup.c | 0 Libft/{ => srcs}/ft_striteri.c | 0 Libft/{ => srcs}/ft_strjoin.c | 0 Libft/{ => srcs}/ft_strlcat.c | 0 Libft/{ => srcs}/ft_strlcpy.c | 0 Libft/{ => srcs}/ft_strlen.c | 0 Libft/{ => srcs}/ft_strmapi.c | 0 Libft/{ => srcs}/ft_strncat.c | 0 Libft/{ => srcs}/ft_strncmp.c | 0 Libft/{ => srcs}/ft_strnstr.c | 0 Libft/{ => srcs}/ft_strrchr.c | 0 Libft/{ => srcs}/ft_strtrim.c | 0 Libft/{ => srcs}/ft_substr.c | 0 Libft/{ => srcs}/ft_tolower.c | 0 Libft/{ => srcs}/ft_toupper.c | 0 Libft/{ => srcs}/get_next_line.c | 0 Libft/{ => srcs}/get_next_line_utils.c | 0 Makefile | 129 ++++++++++++++----------- 40 files changed, 134 insertions(+), 102 deletions(-) rename Libft/{ => incs}/libft.h (100%) rename Libft/{ => srcs}/ft_atoi.c (100%) rename Libft/{ => srcs}/ft_bzero.c (100%) rename Libft/{ => srcs}/ft_calloc.c (100%) rename Libft/{ => srcs}/ft_isalnum.c (100%) rename Libft/{ => srcs}/ft_isalpha.c (100%) rename Libft/{ => srcs}/ft_isascii.c (100%) rename Libft/{ => srcs}/ft_isdigit.c (100%) rename Libft/{ => srcs}/ft_isprint.c (100%) rename Libft/{ => srcs}/ft_itoa.c (100%) rename Libft/{ => srcs}/ft_memchr.c (100%) rename Libft/{ => srcs}/ft_memcmp.c (100%) rename Libft/{ => srcs}/ft_memcpy.c (100%) rename Libft/{ => srcs}/ft_memmove.c (100%) rename Libft/{ => srcs}/ft_memset.c (100%) rename Libft/{ => srcs}/ft_putchar_fd.c (100%) rename Libft/{ => srcs}/ft_putendl_fd.c (100%) rename Libft/{ => srcs}/ft_putnbr_fd.c (100%) rename Libft/{ => srcs}/ft_putstr_fd.c (100%) rename Libft/{ => srcs}/ft_split.c (100%) rename Libft/{ => srcs}/ft_strchr.c (100%) rename Libft/{ => srcs}/ft_strdup.c (100%) rename Libft/{ => srcs}/ft_striteri.c (100%) rename Libft/{ => srcs}/ft_strjoin.c (100%) rename Libft/{ => srcs}/ft_strlcat.c (100%) rename Libft/{ => srcs}/ft_strlcpy.c (100%) rename Libft/{ => srcs}/ft_strlen.c (100%) rename Libft/{ => srcs}/ft_strmapi.c (100%) rename Libft/{ => srcs}/ft_strncat.c (100%) rename Libft/{ => srcs}/ft_strncmp.c (100%) rename Libft/{ => srcs}/ft_strnstr.c (100%) rename Libft/{ => srcs}/ft_strrchr.c (100%) rename Libft/{ => srcs}/ft_strtrim.c (100%) rename Libft/{ => srcs}/ft_substr.c (100%) rename Libft/{ => srcs}/ft_tolower.c (100%) rename Libft/{ => srcs}/ft_toupper.c (100%) rename Libft/{ => srcs}/get_next_line.c (100%) rename Libft/{ => srcs}/get_next_line_utils.c (100%) diff --git a/Libft/Makefile b/Libft/Makefile index 1b49a31..a4ec870 100644 --- a/Libft/Makefile +++ b/Libft/Makefile @@ -6,73 +6,84 @@ # By: eunwolee +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2022/11/17 12:21:51 by eunwolee #+# #+# # -# Updated: 2023/07/10 19:30:40 by eunwolee ### ########.fr # +# Updated: 2023/08/14 07:52:20 by eunwolee ### ########.fr # # # # **************************************************************************** # NAME = libft.a +INCS_DIR = incs +SRCS_DIR = srcs +OBJS_DIR = objs + CC = cc CFLAGS = -Wall -Wextra -Werror AR = ar rcs -RM = rm -f +RM = rm -rf -SRCS = ft_isalpha.c \ - ft_isdigit.c \ - ft_isalnum.c \ - ft_isascii.c \ - ft_isprint.c \ - ft_toupper.c \ - ft_tolower.c \ - ft_memcmp.c \ - ft_memset.c \ - ft_memchr.c \ - ft_memcpy.c \ - ft_memmove.c \ - ft_calloc.c \ - ft_bzero.c \ - ft_strlen.c \ - ft_strlcpy.c \ - ft_strlcat.c \ - ft_strncat.c \ - ft_strchr.c \ - ft_strrchr.c \ - ft_strnstr.c \ - ft_strdup.c \ - ft_strncmp.c \ - ft_atoi.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 \ - get_next_line.c \ - get_next_line_utils.c +SRCS = ft_isalpha.c \ + ft_isdigit.c \ + ft_isalnum.c \ + ft_isascii.c \ + ft_isprint.c \ + ft_toupper.c \ + ft_tolower.c \ + ft_memcmp.c \ + ft_memset.c \ + ft_memchr.c \ + ft_memcpy.c \ + ft_memmove.c \ + ft_calloc.c \ + ft_bzero.c \ + ft_strlen.c \ + ft_strlcpy.c \ + ft_strlcat.c \ + ft_strncat.c \ + ft_strchr.c \ + ft_strrchr.c \ + ft_strnstr.c \ + ft_strdup.c \ + ft_strncmp.c \ + ft_atoi.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 \ + get_next_line.c \ + get_next_line_utils.c -OBJS = $(SRCS:%.c=%.o) +SRCS_WITH_PATH = $(addprefix $(SRCS_DIR)/, $(SRCS)) +OBJS = $(SRCS_WITH_PATH:$(SRCS_DIR)/%.c=$(OBJS_DIR)/%.o) all: $(NAME) $(NAME): $(OBJS) - $(AR) $@ $^ + @echo "LIBFT BUILD DONE" + @$(AR) $@ $^ + +${OBJS_DIR}/%.o: ${SRCS_DIR}/%.c | ${OBJS_DIR} + @$(CC) $(CFLAGS) -c $^ -o $@ -I $(INCS_DIR) -%.o: %.c - $(CC) $(CFLAGS) -c $^ -I . +${OBJS_DIR}: + @echo "LIBFT BUILD" + @mkdir ${OBJS_DIR} clean: - $(RM) $(OBJS) + @$(RM) $(OBJS_DIR) -fclean: clean - $(RM) $(NAME) +fclean: + @$(MAKE) clean + @$(RM) $(NAME) re: - $(MAKE) fclean - $(MAKE) all + @$(MAKE) fclean + @$(MAKE) all .PHONY: all clean fclean re diff --git a/Libft/libft.h b/Libft/incs/libft.h similarity index 100% rename from Libft/libft.h rename to Libft/incs/libft.h diff --git a/Libft/ft_atoi.c b/Libft/srcs/ft_atoi.c similarity index 100% rename from Libft/ft_atoi.c rename to Libft/srcs/ft_atoi.c diff --git a/Libft/ft_bzero.c b/Libft/srcs/ft_bzero.c similarity index 100% rename from Libft/ft_bzero.c rename to Libft/srcs/ft_bzero.c diff --git a/Libft/ft_calloc.c b/Libft/srcs/ft_calloc.c similarity index 100% rename from Libft/ft_calloc.c rename to Libft/srcs/ft_calloc.c diff --git a/Libft/ft_isalnum.c b/Libft/srcs/ft_isalnum.c similarity index 100% rename from Libft/ft_isalnum.c rename to Libft/srcs/ft_isalnum.c diff --git a/Libft/ft_isalpha.c b/Libft/srcs/ft_isalpha.c similarity index 100% rename from Libft/ft_isalpha.c rename to Libft/srcs/ft_isalpha.c diff --git a/Libft/ft_isascii.c b/Libft/srcs/ft_isascii.c similarity index 100% rename from Libft/ft_isascii.c rename to Libft/srcs/ft_isascii.c diff --git a/Libft/ft_isdigit.c b/Libft/srcs/ft_isdigit.c similarity index 100% rename from Libft/ft_isdigit.c rename to Libft/srcs/ft_isdigit.c diff --git a/Libft/ft_isprint.c b/Libft/srcs/ft_isprint.c similarity index 100% rename from Libft/ft_isprint.c rename to Libft/srcs/ft_isprint.c diff --git a/Libft/ft_itoa.c b/Libft/srcs/ft_itoa.c similarity index 100% rename from Libft/ft_itoa.c rename to Libft/srcs/ft_itoa.c diff --git a/Libft/ft_memchr.c b/Libft/srcs/ft_memchr.c similarity index 100% rename from Libft/ft_memchr.c rename to Libft/srcs/ft_memchr.c diff --git a/Libft/ft_memcmp.c b/Libft/srcs/ft_memcmp.c similarity index 100% rename from Libft/ft_memcmp.c rename to Libft/srcs/ft_memcmp.c diff --git a/Libft/ft_memcpy.c b/Libft/srcs/ft_memcpy.c similarity index 100% rename from Libft/ft_memcpy.c rename to Libft/srcs/ft_memcpy.c diff --git a/Libft/ft_memmove.c b/Libft/srcs/ft_memmove.c similarity index 100% rename from Libft/ft_memmove.c rename to Libft/srcs/ft_memmove.c diff --git a/Libft/ft_memset.c b/Libft/srcs/ft_memset.c similarity index 100% rename from Libft/ft_memset.c rename to Libft/srcs/ft_memset.c diff --git a/Libft/ft_putchar_fd.c b/Libft/srcs/ft_putchar_fd.c similarity index 100% rename from Libft/ft_putchar_fd.c rename to Libft/srcs/ft_putchar_fd.c diff --git a/Libft/ft_putendl_fd.c b/Libft/srcs/ft_putendl_fd.c similarity index 100% rename from Libft/ft_putendl_fd.c rename to Libft/srcs/ft_putendl_fd.c diff --git a/Libft/ft_putnbr_fd.c b/Libft/srcs/ft_putnbr_fd.c similarity index 100% rename from Libft/ft_putnbr_fd.c rename to Libft/srcs/ft_putnbr_fd.c diff --git a/Libft/ft_putstr_fd.c b/Libft/srcs/ft_putstr_fd.c similarity index 100% rename from Libft/ft_putstr_fd.c rename to Libft/srcs/ft_putstr_fd.c diff --git a/Libft/ft_split.c b/Libft/srcs/ft_split.c similarity index 100% rename from Libft/ft_split.c rename to Libft/srcs/ft_split.c diff --git a/Libft/ft_strchr.c b/Libft/srcs/ft_strchr.c similarity index 100% rename from Libft/ft_strchr.c rename to Libft/srcs/ft_strchr.c diff --git a/Libft/ft_strdup.c b/Libft/srcs/ft_strdup.c similarity index 100% rename from Libft/ft_strdup.c rename to Libft/srcs/ft_strdup.c diff --git a/Libft/ft_striteri.c b/Libft/srcs/ft_striteri.c similarity index 100% rename from Libft/ft_striteri.c rename to Libft/srcs/ft_striteri.c diff --git a/Libft/ft_strjoin.c b/Libft/srcs/ft_strjoin.c similarity index 100% rename from Libft/ft_strjoin.c rename to Libft/srcs/ft_strjoin.c diff --git a/Libft/ft_strlcat.c b/Libft/srcs/ft_strlcat.c similarity index 100% rename from Libft/ft_strlcat.c rename to Libft/srcs/ft_strlcat.c diff --git a/Libft/ft_strlcpy.c b/Libft/srcs/ft_strlcpy.c similarity index 100% rename from Libft/ft_strlcpy.c rename to Libft/srcs/ft_strlcpy.c diff --git a/Libft/ft_strlen.c b/Libft/srcs/ft_strlen.c similarity index 100% rename from Libft/ft_strlen.c rename to Libft/srcs/ft_strlen.c diff --git a/Libft/ft_strmapi.c b/Libft/srcs/ft_strmapi.c similarity index 100% rename from Libft/ft_strmapi.c rename to Libft/srcs/ft_strmapi.c diff --git a/Libft/ft_strncat.c b/Libft/srcs/ft_strncat.c similarity index 100% rename from Libft/ft_strncat.c rename to Libft/srcs/ft_strncat.c diff --git a/Libft/ft_strncmp.c b/Libft/srcs/ft_strncmp.c similarity index 100% rename from Libft/ft_strncmp.c rename to Libft/srcs/ft_strncmp.c diff --git a/Libft/ft_strnstr.c b/Libft/srcs/ft_strnstr.c similarity index 100% rename from Libft/ft_strnstr.c rename to Libft/srcs/ft_strnstr.c diff --git a/Libft/ft_strrchr.c b/Libft/srcs/ft_strrchr.c similarity index 100% rename from Libft/ft_strrchr.c rename to Libft/srcs/ft_strrchr.c diff --git a/Libft/ft_strtrim.c b/Libft/srcs/ft_strtrim.c similarity index 100% rename from Libft/ft_strtrim.c rename to Libft/srcs/ft_strtrim.c diff --git a/Libft/ft_substr.c b/Libft/srcs/ft_substr.c similarity index 100% rename from Libft/ft_substr.c rename to Libft/srcs/ft_substr.c diff --git a/Libft/ft_tolower.c b/Libft/srcs/ft_tolower.c similarity index 100% rename from Libft/ft_tolower.c rename to Libft/srcs/ft_tolower.c diff --git a/Libft/ft_toupper.c b/Libft/srcs/ft_toupper.c similarity index 100% rename from Libft/ft_toupper.c rename to Libft/srcs/ft_toupper.c diff --git a/Libft/get_next_line.c b/Libft/srcs/get_next_line.c similarity index 100% rename from Libft/get_next_line.c rename to Libft/srcs/get_next_line.c diff --git a/Libft/get_next_line_utils.c b/Libft/srcs/get_next_line_utils.c similarity index 100% rename from Libft/get_next_line_utils.c rename to Libft/srcs/get_next_line_utils.c diff --git a/Makefile b/Makefile index 0709f70..8a3c73f 100644 --- a/Makefile +++ b/Makefile @@ -5,79 +5,100 @@ L_NAME = libft.a INCS_DIR = incs SRCS_DIR = srcs +OBJS_DIR = objs -CC = cc -g3 +CC = cc +# CC = cc -g3 CFLAGS = -Wall -Wextra -Werror -I ~/.brew/opt/readline/include +RLFLAGS = -lreadline -ltermcap RM = rm -rf MAKE = make -SRCS = $(SRCS_DIR)/minishell.c \ - $(SRCS_DIR)/init/init.c \ - $(SRCS_DIR)/lexer/lexer.c \ - $(SRCS_DIR)/lexer/tokenizer.c \ - $(SRCS_DIR)/lexer/quote.c \ - $(SRCS_DIR)/lexer/expand.c \ - $(SRCS_DIR)/lexer/expand_check.c \ - $(SRCS_DIR)/lexer/lexer_utils.c \ - $(SRCS_DIR)/parser/syntax.c \ - $(SRCS_DIR)/parser/parser.c \ - $(SRCS_DIR)/utils/env.c \ - $(SRCS_DIR)/utils/list.c \ - $(SRCS_DIR)/utils/list_clear.c \ - $(SRCS_DIR)/utils/tree.c \ - $(SRCS_DIR)/utils/utils.c \ - $(SRCS_DIR)/utils/temp.c \ - $(SRCS_DIR)/builtin/builtin.c \ - $(SRCS_DIR)/builtin/builtin_utils.c \ - $(SRCS_DIR)/builtin/ft_cd.c \ - $(SRCS_DIR)/builtin/ft_echo.c \ - $(SRCS_DIR)/builtin/ft_exit.c \ - $(SRCS_DIR)/builtin/ft_exit_two.c \ - $(SRCS_DIR)/builtin/ft_pwd.c \ - $(SRCS_DIR)/builtin/ft_unset.c \ - $(SRCS_DIR)/builtin/ft_export.c \ - $(SRCS_DIR)/builtin/ft_export_two.c \ - $(SRCS_DIR)/builtin/ft_env.c \ - $(SRCS_DIR)/builtin/ft_atolong.c \ - $(SRCS_DIR)/execute/checkbulitin.c \ - $(SRCS_DIR)/execute/execve.c \ - $(SRCS_DIR)/execute/freepipe.c \ - $(SRCS_DIR)/execute/pipe.c \ - $(SRCS_DIR)/execute/pipeutils.c \ - $(SRCS_DIR)/execute/setpath.c \ - $(SRCS_DIR)/redirect/heredocutils.c \ - $(SRCS_DIR)/redirect/heredoc.c \ - $(SRCS_DIR)/redirect/redirection.c \ - $(SRCS_DIR)/signal/signal.c \ +SRCS = minishell.c \ + init/init.c \ + lexer/lexer.c \ + lexer/tokenizer.c \ + lexer/quote.c \ + lexer/expand.c \ + lexer/expand_check.c \ + lexer/lexer_utils.c \ + parser/syntax.c \ + parser/parser.c \ + utils/env.c \ + utils/list.c \ + utils/list_clear.c \ + utils/tree.c \ + utils/utils.c \ + utils/temp.c \ + builtin/builtin.c \ + builtin/builtin_utils.c \ + builtin/ft_cd.c \ + builtin/ft_echo.c \ + builtin/ft_exit.c \ + builtin/ft_exit_two.c \ + builtin/ft_pwd.c \ + builtin/ft_unset.c \ + builtin/ft_export.c \ + builtin/ft_export_two.c \ + builtin/ft_env.c \ + builtin/ft_atolong.c \ + execute/checkbulitin.c \ + execute/execve.c \ + execute/freepipe.c \ + execute/pipe.c \ + execute/pipeutils.c \ + execute/setpath.c \ + redirect/heredocutils.c \ + redirect/heredoc.c \ + redirect/redirection.c \ + signal/signal.c -OBJS = $(SRCS:%.c=%.o) - -%.o: %.c - $(CC) $(CFLAGS) -c $^ -o $@ -I $(INCS_DIR) +SRCS_WITH_PATH = $(addprefix $(SRCS_DIR)/, $(SRCS)) +OBJS = $(SRCS_WITH_PATH:$(SRCS_DIR)/%.c=$(OBJS_DIR)/%.o) all: $(NAME) +${OBJS_DIR}/%.o: ${SRCS_DIR}/%.c | ${OBJS_DIR} + @$(CC) $(CFLAGS) -c $^ -o $@ -I $(INCS_DIR) + +${OBJS_DIR}: + @echo "MINISHELL BUILD" + @mkdir ${OBJS_DIR} + @mkdir ${OBJS_DIR}/init + @mkdir ${OBJS_DIR}/lexer + @mkdir ${OBJS_DIR}/parser + @mkdir ${OBJS_DIR}/utils + @mkdir ${OBJS_DIR}/builtin + @mkdir ${OBJS_DIR}/execute + @mkdir ${OBJS_DIR}/redirect + @mkdir ${OBJS_DIR}/signal + $(NAME): $(L_NAME) $(OBJS) - $(CC) $^ -o $@ -I $(INCS_DIR) -lreadline -L ~/.brew/opt/readline/lib -ltermcap + @echo "MINISHELL DONE" + @$(CC) $(RLFLAGS) $^ -o $@ -I $(INCS_DIR) -L ~/.brew/opt/readline/lib # $(CC) $^ -o $@ -I $(INCS_DIR) -fsanitize=address $(L_NAME): - $(MAKE) -C $(L_DIR) - cp ./$(L_DIR)/$(L_NAME) . + @echo "LIBFT BUILD" + @$(MAKE) -C $(L_DIR) + @cp ./$(L_DIR)/$(L_NAME) . clean: - $(MAKE) fclean -C $(L_DIR) - $(RM) $(OBJS) - $(RM) $(SRCS_DIR_M)/*.o $(SRCS_DIR_B)/*.o $(L_NAME) + @echo "MINISHELL CLEAN" + @$(MAKE) fclean -C $(L_DIR) + @$(RM) $(OBJS_DIR) + @$(RM) $(L_NAME) fclean: - $(MAKE) fclean -C $(L_DIR) - $(MAKE) clean - $(RM) $(NAME) + @$(MAKE) fclean -C $(L_DIR) + @$(MAKE) clean + @echo "MINISHELL FCLEAN" + @$(RM) $(NAME) re: - $(MAKE) fclean - $(MAKE) all + @echo "RE_BUILD" + @$(MAKE) fclean + @$(MAKE) all .PHONY: all clean fclean re \ No newline at end of file From dc365e948a1dd218cc781af332efd72c64695ee4 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Mon, 14 Aug 2023 08:39:16 +0900 Subject: [PATCH 29/57] =?UTF-8?q?+dong,=20builtin=20=EC=88=98=EC=A0=95?= =?UTF-8?q?=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Libft/libft.a | Bin 0 -> 35328 bytes Libft/objs/ft_atoi.o | Bin 0 -> 880 bytes Libft/objs/ft_bzero.o | Bin 0 -> 584 bytes Libft/objs/ft_calloc.o | Bin 0 -> 696 bytes Libft/objs/ft_isalnum.o | Bin 0 -> 688 bytes Libft/objs/ft_isalpha.o | Bin 0 -> 632 bytes Libft/objs/ft_isascii.o | Bin 0 -> 592 bytes Libft/objs/ft_isdigit.o | Bin 0 -> 592 bytes Libft/objs/ft_isprint.o | Bin 0 -> 592 bytes Libft/objs/ft_itoa.o | Bin 0 -> 1128 bytes Libft/objs/ft_memchr.o | Bin 0 -> 648 bytes Libft/objs/ft_memcmp.o | Bin 0 -> 680 bytes Libft/objs/ft_memcpy.o | Bin 0 -> 680 bytes Libft/objs/ft_memmove.o | Bin 0 -> 784 bytes Libft/objs/ft_memset.o | Bin 0 -> 608 bytes Libft/objs/ft_putchar_fd.o | Bin 0 -> 624 bytes Libft/objs/ft_putendl_fd.o | Bin 0 -> 856 bytes Libft/objs/ft_putnbr_fd.o | Bin 0 -> 1048 bytes Libft/objs/ft_putstr_fd.o | Bin 0 -> 680 bytes Libft/objs/ft_split.o | Bin 0 -> 1976 bytes Libft/objs/ft_strchr.o | Bin 0 -> 672 bytes Libft/objs/ft_strdup.o | Bin 0 -> 736 bytes Libft/objs/ft_striteri.o | Bin 0 -> 624 bytes Libft/objs/ft_strjoin.o | Bin 0 -> 888 bytes Libft/objs/ft_strlcat.o | Bin 0 -> 840 bytes Libft/objs/ft_strlcpy.o | Bin 0 -> 768 bytes Libft/objs/ft_strlen.o | Bin 0 -> 624 bytes Libft/objs/ft_strmapi.o | Bin 0 -> 792 bytes Libft/objs/ft_strncat.o | Bin 0 -> 968 bytes Libft/objs/ft_strncmp.o | Bin 0 -> 776 bytes Libft/objs/ft_strnstr.o | Bin 0 -> 936 bytes Libft/objs/ft_strrchr.o | Bin 0 -> 672 bytes Libft/objs/ft_strtrim.o | Bin 0 -> 1320 bytes Libft/objs/ft_substr.o | Bin 0 -> 1000 bytes Libft/objs/ft_tolower.o | Bin 0 -> 600 bytes Libft/objs/ft_toupper.o | Bin 0 -> 600 bytes Libft/objs/get_next_line.o | Bin 0 -> 2936 bytes Libft/objs/get_next_line_utils.o | Bin 0 -> 808 bytes incs/bulitin.h | 6 +- incs/minishell.h | 4 +- incs/pipe.h | 6 +- incs/struct.h | 3 +- incs/utils.h | 7 +- libft.a | Bin 0 -> 35328 bytes minishell | Bin 0 -> 75078 bytes objs/builtin/builtin.o | Bin 0 -> 2952 bytes objs/builtin/builtin_utils.o | Bin 0 -> 1456 bytes objs/builtin/ft_atolong.o | Bin 0 -> 1672 bytes objs/builtin/ft_cd.o | Bin 0 -> 2496 bytes objs/builtin/ft_echo.o | Bin 0 -> 1624 bytes objs/builtin/ft_env.o | Bin 0 -> 3040 bytes objs/builtin/ft_exit.o | Bin 0 -> 2096 bytes objs/builtin/ft_exit_two.o | Bin 0 -> 1176 bytes objs/builtin/ft_export.o | Bin 0 -> 8184 bytes objs/builtin/ft_export_two.o | Bin 0 -> 2728 bytes objs/builtin/ft_pwd.o | Bin 0 -> 1184 bytes objs/builtin/ft_unset.o | Bin 0 -> 784 bytes objs/execute/checkbulitin.o | Bin 0 -> 920 bytes objs/execute/execve.o | Bin 0 -> 3448 bytes objs/execute/freepipe.o | Bin 0 -> 1024 bytes objs/execute/pipe.o | Bin 0 -> 2632 bytes objs/execute/pipeutils.o | Bin 0 -> 1744 bytes objs/execute/setpath.o | Bin 0 -> 2472 bytes objs/init/init.o | Bin 0 -> 2520 bytes objs/lexer/expand.o | Bin 0 -> 2312 bytes objs/lexer/expand_check.o | Bin 0 -> 2992 bytes objs/lexer/lexer.o | Bin 0 -> 2720 bytes objs/lexer/lexer_utils.o | Bin 0 -> 1144 bytes objs/lexer/quote.o | Bin 0 -> 2928 bytes objs/lexer/tokenizer.o | Bin 0 -> 2280 bytes objs/minishell.o | Bin 0 -> 1088 bytes objs/parser/parser.o | Bin 0 -> 1616 bytes objs/parser/syntax.o | Bin 0 -> 3088 bytes objs/redirect/heredoc.o | Bin 0 -> 2504 bytes objs/redirect/heredocutils.o | Bin 0 -> 2816 bytes objs/redirect/redirection.o | Bin 0 -> 1560 bytes objs/signal/signal.o | Bin 0 -> 1728 bytes objs/utils/env.o | Bin 0 -> 2224 bytes objs/utils/list.o | Bin 0 -> 1184 bytes objs/utils/list_clear.o | Bin 0 -> 968 bytes objs/utils/temp.o | Bin 0 -> 3880 bytes objs/utils/tree.o | Bin 0 -> 1416 bytes objs/utils/utils.o | Bin 0 -> 1584 bytes srcs/builtin/builtin.c | 55 +++++- srcs/builtin/builtin_utils.c | 87 +++------ srcs/builtin/ft_atolong.c | 8 +- srcs/builtin/ft_cd.c | 8 +- srcs/builtin/ft_echo.c | 66 ++++++- srcs/builtin/ft_env.c | 93 ++++++++-- srcs/builtin/ft_exit.c | 12 +- srcs/builtin/ft_export.c | 293 +++++++++++++++++++++++++++---- srcs/builtin/ft_export_two.c | 32 +++- srcs/builtin/ft_pwd.c | 2 +- srcs/builtin/ft_unset.c | 8 +- srcs/execute/execve.c | 17 +- srcs/execute/freepipe.c | 6 +- srcs/execute/pipe.c | 53 ++++-- srcs/execute/setpath.c | 4 +- srcs/init/init.c | 8 +- srcs/lexer/expand.c | 4 +- srcs/redirect/heredoc.c | 7 +- srcs/redirect/heredocutils.c | 4 +- srcs/signal/signal.c | 5 +- srcs/utils/env.c | 20 ++- 104 files changed, 618 insertions(+), 200 deletions(-) create mode 100644 Libft/libft.a create mode 100644 Libft/objs/ft_atoi.o create mode 100644 Libft/objs/ft_bzero.o create mode 100644 Libft/objs/ft_calloc.o create mode 100644 Libft/objs/ft_isalnum.o create mode 100644 Libft/objs/ft_isalpha.o create mode 100644 Libft/objs/ft_isascii.o create mode 100644 Libft/objs/ft_isdigit.o create mode 100644 Libft/objs/ft_isprint.o create mode 100644 Libft/objs/ft_itoa.o create mode 100644 Libft/objs/ft_memchr.o create mode 100644 Libft/objs/ft_memcmp.o create mode 100644 Libft/objs/ft_memcpy.o create mode 100644 Libft/objs/ft_memmove.o create mode 100644 Libft/objs/ft_memset.o create mode 100644 Libft/objs/ft_putchar_fd.o create mode 100644 Libft/objs/ft_putendl_fd.o create mode 100644 Libft/objs/ft_putnbr_fd.o create mode 100644 Libft/objs/ft_putstr_fd.o create mode 100644 Libft/objs/ft_split.o create mode 100644 Libft/objs/ft_strchr.o create mode 100644 Libft/objs/ft_strdup.o create mode 100644 Libft/objs/ft_striteri.o create mode 100644 Libft/objs/ft_strjoin.o create mode 100644 Libft/objs/ft_strlcat.o create mode 100644 Libft/objs/ft_strlcpy.o create mode 100644 Libft/objs/ft_strlen.o create mode 100644 Libft/objs/ft_strmapi.o create mode 100644 Libft/objs/ft_strncat.o create mode 100644 Libft/objs/ft_strncmp.o create mode 100644 Libft/objs/ft_strnstr.o create mode 100644 Libft/objs/ft_strrchr.o create mode 100644 Libft/objs/ft_strtrim.o create mode 100644 Libft/objs/ft_substr.o create mode 100644 Libft/objs/ft_tolower.o create mode 100644 Libft/objs/ft_toupper.o create mode 100644 Libft/objs/get_next_line.o create mode 100644 Libft/objs/get_next_line_utils.o create mode 100644 libft.a create mode 100755 minishell create mode 100644 objs/builtin/builtin.o create mode 100644 objs/builtin/builtin_utils.o create mode 100644 objs/builtin/ft_atolong.o create mode 100644 objs/builtin/ft_cd.o create mode 100644 objs/builtin/ft_echo.o create mode 100644 objs/builtin/ft_env.o create mode 100644 objs/builtin/ft_exit.o create mode 100644 objs/builtin/ft_exit_two.o create mode 100644 objs/builtin/ft_export.o create mode 100644 objs/builtin/ft_export_two.o create mode 100644 objs/builtin/ft_pwd.o create mode 100644 objs/builtin/ft_unset.o create mode 100644 objs/execute/checkbulitin.o create mode 100644 objs/execute/execve.o create mode 100644 objs/execute/freepipe.o create mode 100644 objs/execute/pipe.o create mode 100644 objs/execute/pipeutils.o create mode 100644 objs/execute/setpath.o create mode 100644 objs/init/init.o create mode 100644 objs/lexer/expand.o create mode 100644 objs/lexer/expand_check.o create mode 100644 objs/lexer/lexer.o create mode 100644 objs/lexer/lexer_utils.o create mode 100644 objs/lexer/quote.o create mode 100644 objs/lexer/tokenizer.o create mode 100644 objs/minishell.o create mode 100644 objs/parser/parser.o create mode 100644 objs/parser/syntax.o create mode 100644 objs/redirect/heredoc.o create mode 100644 objs/redirect/heredocutils.o create mode 100644 objs/redirect/redirection.o create mode 100644 objs/signal/signal.o create mode 100644 objs/utils/env.o create mode 100644 objs/utils/list.o create mode 100644 objs/utils/list_clear.o create mode 100644 objs/utils/temp.o create mode 100644 objs/utils/tree.o create mode 100644 objs/utils/utils.o diff --git a/Libft/libft.a b/Libft/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..e89a040032707a0f23af53a6098e67071e520eaa GIT binary patch literal 35328 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 literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_isalnum.o b/Libft/objs/ft_isalnum.o new file mode 100644 index 0000000000000000000000000000000000000000..8311ad73435a78ccf372be4688ce3871f566087b GIT binary patch literal 688 zcmb7CJxjw-6uq(43eoD2L0!xu6tti&Iw~qSIEZv`yM#tbGrtu!Qc8_$9=2%U4OodZ)X*#d2kCYvp0S2 z#*NJmyxaE~eoDWSzGrOt8B0h}ELvckr6^r^jV*%nazGsm;5-hR+_T))RH`rkO)6D7 hof98N?47&bi5F?@RD+uTrNfFt)yNN5)Vi!6OCOCqO%MP8 literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_isalpha.o b/Libft/objs/ft_isalpha.o new file mode 100644 index 0000000000000000000000000000000000000000..f936134384ebac76d78e8c6def92e55f0fe03b61 GIT binary patch literal 632 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg{|11j7BHi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJHe0cC*9gXskeu`o2i)PU&t_~iWDg2d#K_|m-c%)FHNcpn#J zd6+p0FhQVU%s{pRkcK)H#dss2oCFX<!C2I2r91_6*7 z5C-W5*+CBY@62%V0XM_W7u*gzIanDBUo4+51q^p{pqV0Iu}q-Y@%d7~a6yQ*LezO6 zi@gMjU7s(t0;*Sop&{r6Kf_L-yF~s2X^?pj_#Jiv?VEUjIsO{Vt>Ewy0DA)_1gC*| w*o1*RK9C2Y02DfWKu^QM86?GzB+n3^RuZ3CoS0LPk;sr!l3QR1CJkWv0U(J-hX4Qo literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_isascii.o b/Libft/objs/ft_isascii.o new file mode 100644 index 0000000000000000000000000000000000000000..6895e02eb9b0f074c0d3d2b35b63434a98217467 GIT binary patch literal 592 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P08wF5<5+(=K!zK*m@PQl-1t4GZ0X+lr h8%T;DNuD7-tt39PII%c6Gm{~wB)7m2Od7!S0{}(4JCpzb literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_isdigit.o b/Libft/objs/ft_isdigit.o new file mode 100644 index 0000000000000000000000000000000000000000..922557d07d952d8a42f60e7d36dfb72bb195ae68 GIT binary patch literal 592 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P08wF5<5+(=K!zK*m@PQl-1t4GZ0X+lr h8%T;DNuD7-tt39PxS%LAuY@6|B)7m2Od7!S0|2AlJTw3R literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_itoa.o b/Libft/objs/ft_itoa.o new file mode 100644 index 0000000000000000000000000000000000000000..853a82d120c8aa5ad2a5be249327b6184fbacfa5 GIT binary patch literal 1128 zcma)6O=uHQ5T5Ne$!=o}g+jHc8}L$)LhZ!}9u}fdr3WcJc=8cae-`pnVWmPT1ab-J zCFn`PimgTU!r;henL?o87nB2o@YNZ{C|X-#0(J&8MH=exD#x z2*S%a^geIWP{?Vh=kNZ#m}7yz<}(n5=LFoW@|uLO?>w?24k1>r-CB*#;qI5@VLrz0 zsFGuxDq##;A@b$odMK3@Zd*ZLcXXpKVlK62VXi z*T8-cxEO2(16qJhLT^G@n3t8YJU`h2cKdma-I@yNnC8^gQ zYj)1LPUp6($7sq^^=*C2d^$&!J=)S=@O?KyJuhMQG=;uv@&Hy_W zVA*$Fsq9TmetdodHEYVmf%bvwU%~lGZMcVOa{CGDdyV>*tP2^R1F_6~I2g=uZ>`Qt z7x^9=sFBYOdgGkUsyOOzW?PtH{kD%RS2ZjN-z6HQB=t?g6}FPjA?p4qtZ^ zas^v}=Fh-_Vm=+%I1HcT=V4C<-0bq-D4#>#vwY8wU4F3B*rrC}@gL!1U;+{Ok}cM( edzMY2m@5>@c@lSRVcF#z73|{rMStZ_#g{+$EZs){ literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_memchr.o b/Libft/objs/ft_memchr.o new file mode 100644 index 0000000000000000000000000000000000000000..a0a51afb13a7db7b5870c94d8eaad50fab46323f GIT binary patch literal 648 zcmbVKJx{|h5WVz+qzV*?R!ZrT{)EB;-8{g?z|eusLZPS#QX&)tBO?O?{RLeaS-T~8OM=W)hv4B>fMuTGWdDyv~HWpEls`#~(v2Ny?!11Wd5 z^7^d_TE;gptO&jdZ?^ht{5rG-@S`oE7=UpR=Y{Ey;5l}IU4V^i7~IR>_>ZNJ^gO9i z^6Jz0&80-uM51hXUyPMc9n7vPS0t4(&8E;Di)P9jHJt)&Xw4SLiO$p)9mlF1D|^(u zqq(L$N^l=_#dT#G^6d9C^-|=yf8vP*dl)_x9tMYa+E;eO2rY7NF@CNegJ{3BjE!8 zgDwPd6^P13aJ*S|!;ugKlf0cb^JZpuZ}0y7?PHS2As8cWl|UAw19a>QsTwZ4G-VqvN={6D9Jbb9&I(m2z`E zuiu!UX8bCKx!^5$bJQQ>m!Zu9U)mIk0T>r?e%th4!gCw|TL2r^Fu0fZ_>X0G^f;)H zdJajw1fp}dnOHpDivuogzh^uN~>4%zDp}w^8|8YZRiTM2=6_Z+sf83}Oxc e8kO;}?EA13=5&&KiHzHE6nE(;iMvaBZO|tV&tNV9 literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_memcpy.o b/Libft/objs/ft_memcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..432a71542dd2a40a3eb37fb4330688e9c6f1b691 GIT binary patch literal 680 zcmbVKyH3L}6uluWDGIa_trY0g5iu1O=#~LC28IsZ3<^a>A|*o*urYR|U(g?5=qDiY z0l>msm=Yw0j%Fa7>)L9Nn7GpMeVu!3$9ekt{9Y!q2*yhR=yA{hVCz7lqQ94CT^=X} zB9l9)GZu7Th`4(l>jX}S_I{^5&rNi%1J*OMs#Ks`!(lH(a1lnwK`bu&S7-ebArAKP z{jp9O+V4WlM%;ndNBt$gjounC>#cwcz?j7KBRziy&$$a60&L7-@GS4~AIl!;Wl|;i zRw4QBl1!?;ELk*7oKbzlq8(`0lFGa`pjj>RNaBrZ%ugK5fs@!I72oycQjw-9^puu2 zs`reRt$M>0+>+(DQpcB@MH+rU1N*h6S>`EC=(EzCj9_ICSg$k literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_memmove.o b/Libft/objs/ft_memmove.o new file mode 100644 index 0000000000000000000000000000000000000000..9d5e31641ef589af73b037128240e95a73f0b95e GIT binary patch literal 784 zcmbVJJx>Bb5S`=D15q%6L#`LfiqSo@;$F)FQG_TH@Cqf+T&DRZ2 zDNf#j%!WUJjYs^T-$88+I<2js84BSh&JSb!J8TJY26_l(;T~4T@{IpTbWe|?JgMg# zsh12XnfFx6qKS0+#SM#g!CjEKS*}CVT;!6%?gj3b4shs^Hmu{R(B}U1tGw+OJBew( z=E-;}y+D%?bMy?iUu>8ez=Ws+*G*YoB?QkH@us!Z#U7PO6uEiK`wI_d^g`@nc(xFa zv7_P99K1K~!2Zbf6yBjXw8fKoL;a6s{k$giZGl Sy6?9x>vSIY?QMOQ4gL#Ewtlk! literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_memset.o b/Libft/objs/ft_memset.o new file mode 100644 index 0000000000000000000000000000000000000000..3524c0760ee6ccd2ade520ebc4f7777a2b686b43 GIT binary patch literal 608 zcmbVKJxc>Y5S=rLADreygo{?`B398xuF4e(78VvM>;_3rB6u<2ik6mX^9%eP=>&g( z*jPuajUX7XISbD>=Pq8r%7M4@@n#;o!#;ezeJv6>1e2o(bR?((ur)wu(ceekl>3 z$0Swb-=SAPybMuu)hYRHa24Q(TS7AclP0NG5Xk&KyyPx$2#86KKxU=qKbGFp+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*TVsc4*XM+jxbm+v!^8!jY5FJf4;wKUdwMn$I@GBtN2#3+mB1MW6!XVzMf%A-dApx6%`~d^@o?YS} zFm{4JK(r7`wMt`egs5*WdzhS!18?5EnccV9z1)Ake+?3K5kgWJs7VnA5EHK!K}FdGM2vmq=7 z5VA=66%_J5<1o>{13(IpkZ&N6y>j;sW9a|H_Z>YnPrIwl5|!Oj?Bg;St5uR*>+7PU z`t`-+KG8D#$3_9^*Q0b(De*@=LJb#;GtOTlTH`H5S1(cRMzo7{*mE{TRGud1QF`Lh zJYB2eyz*^`pZWtoPJIWtPDkiay+pHHV0dh1TD&T6AbkytyU&7T-n#@IM&XB)!+03w zPxApiBN}h(fF&k@k+%JP&~1{U0Zk^);SWZJ@(ZQxjqFov={-i-uM6jq}A%loRw~N0usA)`}D2VXDrDFqy zj&V%ZE={&d9MnbHp*Wf?D&0j$)9<{ThtJf42hKfz-}&x+_nmus^ZQRLkwy?+8lZW0 z0#L|PXw<4&;Xli?)Xv1(aWjytF6mIpSlTvj+m)J~d^>v^+g`xI_Xx=sAkewkKqebo zlv?;;q~eKplBnmidAw4;W-^D=g#^C$>&dwVLv1Fu;)zA2ViOKH4am6ylGJf7{MP%&S9glZs;_WrBRf7o1nrE@8MG2qaT$WEms+*^nTHw zFS)5uc8?WwjW){PGQJg}Veod0K(ob6{$g+LtFEtK%Qe?3H76D^~ox{DPzq{10P6$JPfp+jWZnqs$M@lRts+OVTM(p-2i z7mczn1tsnk%=5Z>7sr?xdmh^mw>kLutvEuWHPwfQLTW1&Hyu2L;y$2gw2Y3zT`9zyJUM literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_putstr_fd.o b/Libft/objs/ft_putstr_fd.o new file mode 100644 index 0000000000000000000000000000000000000000..e34149bfbdabb9b249a3d3fc46968974ecf735e1 GIT binary patch literal 680 zcmb7Bze_?<6h8VagUSLOszsY>5vrwCvbKf>hqgob6a_W2D+(^bTU-VAY}5XMbPM_e zqNTZ--V!uwVD+8bee{Bs4t(eP&X0TEJ@?(ezkVzb1qdcC1QbLh0N5(vYW25kn{-=G zAoAic@`9kLGpk%vnE=F`IXKSz#GbN^ka==;8BWg#(S_F|%$z+fS5LBv>y<{aVlyA^ z`|AZ0Bn-b{o&}x2FmqKs)|6=nVg>lFEutBKNt5I^A!fi$@D_L;I0D3^M<8eA8>0Vf zpLg^yZ3PEYhdMncKE6uFhy64U=K^%*-dwI>pIyw4;a|lh??!3VcX;fEY0?AZd)?=7 zYVu;y^;0x8l34nut-S$ecWy0y^xw(6bI6|)EjuBZOo6dW5+r-gZh#}Qps{su1dDp_ u97Vk3tBdr7gnR#riSvrjRjrh(5I1T?mD8DOT_MSNn@Xx&-PT^7o4x>P!Baf| literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_split.o b/Libft/objs/ft_split.o new file mode 100644 index 0000000000000000000000000000000000000000..0274283b48990647c87703b37087a4f2885a4d9d GIT binary patch literal 1976 zcma)7y-!n76hDs&ZT+B8h$yIq4NPjpLFr&pttJi(#4xy+3zn*lrBr;x8e;Mi784w7 zWHg~Twf+Tt6C^BbL}HASDd5l!CK@#XlUjf0e#nC^p5(rB&&NIIch0%JUH|>{&ru?a zK>Rs`Rpw1E7U(qAkhDs%>2rz?fIev-Bm1G_p3O)h;c?eM!DqZAOyJBvzm5x_^!FTjL_S&+X4Qcb! zZq*;#4OsNO>R;@BL39OJI+y3dJ7I7>2is$|flC|Cy~4`#c|ME6caOt&J3;wI54jcS zmXQCg&L22LgM7ZKW3zp;C+70`0`j1zot%?n6(RG!Fei5Ev+)vY%dhyv$Hpq5#+Fij z4mHAODIP92I>=?;B76f@EGlt!Ep|WjDV$2b5-r6=Iba1JF@`mbLE2g=&-vPQz9Rgr zv(&-3Dk1c&1GRI{kf#=MToo@kZ!m5(8eJ9m)Mu}kfKTB(FpJF)?QRK*ZtFgWErq!n z;-2qeUTamDm3}2!6Dz1^KW1qI<|<Dj=JR}MT&p=WC5MctDCIVXy%;WF-OXAN-_mf$?+<2e16>PNq>VIB1^!(Yy8Rh0M5 zYmVn-mFjWIS5W&V@Ub6e%=hqd4YHY+xfeWt&P%|?_TO0p*}5}{+wqS3Cugr?<4!0{tRl_^dqiiQ-9*X`MWHm5c7_6>X0Y@Fl3KN z{A2OTT&Gt)c|ay{-xg1@>6A?(nM;~2D`)QEpNd2xgFQBBaY4!H+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|z0xH}AHi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJIp1j+!J2h$4{Vqs{2sR7aP@yYqQ1&PTe@uhj?nRzMk@jfod z@++Vm1t@I*G>jR@4gk_nr=l2d1eB8iVu&0sP%#h#0Z0)@JOZk}14x7T+&~-v#2^4t z1HvG^AUntb|C<>uKHz5f`H-Js=L>#^oiFqmEP>{Uyx?~D$-(Gg$-&4__(FWX6bBQ7 zIYRt^}0RzA^#=r**Bv`zFr1+8K8RFAQ;)_d) Rk~4}Ja!PUw48f!U0|4h5Suy|s literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strdup.o b/Libft/objs/ft_strdup.o new file mode 100644 index 0000000000000000000000000000000000000000..ada19c5ee0486eb467f07cc0d4dbe8f7ba0b764c GIT binary patch literal 736 zcmb7CJxjw-6uoWQrlne!4(ejTrJ@DvqGJ#R2M31^ZqJfd6w)?mib@dzS-KY79PHTs z3I%_F=-?c;I5@a9Le+EA7p>yrf&0$6pYP_8ySJD338DxAe8gY}EOIbl2Id9o@1rZj z?O*~?=&OjcMP*(Ht9oil2P8ykbGP*Ehsu_M=W%Zyhr+QK*-RmX&>JTKuyC&xk+3K1GtFeTM!9w54;9W!**Z{u3_U|-Zj`4 z{2zSW(*3X%?GGL5xM}j;wC1D#!d1zCRy99Q_QOJ)I&_}84B`s;o}&552)%mh)ohz+ z758Vaow-2@>>~Gs86JA0+=p3Q-$S13x{eqOTkCz?+qqH1W4Nn568szdz#cq&S78Yp z2WP=3DuDRA6Gd=_A3$OeoWY~m(&yKl8q2dBbI0C()G+@mPh#H^$JUXdn`fb}G|f;N U)jEk<*)SS98CK0K2In%-C!!=_w*UYD literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_striteri.o b/Libft/objs/ft_striteri.o new file mode 100644 index 0000000000000000000000000000000000000000..a0a8a3eb480b1c2684ca86ec97c56499edd8e498 GIT binary patch literal 624 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg{|0V>=9Hi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJHe0A+y8gXskeu`o2i)PU&t_~iWDg2d#K_|m-c%)FHNcpn#J zd6+p0P{AKS^O%8b380}+r=l2d1d;<{h#W6aF%Sa*ND)X}0muO94*=2%K$;uG24WBZ zsR3b-UXU7c!2iPx7yni>t^C`}FmXY%{Evs+3_t(#GwcMKDYBwD{>MxHhMgRYoZTFZ z4wf8@423Vm=Su;@$Q&g9g4^Ne1Ad2{D}m}>0o5roa&+FyGC6ysoJ5PShN=l%cx z;(x21Rs!vrcz`+n8qAH*Z~{d;1^}APCIS@Y19=Pz_<%GY(6g}c1xfKE$uq>KmBbg9 V6lIpA7G*Nzl;jo|f=L6YegJtAPvQUo literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strjoin.o b/Libft/objs/ft_strjoin.o new file mode 100644 index 0000000000000000000000000000000000000000..de774eabb4c94570e4232da47ad82f2dc58cd1aa GIT binary patch literal 888 zcmb7Cze`(D6h5!lG(XxJ1RrwX><{{2W`Q@!NI}pB58`Y`C;29Ed(KuMaUFz zb1RD5pR0j%jV>zgTw~S}(s|S-y*X_B^1+vsYLYlOs|k z_@;HPT-;dAS$ebddA;;T>%~`oj+pgy(%$A*Pv-~FOHuxh&4Nw9hq))X6b@q%_Z^TB zZ~@I^fsf!za2jjqJj-6m|JVA;IPX2adDeUJJ8u_D{#fex)H;iN8JZI zv6nnGhIQPJLa&AUneRaBCQ&`?s@TE%kc@S4K4Zk{Q-;ic@AnhbveDOlTHL2r2jB58 zTI{=nyCO!ko`OE(ee}&cnlY5Z(0>??N;d3ega9*C~Ra7D~DUwX+bhuyP48q7Y-$69pR~jbIh9PwX!K zgLIa5Vk4GfAs58L?jpqaX0xX!SU4~{Z|CF9?#|wQynPNZ#u=VrDigvfoH#!mLaZ&Vul?);ln(Jx?JX9`5n*RR4p|}cd%NXa-VsNo z~UirciCu_)VbAz$X`=!>}O+uY`CF5p34wShYr+|D-8dlLI=^afYxGZc!`)I(c*v@J&*ItRsk&iTfL5-U2p literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strlcpy.o b/Libft/objs/ft_strlcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..b280b25b58ee194985258aabecda6f07dcdacef9 GIT binary patch literal 768 zcmb7Cu}eZ>5Wm;co?__|SQ06;NDx#*;U-jDLxe-yN0?!tX7!@NMR0LU2x`+&`w!fN zmbPe#hK5%VJcouhUtspT=l9Zvh7RuTclX`>zI*q*`_K2UF(QQ^Y+TSZg9sEd1vPE- zhp{_}%F_3lh%}V5j>tA4^wgO?;1D9QzMUAv4tkb=`M9?XV^h1R=+v+mB6*O_?<93` zk~`hc?FzB6HhgZ#AR>JlJSy;o!#5bsu2_Pdg!VsU9K}!w&%pU>0N%|Ld=%aX-Gs7m z4J-HZ9eoafe@IVN9=Zj!(Y>WgO$~Qm0%X1V$T9+P3pAI8MwaP|TONfzOsyKK6RqH$ z2~&$(^-{Pq3v9=z_b9Cx>JH6dHRPq@R$HSc-mqWK9By!2RYNB7lB0R2(6ZC-byKB{ z`#nlL)=))f4)G0UiYgSdXW)L!_SWkK>o^Z{Ue3WBwUX#`3#$!$Q>CSf$Kf@|_vKao zl4(TP-8?73F**b92XKVnz>g&xGQmfIp>uw%p%6dFo-U5{qf9b?{)1CF%IMkrqHPy! Frf*NVcrE|{ literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strlen.o b/Libft/objs/ft_strlen.o new file mode 100644 index 0000000000000000000000000000000000000000..e5563189f7ffb9f76d73eb6efd9f398b04828652 GIT binary patch literal 624 zcmbVKp-uxq5S^oiD>>+;grrb)5(yZBI{~f&QBgM`r38}pD6oV|5=;|R9j?Dpi6a`hzWdZqgSy Cv`MJ| literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strmapi.o b/Libft/objs/ft_strmapi.o new file mode 100644 index 0000000000000000000000000000000000000000..8eef3c68ca51aaefaa12c673617b608def692e64 GIT binary patch literal 792 zcmb7Cze_?<6h5z~sZ>f3ymHZ&s6nWfY)YuMhK7c=o0yT{uj)mC1P@w*mV}0&A;7MOPl?D zv{m}VRv>a>AM)&dsxE|?J~UMT5Mph4eeEZ9*pnix$Fmj=Tf;+^)59o4s*o!tQ>NI@ zA7t{ILaZ#g>kSn|6>dO82R{Rzd zpAgOA?vb10NIL@T8C2u=8uKrPRr70sQ@@s&NB@pAuEJ9L?w6rNr)eZ=RrIycH=b$5 zNn5D1HqTLJDlSp?dudog^R?GAoEmFJG@9r58u#*jm1EKFmKLk{FXdZZ)ZIH!@5-Oo zFPlV!WQ=!=-Nm>Ft^NsM5X7-4NDzx{s06-Q3c2b`U7_nO)qvPC#h$sFP3K9`T(X!U UkxOQ?g%oAYTye%e`E`lD082u9{Qv*} literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strncat.o b/Libft/objs/ft_strncat.o new file mode 100644 index 0000000000000000000000000000000000000000..9548586b43d63ff5f27709b1586807476c394701 GIT binary patch literal 968 zcmb7CzfTlV5T3^qcF#jj1Ig+Yf*nUfL>r~sL}?6#1qI#9Wj%uNI1XH+2{E~ZhU6NF z_ID-t516gg*w_&)td;7Wh6KAilVkbj?Y``V&@kDVdGqU=**EXt|MBT4ksuI@E8tZ= zOo2hSz}lQH7CWYr=)882&ODTsDHT@Ugc*iXOAE_OnQc#|Hw?z(+Ut@C9}m`GWl5=E zeXU*&LiMWl`g!e{Qj3pmjJ3s?N}VSFW1MM-bYwf4$+!=B6P(1ZAsGzfB=*mtZUp)r z^h4-8_$io)bC|i7doW*?Vkr*$TXMhujdt5|virM0y(5pJJ*m2`pnuwH6|sj0=rN%S ze$V)vR&giwecqnzE+E!MK6-!9UL$hJZR&A~^td18hUtcuxsUYLe}9J>KRD-?Lp|+W zjD`D{h#iW!AJ5QnfG2WISNQYjy}|Q*7s)*5;~ilBL4HYGZB7fCM~}$m{=hqqW6#bQ z%LHFbKk9hM5xE!oQ>*9>W&hccS>FWLkNzV6iOA_<5}-}=_fj>LM0b&o z_c^39(ova|-qEc$(U7vSz2BJZ<0zBRi)#&+p>`0@E&3o;s^MMnv!1ww+MvXJdyzzC-M1XRIlMH*xSG^z{WWYuH_#8vA{~b4wuP) zcgg=Kk*}A9uN`<7-X%~UL5or3>Ih( z&)Yfl8(y7BGujJ z%>h}a&-sop*Cn_(n=kjDbJXtZ4@pb&UdRnU#C=`#dXITt!`Dzz_i*(XciK90)sOW3 z+xNw1-Y1xsZ-2gwEWY7<(OMP(8lHn4hm*)N#`w@ho1@95aQ<&nq3|`OV^JRiwIA$N Wp|^giQcL{uR#nPDrM76+1^EXv5v9Wb literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strrchr.o b/Libft/objs/ft_strrchr.o new file mode 100644 index 0000000000000000000000000000000000000000..13f006b4b3c7ee1284c5c581ec3c11f49aba071a GIT binary patch literal 672 zcmbVIyH3ME5L_n#8v#iHk|9l8QUVQf=K>@O3W^kTCuBfDkPyrvC?nC(<_qF7zmU#< zfM}>gcNF;mQ($JDyEsTlNUSusyEA)pkC)HM*9wtE2wo~ciwh4xYyv8;eqRzzKj#ia zrnkW}N?I2}o&DZ03ua~1hsgS>KkRp*Z2(hk6~h36hnPRs`+LY9`eo(-4xVA~UOwYLkv-AtxJK!_ zOQX!DRJp-OHOPnOx~c`KV+For(XDa^b*Dso1)umI4c3;fls%{qsn8UBW^)VFSMZ-? znLG9Sd*9d&QrxSbl*OBQQ_O{zKi5#RjI$Qk&{a{G;9sobb7D=fRGZUDTu5;zqbO`e ObS>N6oqXNa0 zmBUg9r&_KR99OJVR+lUHgt&2aI<6Y$rLzSb{3weJvIMEoLgPHvli;ZRF(iROoW%Z% zs52qoK;|J+;9FoOxI*UIxYQy3iN?D2K4|E@V3*n*eQq>Nli$(B2q2q#x2cVD*!D8i zXWuYw`|RhuE^NenFJt%3I6d@q+c#dHd8&Md247}t7T@p!=9?KH&h?DR80?d^Cp_KU zHrMTEIokL@>*jNg50b!60#l=XFS#|_k~puLb0eI=%mA?$JVVq!#E1cdYq_qAJnqqH zic!$G(!)O6JG%Hd-X-ie)(e{0FLH({^7qh-bGyhjGV8udSq$C+r3%RTh}A9L*gZH}NZnE`wGMPDP0uhefO z{e<&pIuu{S!7)9F#G&|0#Bn#Rc`4r^F9CZK66a{~)5Kl3<{^<{@tw!}wd}}FWTk}Q zc!HnqaVU!TwXm(`yd-Tk*G;zhG09hV7HWE`p8sd2%ut`UPalY1KVXx%?}|rmz2wv$ uL$6oMyi{D}cZzkTmX<0?b?eJznSHn5JRngnluA{HN^ZG!E?oIMn0^9Qn*u!m literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_substr.o b/Libft/objs/ft_substr.o new file mode 100644 index 0000000000000000000000000000000000000000..d1abcbe0e1551f4589d91ffc49d0148a08dd3dff GIT binary patch literal 1000 zcma)5F>ljQ5I)xpwh0hbtuSZ63BR!Y*+x++pZij;v$ znIbVDF*Gna{RPPcQhxw~fw^qYjTpMwNWpw(`zdL}(39`oy?6J0clJAf`}6znB_fR= zyo^HE*eO6E*P$}@{=c+iB+-6q)!sll>qrU{!d-ps_Bn)DTv%G{@0IsqfRC|`p7eyq zsw#)A5XFu1=1S2OJC)t_$_pVLKNyTFoVv| zuK|~VZNuJz%|f3*SvZH4v0UQ}G4|(?sHT1I?PXfM`&y%^=Yvm2Q|-_CRNx&gw`G>X zrY-{Tyq8%gG&SnVcL$UEM02P)5#=bn3hU|1fix)eklO-|G^-wCj6Md~7&Dx63=Z6V z!U3OoS^b<7PE+;AOokft*80eN$2Nu1jyX@I(eL9+Eg#_9Ohn^|1BY6t(nfqVsmXkD z+zDIg)6}f4oI9AbsQT15s53p(m$~lW1O65By^&fNo{I}NVXweZlIJ}JMa?OPaszSvlWI<5h&{9? k@zNFBJI}Y>t;BV=N~;wT<&{!tqevyUym>obc~~L;034LLZU6uP literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_tolower.o b/Libft/objs/ft_tolower.o new file mode 100644 index 0000000000000000000000000000000000000000..6feae5c437e7a3858d479fa91e0d6b7aeab4b71f GIT binary patch literal 600 zcmb7ByG{a85FG@CWR=xufmHhmYNI8I+EG|g&`k_rBmox9HBf42>laY^4cl4T5gTo{ z+{PcUP|pl^a7}ESX7y*vad)(pg_PjWv`1p;Ps2t6y@#hFzuGzUJvQ~2MlC&N*0zyV j+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T0Tu25o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNe&jdCVX-&`_vTQH(bNN=X1QM2;7z7>I!YqzEL=0c3#mTL5VVAk7WL0YD4_ zAT=Ni(hIf&NRtZwJ2PB-z|FAp1-HXaj#kFP7t7~M0pr0OXr>5Q>?Kg_`h2Mq3`k;) z423WF8Fm8W46Fvk2C09*@30eS-oyjU@z-GP0EdSF*qJaPI1SXpCJf~9fjj^OAm8%= kJp~I#kQ6_XJVSh1Nqk9uX+c415kpQ%Zh;|~G=S*`08)TIf&c&j literal 0 HcmV?d00001 diff --git a/Libft/objs/get_next_line.o b/Libft/objs/get_next_line.o new file mode 100644 index 0000000000000000000000000000000000000000..dcf776a4686982b7a8e2055048374f2b6a5d706e GIT binary patch literal 2936 zcmb7GO>7%Q6rRn-@wzE>f+D#jQXGkkb6C_?2vVdVrwLLIIYd>2ICUEA4GuVVNsNjV zRWiy2DLoJY5)wZ(f`c9P&|B9hK)&RF1XLC3(YdWFD&S@#1@pc6vDdq4fsw~=-pu>` z-u&!Oe?9*DG-C!sqrYKvmj*NFXwRX~iB-Xd{@NpQ>YGRwkkw=WlLrYX+3_rG?dn{)CPL>b<68p^0EhoM(!g z*Vi&7{$An6Mj^}j@={L`107dIO{QR&>{VinMdTcX+iMpvI*Ts-JOg2LG!mluL+FhW zJ;m5v&{6aibZQhcb<%~Hz!BtswQhs`a=bHCJKkmcmBpl6UF5E1uy?(Cw}A-V z_-;4Zeiig5?S9W>(c;`|L zIPHIL@?ZUUHAh+JD9-BMsK^5`1>zc#`84C{y1*;2?#K5<<+lY}DT8&$w~ob%sa%1d zrEJRl)Abf?TSn|1!oR9=((xyiP12{>9(TKmkREJa4#Y_^*iaH4T}W>8I?~fUM4*Ek_Nj-b!FJ2WS8QUJaD0Ui@huNy|&v_ayo9Y_mqtV zqkM&ISPVLdTl>X1pZF1V(Yh2biT89Y0SwXSJ|?i{+KX9%xDuXgmF{`G@j|bKy_|}$4!s9rY@lwKOR9TeFxLM4h`2;MhfRP+p9up^&FgQ4 z(0We2j!RF_zoQ;!x}4EM`roQY_Kx%#TDS1sfTz^HI^)Me`3pY5r$P=kJ2T zwOs+F^)KZ7@@JCHXF=iGo&$v|8}EhCKd08ql8#(cG_B~2q97zcQUg7Mfo>lV4}i1I}C9id38eVq~n(zoD*X{9ARGGnZFU8 zM{UX{Zg6hT5V;I;ULCw-5fHf^P=jxqsS&<4Ht#zxuzM!`wsFyU4byM#yK8E l`+EQ4>fAcz+*CxJoLiQtf>pF^OO-1HDcYs#mN#ySd;{UChS2~3 literal 0 HcmV?d00001 diff --git a/incs/bulitin.h b/incs/bulitin.h index 9f30d5a..ee655ab 100644 --- a/incs/bulitin.h +++ b/incs/bulitin.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:06:06 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 16:12:07 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 08:06:41 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,7 @@ # include "struct.h" # define LLONG_MAX 9223372036854775807 +// # define LLONG_MIN -9223372036854775808ULL # define LLONG_MIN (-LLONG_MAX - 1) /*signal*/ @@ -25,6 +26,7 @@ void init_base(int ac); void child_handler(int signum); /*builtin*/ +int check_equal(char *str); void exec_bulitin(int bulitnum, t_data *data); int check_bulitin_func(char *name); void ft_cd(t_data *data, t_leaf *cur_root); @@ -38,10 +40,10 @@ char *check_keyval(t_data *data, char *str); char **sort_bubble(char **str, int size); int check_name(char *str); int check_underbar(char ch); -char **sort_bubble(char **str, int size); long long char_to_long_long(char *str, int *flag); int is_num_str(char *str); void exit_not_num(t_data *data, char *str); +void update_env_export(t_data *data); /*builtin utils*/ char **join_cmd(t_leaf *com_leaf); diff --git a/incs/minishell.h b/incs/minishell.h index bc732f3..f6a11d9 100644 --- a/incs/minishell.h +++ b/incs/minishell.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:05:33 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 16:03:55 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 08:06:14 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,6 +30,6 @@ # include "utils.h" # include "pipe.h" # include "message.h" -# include "../Libft/libft.h" +# include "../Libft/incs/libft.h" #endif \ No newline at end of file diff --git a/incs/pipe.h b/incs/pipe.h index 9a36635..8bfba4c 100644 --- a/incs/pipe.h +++ b/incs/pipe.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:03:34 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 16:03:34 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 08:31:51 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,7 +24,7 @@ void check_file(int fd, t_data *data); void check_redirect(t_leaf *leaf, t_data *data); void recover_std(t_data *data); void mk_heredoc_pipe(t_data *data); -void link_pipe(int i, t_pipe *base, t_data *data); +t_bool link_pipe(int i, t_pipe *base, t_data *data); void do_cmd(t_data *data); void exec_fork(t_data *data); void abs_path(t_data *data); @@ -35,5 +35,7 @@ void wait_child_processes(t_data *data); char *search_path(t_pipe *base, t_data *data); void execute(t_data *data); void write_str(char *content, int fd, t_data *data); +void error_check(int num, t_data *data); +void close_file(t_data *data); #endif \ No newline at end of file diff --git a/incs/struct.h b/incs/struct.h index 996271c..7fc6685 100644 --- a/incs/struct.h +++ b/incs/struct.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:24:15 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 16:03:30 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 08:08:48 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -48,6 +48,7 @@ typedef struct s_list struct s_list *next; t_token *token; char *env; + int equal_flag; }t_list; typedef struct s_leaf diff --git a/incs/utils.h b/incs/utils.h index 7018541..a15ac88 100644 --- a/incs/utils.h +++ b/incs/utils.h @@ -6,19 +6,17 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:32:09 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 16:03:25 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 08:27:11 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -//환경변수, 자료구조 및 기타 함수 - #ifndef UTILS_H # define UTILS_H # include "struct.h" void env_print(t_data *data); -t_list *env_search(t_data *data, char *key); +t_list *env_search(t_data *data, char *key, t_bool flag); t_bool env_remove(t_data *data, char *key); char **env_to_array(t_data *data); @@ -39,6 +37,7 @@ void program_error_exit(char *str); void input_free(t_data *data); void data_free(t_data *data); void init_base(int ac); + /*temp.c 임시 함수*/ void tree_print(t_leaf *leaf); void print_token(t_data *data); diff --git a/libft.a b/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..e89a040032707a0f23af53a6098e67071e520eaa GIT binary patch literal 35328 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 L{f%et+V%ed+@CQb literal 0 HcmV?d00001 diff --git a/objs/builtin/builtin.o b/objs/builtin/builtin.o new file mode 100644 index 0000000000000000000000000000000000000000..1a9a150cc28d4793dcbebc1c6a8232e22c91bc11 GIT binary patch literal 2952 zcmb7GUuauZ82_$Gn#9_FwzIBow)MsCAw##Stq_cKgMxXeqYvVP$L{8Ct)@wAZ(N{) z)glb`(!lW1WilZJg+8`V8}4Nfg)x~@AC#yMUIk&okVL5Q_ucaymR?QK11G=l_nqJQ z&biM}UQg z!6E8|J%h>xF2C}S-BJPnt2Ec>&fbc(u{TBKT8J98P^y7p)<=oTXKD2-1iOqWyyHc$ z3{{CYLWQSD^U;xvxSKi|AZ?l55Vd z$7|A;YVcZMvkmyVxYoriy(X-QK@*EW7uVVeqwP94X2R(D4%Xp}=&=tStQ$1C!w2hd zpXhi;57u%1+SPqIouWInC^ec<+Gf2MMLsO9^t(5BWoXRgDw^6xp8GuLe9b78VK?qK zn}ap9HE|aFHJY+;Ho_ZwA*);o4cD)(Jz1xSJ`=TmYIyw;8)xI9tk?Cm;ri=5Hrj?Q ztr?C`gF?C=`zbDcu}=Qn(EpZMZ*IprbDU|36NhdZdkXX4_QwQA%-&{JmklH!9F^Oo~x?RQ7nShZ@Guw%3zta1M-*^Afk{QZ?$2JL$J~ zwzPMmJxt}86~Bb+xR3*c_L~BA zJbz7LSCJdGD{HF0w{mKuIc53lWoO8-=kw&07F;S^$WSr2?6{zX{1PDdE(SNHga9aV zTN^Kt_-VFH`;Oe+{vF)A|1Re!N8};fY}0=oBjR39ya#*?SODT)No2%71H}1Bj0+zS z74Kx_NQ0sdlu&j&cKYis}00e&>V zKMQbD=Ul}{)<=DUwTZLMhCbW)H&)EKYHsQLGG*0q{MGXtftg~#m^ph<+y3pKoRVX! zv&HO!yO1-IxAG6{ti$dl$021eIdiVV^H8~b1`Z6&7Yie98?`u>&E{=Q#kA)g`)w0m loh#;Snb`5?jq#i@#*J~3vhHHxgrP7%pEVQ)=rhO=(chy0P!9kA literal 0 HcmV?d00001 diff --git a/objs/builtin/builtin_utils.o b/objs/builtin/builtin_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..6bb856492f4f1b516e2f6a0331c023ec3b1d2c79 GIT binary patch literal 1456 zcmb7E&1(}u6o1=InuMrnX<)SnTW>)KR1fMwWVIDMco6MDL7awskV?7%nv4LAC`C-m*fBzc)MEMuP_*dGkKzef;LlPCowp{_7NxMj&1y z;4&+VV9+_RC$)bpdf;!$3ec4ugUUP=Y?Ban@ujT{2q9K)KU_VrLv33na6ML=02JlT z2stc55+YySsO9pu*s@-%TLmHRu7rCm9aYCs&N%8Yw0DsBF@?~iaT)7baBz&%2nK^V zi2a|C6oI(zL*xoI~hCMpwqqBkS%z*<)j;?IuoH|`Pwdib^NprCpE2mSJJeQLodGvUmyB-ejD+O!EK1au)fm4xz+h`Ke&Uwjy{-+?1MYN+X&93 zpY$#(UxNF}Sj-;#nJ980`5w4G_Zcm#`QrYE^{LLVK`j>;`k3Wc^lJl0JiJ?+3w>oj zi5+zqJI7Fhe0-B>8Gn;n9&nDw0QYVWy*Zxy4(qo%;oZV_OfG9nf4&WNxx6qT8Kj<& z)aBv^e)%?NW->qYYzHY5`DJ``c%RwFka$DcYf5gTE`qbyA@P5bT|++9X;aBXB_X8$ z5#$+#g?$g$MlA=-#9Jv|ls%*D5dVd6AClCLvDF(>4s_nO7Z&_${U{i7S8qv9OjylT0=6))bTFPfV z^J4zW^%D99V5q6Wp!C|m=#RL^jfiallVvoHgpBgpuBFc7^9!gA_2!mM@j=#&nm4+s z%RzkcbIpspk2Zc-hVP5>aiKM&&#blqPhQvDz1-zn0Y=mJ)S8Xlw~o+vzMDLGctgPB z1j$DKn@ivlLoi}jV$kOnO>zqrc&c#}&4|l5r5+g86b7jWjz)>2(Zj(t>;;EutZ&bl zOWUiITQq}P8|Y7ov7DxytbzMX*@KRs>_t;-VZ0u&AJ>zIjQh94b<|XZo!%BZ*=~{7 z)3tit#Fz(k{3E#sVxT~1mB4&y2CWLr7KY^^x zF?rVy{S#2RjxYjE#u&&B5`ZWO_==lc@o%7|Mvm#6V&=ks&b_ lotO~UlhM?Om`Dt#*gHBdGHH=ar-tQ5$;{|jhulx%tlzE{b|wG- literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_cd.o b/objs/builtin/ft_cd.o new file mode 100644 index 0000000000000000000000000000000000000000..72ec1f0e0f655610238c6d71a9657a9921089fb4 GIT binary patch literal 2496 zcmb7GUuauZ82{3&ZPs>cyLNVNFz<%CBBpe6(^(8e?LZ;hf)wn7-8J6aHgRbZZ*I2A z1OvrKp#dL-4SjGGANtsU$k<*6KG=##5g%^Vhg(#b;6tyh*57yUchV%Spa;(Vo!|HG zeBYOQ&doP}{r-0kQHU`3u@7^Z7aAtUqnPJ?txtD7*1~~kO>7kJgqWwON!M+2&fam? z^@$6U6Fa=VYKYec;Zi%%X;$u|3WFNDZj@{*o1YQEu6PpXn&{WKu!h008wcVQW{WAq z*30?p*?d~p6XT8gIf?hC2$RT*MdwkZsG35af$j)q(3S%*!o*-BmM7uIxDp|H0PJQN zCXX(e9GAUV_kYL3!dHu1H$sbBFH?0p+`o!#79ydz$Mg35@lEF#dFw;uZ4Z#=4nf|I zxnE|8{%|{Q9(9SHL;i!#vA73ZI6+iJ9v{6RvR!`tutOZS!G7`XtHo{aL4iWndy?gt)@N+xKYs`DS zo4k{V<@<%{bEh-zwH;`#YrQ+}{e+n8$97yh&&ByGn~nX8g!cdH*Czd8TlBcPb>qdw zhlRVh?}YX5oBDsRZ+HJu2j}EqPu1H`D5%Tt9r~XMOaGCRvQag_rujF54d>6fIH#!g zIQMHWzaH2e4*Kh$M_eCXWA4^ib1_aAmu?*A*7FJ7RxQl-q8 z_C#q+yHwChWh0|aXLF`ju(Wj6G7Y<6z1u}b*|N;My(7}trHd{n#*?p)6VD)yksi}H ztd=j>TFJD#Xxi3s38l+LZ90|Bo#1n;Mg>Lp1=pz(`N(n}$$!zW$SpD&n6=zmM884* z2vO7p;tEOp5@2i@h`SPea zHNin3>WKCLk#ZsuU~Cfv_fqu7ppNKwK-RAW7~^lq0Q5^D|3c(^s5rlc0H<<5&U-@S z+!yGl;=m!uM+Kh-;yq2^j$n)(0s46X(WC_4RmRvR`o{hF6NvjW@gTsM1LXSe09pSf z5TzuR1B|@~#P1iK6y#46LMD;{#^CGcjXi_>0(plf2w?k;4d6j6)Od_JHc}r6M|it@ zG**Q_CA=p5RpEDqza;!K;im8<;TMJfAYASDHFN0H_lr~O#iJrQTEf+PcS|_H9|=4g z%ApTi_(%)C(!$?w;pbX-yoG&yZe&vV8B?#HaMH`gbjmh$Gk=Y8 z`Up-e=|$7B3P2+RJJRb1SuOL%Y!UxiaJ*B-Rajls`Ggb4&`V~@GBSvPzaRE=eZx#) z)`Yud;yGj5#`Sb_fSGd2f(Tm~X~|>cS+zK)7H8Gs8OqtS#WRXx0eV_dEI>zz{sFZF B&S3xm literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_echo.o b/objs/builtin/ft_echo.o new file mode 100644 index 0000000000000000000000000000000000000000..f5d8d450fe5bb1b08a81864c5733cf2bb8356f84 GIT binary patch literal 1624 zcma)6Pe>GD6o2EmyR%x_lAsCUUWDzik{(hI!qiqMEEM6v+ow#cF0QNAM1hwDFAH^W zp}QU3P7wt=5VYW>TXczzCIqumU=ZO3+xB}i-#4yW(1W+{&-ecP-uw2O_rJdVK0~At zh=1C_6;|S4&;{_Acj}p^e)@FZ^-0DkI|4VeJSHLR%p?0KU5M!$Gt)=5(q6Rr8rNg> z0DwB#)lLN#iiEK4+xN2h1?f0hPt{=zOhq27g=Cw+gL*5=t8qgY9yExm0j>=Ebrw4u~8ltrtVhxSf z+}^GJcSNJ|EXeuUZ1x5|jlOeSLigiTJ+DU$ePX6#pr#wy>Mv@?YoUjit9k&(Cb-ms zC+PVFJzX8O7#C{&E2pu3wT$^oRb71KJ?wU4{!XgzVO9@wH!#V*Q7YW2VIRddiHpw| zbBJTAhmx`NI_*>&bh;uY=S1xLKJ%H0~rz@-{&;xt+{VjR5NWn3(wJ~oV?9ccM zh9E}PUzB%oPTm#v8spmgyc@2~cZzxUJI(r(W;)#a5@Mz_a%#Be1Y{Ml!G3o5f6`WN zU|-KR1`gk*2Kf2+Y;TA|wTE(Qt72%;$A)H(E365L^<-QJ=D|KouHNw+z4(6>+~;;m zR2c6zdbq&QSie?o?)di<$7>k05G@IPm`=P}yba$^ah7rKIeCHV2e>>c`r=gnCeHDu zl20J<1k<>8mJ>e^&;A2QB&EOla-u5zZy@pB(-mJ%6d;kBybK8_Nz<3%xRem=58s09 zVyu#4kZh|t2BocVb7&U|tMAuMX}^SzX%x)oucU2CTg4Bv4WR0KWx(!k>3%An72j7T3jJvEoQ7GF`t`TAhC)stUWKK$Yt{x%Gt}SBQk3U3d~_;LV?LEp+74k BHLm~w literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_env.o b/objs/builtin/ft_env.o new file mode 100644 index 0000000000000000000000000000000000000000..91293b9641706720ebd9d63d1c612bae8e4330fb GIT binary patch literal 3040 zcmb7GUuauZ7(cg3*Q9?}JIz*Mz0=A1&}?;1XNQ5XwxAGXjDmX@y9+nBZCsk9H#c*o zJ{0nz%!dUk`k*YGeMmr|4?eU{oA@G9@E;5x_K-aYcZi}eAt}W8`_7;CHp?D7^z`@r zzVDpx-#z!-{IK)KzrBoU41@mpF*ixjF)@x{zRsMxak=A^n1y4!Z2b}UVBv5c~vS8BQL5g5ZtYCpG(U5Fs5ir9~NO^&?3_7*!Mi} z$8N?BVo?v|3z#%Wrb+($F~v>@|6?>KwVxWx{z}8A6-$MY+L~{qcBgQ(Rw@{fjoJ%r zCz=XOQwL52leZ_k|<9_p7hB`YcjRGrH;p-vdQ5;pz2eO{K=)oZNRuSVN?7Q{*u-?~xJs$ZX zZbQvw>{oqhET69+u83ctK6h3c$Vc_Lj2;I%Q9F7-d#FyHPw4jWcbe!g*9D;;jBdfU z=#ow5%59$ge>Iz-GWtzE8TRo0^JgiZO=jUfUxd zD~@W6{N2JVl3zE3d^*{n3txXy+{r7O;EQxN%AT`9Yd@h_WDkn`-;}jci~#a%=l?^Q zAER2}qk4jE0r%pc;PH7p*Drd-{b7ATyEhT|N5l$vY~*VVXNvnnA5gc*iq>8xs&V)CCWd9n7PgZP0V5BVd>p*-OV1m%E1Zz}%fKP< z7!cpq@Nppdi2~vBfG!chxev;IOf{w<^dqNj6i;IZllXnff0ukm@&}S@^7q3pk_RRK zUh+Q4zmfcuiwg;%5iv06y@{sLtI%ee?2( z7Eb;0+Hs%n>koJ9K5n+~FIxD=Eu0y%j)C`_8To7??pQ*OClVwW zvvwx!FfL~C;}IfO=d!6JBr}swI|i;=CA_ADSCw!^39qn} UvyeTlCsgj<)deA54sDp8x;= literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_exit.o b/objs/builtin/ft_exit.o new file mode 100644 index 0000000000000000000000000000000000000000..831cf4fc2911594e0dbed608602ffbc25dde5fc7 GIT binary patch literal 2096 zcmb7FO-vhC5FWD-+c@APpwiN)SUHh{5iw8%#3o-G{ z$_U4R?Xk4M2@GN<)=wht3^0!&?EnMd zaWE517IS{TWWYyJRq;HntSH6GV_Mr-?J3)AO7QhEOhtsQoe(MyHPW{?as7%x)` zm}uQp=)T!O25Rnv-YAZV9iPYlz4_5X{@@gCcbm|wta99vu!C9bV^gbd82a|1Hh$oV}ozf&J-I?X-2s8+iw zD`Q3Uy!J>DFRPCUy*Cvrs|~$-seI@qV~cz8qdqTs^2z$V@v_IBfmO#(O@(K*KHzs; zom;4jP-hS7WM30Gc#iuWb|2O(70lOLpBHrY45e>v56secoXwe&oFn{eb262<(HbgT z_P71jeg4PR&-t9J*`Xe`IeLPg_p#*@g9dy0y+K_>fm^O4>|t1jj=~SyeQ#KU=a8N5N|~|1LU|VAjeGt zIc~znSRB|6eH4f-5`#9zcF_#)`w+-++d!BSf7lrN70CPLfxKTokoSuN;dde=5n#y= zfbB3ibdF_g=)B9DQZ7NqbQ{d}Hh%O#zk?h7Z?O!U^A0aT4kEvEUPDp_Sj1bi-8ru* z$PMN2?BA35pd0O%T=JMpKJSu0amhcsWX&a$n9&8_OTr(|qN)qr;T(x{PN<7nfxkA& zh&~4P1FF;6d15D_-ApYAeMxgHnUqRaCZTFNMLt-BPmHJFW22D+o e_)bf!Vmf=BGJ1ACBDd_r0^$Wn!~!B8IOrWOV29KI literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_exit_two.o b/objs/builtin/ft_exit_two.o new file mode 100644 index 0000000000000000000000000000000000000000..ecf3740c637f7f23aa647029b6c301fb9389792a GIT binary patch literal 1176 zcma)5KWGzC82>J@>7}VgQK)9g4GKYMX**~WEM&0IA%lbt-5xQG^{~07mkSnL0$BtX z0}gI+tb?P_+X@c4Nf&i+h@fy81P6yytmp5$yw_aPr5}9n_x<^O-}~OXcOU=!{5MUc z5rmg>(0w)xDC8P+DaZ!yspX~2eUYgANibQXvO)-_vg-`Xg;-lzUmN<$x*qBmL9m7f z+y{d-8I%Z7t~<7AZOXuSKh@Im6ySJ z%*AKh!y_UKp9ykq%xP!KGGQeS;TMAVK+fX zev(`-kw4P4gRK6RcD$KRO4sN%=DKnce}njBC-s43Jeha(3A*H=mU)WXOEz6yi$Bw~ zd=@=|US4F_i}P`_x1`6KMerVZpF62cXs@82^FL7gzLRO4b&)INxcPyRbPJbn^+eGLCqE8YKwbK*{(L)*|7e6C)U+Sq#}zSk1{Zn{~d zEV<09?3&IL-7nQ2<_xxT#*KQ;uo~5hZI+Fay$Q>547;+^Fzw356lzZ7D_h3tPZPwE zS{*R?cN!4`hru_Uy$HmaXQzSqz6IPT<8mKtj{gQCRQNT(Wn+Lb0LNo1zzZ;xTxK5) z)VseU{hN|=Yb-y{KHi{u*D3f(aMk?$?$}qtX2_+?m`{Rlkc3$mxIlq_leWYhLy!>G cw!;Y$HT<;B1KM(`wZ&jvkiTX45YsU#Qu%&t_d z_gF{MtTK@x(3fR(#p3!wx{iEWCt!(>z)e9w)29$NMF?76}JY$4+X>BmgU>)l+UhUisPJIrDF3UK^`S4 zFxd>=THHz|IA5veZZ0L!Wx+%%8k_+|Egd`dSJ0{^!dR2gqK^eQQ4LzEAoneL+1;a;<3F+DBbOl27BTL~f|Q&mXzeCFx z$E9;nfjY>#D_$%ei>j^CGOkxg9U*S6qr#dTV!ktGr{CCGhwtGv;w{b%=2+K`%Oge% zk@y4UBbBVf`aF`)-Y&2{Rc&UsskYX?y3ITHXVlHq?Oc1hPfMX*w#7SF;S!Ihv93^K zyUA`kSu5vV+e#YqP<#*e>blcuVHG-jVBdg*m*sj&ogKl>2sE^Ds3C=aU(^|Gr=OIE!tbvZ&BWPUM)O{M5@3imS7qCayIA!FkbKTr5W5k|^dQT_U z$^DsXpY-%v)VWC|59i5mouB!WzVU?)w>lSH7B~Ye8J|xIc?P&j^NVKy`HHoC^ZYSr zKNmeW=^7v%8Yh_7XBs*W!=8N>pfhpB1~D=Xz6Ui|YM*oJ%lOcTbUpkWPU{$%U&;oJ zCvf z%{iXdC3~g(9!DLJ-G<#F(?oMi>z2opZOQ@GByu6wozu3izuVAH=54h%LvyCj+WUAN zYafdJoz!`yF%i$_@sZXs>MP@+`a~{1Kt8n}K-JJ#aodQZ~+VlL@DO5i;S@!IFR zA?@#{$@#qY`eoEB`RRC%B0nk5X~@XW)MabJ>1(_%+IUwyax4&TybCYA#^zY1D8V`w zc-T7b4_VJ4-qvjPte_(RmMyHYIb z2a7cLB0lU9-!yX1UNUk|J(_!VaOTYE4V5Am@b`E1lDTN5hzDXAhLxThQc9H~5I%0P z-t{w=au*WDwTnOIF5A#fki~1SrVR9yy>dfiGfxa|=YceJZQ^3?{H5Ge!^ZWe$F9Bd z+RUp7h`9UA4@ZsM3yEB67;f}Mt@uL`JEff=fB2ZOy>!Hgj6?_y-Hc$5N){p$flw^q zWKdF6@^ViP<_2H3GgZKx85y2=WhnQ;1W!#-fYQ(Bh5$1^y13o=jF_a79aB%RKNg2c zIMfvh!##Lopb!iy1mmzh-?0G1-B8qeUwHhd9(CrlCm2T6$dt%xf(HgBHXi6VWLbs% zeF5+~{juIXM&Lv=(jVVr9Niq-vPXL9H&D32ZX?)@KEa+~pubY6kdSfmI2aE`!j+;s z&=vCc2aLuOh9Ne`OtBHa0+V51r>JGfPe(S78j`QEgq$9hbd4#X&tL`DFcv0VWmvof z^4IY*TA_$h1&ibj?BrQxXOa9(`T&IM$fw8+{x0^CQd`u25OVC%jorXIfK|X9zz^|p zuN^oA+$@CeeTC*F;5P6Ffuwf|NO~uLUx8j+q3LCQJCORfDKrh{*8w+yzgD4H2HXid z7ZDHHdkKhVfG@4kyukbva0B>f6`DiL9|Ud$KcUdv&wL+{^!F(=_cGrLG{A3HXd29~ z1J;ATR-w59hz+}O67ygJM}at}H-><%z`ejbfi=MOz%n2{%{89FytV*Cz&*gdKzx&H zY+&33tiw2lLi0`3M>FIXfsObZ1AYy73P|Jc2a=sOAdTM&T!sES6`FNG($C{#8{rgi z7w`(xF9FHl6w{+X%JVRA9qgP|Xbv%d5LgR-LZKN2()dSNegya>$PXzreJpQhc^eQP z6nw1;%^D#2HH(jvgzo{#ze%Pq0Li~GrcVROzaii)ursL8>;+O@kFfj@a4qBq6`Ee= zw*zrt^0g^6TbaKT_+{|7D>SQsG%p|Hz)R!J0x7PXLURg8abIEi+dztIQlXg!Qapo< zAt1$dgy}XQ#kHMj14!f40r832w^pIK0!V&T0cl=w79lkASh1x4F%X~3eX|P93Fcn{ zt^og{Lh~&1$AI|$>l;;Qo?w0)i1!j-RH3;aNOjlF@-`s00AH&@vw`JhET;pzvq17M2gFkG;eCYAyu$pqfmjm0NrmPmAdQz|`B@;AfNxBpISAYed7R}@AWGX8 zQfMAx{y`v0%C}#k+0OhnAg0vUs?gj7BzrY1UjamFeN_t0S-j9~hkOc1al8*ih`#p} znr|}y4IsMsex=ZC2hzI4`B?Vb1jL`uP-y0`ACtW-5P!Z86`EB*s+TG3$7tU424jjb z!FZI>%V;nHWWO-RxfurZ)s4o@;OYNg1W1m13X@4!8`FPddKuHpQ4DmEf26;K>DQQU zVfsm??`8U7rtf2#o2anT zn0|!m2-EoHD(yYO^fB0=`P9#QG$pN{@896@-(~$;raxf%I@|jT)4yeUn(1>)=a}Bd z^dQsQn0}J!INSdX(|0qi>#K%nEC~Jot=HghHEie$&rnJ0^UXn~^?Br7rcZH)4yN-= zV{eiD_4(I^Kbp19rgcXvxsPk$sFmy%dC6htf58|;aHOa8ah z7wA!GV@LCD-DRQ%H*K zZHSl4<`YSi7mc^m#vJGI=e_nBS!YQqgUE|&%j<$O40}SJhT+ zl-bCCq60~~#%RRGob@e@|IpEVx7w>(wOwcH8`@N>Gs)~){b8$fnAsJLw{)M3Iaxlm z;1e-P&!9(=AM5>W(ShxfT(4H2vOd5Xv<~?-Crh@TZcghy;WvbQn&Zq4dSZ2bK8Fu- zcVMUa&UnQBma(VY@npo-2iTZ{{O)x+lRdHJyx4%quX#9PJKE4@Q)BB`XB&B5Mqj6V z#k`1pY=A8eUvEy6kE0E5-ruie44>HOE^2fn7v6P=mzd;*xK;dA>sPHk z{9vEF{B(UNKJg>>(ZN3IgMuHbtLrEE0C(;gaKMMl-Tl@jU)tNgoxSbGp|eDL>)9)^ zF>pd$>P+Nw$+P#Pv~Oa)MdzE|a{>Q}O8s?@v%|oR(myC#hKiD zHrJ+FpGK#wnkIZJQEusUroczcFLHNd!AEDM0~O`B23|C7VZX;drdyc%8`Y-H zOvUvpTlz}6<&3axfyF%Xcl=6MwitY<{vZ93?VmKZ*%*n?854X^&5BEJ%uzLeCuSA) zO|5JNSB|%^m)in!>qX=kynDP=LoLM14e)dgeFOeI{L~rlZeO*%hPx~I>G+vV^*b8w zFE|=PEV>K6i;<6*uXLO8Y@ikgxw{;IKXp!E>)sPu*FB?Hv#E(Qj(cExxvO~UY-%N2 z@j|f$J_g>zn0WoK^?pH(P59qKEYxtDcxeEGXIte>xV`#ZwS(^!eZTUV;!@z5z|py3 zhBxBXHv^%-sne!keCwB2pOJ{ z`Zy#)#A8B+gHrzpB>v)5FaE;ID0&~_zX1t67?Cm{C4{U04sstHR69Z#3#j+}Yl;2x zJ^oVSgA#ux@llDdO8lh6HHlTcF9@SB^}ZXxqgY?iA zsCFI$FaB^BrjMrA{_-vy-G%3OVfwGaJD>67LMr(dU&<9s#`A^Tg+e0B-DAvC%W0Ek z_z7GJPpDX6o&`4&x<4nqM)#;@~#wcbfaN02ERTLwUO)+;#K3klf p%>W==(!EFBdHIEeT>QinYVbJAnA!Yk1u+0Tr62}?kD)@w{sznOYa9Ro literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_pwd.o b/objs/builtin/ft_pwd.o new file mode 100644 index 0000000000000000000000000000000000000000..05208663fa3e088859fecddaacb812c0b1b850f3 GIT binary patch literal 1184 zcmb7D&ubG=5T3ZT-85=0mTD22ih_tOwHHMQ6tp0igNGi(%QI{?abc4z+m#f0=z@YC zjd-tu2m2rNSkQwvF@ktpZ!02H@X!@v{APF7Y*RcqFz=ghe!ZRd-oF3!{r54V96@*) zgYK|VfdiNrh6Lx$X_im0Df7vpVFd6^Oz8jlV1&Yx7WKdX+=E(1%_wxX;u(%vy&L82#*33JiE1ZMaQ)riS z;u_?9K^=3QkUPCK^E#L0a{X70x_AQ||63Qp&-wk0>)ZIQ?yjajrM?io^0fC%&*i^` zkN>?d=jqYrNB;KSU@%?xlu@HEA0Ud;4A2cDsHZG`hX&Bo7+aE@i;q#U>1 zaH~yax^CN5=DOvPtrqYza>#0Vby9WLG_iWh>C{N!T5u~dPp*t?ujwpF)dCFA%PEBc Jx`=IK`2&&ntD*n^ literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_unset.o b/objs/builtin/ft_unset.o new file mode 100644 index 0000000000000000000000000000000000000000..59a5f6527bc975e10240219f9d97d37e63691cbb GIT binary patch literal 784 zcmb7CzfZzY5I(3-2#PT=0bL|<(L@q|4C>Yx-5iWzV0#j%f=VG!P{TsP;wXu`tZZ(k zn~8sbx;W!j1{WtVLHw?^NYKSgzWeUiyWYFk$B(zqaUvH%Sd9T`HX;CI1~4t_Z*^;j zFRczljxQt5aNBtyboE@f9gq;Qop|iWcdRSh;C_5|1Bz#YsxmnuL^7AnCz84-X=fQN zCB*KwlVf)JMC@P~eI(d%ustfbAIK`KFz}t5KrsN}B90%x;QKs*6>tF916a6*!Dsm! z*1X{VNdJMJdlh%HSEG8PHrII#P}dA7U7ttkk{=+tZpqYb$phP1pz6LUk%8|{o04L* zWySEh{3qt!%`DzRa(IqhM9*uy#U=Z)ay9o~RVr*Fh2eB;YeK<8al;^z;xfB}l=STd- y5ud~%{}M%2C;TBLO&5v6QIUkIl|@0#=E^E63M%w*E~ANLHbtj;Hos!&Wuh;d;cavP literal 0 HcmV?d00001 diff --git a/objs/execute/checkbulitin.o b/objs/execute/checkbulitin.o new file mode 100644 index 0000000000000000000000000000000000000000..e5117c5f8070d591479bed1068a651d22ebf725f GIT binary patch literal 920 zcmb7CJuE{}6h8e?q-dHnK^Gk@6)Yr{M%W}oNNfkMPuifKdZkI1CKjV6_8Qp@Boa-! zbQ6oY5I^zp&3fYni@ecLAC4FO+!{SX5%5lOxVN4{qoP1eCdU36?+XzK+sHF!z$jfAQk{vRc-R@4> zNLpA;55Zm%tRPrOY6~`cQCcty9tvK15d4cM6in)6dJq+QNTf0TzIor<%ud>a4_LSWFJB<2Dw3`~r@m@kCVklgTRYLjC9!aADX3^vVXwvf`d z$9*OMQl5JCjZ^EiUVYx8R^+b<%Yl>--NZ_YDuEtSS{1+Sc*D$y`_q1ouzZSwi45`` z9q?BiEt!@t$Go$SmzT1?FDef>t~qAjfDtoR6@*T5@H2=O=HerUdkEOlZ2stJM3F9)47#kv%thUA^r|_ z&vpVsUm*{A0(xXOcWghkQ%8e6`Cz+1C_9o1*j*un9of|VZ=UU(Vm%=^o?~(WK2Fo# z+Q%Gt+Ft9;Mf|N!9Gyp9W^OghpVua-K8g9&V`64e=dufVHFI8(T*FuqLxE#>0DFVsU9a_eAJor7_Yl<{ zHOVwZ&Ykx}uA%HW_k@l!l~jCP$6d&;!7t(sZE>a>Y=t^&ZHxO6+LG@C_r!*J#qPir z^y1o1Q44#K&Kl>g`;yK*jAdu8Hjkd^LN1uKF4QlTNRI?xuHP5xDXR5d=w3z7g*C-G zMYV?iKiAfF2RKjilW7+#x(6HjFBaQUt5~_)CThR8idxXt7=zybwyt$6^;2%;UR$;H z9?rDu{FaZPb5XRbJDZ|fA>ItvpY}&?(+6;;o08R&Pe*r+{bYi zkmn&f`@(uW^>cez?;xIzXbkTrHpUR$r=An-#l2KWsy@phc9jeI9cMS{f=*&Jo>uArSx325HM4gwA-^Z{aKe|7sxc`kvo%9*vv%mf=!@bsLOmz%mstKL z(^~!-(I`;B^82uF15b}LOdHI*!L;tb2TbdJOGA(Bb$?xiJmOBg9;1&y7?q=z4fN3% z{bP)#x<~DQi_rry`m-2~o^7z7h|!r?eEVYb2QhtoM;rY88l$hqXo@`=|2r|-i_r&T zw2-B8aky-b%J9P@?QzE!(kj^2h%DQAr;P89kY`QD2h(x$q;A=jid_+|?8Z-VQYL=E z^zyD9l4LtL<~qLP2{^Q^b*kbFd#20Wp<;PN$cpXDlIa(OGzTlZD%jY&Xvrbh9Hs~z z&mU4oXKaOIJ{DGS%!9F0!rFDb5nftuv10RDWi@Dq>6m$FK{sEN)@Z)&sFA4Pp9|Mk rydh+5x^B@Dl7f{Smo5+|DTl^9OSt}M=`a_i8w-$!G>HXBx~u;I6Wh^T literal 0 HcmV?d00001 diff --git a/objs/execute/freepipe.o b/objs/execute/freepipe.o new file mode 100644 index 0000000000000000000000000000000000000000..aab781035b98c4182bdc96c1900af6bc1a47c4a1 GIT binary patch literal 1024 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 AxBvhE literal 0 HcmV?d00001 diff --git a/objs/init/init.o b/objs/init/init.o new file mode 100644 index 0000000000000000000000000000000000000000..cc9ba65f101575e3dcf64d08d2eeea6948c1d320 GIT binary patch literal 2520 zcmbtWL1-IC6#a^2TaIHpPMtUjDY9t`E@Xon3T?mwrA;9e9YS!yl)_{qZS1A1)poT` zWSoPFuYtsnL+His%|5k<9;{Ou9B2-PwxJaFQk+wjLm`D8q=M?czcVAR)|k-tliBy* z|9}4c`7<8n`@eqw`v_5jApA*UY_Kwh0Xc>7Zs-l^zRx62fNZN6&3j?v(Zx=P5P?+* zq%QgN2Q$-qTx+-01kQH|##9f{8|+L{l|hRT`Euaf?yNEh(V0)@8CL%3Zaq^X=Z*^U zm5QF355&BC%XSMw#g@`d8e0}&$_5NM%AZ@zUot?x?k_jHc?!Y zF_qv!f7E+dPCp@f2Q`l%<{ri}$1<1kS>(Yy*jkGh*RjU(w_W1r-A!KW(0U7ebt&C= z)=$k8Rgcw&s20xc&o-YAWovJC)9`cHQoq=ZaJ|u$)0dO&_3rPW#yax9w3aYmwMGke zgKObAG@#}VynO!Jl4#IHTGo5n-rXH-ExxyoeaQX9dPm9s-ZSoPx_htB>Ar}LnmhU! zT^GH;-r8pn?vc+c?9bjF>j~MvJ$v>-DnXy|S=QBAvX4*)_v+zhdgC>mXLv3V`wr{y zYs9q-bF4-3)3A&Q^Nq{95zmdcWJKo(eP2f69!Y(Is#n)g2iLH=DK-x50q!kz|G(Z7 z)=DR+rtdkQ{^bIRnJYl9V*)q`hvr zrC$~QoPR_h+Za(lKhlHn>EE3!_z?2xdor%LKKBn5*XR7P;($;-!k6dkd&H&j(DDV8 zD6hr%cQL*a<2Pd*XW5bOZj8^y_`?`?WBhE4e--1n10Cxv#W)GGP!Mx=IVkxHB+3hJ zU{*-n2!vA(T>&*uwJij#Sn?+&ye#sYB#fHstZ^F%*?cOLU)w4ZIs*X5^ z|BsMxtcnHjOux)1^XDDQ1POf05=w^y@r8MhMEH?`T;p{!|0xOIG7FCFT1bIeB#Nfv bl=5N1yi}c_=$$A2zD08Nb5KAhv32?f*fH4( literal 0 HcmV?d00001 diff --git a/objs/lexer/expand.o b/objs/lexer/expand.o new file mode 100644 index 0000000000000000000000000000000000000000..3f868560ccdc88db977c52c507926d3277dbb71d GIT binary patch literal 2312 zcmb7FPiP!f82=`d%}$MN60M}>&_qw0!xk;5IT%>n3OVFZqz6IC>vVR^F5R8o%uZ?` z2n*{W(1Qkgs30cwwA)j`%PtnI^derYBE_3YdYK#qJrs6@b^U$&-fJe)RN{j-zxVsT z?|uK?s3Q-V1Gjph6$o6Rt{5*K@TCEYTy^VWhD^eus`i*MCohr6CLb3I^eHd zs@P5-R=tl4UQUR`3sLO_36on>3nTOv@;LopHmStXHjgGV?WnKNJf2-+=xDpB zuMOkCW>@9BlcesUJd?5(&ObyhmLY4>{u`*Q zE7HFe?jOsDYVY;dvrY7U^PVXl_U{w=Kh*5iW&d|aiTnCF<|fDBTtnoCoc`iI>sV16 z_RI50o})+SIg8l)Nowa+PvZ6#>aspDR>H}xsStMT6S3PVliuX@4)TcaF^m(}UxnZQ zlj}b6OGWP0Fa7=``|hp3(?maHU$T5Jhnqe0N#Dz_>t{QBZnx@7ohLDIS3{i3pg+hv zrS9Q(*|YpSogU~;X1dMnSFJ&Pk8!rJ(|v4Yms)(k8?b+jJO*c&$aF)T!@=IA)+}tS z?`N;0FHgw{a;|?DHH0SJ-a&nPrgfWT?2i)E)qan2j@zh@_x9E=H2Yb3Pw0wW%|ob1 z4aH%oS5-@KyQG}XJVSp|y*}g5(&LdDBT8=oaaq%!0uf}fCUO2l;ERwi0AB#!g}+n4 zB9QI#K(^0GoL>O4{SM-d1MdOZ?kh3}Ujio}zX^ov#Tydm=YS_5N8k8OO#g{e zu}uF8#Cw;%1H_w{-T+#_%Rv06(r*Kw17?7*ADK}I81UbLr=ZZ|GsSC4wxzi4*DK7C zKm*C~c!l|GbWJ5*5F^?As;b`hM9L?ph%r@lhb~_w^h*prSa3B?%|*I#)$G$h#m? zpIfbH`O2zW4GLvXtBS5%7OHm9TP&b1c9%?cH@i~| zRAD8Th?lJN5D;mEf}5fs=ph4wh4i2&6-0XQu#G*;78Ski3Tym*?@zMX&88~#!JFUv zzW06K`~JQjD<_u_CNWpaZ8B<&2?)Er~)p1OjmPa6ri9tfd zzXQD_Fg(cE*T50X3z#&>o}Snic_jY78C$0DednsV*4bdSRdcL$H^JJQBdlFFd5cBu zHf&vM46}APY`0?u`y)Jd{lrv+Jr93J1uqVM)DB{gvH5WL`iY#W_7c#AKIE29GFE$n zRbL@nq2R+F5PH%k^bnh{37KWg8p+Zb_ebpZdBYA;&_5kz^XCl~)HlY~k<-zyfF!fJ z!Ph%i&#fVr+AWj+xOI+VimY`&Q%oN%KHl0qDr1TncDs4hZl5-)K`h^#h;^jjsi-_( z#QlOD(D@DIqQ3Zgi~J0c6Y@DkE*caA_U|Gmp~-GG;NzwlyGcBfM^QxncFwW`_?~3n zG$%*~ttxU=S22^$Sds-IUij7(Z*p+FlWT}m#yg;fKPOlKp99oQoYx(r@C|-%=iwd5 zptd<S)Z>T?#{7315G%(r~JE8KBoFW+E|E2gp z>o@Z6LFdKMYfXADRGoU|#hp--b=R^>d)B`i?1}|_62dO|K)thMvgg!V+=IR67)JcP z|9U4j@!qCzC!$xADcpw}TU*C;kL-6ZKE*CMl^n9)HGYt5`ke0?iqC$R+`j$W2#&@* z34Qx@^_5$da((+#igRPY{wHXp+;y zd?C^D)&3}u>>UA;y+abM5D6o_29WfAl4z{}N&Xs;7i+bw!(3R0MZ-!5_lL3J<>$uApKwTxuSnVzG-}l*}eZU(TH9D_soJ$ zz@F}pMMVR|cot9E*ZuLLqIJK$rfA(C3!uB)V;}U;@AuFo+b#cc4}G$SroXLjdB)%H zxmWQ$r{XhSDi<%8ojLB7%f&Kx7xLg?AAgjEtm89}pTUyxY|hQj@}i$}w~6^HZpF_R z3tHZDv6OO^lAFyto+dAOPGMFPZed0*Va%N=W`%*gUv%W6;&`Q;!#sbkbXGi{QC^(E L0?elo4~@S8p^%I4 literal 0 HcmV?d00001 diff --git a/objs/lexer/lexer.o b/objs/lexer/lexer.o new file mode 100644 index 0000000000000000000000000000000000000000..6ed19071fc7c09282a0d09a2f78e1e04ebb533d5 GIT binary patch literal 2720 zcmb7GO>7%Q6n>kv;|+njfk=f4$>pa~a#%#mUy!I|5s(ndp+c45Hf-%}W7V-!XAu#( zxXQ(-NYoNY96(Ju*%y=phpfb*h)X!pUJwTkO(P`xfJARuRAaukGvkgoZUQ6CzIkuI zdGF2p+1X$I{_~$li7dk4M+$R`7bh?=p2D1q-^T2|$K1FS{iZOQ&p^!6Ry%|U{MA4) zAVQpb`-5{2c)i+8%N6Sz!}6#@G|i$E)tTraL}4YUl`0pNAgNF5QR=9{&KQGrn*;i) zOUqs%5Fb@OE>(&`EWBmD-%^U|N_Y+W_-vc-k7I^0r1CTbPh!fjJO(f(27_3B3;U)( z?@SQg1f9e@i^+ps<;i;iBS8N5=>J5wduwCu-a0im)^mIP424kg#hnaAolHJ*EV|dp zTtB`|^cw7Nh_7Kb8N<9o^~YQDIWC3i*1FhptbEj-7hAJwnrcJt{5X3Rve%*Ka_89f zxSFr}JRwzN~S*wfT16whpXo6_+SCMWJ4Ee+>LmwQgAxSGBDNxItVa2YZ}DdU;r9 zKI9&zpSyEhTTV*mWyYv~La)njL_V|_%Q%uaUEl1>1aNVDa0VS8ix;(9b}R zf^NV%?mYJ^MH`^l;&M^49egiiJ1;&t5KRlJVVcZvNi=5a9nKQIqIYuNh|yung6!EYq^&lCK~1kcT9>f^P^ zUrF#BKl43_pnA!#2(MTa<xb|Db>o2nGNfXdr5N*Fu^S!`_rJ9eY+~HS>1P7Kq S&~mV}d^&!fil3Z!9{&OtRdmq+ literal 0 HcmV?d00001 diff --git a/objs/lexer/lexer_utils.o b/objs/lexer/lexer_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..413c2c8a7035b89fc4921577358084decaa905a6 GIT binary patch literal 1144 zcmbVKJxtqB5I#d_EV(5`LZW3!mP&~#L}6%Qv--1jKqy1E*EETgh!BWyR3w&ESy+*} z!w7p9Z%A~YQ^kT9I)qMkrAqCFE2Zvt&-WA~n0oTPd-vVF@9v)8*FQi1-X*dK!b=9) z;7tJvc?b>k?)JqUOYmLIKxF(ZU{(o}QeJ)A8*wOAe)Xn2^3Cp>@Gu{rJslU04E0P7 zTcxTS>zkFTr@HO;&2~+x*DurYf$+Q)umK)?bRia7)0)m$#QFf59J_~PD1?(3|AliC zur4lW3D$wGKv_74mH9d6e%JV>*fr3nE_VMkjD&tnc;-ahC5?N zL-+^%{M9Aq`JScdu&=JdtQ(aq*Ds+D`V#VQ`e;*9yCL%&ATL0kjXaCzfODeM0mP-9*wM literal 0 HcmV?d00001 diff --git a/objs/lexer/quote.o b/objs/lexer/quote.o new file mode 100644 index 0000000000000000000000000000000000000000..d32bab96f697a3259e009da307c4c46ecd231eb8 GIT binary patch literal 2928 zcmds3&1)M+6ra_~);dZn3<_#P!D&lDfhwdSNfW4HsS|J@;5Out+fR}bgAvdd_y1zFc$!IsB&9wuwZ{ED` zH}B2PuYW!L`ygW$!=O(bbCVWFFfrc7JR_(AjeN=px%Ei#Xq>ib+Dd|Rue9PR1c39) z=dWCTf$Plst@bw^7|NV?4def5P# zzTolY+Ko!B$oa){CjFuEtD`nM&_}U7hJVV&h{_Y7y@e^$@&=eOF^Gxwodb-~&LhA( zfJw~HFlp%A5iit>Gok(08T(u8x8Z7RW4OlJowcdGog^FVCfJ~#a0gk-^_?*`nYEbT zUE_PSchqY6PNjdwxyu%V#J$508T%N%r-P(Ba4dH)HOYL!JK(213wr_NV$ju#w=TiA z^~VXx^HQCedxs}j>r&rl{;VZ+NBAshI{=TcZM*(#jGYeK-G$v=!u83f6PGe& z4#&8?zn>w$ci=b4k{szAu70|KJhdO#{P%s^LcZ*cA@Gike5H`D4D)+)>@4wiZR9B< zbJU-EaMrOVt_M1%6!VcwkuQ_a(eZ#T;z_wa@+#s9GV%-p*yzK*m&tWw>I_owdCVQ` z%(3=+$RYV3h&?tS=zs=W&&+cJ&-a*Z9qUh9Q=91RbQbbmtVK?@_~vkRW&^RmItQqm z9{h(LU&oWRjaZS>=e6^dJd0T~7bg7!(2=vOqCWxc0_ul+Iy%M{FHk+gH}pqZ#^(-1 zUX%{Yn)ogpzsl=>&cVONjb6Er^WVk!_Yiv@wnzGf>cEWYTN(57exdU)`vv?Ii|7}~ zQNPUSeo=K{#wdD_bn4nl8vPQst?LUsA`eN|znPTv717z2e%_3no$Dj_lg`iReHBaD zs5^>PzxKj>aC&WB`r&`CWLmcjL(4%fnMCBLKWk=$$bQ^@y7 zp454C)!n9h_auDzKlkH&ehJt4=s1o8!=UHM$WZ$%{tEg@^;h1LQW5zN=_ihHMe;@H zU#p+HdILr1KcF!1&&k~ZgsO|{5>8hE@oUd{kjMKf_X!|`bEsGPr{{`5h~9w^T+bZ@ zBs~rw>4{4?y$!#J&jBQQ9FXYrkN}+ChA`3J0VF$rA{LNx4M5V{l5qSB1ziP?CT*o&LtT=*QrB`7Mk60-QX1qSDC5;v9%kwX=(n=#=E3&G$&^RH!ABpdA_7AqK Bv?l-n literal 0 HcmV?d00001 diff --git a/objs/lexer/tokenizer.o b/objs/lexer/tokenizer.o new file mode 100644 index 0000000000000000000000000000000000000000..4d0c655b7cfc8e62805a4c52138ca4b752841d9c GIT binary patch literal 2280 zcmb7FPe>F|82`r2oU+^mp^~7jLs+y@5>$k+{i6;ZBs_G9*Sb69;<~G|BTCz0!47q6 zA?OrIbWn({wKt&-20|(k9n~%?6y(hbHv4_^zR}q=l|Fd$d*8p```-6v-hBT3^Uppa zgCP9ah4G#z5e&#-j0>LEQ#Ui>QAf|U-gEtS&xY>Len

  • MDqF7JO_nu}Nt`6=er}hcI+o_9GYr!a;0rL*4;KlV}Rqh|!I~!lm+H-aQ!H z$N!bJ4>VWF*G*Q&s5m}$bakRp zxvg8}t|0f|%htX??xsDt)%;u^@5`%C_<66v;ni@Aid@5SD%|4wEBPyv=w)##q`t0= z(cD6qP^0eUGU6U14m~K9!@6hHeU%=Cq_0&mvC_$UYBoP{|8?9=*$?xUnYW%w%-3eb zN+x1?9lRGU?4J-n*N^w9rF#7UxAY;%Z5rEiPY1Y}AN$t(|JOSe#@ zW}WW2XGeYb5M4iar!{z;+HW5q z`o5S0AH3%B`m}uy77$;_U!L^Or8l1I17DT&U=t9znl@Zw*B4X7yN))TnDxjlwyLe0 z^1I|79N)tK1^yXjL*I>lA6O90IpGK!pe;D`(h&wiV7YNtx zm|#Q@;Mv~+n-Jhj43j2s`~R7@qOYJXmI;iY{}t=-`Tr5rL}Bpx{eB|4-`_L7U)H=K zI>3`Wo`G`cd5wOjM(5aIJYQ}>{YZ^IP@|K&=cshf$yg(#oNT|9QSoF_rBgYF)S#Wc zZ^s9eW!qU>S)(b~bc}5!Q?`|GD6QJ@zZP@qfrTjuVM-1U`rJ&|8&C9;%HhYJw$#vY q*0D$>v%|d`nkG)zR-AnxNyO9XY=Y9xz+i{>JS(fUV*(?$lKukkh|v51 literal 0 HcmV?d00001 diff --git a/objs/minishell.o b/objs/minishell.o new file mode 100644 index 0000000000000000000000000000000000000000..7b23751b8568a26693e01cfffcbc272deaf0061b GIT binary patch literal 1088 zcmb7DF;5gh6n=2Xp>WWcs5DSmvP6lACdLF4wIb1if)J9&at!AtcYDX&oUXCCr%ha%K5KXI^X_sW%Ki#&SzyBh(hk zjJe!2ItVK^;MR+6{D$R7isj6a=%-w-HT<&SR`@;$H<_1S+jOf(~ra7PCL~7zB|*4 zJ2Sn5aY_!0lpGWnll=m9QS)=$;hyk*VKEUt5-w39JXQjR=+9B{>on&282#Kv&L*aNV%|h;L5cx*%v6x-;*C51zY** wAQpsJt2~eY5OK{9LgHpnL6Jz6TSg5M7(+^3l;JI{6je>Fv5>A0)Aa$J1JkpT761SM literal 0 HcmV?d00001 diff --git a/objs/parser/parser.o b/objs/parser/parser.o new file mode 100644 index 0000000000000000000000000000000000000000..53d2d4bddad94b1744e7b9362e72ff270a5ebf53 GIT binary patch literal 1616 zcma)6&u9=vsph~Jx?!4YZFN#4Hs-h1DhZ{D)(|NQ>@B#}i}{8)sQ zc$0=wH~-Oygz>ks1ChotgxMApO$g6vcnZJ?k-PUe_ZREkn$b^kqeLe-xkxQt z!(NEO-maT3c;aR4Rk>Ca;^C&5*L|L6tT)?4VOj?mI%#Wg(FVBs~EQ3S){B9529 zi^KcyCHN$43&x9Q#>QNvb${%Rzb2pP%ecAFAGfK~ZJ$5vwZ&mPY6pIj0;1Mei&~G+ z?H$J{MM3E8VBLtvQ+5CWGRJ$#k5K?!XZ$3vML+!2_vdhjn;e^sC(vsYqd~?B^OBQb zo;?8fxgP@;dC7~}Tz7-_!A9WVJ#*n zaWrQ`aW2ntmK8_MRra%vr(;|7#BVIrVe(iD-q(HoK3J!j*XPc;pYF>uoV9Uty^q<= zouQ8z$un@y2>XnMnZhT4Gtip3L<7bItbdc5Ly53fYc%;>uYar4`lwNlcdYA8efkT! zj!R(iXZFuhaoRj0-%ww9H)Q?C_mRi{RQ7}NIrt^uU+9N#IopG0>?wR29wph&=!b3g zHazn$DsPAJrL^*JT(`6he+nDD9w@B!-%?oXeZm+A>Ho1b@QT4t0UJ>6O`Ms@lkn<} zBl5+fsF$CWJOfvq9Y8l}p&nIfaVw_9{+Ic&}ZD Ms@|@9RX(rKA6x)YNdN!< literal 0 HcmV?d00001 diff --git a/objs/parser/syntax.o b/objs/parser/syntax.o new file mode 100644 index 0000000000000000000000000000000000000000..b39c00d8b368179d8968bd05cdfdb9b26c478e9c GIT binary patch literal 3088 zcmb7GO=uHQ5Ps=jwpQz3)GCTwQS_2xtD%$u3_v+w<{@4r_o z6;UAiYeSo%j)?}^igv^w_1R^A`KT6sVIAQ~Os$nIY`fr07MKCp_RyL0Lw|Yc&9v(t z`D;Np*{Ren61Ax!fskzvj~BeGdxZt{{>0B_j;q9Riaq%b68z=H^6BA%echeNx*6L} zoeqwF=+Io5h0})4?ffdGIOHWR2cXx3rl(&6Wi${ek-P}IwZMFrQe_}Ookb%eO=@J@ z%?JoZi?izE!p)Xv3wPAiT$id=x)N2RJyEShRdo*i`DmgFhmVlPwMz8qw);vQ#(c4t zvpZ)_04o?5eUkfpME$62fo_M^^<|yVizHqc?b^>Y`IS-5%f8R|Fns@48nU&ndW?_YUWIBy#3 zM6OBr+!s+VYPFO6Id-EZP(!SXLAAv?Bm;GUZK+qOsgq{$Tr2$1dX*7ptiB#x(`Ib3 zSN%HtH|JC8~ zCbz;U4~9`b9!7aEoNM_0OW0FHDC1IMx%#Qa%f<)!>)b>3>-^8~5(h*4P{DmbwA`L0 zw;Ie}!o`Yjb^I<6zf@79HN^5H5TE?iX^mD7%U1*O#7P+%t*@Ae{Cof!kiXMtm0A7> zh^I`dq|u78+yKHws!gNy75VsnfOxv3-f6U+u)M_b2P|KQ`jCDbko2iSK)$_;Vm!#P0%O65kDkO1!AC<04~%(PRXWUdLl#H#$On%*%Sxn~26`{d$>~ z^+N6RID#SChSrThQhImJR>LocsU) literal 0 HcmV?d00001 diff --git a/objs/redirect/heredoc.o b/objs/redirect/heredoc.o new file mode 100644 index 0000000000000000000000000000000000000000..8e563ec42295c1e0bb816184d3ed9b47c87e1c35 GIT binary patch literal 2504 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 literal 0 HcmV?d00001 diff --git a/objs/redirect/redirection.o b/objs/redirect/redirection.o new file mode 100644 index 0000000000000000000000000000000000000000..cfd16188bcf7f49fe2c279ed3b360f4f82f606e2 GIT binary patch literal 1560 zcmb7EJ!n%=6h1GnX(CaJ(9$Mgn{3Sxutm^Go{XH{38qO}Ur@*r$kMR^ z_oiC{4h{|p2o~btAovHOTeC&b!7UMD{LX#%(j+!R4xIPh^K-v*&pq$G4}X6BJxyc~ zgdbDTBrn2HND$hVtCJrKrt9C83`E-Y!OiMX+k|lJXO1!eLTs$v+c>uMs;)LLA1^C7 z&>0R+QISE55b^9*?qS>!`OMQ)CLzSl8#>0Qc^)XI1s*=C-|Hfl`e-s^70(5z+XgC{ zvZ_pCe;E5t0bc@>zyS0Xl!b{{nIBKvF$oj1+JdbK1v z?ErP#0jujj2lZMF|9RSO`}RZY9=e3{&Q?v)@dstBTf;hvb=0sLQ7>)N_f*HA;+@tE zHE^Kktr@FP0dJ+bS!X+h{X^Vyira9xWz6f=CLnY1KIY)stju+Qx~_i{ex2ji;GACJ zdJR364^8oPqFy8Jd8%X1^TVX_?#1HgWrMnrtGe!DeRj03-~>E}$2{YDjEwX+)L)Y@ zOHZv=a%b7X{CJL-9nY`Z_7Uz8_wIvj(C_yAekkcx_su>%XPyOO=uOU9=IfYx2i}nz zJHoye-VvUG?0t}jdmqQ6?)M}f-Mg%-&i$p|pYIi})%ti(d6uXr<);hy%7#Vx>Bx2e z7k`f;EaUd?;lskF7~XaMzGAPDKMi~Z#Q!CR_kzE<*dEXiTvzxFoSgR&$a!ypoc99A zdHgG4e?r+75L>6i3IWo-4?K&2mb+}@Ec*Yl40{G~-N&4=bv|$9xW0!q*aLKQWyHQc zVqYGyNhGo&n|E?~N9@>%)Q%l@q%V~jcEyu+{P93aHfLu@#M9X)Hb4d+rP5d@^0`$? NJ6pLG`MiLFkbi~OLKOf2 literal 0 HcmV?d00001 diff --git a/objs/signal/signal.o b/objs/signal/signal.o new file mode 100644 index 0000000000000000000000000000000000000000..dcf0756884e2c747fa7263de080a3c4be49cf309 GIT binary patch literal 1728 zcmb7EOKTHR6h33pHucf?C{(+!EfjRoDQ)r5g@H(`h-6Wuiwer^m`u~5(@9LGG^LwB zHiDZ*TnH}gvT-3UT(lxs=@0OMh|4Nn1VnJ*A{Ar(&deR1PEhf{neTq*ocrDPy!`h0 z$9^J(VEhTgSGmy*haH0tJ6VS|d}=cHUZTfaP{|&WJ%q6Jg8jR@5aSmn#(#6KmGbHB zLGTp>Iyo7pB7$^1EQB9gPV-=LS7&1y+o%vtk>l@cN`>dzPC zyoxe720fNs#)k2p!FEXwA#fD#b~}J#IE;%pzK%{ufM1%hM&Lg97@Q3u$62=(z8C(# zwzHwUt}ixM>LsNdAzF$k@on~%Qdey=N^8|({FI&Tr3#XQ@)sdxqB+$G?L z5h`;#5~jgwOJmJP zbodsKtqAA5XL-rJbGZucOVj-TKM~-(AO8B=0nRypekQfzwiJU2NddkRW zO>Ke1v}UDDUF40lVc8_?v~KI%&3|rjL^13sVj3q36UYLdj?pH|9X}J`c_H1^@`3{mh NY(E+Z4q#c1{REOY|AGJj literal 0 HcmV?d00001 diff --git a/objs/utils/env.o b/objs/utils/env.o new file mode 100644 index 0000000000000000000000000000000000000000..1ef31584d20b2beb7ae2431207348951a501ccd0 GIT binary patch literal 2224 zcmb7FO=ufO6n^Wq>~+*cO>9tVN}Lu7YC$Fmfs|5#S|{Lx525(rQzojsNkmsaS#1)# z?m?hSZjB&^T!P&shgB&(6)GJ{3cln}=+B{;o|GQSy3j+Q1#PLSd~at~TFI1>2je&I zXTJC5d+X8nfB*6COGFw$_|GI(i#I2+Ag^G(9Yh23;2%B!*$Z=&Jq;f(or4e|9CO2w zdugv;SX&+1;jW?%Fx~{5doiLp4o*^yRVYH_tBzeLT~!VtM)5+NxQZ_WCn}5`72uVN zm0aEtH%hk(rF9`z&PU@l)mKe9*MP^ajVZ|)wj+>d;5d#YX*rB!EC?sD{~pfqz4k!T z9yIrP5sL+(U@?`4)Pi~;>F?5yy{(C6uTG7f`a;*Oi>@(~^}RUx=xNT2XMIDXXI^r9 z-qq;bz;`(7@9We^Y2>5e9jpe{-5@_E&p+$;lfA9?o2b$FRu@0_>l$jsn!P2hv7;|^ zKdYbUK3F=@+Noda^4U(3d@rf$O>fUXAz3eq&-LA8$^&PM>$c z9oq)UUR`w`4`*F)jgijr-eA5^>o@TA7=G?y2Xp9cU1)+c$z5bl9n^fv^?=W{2KUv` zi$1*XZB_5_?m{ccwSw3%?uGrZA3f{?FEvAc&{yb#ep7=#Cb{Uq<~yapu?yUw*Im&X znX}Gw)|)-do#*U=Pr^49%p^|jPQ2FEwAxR~28Y9*20ep^)9Bft+A(m`W{lvw9L}VT zZ{R4$(0AL=W4p<4|COPlmSXaEV<`@ zK_1?gv;~b9D18@Bk-F{@_I&R=6tU|$JRt*TQkd~C|NZ5GQnu}1;;*G;QjV#_wAFQ2ola-J-w VSUICAFJc4pbZBA&^AzsK@*L5^&Q<^b literal 0 HcmV?d00001 diff --git a/objs/utils/list.o b/objs/utils/list.o new file mode 100644 index 0000000000000000000000000000000000000000..c567cef76b7df81e77d486898cc74f46824da7c2 GIT binary patch literal 1184 zcma)5Jxmlq6n@Kb>?Nln$widLE3Y9zV`Awd(os-QSeT6K-WiC?L2_##UUSJcv?TUW z-gdUvkw`&jps>bnDJ)DhvL@^LeX}#(8Hw@b-n^fA^UXJJ-+lP;`R6qeM<84#q3d+& zP{y zY;A7)L8M-{cQ)EhrBDMQHBW%||C0CRH0wHXwj}#?>76;{-Wg86#l2}#^3sYUUlR9VZcpSP z@N2m%DekLrFM-e8x$C7_cQFRm{!vMN%-<7pBF+#W_U~SPs!BTOt4obFdoYLZs&C+9{4(qfgUQ?@#u(Ot$#J%);alGLo;tQXS;l=U4HH|Q4-k)S w`kl!7ezU1w_`xe1cQ)R%v>*6kxD`kkZEoMw>q2qkFA$*IssI20 literal 0 HcmV?d00001 diff --git a/objs/utils/list_clear.o b/objs/utils/list_clear.o new file mode 100644 index 0000000000000000000000000000000000000000..699c263b40887b100a30dde1373086de8281d448 GIT binary patch literal 968 zcma)4Jxc>Y5S@$BQ{q>lL_;7V7B+&~Xc;v^3JZ%Ac1uW3BAik5L?Mk33tPd$E-5|m zM+9u_)W$mHH5P(JBAoHf-mVv;g#+{XW@aC|`}pztIZR{_giRD$;$Q{}nTC2Y`rBN} zNupkFqMbFO#)NRJGbh|3L~e5@7v?(3bnWBW@jjw{2BUP&PKywQgZ;yN!4W6r)4g(0 zh^>sq*k{$Av?@Mf8CKCMjN+uJ$&O{%DQGY@f@Ua$o4B4;JZ|6@k;kChP!{gd%J-*^ zX6WD2snWAwF`lSTmx4R_s~Sl=P_TNdGB=Mydz}<^L}OB#o3Yr`o5(RMEo2- zq@l8l!2iONAcZGhxC0Jwp|1Ry@^}kbpMgi~0G#ym@S`YbndKaxLjOaC#$Xz%VN~TR mr6hu`aU!wn2>aM6*jD~XCq>IXC|k&mEQ@Ss|8PlK{*PaICZ5Uw literal 0 HcmV?d00001 diff --git a/objs/utils/temp.o b/objs/utils/temp.o new file mode 100644 index 0000000000000000000000000000000000000000..fc3fcb9bc2970c75d5c019253ef0b326a5c13832 GIT binary patch literal 3880 zcmbVPO>9(E6uv|MW`;s3f~AP^Fd>1YC7rfPZF+H#HbQ*FO1i+L$?Mp8(6Q6$IP;V? zby0-{BrIrx%EE*u#-wGVkuKV3qC`!)AQ~4M7Q{4$#SkSCS5z~O-+A}kH*bcH{M_Wu zcfRkQd+z^zcYgf)&cF3S1OyWOR3k5vVIU(lBX_x_F1_#PaGjEFu#e^>Q?B9~mgU$J z4ikW74fGu!C~|F0)F_MMt%GTVgm{&tYB5cqlVuHOolGKil7;ekI?gNHuYT^Qu1~T3 z3Gv3q(y?L3dOLM0k&0WE+3PP~u2pQB#o3@5+oknt&LEeBY=^K7Sv9`_&d5mQMEWA? zJqx@6xgSoTq92*kQ=Dlnb|ULJg!#~^a9aG7p9;+94~dzTI?L(;%=_)^7auS z_M^!y=a7|NEL-L>G;{%Z2KgfSx_*u9*K~P%ZoP_8)T2wmka)|DA1EuUiLTzR5;J=O zV$~n_Xh~eu-|%Sld&=uKs`_)as(pW3UO#Kl&Q|5O)>wD@W0G%kWnY|);=GXW)0KU( z%%#4&D*MuWSIS#;oMyBaP%%b)^Bvk7UCLF3uB5pm)*4Lc`r7yZ)>X%Rn0590K4@M2z7JYgzwaZgt1KU94etqFPybrE^GWkj;VkVf zkHu$k`7vU-drXgs){4*Nbn$NpP$AI@SQVy-T( zU>_D5#FE~Bw;QIHf|H4RI45^=bZ6;vg0bncwa$rKzX9W}5sf*-yHnPFe(LM_Jnl39 z`sAms&CwYNhg(aMld)|how3I=aXV8|(i#?rj`p?~_>6TMyR%_&@Yu^fcC4@W$g#dd z11*MdCewDe(GzClfHr!H60~stk^a6G!=6ZF9R!TK;USlIXnfR88A&*m_r{@;ZX=yY z+k)+k9ZzKJVW-#$-3Q&N9xWWubxvWZ@aJJ^b$Esx@h)Xhx_S(i@iAT>u6tzCwAP^|L@c3C%MKuo?R zvDuLLOIL&$3S$^yrfVbX1y1P5N1@N98y@zyw+e2 zAivrOel{ZO)BBJuzRwKi05_p3t-F`#ualog%eb)Y)H{|lZpAX0*rZ~vX{GV6$q^QPnAlEQ`*2$e z#ZU*I0byk)vyMF`tl<%Rc+{f1nH^3D<-afTg0?&((xoNOi0s#rXGEUYl4nGo(~@UI tI<@2(?HyW*coqz2EZwdP+C3}cSuo%d@mxGBQnXx`HqXVgB5i8Q{{sP$xby%3 literal 0 HcmV?d00001 diff --git a/objs/utils/tree.o b/objs/utils/tree.o new file mode 100644 index 0000000000000000000000000000000000000000..378d586ef8344f26022f0d72b4ff3ac963ab9feb GIT binary patch literal 1416 zcmcIk&ubGw6n^QNq$S!=D8v>aIp$zMz34$o(0UUTso+7FE}M-hq(2B-6mnTe54jcu zkIixOA0#J*T)c@rcuqZSksbuWtgx=%o1G!6u|f|%^5&cO-n=*8&YQ`HA7?)=6Qu~k z!zE~gCnYFk1?tP$--q#B?C;77MB2{6&8osAgk!&QrZt4vc<^jvYU|naL_MB1K!`bE za2d1+VeM}3nU*8=cV2Go)P#7ru49aws*bCizCnZ^b#=WdHM!yz#;efyGp=AU6vAcL z?;&p!2V6*^5q%8XbN#SGhvOUtCwUr{$URPF++!4aJvJ!t zjcPETqOX4TXthgp8(f#)c8Zflpr5Y}PZ2M#(9q9S136E{ImNWXg%~~LaBi<7CSm(t zAA29ZGsLIJNP&aV4`KI=;shLm&jlKKhM35G3rDNC3vyrVH_K&I9N@kzb8VTER%?*= zUgc@Ohx*^6sL(_0lR|YUzcCAbsC$~lcPwEJ>?4jd56a{|@lap#9*IHNzTXGm|HFIX z9NzF>h&RsrpS%-2@1Z9i`l0*VQ0K+Hm42M1k9#5K;Njz}xPS88(C@P-dNam(eF5?r zCHtDZhzGI3SM@hhej3EynfP54WjQbYO~t{RWhVa)9thq>g&T+`RN;rlcnyp3KT+8P z!j-8iEGYy?|5MlW)N!Mw%Jl4t7V&xE#Rq>s3RGpBP_Go+_k9bZ13HaPx# literal 0 HcmV?d00001 diff --git a/objs/utils/utils.o b/objs/utils/utils.o new file mode 100644 index 0000000000000000000000000000000000000000..f43749250b82bdb96280a73d984870983b5006db GIT binary patch literal 1584 zcmb7EO=wd=5T3M6^J=sq(o$Q5R#0dUky-?QKuGhOM8Ne^yzK)u3Z(av~kIsZJHpH*u5c6)qR z`YMTY4fVL>Iu?*MfN|)3C=1sM)Pl|D_`lM6 zPoJ8r9o1%;D%<7ZgD-Jvd`*!5Elz$tp7yN>J*y9F4ebzJL63d4c)Ec#Hn3hF;*I@I zs*Fa6ecWD!W1Lq{r2T4H9gJQhAE)}Dxq7pTwJPsA)#p~3*Njw~x2RH!QKJ?!HF+*k z8u_#l&Z%?GIa8nQ;V3n#kS0|sC2p>BVYF%!+xWbWWJ9z z#s;BLK7*cx`kSpG>{FisuVEo(MX~=_$)^|D1Mc}}t2GeB2r>5Qevr#{b9J(cef{$c zbl#-dUvM7n`4^T>pv0lb6Ok)*#82mq>qvZ4QftS=SIkAE@nhnfh@+F#IuLg;^;GyH z!70Jtn9q6N1^0lx;2(tV0(m|@IQ0Nu197KPYe4*GQhdkp5>nGZl$@S2c;m9f9~<7C z790@-aDMkIU@we7`kCWV?TD`w;xC!wp$6}_0G>c@a31%B1GHo?ay&RsF3ViLi#~t$ z1;TH*opWA0Plfo|5WgGZ*F&6C(Jjoo_M&oJx8N#gCF@a6UBu51A??Gz)C5V*c`CQ$ zWpa* +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/21 17:42:18 by eunwolee #+# #+# */ -/* Updated: 2023/08/11 07:54:45 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 21:58:42 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -48,3 +48,54 @@ void exec_bulitin(int bulitnum, t_data *data) else if (bulitnum == 7) ft_env(data, data->root); } + +int count_args(char **args) +{ + int count; + + count= 0; + while (*args != NULL) + { + count++; + args++; + } + return (count); +} + +t_list *create_env_node(char *key, char *value) +{ + t_list *new_node; + char *key_equal; + + new_node = (t_list *)malloc(sizeof(t_list)); + if (!new_node) + return (NULL); + new_node->pre = NULL; + new_node->next = NULL; + new_node->token = (t_token *)malloc(sizeof(t_token)); + if (!new_node->token) + { + free(new_node); + return (NULL); + } + new_node->token->type = T_CMD; + new_node->token->redirect_type = 0; + new_node->token->str = key; + + if(value[0] != ' ') + { + key_equal = (char *)ft_calloc(ft_strlen(key) + 2, sizeof(char)); + key_equal = ft_strdup(key); + key_equal[ft_strlen(key)] = '='; + key_equal[ft_strlen(key) + 1] = '\0'; + new_node->env = ft_strjoin(key_equal, value); + } + else + { + key_equal = (char *)ft_calloc(ft_strlen(key) + 1, sizeof(char)); + key_equal = ft_strdup(key); + key_equal[ft_strlen(key)] = '\0'; + new_node->env = key_equal; + } + return (new_node); +} diff --git a/srcs/builtin/builtin_utils.c b/srcs/builtin/builtin_utils.c index e2816dd..d7ace90 100644 --- a/srcs/builtin/builtin_utils.c +++ b/srcs/builtin/builtin_utils.c @@ -3,26 +3,36 @@ /* ::: :::::::: */ /* builtin_utils.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/22 13:20:41 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 21:08:51 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 21:58:50 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -int count_args(char **args) +char **input_leaf(t_leaf *com_leaf, char **input) { - int count; + t_leaf *leaf; + int i; + char **str; - count = 0; - while (*args != NULL) + i = 1; + leaf = com_leaf; + str = input; + while (leaf) { - count++; - args++; + if (leaf->right_child) + { + str[i] = leaf->right_child->token->str; + leaf = leaf->right_child; + i++; + } + else + break ; } - return (count); + return (str); } char **join_cmd(t_leaf *com_leaf) @@ -44,51 +54,15 @@ char **join_cmd(t_leaf *com_leaf) if (!str) return (NULL); str[0] = leaf->token->str; - i = 1; - while (leaf) - { - if (leaf->right_child) - { - str[i] = leaf->right_child->token->str; - leaf = leaf->right_child; - i++; - } - else - break ; - } + str = input_leaf(leaf, str); return (str); } -t_list *create_env_node(char *key, char *value) -{ - t_list *new_node; - char *key_equal; - - new_node = (t_list *)ft_calloc(1, sizeof(t_list)); - if (!new_node) - return (NULL); - new_node->token = (t_token *)ft_calloc(1, sizeof(t_token)); - if (!new_node->token) - { - free(new_node); - return (NULL); - } - new_node->token->type = T_CMD; - new_node->token->redirect_type = 0; - new_node->token->str = key; - key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key) + 2); - key_equal = ft_strdup(key); - key_equal[ft_strlen(key)] = '='; - key_equal[ft_strlen(key) + 1] = '\0'; - new_node->env = ft_strjoin(key_equal, value); - return (new_node); -} - void ft_lstadd_front(t_list **lst, t_list *new) { if (!lst || !new) return ; - new -> next = *lst; + new->next = *lst; *lst = new; } @@ -99,22 +73,3 @@ void add_env_front(t_data *head, char *key, char *value) else ft_lstadd_front(&(head->envs), create_env_node(key, value)); } - -void update_env(t_data *data, char *key, char *value) -{ - t_list *tmp; - char *key_equal; - - tmp = env_search(data, key); - if (!tmp) - add_env_front(data, key, value); - else - { - free(tmp->env); - key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key) + 2); - key_equal = ft_strdup(key); - key_equal[ft_strlen(key)] = '='; - key_equal[ft_strlen(key) + 1] = '\0'; - tmp->env = ft_strjoin(key_equal, value); - } -} diff --git a/srcs/builtin/ft_atolong.c b/srcs/builtin/ft_atolong.c index 781989d..0dfa42b 100644 --- a/srcs/builtin/ft_atolong.c +++ b/srcs/builtin/ft_atolong.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* ft_atolong.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/10 20:31:59 by kichlee #+# #+# */ -/* Updated: 2023/08/13 16:10:44 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 05:08:08 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -35,8 +35,8 @@ int check_overflow(long long result, char ch) int check_underflow(long long result, char ch) { - if (result > -(LLONG_MIN / 10) || \ - (result == -(LLONG_MIN / 10) && (ch - '0') > -(LLONG_MIN % 10))) + if (result > (long long)(-(LLONG_MIN / 10)) || \ + (result == (long long)(-(LLONG_MIN / 10)) && (long long)(ch - '0') > (long long)(-(LLONG_MIN / 10)))) return (1); return (0); } diff --git a/srcs/builtin/ft_cd.c b/srcs/builtin/ft_cd.c index e689f71..047fcde 100644 --- a/srcs/builtin/ft_cd.c +++ b/srcs/builtin/ft_cd.c @@ -6,7 +6,7 @@ /* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:31:18 by kichlee #+# #+# */ -/* Updated: 2023/08/10 21:12:29 by kichlee ### ########.fr */ +/* Updated: 2023/08/13 22:18:04 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,7 +33,7 @@ void ft_cd(t_data *data, t_leaf *cur_root) { getcwd(pwd, 1024); printf("current directory : %s\n", pwd); - update_env(data, "OLDPWD", env_search(data, "PWD")->env); + update_env(data, "OLDPWD", env_search(data, "PWD", TRUE)->env); update_env(data, "PWD", pwd); } } @@ -54,10 +54,10 @@ int change_directory(t_data *data, char *path) if (!ft_strncmp(path, "HOME", 5)) { - if (env_search(data, "HOME") == NULL) + if (env_search(data, "HOME", TRUE) == NULL) return (change_home(data, path)); else - buf = ft_strdup(env_search(data, "HOME")->env + 5); + buf = ft_strdup(env_search(data, "HOME",TRUE)->env + 5); } else buf = ft_strdup(path); diff --git a/srcs/builtin/ft_echo.c b/srcs/builtin/ft_echo.c index f572520..c235532 100644 --- a/srcs/builtin/ft_echo.c +++ b/srcs/builtin/ft_echo.c @@ -6,20 +6,80 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:30:59 by kichan #+# #+# */ -/* Updated: 2023/08/13 17:09:55 by eunwolee ### ########.fr */ +/* Updated: 2023/08/12 21:30:31 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" void ft_echo(t_leaf *cmd); +// static void check_flag(char **av, int *idx, int *flag); +// static void print_line(char *line); static void check_flag(t_leaf *cmd, int *cnt, int *flag); static void print_line(t_leaf *cmd); +// void ft_echo(t_leaf *cmd) +// { +// int i; +// int flag; +// int blank; +// char **cmd; + +// cmd = join_cmd(cmd->left_child->right_child); +// blank = count_args(cmd); +// i = 1; +// flag = FALSE; +// check_flag(cmd, &i, &flag); +// while (cmd[i]) +// { +// print_line(cmd[i]); +// if(i < blank - 1) +// printf(" "); +// i++; +// } +// if (flag == FALSE) +// printf("\n"); +// } + +// static void check_flag(char **av, int *idx, int *flag) +// { +// int i; +// int j; + +// i = 1; + // while (av[i] && av[i][0] == '-' && av[i][1] == 'n') +// { +// j = 1; +// while (av[i][j] != '\0') +// { +// if (av[i][j] != 'n') +// return ; +// j++; +// } +// i++; +// *idx += 1; +// *flag = TRUE; +// } +// } + +// static void print_line(char *line) +// { +// int i; + +// i = 0; +// while (line[i]) +// { +// if (line[i] == '$' && line[i + 1] != '\0') +// break ; +// printf("%c", line[i]); +// i++; +// } +// } + void ft_echo(t_leaf *cmd) { - int cnt; - int flag; + int cnt; + int flag; cnt = 0; flag = FALSE; diff --git a/srcs/builtin/ft_env.c b/srcs/builtin/ft_env.c index 3e7cdfb..eb87b27 100644 --- a/srcs/builtin/ft_env.c +++ b/srcs/builtin/ft_env.c @@ -14,11 +14,32 @@ void ft_env(t_data *data, t_leaf *cur_root); +void update_env(t_data *data, char *key, char *value) +{ + t_list *tmp; + char *key_equal; + + tmp = env_search(data, key,TRUE); + if (!tmp) + add_env_front(data, key, value); + else + { + free(tmp->env); + key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key) + 2); + key_equal = ft_strdup(key); + key_equal[ft_strlen(key)] = '='; + key_equal[ft_strlen(key) + 1] = '\0'; + tmp->env = ft_strjoin(key_equal, value); + } +} + char *check_keyval(t_data *data, char *str) { t_list *tmp; - tmp = env_search(data, str); + if(!str) + return (NULL); + tmp = env_search(data, str,TRUE); if (tmp == NULL) return (NULL); else @@ -28,28 +49,74 @@ char *check_keyval(t_data *data, char *str) void ft_env(t_data *data, t_leaf *cur_root) { char **cmd; + int arg_cnt; + char **env_path; + int flag; + t_list *tmp; + // int cnt; + // cnt = 0; + tmp = data->tokens; + while (tmp) + { + if(tmp->token->blank) + // cnt++; + tmp = tmp->next; + } cmd = join_cmd(cur_root->left_child->right_child); - if (!cmd[1]) + arg_cnt = count_args(cmd); + env_path = NULL; + + int k = 0; + + while (cmd[k]) + { + printf("cmd : %s\n", cmd[k]); + ++k; + } + if (arg_cnt == 1) env_print(data); + else if(arg_cnt != 2) + printf("env: %s: No such file or directory\n", cmd[2]); else { - if (cmd[1][0] == '$') + flag = check_equal(cmd[1]); + printf("flag!\n"); + if(flag == 1 && cmd[1][0] != '=') + { + env_path = ft_split(cmd[1], '='); + if(!env_path || !env_path[0]) + { + printf("error!\n"); + return ; + } + env_print(data); + printf("%s\n", cmd[1]); + } + else if(flag == 1 && cmd[1][0] == '=') + { + printf("env: setenv %s: Invalid argument\n", cmd[1]); + } + else { - if (ft_strlen(cmd[1]) == 1) + printf("else start!!\n"); + if (cmd[1][0] == '$') + { + if (ft_strlen(cmd[1]) == 1) + { + printf("env: %s: No such file or directory\n", cmd[1]); + data->error_code = 127; + } + else if (check_keyval(data, cmd[1]) == NULL) + env_print(data); + else + printf("%s", env_search(data, cmd[1],TRUE)->env); + } + else { printf("env: %s: No such file or directory\n", cmd[1]); data->error_code = 127; } - else if (check_keyval(data, cmd[1]) == NULL) - env_print(data); - else - printf("%s", env_search(data, cmd[1])->env); - } - else - { - printf("env: %s: No such file or directory\n", cmd[1]); - data->error_code = 127; } } } diff --git a/srcs/builtin/ft_exit.c b/srcs/builtin/ft_exit.c index 1afdd42..c590c1b 100644 --- a/srcs/builtin/ft_exit.c +++ b/srcs/builtin/ft_exit.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* ft_exit.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:23:29 by kichlee #+# #+# */ -/* Updated: 2023/08/11 06:30:45 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 05:43:18 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -40,6 +40,12 @@ void arg_over_one(t_data *data, int count, char **cmd, int flag) if (count == 2) { + if(!ft_strncmp("-9223372036854775808", cmd[1], 20)) + { + printf("exit\n"); + data->error_code = 0; + exit(0); + } status = char_to_long_long(cmd[1], &flag); if (flag && is_num_str(cmd[1]) && ft_strlen(cmd[1]) <= 20) { @@ -47,7 +53,6 @@ void arg_over_one(t_data *data, int count, char **cmd, int flag) data->error_code = status % 256; exit(status % 256); } - else exit_not_num(data, cmd[1]); } else @@ -72,4 +77,5 @@ void ft_exit(t_data *data, t_leaf *cur_root) } else arg_over_one(data, count, cmd, flag); + // free(cmd); } diff --git a/srcs/builtin/ft_export.c b/srcs/builtin/ft_export.c index 45fef95..8271ac3 100644 --- a/srcs/builtin/ft_export.c +++ b/srcs/builtin/ft_export.c @@ -1,57 +1,264 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_export.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/19 16:25:07 by kichlee #+# #+# */ -/* Updated: 2023/08/12 20:46:31 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ #include "../incs/minishell.h" -static void check_env(t_data *data, char **cmd, int arg_cnt); +static void check_env(t_data *data, int arg_cnt); static void print_export_order(t_data *data); -void ft_export(t_data *data, t_leaf *cur_root) +int check_equal(char *str) { - char **cmd; - int arg_cnt; + int i; - cmd = join_cmd(cur_root->left_child->right_child); - arg_cnt = count_args(cmd); - if (arg_cnt == 1) - print_export_order(data); - else - check_env(data, cmd, arg_cnt); + i = 0; + while (str[i]) + { + if(str[i] == '=') + return (1); + ++i; + } + return (0); } -static void check_env(t_data *data, char **cmd, int arg_cnt) +int plus_flag(char *str) { int i; - char **tmp; i = 0; - while (i < arg_cnt) + while (str[i]) + { + if(str[i] == '+') + return (i); + i++; + } + return (0); +} + +void shiftStringLeft(char *str) +{ + int length = (int) ft_strlen(str); + int i = 0; + + while (i < length - 1) + { + str[i] = str[i + 1]; + i++; + } + str[length - 1] = '\0'; +} + + +void update_env_export(t_data *data) +{ + t_list *tmp; + // t_list *tmp_two; + t_list *tmp_three; + t_list *search_list; + char **key_val_is_plus; + char **key_val_not_plus; + char *key_equal; + int flag; + + + tmp = data->tokens; + tmp_three = data->tokens; + while(tmp_three) { - if (!ft_isalpha(cmd[1][0]) && \ - !check_underbar(cmd[1][0]) && !check_name(cmd[i])) - data->error_code = 1; - else if (!ft_strchr(cmd[i], '=')) + printf("tmp->token->str %s\n", tmp_three->token->str); + tmp_three = tmp_three->next; + } + // tmp_two = data->tokens; + tmp = tmp->next; + printf("mp->token->str %s\n", tmp->token->str); + key_val_not_plus = ft_split(tmp->token->str, '='); + + if(key_val_not_plus[1] == NULL && tmp->next && !tmp->token->blank) + key_val_not_plus[1] = tmp->next->token->str; + + printf("key_val_not_plus[0] : %s\n", key_val_not_plus[0]); + printf("key_val_not_plus[1] : %s\n", key_val_not_plus[1]); + key_val_is_plus = NULL; + flag = plus_flag(key_val_not_plus[0]); + + if(!flag) + { + printf("flag start\n"); + printf("check_equal : %d\n",check_equal(tmp->token->str)); + printf("key_val_not_plus[0] %s\n", key_val_not_plus[0]); + printf("key_val_not_plus[1] %s\n", key_val_not_plus[1]); + + if(!check_equal(tmp->token->str)) { - ++i; - continue ; + printf("= 이 없을때!\n"); + search_list = env_search(data, key_val_not_plus[0], FALSE); + printf("search : %p\n", search_list); + if (search_list) + { + printf("test\n"); + return ; + } + } + else + { + printf("= 이 있을때\n"); + data->envs->equal_flag = 1; + printf("env_search 해준 값 : %p\n", env_search(data, key_val_not_plus[0], TRUE)); + search_list = env_search(data, key_val_not_plus[0], TRUE); + } + + if(!search_list) + { + printf("+ 가 없고 = 있을수도, 없을수도, 기존에 환경변수가 없는 지점\n"); + printf("tmp_two->token->blank , %d\n", tmp->token->blank); + printf("key_val_not_plus[1] , %s\n", key_val_not_plus[1]); + + if(tmp->token->blank || !key_val_not_plus[1]) + { + printf("tmp if start!\n"); + add_env_front(data, key_val_not_plus[0], """"); + } + else + { + printf("else if start!\n"); + key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key_val_not_plus[0]) + 2); + key_equal = ft_memmove(key_equal, key_val_not_plus[0], ft_strlen(key_val_not_plus[0])); + key_equal[ft_strlen(key_val_not_plus[0])] = '='; + key_equal[ft_strlen(key_val_not_plus[0]) + 1] = '\0'; + printf("key_equal 완성 %s\n", key_equal); + printf("key_equal 완성 두번째 : %s\n", ft_strjoin(key_equal, key_val_not_plus[1])); + add_env_front(data, key_val_not_plus[0], key_val_not_plus[1]); + } + } + else if(search_list) + { + printf("+ 가 없고 = 는 있는데, 기존에 환경변수가 있는 지점\n"); + printf("first : ifcon!\n"); + printf("key not plus [1] : %s\n", key_val_not_plus[1]); + free(search_list->env); + if(key_val_not_plus[1]) + { + printf("second : ifcon!\n"); + key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key_val_not_plus[0]) + 2); + // key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key_val_not_plus[0]) + 4); + // key_equal[1] = '\"'; + // key_equal[ft_strlen(key_val_not_plus[0]) + 2] = '\"'; + key_equal = ft_memmove(key_equal, key_val_not_plus[0], ft_strlen(key_val_not_plus[0])); + key_equal[ft_strlen(key_val_not_plus[0])] = '='; + key_equal[ft_strlen(key_val_not_plus[0]) + 1] = '\0'; + printf("key_equal 완성 %s\n", key_equal); + printf("key_equal 완성 두번째 : %s\n", ft_strjoin(key_equal, key_val_not_plus[1])); + search_list->env = ft_strjoin(key_equal, key_val_not_plus[1]); + } + else + { + printf("+ 가 없고 = 는 있는데, 기존에 환경변수가 없는 지점\n"); + printf("final else start!\n"); + // printf("key_equal %s\n" , key_equal); + // printf("ft_strjoin %s\n" ,ft_strjoin(key_equal, """")); + key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key_val_not_plus[0]) + 2); + key_equal = ft_memmove(key_equal, key_val_not_plus[0], ft_strlen(key_val_not_plus[0])); + key_equal[ft_strlen(key_val_not_plus[0])] = '='; + key_equal[ft_strlen(key_val_not_plus[0]) + 1] = '\0'; + key_val_not_plus[1] = ft_strdup(""); + search_list->env = ft_strjoin(key_equal, key_val_not_plus[1]); + } + + } + } + else + { + key_val_is_plus = ft_split(tmp->token->str, '+'); + key_val_is_plus[0][ft_strlen(key_val_is_plus[0])] = '\0'; + shiftStringLeft(key_val_is_plus[1]); + search_list = env_search(data, key_val_is_plus[0], TRUE); + if(!search_list) + { + if(tmp->token->blank || !key_val_is_plus[1]) + add_env_front(data, key_val_is_plus[0], " "); + else + add_env_front(data, key_val_is_plus[0], key_val_is_plus[1]); } else { - tmp = ft_split(cmd[i], '='); - update_env(data, tmp[0], tmp[1]); + char *tmp = search_list->env; + search_list->env = ft_strjoin(search_list->env, key_val_is_plus[1]); free(tmp); } + + } +} + + +void ft_export(t_data *data, t_leaf *cur_root) +{ + int arg_cnt; + (void) cur_root; + + t_list *tmp = data->tokens; + + arg_cnt = 0; + while(tmp) + { + ++arg_cnt; + tmp = tmp->next; + } + if (arg_cnt == 1) + print_export_order(data); + else + check_env(data, arg_cnt); +} + +int ft_isalpha_str(char *str) +{ + int i; + + i = 0; + while (str[i]) + { + if (!((ft_isalnum(str[i]) || check_underbar(str[i])))) + return (0); ++i; } + return (1); +} + + +static void check_env(t_data *data, int arg_cnt) +{ + int i; + t_list *tmp; + + tmp = data->tokens; + tmp = tmp->next; + i = 1; + + (void) arg_cnt; + + if(!check_name(tmp->token->str)) + { + printf("enter checkname!\n"); + printf("bash: export: `%s': not a valid identifier\n", tmp->token->str); + data->error_code = 1; + return ; + } + tmp = tmp->next; + if(!tmp) + { + printf("first if condition\n"); + update_env_export(data); + } + else + { + while(i < arg_cnt) + { + if(!ft_isalpha_str(tmp->token->str)) + { + printf("bash: export: `%s': not a valid identifier\n", tmp->token->str); + data->error_code = 1; + return ; + } + ++i; + } + update_env_export(data); + } } static void print_export_order(t_data *data) @@ -65,7 +272,7 @@ static void print_export_order(t_data *data) i = 0; lst_size = ft_lstsize(data->envs); cur = data->envs; - order_copy = (char **)ft_calloc(sizeof(char *), lst_size + 1); + order_copy = (char **)ft_calloc(lst_size + 1, sizeof(char *)); while (cur) { order_copy[i] = ft_strdup(cur->env); @@ -74,6 +281,20 @@ static void print_export_order(t_data *data) } order_set = sort_bubble(order_copy, lst_size); i = -1; - while (order_set[++i]) - printf("declare -x %s\n", order_set[i]); -} + + while (order_set[++i]) { + char **res_split = ft_split(order_set[i], '='); + printf("declare -x "); + printf("%s=", *res_split++); + printf("\""); + while (*res_split) + { + printf("%s", *res_split); + res_split++; + } + printf("\""); + printf("\n"); + } + } + // while (order_set[++i]) + // printf("declare -x %s\n", order_set[i]); diff --git a/srcs/builtin/ft_export_two.c b/srcs/builtin/ft_export_two.c index 93f4602..3423d83 100644 --- a/srcs/builtin/ft_export_two.c +++ b/srcs/builtin/ft_export_two.c @@ -6,7 +6,7 @@ /* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/09 19:33:40 by kichlee #+# #+# */ -/* Updated: 2023/08/10 22:01:54 by kichlee ### ########.fr */ +/* Updated: 2023/08/13 21:25:30 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,11 +22,37 @@ int check_underbar(char ch) int check_name(char *str) { int i; + int plus; + int j; + j = 0; i = 0; - while (str[i] && str[i] != '=') + plus = 0; + if(str[0] != '_' && ft_isalpha(str[0]) != 1) + return (0); + while (str[j] && str[j] != '+') + ++j; + if(str[j] == '+') { - if (str[i] != '_' && ft_isalnum(str[i])) + printf("plus : %d\n", plus); + printf("str[j - 1] : %c\n", str[j - 1]); + printf("str[j] : %c\n", str[j]); + if(str[j + 1] != '=') + { + printf("plus condition\n"); + return (0); + } + } + plus = 0; + while (str[i] && str[i] != '=') + { + if(str[i] == '+') + ++plus; + if (str[i] != '+' && str[i] != '_' && !ft_isalnum(str[i])) + { + return (0); + } + if(plus > 1) return (0); ++i; } diff --git a/srcs/builtin/ft_pwd.c b/srcs/builtin/ft_pwd.c index c20faaf..1fe86dd 100644 --- a/srcs/builtin/ft_pwd.c +++ b/srcs/builtin/ft_pwd.c @@ -6,7 +6,7 @@ /* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:24:31 by kichlee #+# #+# */ -/* Updated: 2023/08/10 20:50:16 by kichlee ### ########.fr */ +/* Updated: 2023/08/12 18:42:29 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/builtin/ft_unset.c b/srcs/builtin/ft_unset.c index 2df55f1..51ba277 100644 --- a/srcs/builtin/ft_unset.c +++ b/srcs/builtin/ft_unset.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* ft_unset.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 22:51:02 by kichlee #+# #+# */ -/* Updated: 2023/08/13 16:42:31 by eunwolee ### ########.fr */ +/* Updated: 2023/08/12 18:40:43 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,7 @@ void ft_unset(t_data *data, t_leaf *cur_root) char **cmd; int arg_cnt; int i; - + cmd = join_cmd(cur_root->left_child->right_child); arg_cnt = count_args(cmd); i = 1; @@ -28,5 +28,5 @@ void ft_unset(t_data *data, t_leaf *cur_root) env_remove(data, cmd[i]); ++i; } - data->env_array = env_to_array(data); + free(cmd); } diff --git a/srcs/execute/execve.c b/srcs/execute/execve.c index 0a9b1ce..61ee11b 100644 --- a/srcs/execute/execve.c +++ b/srcs/execute/execve.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 17:07:56 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 17:08:02 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 08:32:27 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,6 +17,11 @@ void do_cmd(t_data *data) int builtnum; t_leaf *temp; + if (data->info->pipe_num >= 300) + { + printf("%s\n", E_SYNTAX_PIPE); + exit(258); + } temp = data->root->left_child->right_child; if (temp != NULL) builtnum = check_bulitin_func(temp->token->str); @@ -62,12 +67,7 @@ void exec_fork(t_data *data) abs_path(data); base->command = set_path(data, data->root->left_child->right_child); if (!base->command) - { - printf("bash: %s: command not found\n", \ - data->root->left_child->right_child->token->str); - data->error_code = 127; - exit(data->error_code); - } + exit(127); execve(base->command, base->cmd_path, data->env_array); } @@ -90,7 +90,8 @@ void execute_single_cmd(t_data *data, t_pipe *base, int i, int flag) signal(SIGQUIT, child_handler); data->info->parent = 1; if (data->info->pipe_num != 0) - link_pipe(i, base, data); + if (link_pipe(i, base, data) == TRUE) + exit(1); do_cmd(data); } else diff --git a/srcs/execute/freepipe.c b/srcs/execute/freepipe.c index be50156..3b30945 100644 --- a/srcs/execute/freepipe.c +++ b/srcs/execute/freepipe.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* freepipe.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/08 17:49:42 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 23:07:39 by kichlee ### ########.fr */ +/* Updated: 2023/08/14 08:31:04 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,6 +32,6 @@ void check_file(int fd, t_data *data) close(fd); data->error_code = 1; if (data->info->parent == 1) - program_error_exit("bash"); + exit(1); } } diff --git a/srcs/execute/pipe.c b/srcs/execute/pipe.c index d92dc6f..0603c9c 100644 --- a/srcs/execute/pipe.c +++ b/srcs/execute/pipe.c @@ -6,34 +6,35 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 17:08:11 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 17:08:23 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 08:34:15 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -void link_pipe(int i, t_pipe *base, t_data *data) +t_bool link_pipe(int i, t_pipe *base, t_data *data) { if (i == data->info->pipe_num) { if (dup2(base->com[i - 1].fd[0], STDIN_FILENO) == -1 \ || close(base->com[i - 1].fd[0]) == -1) - error_back_readline(data, "Bad file descriptor", EBADF, 1); + return (TRUE); } else if (i == 0) { if (close(base->com[i].fd[0]) == -1 \ || dup2(base->com[i].fd[1], STDOUT_FILENO) == -1 \ || close(base->com[i].fd[1]) == -1) - error_back_readline(data, "Bad file descriptor", EBADF, 1); + return (TRUE); } else { if (close(base->com[i].fd[0]) == -1 \ || dup2(base->com[i - 1].fd[0], STDIN_FILENO) == -1 \ || dup2(base->com[i].fd[1], STDOUT_FILENO) == -1) - error_back_readline(data, "Bad file descriptor", EBADF, 1); + return (TRUE); } + return (FALSE); } void wait_child_processes(t_data *data) @@ -45,21 +46,41 @@ void wait_child_processes(t_data *data) signal (SIGINT, SIG_IGN); while (i < data->info->pipe_num + 1) { - waitpid(-1, &status, 0); + if (wait(&status) \ + == data->pipe->com[data->info->pipe_num].pid) + data->error_code = WEXITSTATUS(status); + if (WIFSIGNALED(status) && !data->info->heredoc_flag) + data->error_code = 128 + WTERMSIG(status); + if (WEXITSTATUS(status)) + error_check(WEXITSTATUS(status), data); i++; } - if (WIFSIGNALED(status)) + if (WTERMSIG (status) == 2) + ft_putendl_fd("", STDERR_FILENO); + else if (WTERMSIG (status) == 3) + ft_putendl_fd("Quit: 3", STDOUT_FILENO); + close_file(data); +} + +void error_check(int num, t_data *data) +{ + if (num == 127) { - if (status == 3) - ft_putendl_fd("QUIT: 3", STDERR_FILENO); - else if (status == 2) - ft_putendl_fd("", STDERR_FILENO); - data->error_code = WTERMSIG(status); + printf("bash: %s: command not found\n", \ + data->root->left_child->right_child->token->str); } - i = 0; - while (i < data->info->index) + if (num == 1) { - unlink(data->info->heredoc_file[i]); - i++; + printf("bash: %s: No such file or directory\n", \ + data->root->left_child->right_child->token->str); } } + +void close_file(t_data *data) +{ + int i; + + i = -1; + while (++i < data->info->index) + unlink(data->info->heredoc_file[i]); +} diff --git a/srcs/execute/setpath.c b/srcs/execute/setpath.c index 3b6b8a5..fb23258 100644 --- a/srcs/execute/setpath.c +++ b/srcs/execute/setpath.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 17:09:09 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 17:09:17 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 08:35:19 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -91,8 +91,6 @@ char *search_path(t_pipe *base, t_data *data) k = 0; if (!base->cmd_abs) { - printf("bash: %s: No such file or directory\n", \ - data->root->left_child->right_child->token->str); data->error_code = 127; exit(data->error_code); } diff --git a/srcs/init/init.c b/srcs/init/init.c index 01d8b92..f278cda 100644 --- a/srcs/init/init.c +++ b/srcs/init/init.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:52 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 17:07:19 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 08:27:28 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,6 @@ void init(t_data **data, char **envp); void env_init(t_data *data, char **envp); -//필요하신 초기화 내용 여기 넣어주시면 됩니당 void init(t_data **data, char **envp) { *data = (t_data *)ft_calloc(1, sizeof(t_data)); @@ -56,7 +55,10 @@ t_bool get_input(t_data *data) { data->input = readline("minishell$ "); if (!data->input) - program_error_exit("bash"); + // { + // printf("exit\n"); + // exit(1); + // } if (!data->input[0]) { free(data->input); diff --git a/srcs/lexer/expand.c b/srcs/lexer/expand.c index 8d6043b..e9df010 100644 --- a/srcs/lexer/expand.c +++ b/srcs/lexer/expand.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:20:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 16:48:09 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 08:25:21 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -61,7 +61,7 @@ static void replace(t_data *data, t_token *token, char *name) int j; t_list *tmp; - tmp = env_search(data, name); + tmp = env_search(data, name, TRUE); if (tmp) { j = 0; diff --git a/srcs/redirect/heredoc.c b/srcs/redirect/heredoc.c index fe687ef..abab81c 100644 --- a/srcs/redirect/heredoc.c +++ b/srcs/redirect/heredoc.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:21:48 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 16:22:09 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 08:23:42 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,14 +29,15 @@ int fork_heredoc(t_data *data) { signal (SIGINT, SIG_IGN); waitpid(-1, &status, 0); + data->error_code = WEXITSTATUS(status); if (WIFSIGNALED(status)) { data->error_code = WTERMSIG (status); ft_putendl_fd("", STDERR_FILENO); return (1); } - else - data->error_code = (status); + // else 필요 없는건가? + // data->error_code = (status); } return (1); } diff --git a/srcs/redirect/heredocutils.c b/srcs/redirect/heredocutils.c index 533a224..acfe7b2 100644 --- a/srcs/redirect/heredocutils.c +++ b/srcs/redirect/heredocutils.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:16:20 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 16:21:41 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 08:24:30 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -77,7 +77,7 @@ static void heredoc_replace(t_data *data, char **tmp, char *name) int j; t_list *env; - env = env_search(data, name); + env = env_search(data, name, TRUE); if (!env) { *tmp = ft_strncat(*tmp, "$", 1); diff --git a/srcs/signal/signal.c b/srcs/signal/signal.c index 0fc268e..f1ac252 100644 --- a/srcs/signal/signal.c +++ b/srcs/signal/signal.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/15 18:40:34 by kichlee #+# #+# */ -/* Updated: 2023/08/13 21:08:03 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 08:15:33 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,7 +38,8 @@ void handle_sigint(int sig) void child_handler(int signum) { printf("\n"); - exit(EXIT_SUCCESS); + exit(EXIT_FAILURE); + ft_putendl_fd("", STDERR_FILENO); (void)signum; } diff --git a/srcs/utils/env.c b/srcs/utils/env.c index 7948c88..66f2535 100644 --- a/srcs/utils/env.c +++ b/srcs/utils/env.c @@ -6,14 +6,14 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 06:38:21 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 16:49:27 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 08:14:32 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" void env_print(t_data *data); -t_list *env_search(t_data *data, char *key); +t_list *env_search(t_data *data, char *key, t_bool flag); t_bool env_remove(t_data *data, char *key); char **env_to_array(t_data *data); @@ -29,8 +29,7 @@ void env_print(t_data *data) } } -//환경변수 이름에 해당하는 노드를 반환하는 함수입니다 -t_list *env_search(t_data *data, char *key) +t_list *env_search(t_data *data, char *key, t_bool flag) { char *tmp; char *env; @@ -39,9 +38,14 @@ t_list *env_search(t_data *data, char *key) tmp = ft_strdup(key); if (!tmp) program_error_exit("bash"); - env = ft_strncat(tmp, "=", 1); - if (!env) - program_error_exit("bash"); + if (flag == TRUE) + { + env = ft_strncat(tmp, "=", 1); + if (!env) + program_error_exit("bash"); + } + else + env = tmp; cur = data->envs; while (cur) { @@ -56,7 +60,7 @@ t_bool env_remove(t_data *data, char *key) { t_list *env; - env = env_search(data, key); + env = env_search(data, key, TRUE); if (!env) return (FALSE); if (!env->pre) From e5236bd4e789cc1f5d5f750b73da89daecba3a80 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Mon, 14 Aug 2023 09:43:59 +0900 Subject: [PATCH 30/57] heredoc 0 add --- .DS_Store | Bin 0 -> 6148 bytes Libft/libft.a | Bin 35328 -> 0 bytes Libft/objs/ft_atoi.o | Bin 880 -> 0 bytes Libft/objs/ft_bzero.o | Bin 584 -> 0 bytes Libft/objs/ft_calloc.o | Bin 696 -> 0 bytes Libft/objs/ft_isalnum.o | Bin 688 -> 0 bytes Libft/objs/ft_isalpha.o | Bin 632 -> 0 bytes Libft/objs/ft_isascii.o | Bin 592 -> 0 bytes Libft/objs/ft_isdigit.o | Bin 592 -> 0 bytes Libft/objs/ft_isprint.o | Bin 592 -> 0 bytes Libft/objs/ft_itoa.o | Bin 1128 -> 0 bytes Libft/objs/ft_memchr.o | Bin 648 -> 0 bytes Libft/objs/ft_memcmp.o | Bin 680 -> 0 bytes Libft/objs/ft_memcpy.o | Bin 680 -> 0 bytes Libft/objs/ft_memmove.o | Bin 784 -> 0 bytes Libft/objs/ft_memset.o | Bin 608 -> 0 bytes Libft/objs/ft_putchar_fd.o | Bin 624 -> 0 bytes Libft/objs/ft_putendl_fd.o | Bin 856 -> 0 bytes Libft/objs/ft_putnbr_fd.o | Bin 1048 -> 0 bytes Libft/objs/ft_putstr_fd.o | Bin 680 -> 0 bytes Libft/objs/ft_split.o | Bin 1976 -> 0 bytes Libft/objs/ft_strchr.o | Bin 672 -> 0 bytes Libft/objs/ft_strdup.o | Bin 736 -> 0 bytes Libft/objs/ft_striteri.o | Bin 624 -> 0 bytes Libft/objs/ft_strjoin.o | Bin 888 -> 0 bytes Libft/objs/ft_strlcat.o | Bin 840 -> 0 bytes Libft/objs/ft_strlcpy.o | Bin 768 -> 0 bytes Libft/objs/ft_strlen.o | Bin 624 -> 0 bytes Libft/objs/ft_strmapi.o | Bin 792 -> 0 bytes Libft/objs/ft_strncat.o | Bin 968 -> 0 bytes Libft/objs/ft_strncmp.o | Bin 776 -> 0 bytes Libft/objs/ft_strnstr.o | Bin 936 -> 0 bytes Libft/objs/ft_strrchr.o | Bin 672 -> 0 bytes Libft/objs/ft_strtrim.o | Bin 1320 -> 0 bytes Libft/objs/ft_substr.o | Bin 1000 -> 0 bytes Libft/objs/ft_tolower.o | Bin 600 -> 0 bytes Libft/objs/ft_toupper.o | Bin 600 -> 0 bytes Libft/objs/get_next_line.o | Bin 2936 -> 0 bytes Libft/objs/get_next_line_utils.o | Bin 808 -> 0 bytes Makefile | 1 - incs/bulitin.h | 31 ++++++++++--------------------- incs/minishell.h | 2 +- incs/pipe.h | 4 ++-- incs/struct.h | 4 ++-- incs/utils.h | 5 +++-- libft.a | Bin 35328 -> 0 bytes minishell | Bin 75078 -> 0 bytes objs/builtin/builtin.o | Bin 2952 -> 0 bytes objs/builtin/builtin_utils.o | Bin 1456 -> 0 bytes objs/builtin/ft_atolong.o | Bin 1672 -> 0 bytes objs/builtin/ft_cd.o | Bin 2496 -> 0 bytes objs/builtin/ft_echo.o | Bin 1624 -> 0 bytes objs/builtin/ft_env.o | Bin 3040 -> 0 bytes objs/builtin/ft_exit.o | Bin 2096 -> 0 bytes objs/builtin/ft_exit_two.o | Bin 1176 -> 0 bytes objs/builtin/ft_export.o | Bin 8184 -> 0 bytes objs/builtin/ft_export_two.o | Bin 2728 -> 0 bytes objs/builtin/ft_pwd.o | Bin 1184 -> 0 bytes objs/builtin/ft_unset.o | Bin 784 -> 0 bytes objs/execute/checkbulitin.o | Bin 920 -> 0 bytes objs/execute/execve.o | Bin 3448 -> 0 bytes objs/execute/freepipe.o | Bin 1024 -> 0 bytes objs/execute/pipe.o | Bin 2632 -> 0 bytes objs/execute/pipeutils.o | Bin 1744 -> 0 bytes objs/execute/setpath.o | Bin 2472 -> 0 bytes objs/init/init.o | Bin 2520 -> 0 bytes objs/lexer/expand.o | Bin 2312 -> 0 bytes objs/lexer/expand_check.o | Bin 2992 -> 0 bytes objs/lexer/lexer.o | Bin 2720 -> 0 bytes objs/lexer/lexer_utils.o | Bin 1144 -> 0 bytes objs/lexer/quote.o | Bin 2928 -> 0 bytes objs/lexer/tokenizer.o | Bin 2280 -> 0 bytes objs/minishell.o | Bin 1088 -> 0 bytes objs/parser/parser.o | Bin 1616 -> 0 bytes objs/parser/syntax.o | Bin 3088 -> 0 bytes objs/redirect/heredoc.o | Bin 2504 -> 0 bytes objs/redirect/heredocutils.o | Bin 2816 -> 0 bytes objs/redirect/redirection.o | Bin 1560 -> 0 bytes objs/signal/signal.o | Bin 1728 -> 0 bytes objs/utils/env.o | Bin 2224 -> 0 bytes objs/utils/list.o | Bin 1184 -> 0 bytes objs/utils/list_clear.o | Bin 968 -> 0 bytes objs/utils/temp.o | Bin 3880 -> 0 bytes objs/utils/tree.o | Bin 1416 -> 0 bytes objs/utils/utils.o | Bin 1584 -> 0 bytes srcs/execute/checkbulitin.c | 12 ------------ srcs/execute/execve.c | 21 ++++++--------------- srcs/execute/freepipe.c | 4 ++-- srcs/execute/pipe.c | 24 +++++++----------------- srcs/execute/pipeutils.c | 16 ++-------------- srcs/execute/setpath.c | 12 ------------ srcs/init/init.c | 14 ++++++++------ srcs/lexer/expand.c | 2 +- srcs/lexer/expand_check.c | 6 +++++- srcs/lexer/lexer.c | 2 +- srcs/minishell.c | 6 ++++-- srcs/redirect/heredoc.c | 4 +--- srcs/redirect/heredocutils.c | 22 ++++++++++++++++++++-- srcs/signal/signal.c | 2 +- srcs/utils/env.c | 9 ++------- 100 files changed, 78 insertions(+), 125 deletions(-) create mode 100644 .DS_Store delete mode 100644 Libft/libft.a delete mode 100644 Libft/objs/ft_atoi.o delete mode 100644 Libft/objs/ft_bzero.o delete mode 100644 Libft/objs/ft_calloc.o delete mode 100644 Libft/objs/ft_isalnum.o delete mode 100644 Libft/objs/ft_isalpha.o delete mode 100644 Libft/objs/ft_isascii.o delete mode 100644 Libft/objs/ft_isdigit.o delete mode 100644 Libft/objs/ft_isprint.o delete mode 100644 Libft/objs/ft_itoa.o delete mode 100644 Libft/objs/ft_memchr.o delete mode 100644 Libft/objs/ft_memcmp.o delete mode 100644 Libft/objs/ft_memcpy.o delete mode 100644 Libft/objs/ft_memmove.o delete mode 100644 Libft/objs/ft_memset.o delete mode 100644 Libft/objs/ft_putchar_fd.o delete mode 100644 Libft/objs/ft_putendl_fd.o delete mode 100644 Libft/objs/ft_putnbr_fd.o delete mode 100644 Libft/objs/ft_putstr_fd.o delete mode 100644 Libft/objs/ft_split.o delete mode 100644 Libft/objs/ft_strchr.o delete mode 100644 Libft/objs/ft_strdup.o delete mode 100644 Libft/objs/ft_striteri.o delete mode 100644 Libft/objs/ft_strjoin.o delete mode 100644 Libft/objs/ft_strlcat.o delete mode 100644 Libft/objs/ft_strlcpy.o delete mode 100644 Libft/objs/ft_strlen.o delete mode 100644 Libft/objs/ft_strmapi.o delete mode 100644 Libft/objs/ft_strncat.o delete mode 100644 Libft/objs/ft_strncmp.o delete mode 100644 Libft/objs/ft_strnstr.o delete mode 100644 Libft/objs/ft_strrchr.o delete mode 100644 Libft/objs/ft_strtrim.o delete mode 100644 Libft/objs/ft_substr.o delete mode 100644 Libft/objs/ft_tolower.o delete mode 100644 Libft/objs/ft_toupper.o delete mode 100644 Libft/objs/get_next_line.o delete mode 100644 Libft/objs/get_next_line_utils.o delete mode 100644 libft.a delete mode 100755 minishell delete mode 100644 objs/builtin/builtin.o delete mode 100644 objs/builtin/builtin_utils.o delete mode 100644 objs/builtin/ft_atolong.o delete mode 100644 objs/builtin/ft_cd.o delete mode 100644 objs/builtin/ft_echo.o delete mode 100644 objs/builtin/ft_env.o delete mode 100644 objs/builtin/ft_exit.o delete mode 100644 objs/builtin/ft_exit_two.o delete mode 100644 objs/builtin/ft_export.o delete mode 100644 objs/builtin/ft_export_two.o delete mode 100644 objs/builtin/ft_pwd.o delete mode 100644 objs/builtin/ft_unset.o delete mode 100644 objs/execute/checkbulitin.o delete mode 100644 objs/execute/execve.o delete mode 100644 objs/execute/freepipe.o delete mode 100644 objs/execute/pipe.o delete mode 100644 objs/execute/pipeutils.o delete mode 100644 objs/execute/setpath.o delete mode 100644 objs/init/init.o delete mode 100644 objs/lexer/expand.o delete mode 100644 objs/lexer/expand_check.o delete mode 100644 objs/lexer/lexer.o delete mode 100644 objs/lexer/lexer_utils.o delete mode 100644 objs/lexer/quote.o delete mode 100644 objs/lexer/tokenizer.o delete mode 100644 objs/minishell.o delete mode 100644 objs/parser/parser.o delete mode 100644 objs/parser/syntax.o delete mode 100644 objs/redirect/heredoc.o delete mode 100644 objs/redirect/heredocutils.o delete mode 100644 objs/redirect/redirection.o delete mode 100644 objs/signal/signal.o delete mode 100644 objs/utils/env.o delete mode 100644 objs/utils/list.o delete mode 100644 objs/utils/list_clear.o delete mode 100644 objs/utils/temp.o delete mode 100644 objs/utils/tree.o delete mode 100644 objs/utils/utils.o diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6773416310fdfbab77827f20de291789ff3fc01b GIT binary patch literal 6148 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 diff --git a/Libft/objs/ft_isalnum.o b/Libft/objs/ft_isalnum.o deleted file mode 100644 index 8311ad73435a78ccf372be4688ce3871f566087b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 688 zcmb7CJxjw-6uq(43eoD2L0!xu6tti&Iw~qSIEZv`yM#tbGrtu!Qc8_$9=2%U4OodZ)X*#d2kCYvp0S2 z#*NJmyxaE~eoDWSzGrOt8B0h}ELvckr6^r^jV*%nazGsm;5-hR+_T))RH`rkO)6D7 hof98N?47&bi5F?@RD+uTrNfFt)yNN5)Vi!6OCOCqO%MP8 diff --git a/Libft/objs/ft_isalpha.o b/Libft/objs/ft_isalpha.o deleted file mode 100644 index f936134384ebac76d78e8c6def92e55f0fe03b61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 632 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg{|11j7BHi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJHe0cC*9gXskeu`o2i)PU&t_~iWDg2d#K_|m-c%)FHNcpn#J zd6+p0FhQVU%s{pRkcK)H#dss2oCFX<!C2I2r91_6*7 z5C-W5*+CBY@62%V0XM_W7u*gzIanDBUo4+51q^p{pqV0Iu}q-Y@%d7~a6yQ*LezO6 zi@gMjU7s(t0;*Sop&{r6Kf_L-yF~s2X^?pj_#Jiv?VEUjIsO{Vt>Ewy0DA)_1gC*| w*o1*RK9C2Y02DfWKu^QM86?GzB+n3^RuZ3CoS0LPk;sr!l3QR1CJkWv0U(J-hX4Qo diff --git a/Libft/objs/ft_isascii.o b/Libft/objs/ft_isascii.o deleted file mode 100644 index 6895e02eb9b0f074c0d3d2b35b63434a98217467..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 592 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P08wF5<5+(=K!zK*m@PQl-1t4GZ0X+lr h8%T;DNuD7-tt39PII%c6Gm{~wB)7m2Od7!S0{}(4JCpzb diff --git a/Libft/objs/ft_isdigit.o b/Libft/objs/ft_isdigit.o deleted file mode 100644 index 922557d07d952d8a42f60e7d36dfb72bb195ae68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 592 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P08wF5<5+(=K!zK*m@PQl-1t4GZ0X+lr h8%T;DNuD7-tt39PxS%LAuY@6|B)7m2Od7!S0|2AlJTw3R diff --git a/Libft/objs/ft_itoa.o b/Libft/objs/ft_itoa.o deleted file mode 100644 index 853a82d120c8aa5ad2a5be249327b6184fbacfa5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1128 zcma)6O=uHQ5T5Ne$!=o}g+jHc8}L$)LhZ!}9u}fdr3WcJc=8cae-`pnVWmPT1ab-J zCFn`PimgTU!r;henL?o87nB2o@YNZ{C|X-#0(J&8MH=exD#x z2*S%a^geIWP{?Vh=kNZ#m}7yz<}(n5=LFoW@|uLO?>w?24k1>r-CB*#;qI5@VLrz0 zsFGuxDq##;A@b$odMK3@Zd*ZLcXXpKVlK62VXi z*T8-cxEO2(16qJhLT^G@n3t8YJU`h2cKdma-I@yNnC8^gQ zYj)1LPUp6($7sq^^=*C2d^$&!J=)S=@O?KyJuhMQG=;uv@&Hy_W zVA*$Fsq9TmetdodHEYVmf%bvwU%~lGZMcVOa{CGDdyV>*tP2^R1F_6~I2g=uZ>`Qt z7x^9=sFBYOdgGkUsyOOzW?PtH{kD%RS2ZjN-z6HQB=t?g6}FPjA?p4qtZ^ zas^v}=Fh-_Vm=+%I1HcT=V4C<-0bq-D4#>#vwY8wU4F3B*rrC}@gL!1U;+{Ok}cM( edzMY2m@5>@c@lSRVcF#z73|{rMStZ_#g{+$EZs){ diff --git a/Libft/objs/ft_memchr.o b/Libft/objs/ft_memchr.o deleted file mode 100644 index a0a51afb13a7db7b5870c94d8eaad50fab46323f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 648 zcmbVKJx{|h5WVz+qzV*?R!ZrT{)EB;-8{g?z|eusLZPS#QX&)tBO?O?{RLeaS-T~8OM=W)hv4B>fMuTGWdDyv~HWpEls`#~(v2Ny?!11Wd5 z^7^d_TE;gptO&jdZ?^ht{5rG-@S`oE7=UpR=Y{Ey;5l}IU4V^i7~IR>_>ZNJ^gO9i z^6Jz0&80-uM51hXUyPMc9n7vPS0t4(&8E;Di)P9jHJt)&Xw4SLiO$p)9mlF1D|^(u zqq(L$N^l=_#dT#G^6d9C^-|=yf8vP*dl)_x9tMYa+E;eO2rY7NF@CNegJ{3BjE!8 zgDwPd6^P13aJ*S|!;ugKlf0cb^JZpuZ}0y7?PHS2As8cWl|UAw19a>QsTwZ4G-VqvN={6D9Jbb9&I(m2z`E zuiu!UX8bCKx!^5$bJQQ>m!Zu9U)mIk0T>r?e%th4!gCw|TL2r^Fu0fZ_>X0G^f;)H zdJajw1fp}dnOHpDivuogzh^uN~>4%zDp}w^8|8YZRiTM2=6_Z+sf83}Oxc e8kO;}?EA13=5&&KiHzHE6nE(;iMvaBZO|tV&tNV9 diff --git a/Libft/objs/ft_memcpy.o b/Libft/objs/ft_memcpy.o deleted file mode 100644 index 432a71542dd2a40a3eb37fb4330688e9c6f1b691..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmbVKyH3L}6uluWDGIa_trY0g5iu1O=#~LC28IsZ3<^a>A|*o*urYR|U(g?5=qDiY z0l>msm=Yw0j%Fa7>)L9Nn7GpMeVu!3$9ekt{9Y!q2*yhR=yA{hVCz7lqQ94CT^=X} zB9l9)GZu7Th`4(l>jX}S_I{^5&rNi%1J*OMs#Ks`!(lH(a1lnwK`bu&S7-ebArAKP z{jp9O+V4WlM%;ndNBt$gjounC>#cwcz?j7KBRziy&$$a60&L7-@GS4~AIl!;Wl|;i zRw4QBl1!?;ELk*7oKbzlq8(`0lFGa`pjj>RNaBrZ%ugK5fs@!I72oycQjw-9^puu2 zs`reRt$M>0+>+(DQpcB@MH+rU1N*h6S>`EC=(EzCj9_ICSg$k diff --git a/Libft/objs/ft_memmove.o b/Libft/objs/ft_memmove.o deleted file mode 100644 index 9d5e31641ef589af73b037128240e95a73f0b95e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 784 zcmbVJJx>Bb5S`=D15q%6L#`LfiqSo@;$F)FQG_TH@Cqf+T&DRZ2 zDNf#j%!WUJjYs^T-$88+I<2js84BSh&JSb!J8TJY26_l(;T~4T@{IpTbWe|?JgMg# zsh12XnfFx6qKS0+#SM#g!CjEKS*}CVT;!6%?gj3b4shs^Hmu{R(B}U1tGw+OJBew( z=E-;}y+D%?bMy?iUu>8ez=Ws+*G*YoB?QkH@us!Z#U7PO6uEiK`wI_d^g`@nc(xFa zv7_P99K1K~!2Zbf6yBjXw8fKoL;a6s{k$giZGl Sy6?9x>vSIY?QMOQ4gL#Ewtlk! diff --git a/Libft/objs/ft_memset.o b/Libft/objs/ft_memset.o deleted file mode 100644 index 3524c0760ee6ccd2ade520ebc4f7777a2b686b43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 608 zcmbVKJxc>Y5S=rLADreygo{?`B398xuF4e(78VvM>;_3rB6u<2ik6mX^9%eP=>&g( z*jPuajUX7XISbD>=Pq8r%7M4@@n#;o!#;ezeJv6>1e2o(bR?((ur)wu(ceekl>3 z$0Swb-=SAPybMuu)hYRHa24Q(TS7AclP0NG5Xk&KyyPx$2#86KKxU=qKbGFp+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*TVsc4*XM+jxbm+v!^8!jY5FJf4;wKUdwMn$I@GBtN2#3+mB1MW6!XVzMf%A-dApx6%`~d^@o?YS} zFm{4JK(r7`wMt`egs5*WdzhS!18?5EnccV9z1)Ake+?3K5kgWJs7VnA5EHK!K}FdGM2vmq=7 z5VA=66%_J5<1o>{13(IpkZ&N6y>j;sW9a|H_Z>YnPrIwl5|!Oj?Bg;St5uR*>+7PU z`t`-+KG8D#$3_9^*Q0b(De*@=LJb#;GtOTlTH`H5S1(cRMzo7{*mE{TRGud1QF`Lh zJYB2eyz*^`pZWtoPJIWtPDkiay+pHHV0dh1TD&T6AbkytyU&7T-n#@IM&XB)!+03w zPxApiBN}h(fF&k@k+%JP&~1{U0Zk^);SWZJ@(ZQxjqFov={-i-uM6jq}A%loRw~N0usA)`}D2VXDrDFqy zj&V%ZE={&d9MnbHp*Wf?D&0j$)9<{ThtJf42hKfz-}&x+_nmus^ZQRLkwy?+8lZW0 z0#L|PXw<4&;Xli?)Xv1(aWjytF6mIpSlTvj+m)J~d^>v^+g`xI_Xx=sAkewkKqebo zlv?;;q~eKplBnmidAw4;W-^D=g#^C$>&dwVLv1Fu;)zA2ViOKH4am6ylGJf7{MP%&S9glZs;_WrBRf7o1nrE@8MG2qaT$WEms+*^nTHw zFS)5uc8?WwjW){PGQJg}Veod0K(ob6{$g+LtFEtK%Qe?3H76D^~ox{DPzq{10P6$JPfp+jWZnqs$M@lRts+OVTM(p-2i z7mczn1tsnk%=5Z>7sr?xdmh^mw>kLutvEuWHPwfQLTW1&Hyu2L;y$2gw2Y3zT`9zyJUM diff --git a/Libft/objs/ft_putstr_fd.o b/Libft/objs/ft_putstr_fd.o deleted file mode 100644 index e34149bfbdabb9b249a3d3fc46968974ecf735e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmb7Bze_?<6h8VagUSLOszsY>5vrwCvbKf>hqgob6a_W2D+(^bTU-VAY}5XMbPM_e zqNTZ--V!uwVD+8bee{Bs4t(eP&X0TEJ@?(ezkVzb1qdcC1QbLh0N5(vYW25kn{-=G zAoAic@`9kLGpk%vnE=F`IXKSz#GbN^ka==;8BWg#(S_F|%$z+fS5LBv>y<{aVlyA^ z`|AZ0Bn-b{o&}x2FmqKs)|6=nVg>lFEutBKNt5I^A!fi$@D_L;I0D3^M<8eA8>0Vf zpLg^yZ3PEYhdMncKE6uFhy64U=K^%*-dwI>pIyw4;a|lh??!3VcX;fEY0?AZd)?=7 zYVu;y^;0x8l34nut-S$ecWy0y^xw(6bI6|)EjuBZOo6dW5+r-gZh#}Qps{su1dDp_ u97Vk3tBdr7gnR#riSvrjRjrh(5I1T?mD8DOT_MSNn@Xx&-PT^7o4x>P!Baf| diff --git a/Libft/objs/ft_split.o b/Libft/objs/ft_split.o deleted file mode 100644 index 0274283b48990647c87703b37087a4f2885a4d9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1976 zcma)7y-!n76hDs&ZT+B8h$yIq4NPjpLFr&pttJi(#4xy+3zn*lrBr;x8e;Mi784w7 zWHg~Twf+Tt6C^BbL}HASDd5l!CK@#XlUjf0e#nC^p5(rB&&NIIch0%JUH|>{&ru?a zK>Rs`Rpw1E7U(qAkhDs%>2rz?fIev-Bm1G_p3O)h;c?eM!DqZAOyJBvzm5x_^!FTjL_S&+X4Qcb! zZq*;#4OsNO>R;@BL39OJI+y3dJ7I7>2is$|flC|Cy~4`#c|ME6caOt&J3;wI54jcS zmXQCg&L22LgM7ZKW3zp;C+70`0`j1zot%?n6(RG!Fei5Ev+)vY%dhyv$Hpq5#+Fij z4mHAODIP92I>=?;B76f@EGlt!Ep|WjDV$2b5-r6=Iba1JF@`mbLE2g=&-vPQz9Rgr zv(&-3Dk1c&1GRI{kf#=MToo@kZ!m5(8eJ9m)Mu}kfKTB(FpJF)?QRK*ZtFgWErq!n z;-2qeUTamDm3}2!6Dz1^KW1qI<|<Dj=JR}MT&p=WC5MctDCIVXy%;WF-OXAN-_mf$?+<2e16>PNq>VIB1^!(Yy8Rh0M5 zYmVn-mFjWIS5W&V@Ub6e%=hqd4YHY+xfeWt&P%|?_TO0p*}5}{+wqS3Cugr?<4!0{tRl_^dqiiQ-9*X`MWHm5c7_6>X0Y@Fl3KN z{A2OTT&Gt)c|ay{-xg1@>6A?(nM;~2D`)QEpNd2xgFQBBaY4!H+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|z0xH}AHi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJIp1j+!J2h$4{Vqs{2sR7aP@yYqQ1&PTe@uhj?nRzMk@jfod z@++Vm1t@I*G>jR@4gk_nr=l2d1eB8iVu&0sP%#h#0Z0)@JOZk}14x7T+&~-v#2^4t z1HvG^AUntb|C<>uKHz5f`H-Js=L>#^oiFqmEP>{Uyx?~D$-(Gg$-&4__(FWX6bBQ7 zIYRt^}0RzA^#=r**Bv`zFr1+8K8RFAQ;)_d) Rk~4}Ja!PUw48f!U0|4h5Suy|s diff --git a/Libft/objs/ft_strdup.o b/Libft/objs/ft_strdup.o deleted file mode 100644 index ada19c5ee0486eb467f07cc0d4dbe8f7ba0b764c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 736 zcmb7CJxjw-6uoWQrlne!4(ejTrJ@DvqGJ#R2M31^ZqJfd6w)?mib@dzS-KY79PHTs z3I%_F=-?c;I5@a9Le+EA7p>yrf&0$6pYP_8ySJD338DxAe8gY}EOIbl2Id9o@1rZj z?O*~?=&OjcMP*(Ht9oil2P8ykbGP*Ehsu_M=W%Zyhr+QK*-RmX&>JTKuyC&xk+3K1GtFeTM!9w54;9W!**Z{u3_U|-Zj`4 z{2zSW(*3X%?GGL5xM}j;wC1D#!d1zCRy99Q_QOJ)I&_}84B`s;o}&552)%mh)ohz+ z758Vaow-2@>>~Gs86JA0+=p3Q-$S13x{eqOTkCz?+qqH1W4Nn568szdz#cq&S78Yp z2WP=3DuDRA6Gd=_A3$OeoWY~m(&yKl8q2dBbI0C()G+@mPh#H^$JUXdn`fb}G|f;N U)jEk<*)SS98CK0K2In%-C!!=_w*UYD diff --git a/Libft/objs/ft_striteri.o b/Libft/objs/ft_striteri.o deleted file mode 100644 index a0a8a3eb480b1c2684ca86ec97c56499edd8e498..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 624 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg{|0V>=9Hi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJHe0A+y8gXskeu`o2i)PU&t_~iWDg2d#K_|m-c%)FHNcpn#J zd6+p0P{AKS^O%8b380}+r=l2d1d;<{h#W6aF%Sa*ND)X}0muO94*=2%K$;uG24WBZ zsR3b-UXU7c!2iPx7yni>t^C`}FmXY%{Evs+3_t(#GwcMKDYBwD{>MxHhMgRYoZTFZ z4wf8@423Vm=Su;@$Q&g9g4^Ne1Ad2{D}m}>0o5roa&+FyGC6ysoJ5PShN=l%cx z;(x21Rs!vrcz`+n8qAH*Z~{d;1^}APCIS@Y19=Pz_<%GY(6g}c1xfKE$uq>KmBbg9 V6lIpA7G*Nzl;jo|f=L6YegJtAPvQUo diff --git a/Libft/objs/ft_strjoin.o b/Libft/objs/ft_strjoin.o deleted file mode 100644 index de774eabb4c94570e4232da47ad82f2dc58cd1aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 888 zcmb7Cze`(D6h5!lG(XxJ1RrwX><{{2W`Q@!NI}pB58`Y`C;29Ed(KuMaUFz zb1RD5pR0j%jV>zgTw~S}(s|S-y*X_B^1+vsYLYlOs|k z_@;HPT-;dAS$ebddA;;T>%~`oj+pgy(%$A*Pv-~FOHuxh&4Nw9hq))X6b@q%_Z^TB zZ~@I^fsf!za2jjqJj-6m|JVA;IPX2adDeUJJ8u_D{#fex)H;iN8JZI zv6nnGhIQPJLa&AUneRaBCQ&`?s@TE%kc@S4K4Zk{Q-;ic@AnhbveDOlTHL2r2jB58 zTI{=nyCO!ko`OE(ee}&cnlY5Z(0>??N;d3ega9*C~Ra7D~DUwX+bhuyP48q7Y-$69pR~jbIh9PwX!K zgLIa5Vk4GfAs58L?jpqaX0xX!SU4~{Z|CF9?#|wQynPNZ#u=VrDigvfoH#!mLaZ&Vul?);ln(Jx?JX9`5n*RR4p|}cd%NXa-VsNo z~UirciCu_)VbAz$X`=!>}O+uY`CF5p34wShYr+|D-8dlLI=^afYxGZc!`)I(c*v@J&*ItRsk&iTfL5-U2p diff --git a/Libft/objs/ft_strlcpy.o b/Libft/objs/ft_strlcpy.o deleted file mode 100644 index b280b25b58ee194985258aabecda6f07dcdacef9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 768 zcmb7Cu}eZ>5Wm;co?__|SQ06;NDx#*;U-jDLxe-yN0?!tX7!@NMR0LU2x`+&`w!fN zmbPe#hK5%VJcouhUtspT=l9Zvh7RuTclX`>zI*q*`_K2UF(QQ^Y+TSZg9sEd1vPE- zhp{_}%F_3lh%}V5j>tA4^wgO?;1D9QzMUAv4tkb=`M9?XV^h1R=+v+mB6*O_?<93` zk~`hc?FzB6HhgZ#AR>JlJSy;o!#5bsu2_Pdg!VsU9K}!w&%pU>0N%|Ld=%aX-Gs7m z4J-HZ9eoafe@IVN9=Zj!(Y>WgO$~Qm0%X1V$T9+P3pAI8MwaP|TONfzOsyKK6RqH$ z2~&$(^-{Pq3v9=z_b9Cx>JH6dHRPq@R$HSc-mqWK9By!2RYNB7lB0R2(6ZC-byKB{ z`#nlL)=))f4)G0UiYgSdXW)L!_SWkK>o^Z{Ue3WBwUX#`3#$!$Q>CSf$Kf@|_vKao zl4(TP-8?73F**b92XKVnz>g&xGQmfIp>uw%p%6dFo-U5{qf9b?{)1CF%IMkrqHPy! Frf*NVcrE|{ diff --git a/Libft/objs/ft_strlen.o b/Libft/objs/ft_strlen.o deleted file mode 100644 index e5563189f7ffb9f76d73eb6efd9f398b04828652..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 624 zcmbVKp-uxq5S^oiD>>+;grrb)5(yZBI{~f&QBgM`r38}pD6oV|5=;|R9j?Dpi6a`hzWdZqgSy Cv`MJ| diff --git a/Libft/objs/ft_strmapi.o b/Libft/objs/ft_strmapi.o deleted file mode 100644 index 8eef3c68ca51aaefaa12c673617b608def692e64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 792 zcmb7Cze_?<6h5z~sZ>f3ymHZ&s6nWfY)YuMhK7c=o0yT{uj)mC1P@w*mV}0&A;7MOPl?D zv{m}VRv>a>AM)&dsxE|?J~UMT5Mph4eeEZ9*pnix$Fmj=Tf;+^)59o4s*o!tQ>NI@ zA7t{ILaZ#g>kSn|6>dO82R{Rzd zpAgOA?vb10NIL@T8C2u=8uKrPRr70sQ@@s&NB@pAuEJ9L?w6rNr)eZ=RrIycH=b$5 zNn5D1HqTLJDlSp?dudog^R?GAoEmFJG@9r58u#*jm1EKFmKLk{FXdZZ)ZIH!@5-Oo zFPlV!WQ=!=-Nm>Ft^NsM5X7-4NDzx{s06-Q3c2b`U7_nO)qvPC#h$sFP3K9`T(X!U UkxOQ?g%oAYTye%e`E`lD082u9{Qv*} diff --git a/Libft/objs/ft_strncat.o b/Libft/objs/ft_strncat.o deleted file mode 100644 index 9548586b43d63ff5f27709b1586807476c394701..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 968 zcmb7CzfTlV5T3^qcF#jj1Ig+Yf*nUfL>r~sL}?6#1qI#9Wj%uNI1XH+2{E~ZhU6NF z_ID-t516gg*w_&)td;7Wh6KAilVkbj?Y``V&@kDVdGqU=**EXt|MBT4ksuI@E8tZ= zOo2hSz}lQH7CWYr=)882&ODTsDHT@Ugc*iXOAE_OnQc#|Hw?z(+Ut@C9}m`GWl5=E zeXU*&LiMWl`g!e{Qj3pmjJ3s?N}VSFW1MM-bYwf4$+!=B6P(1ZAsGzfB=*mtZUp)r z^h4-8_$io)bC|i7doW*?Vkr*$TXMhujdt5|virM0y(5pJJ*m2`pnuwH6|sj0=rN%S ze$V)vR&giwecqnzE+E!MK6-!9UL$hJZR&A~^td18hUtcuxsUYLe}9J>KRD-?Lp|+W zjD`D{h#iW!AJ5QnfG2WISNQYjy}|Q*7s)*5;~ilBL4HYGZB7fCM~}$m{=hqqW6#bQ z%LHFbKk9hM5xE!oQ>*9>W&hccS>FWLkNzV6iOA_<5}-}=_fj>LM0b&o z_c^39(ova|-qEc$(U7vSz2BJZ<0zBRi)#&+p>`0@E&3o;s^MMnv!1ww+MvXJdyzzC-M1XRIlMH*xSG^z{WWYuH_#8vA{~b4wuP) zcgg=Kk*}A9uN`<7-X%~UL5or3>Ih( z&)Yfl8(y7BGujJ z%>h}a&-sop*Cn_(n=kjDbJXtZ4@pb&UdRnU#C=`#dXITt!`Dzz_i*(XciK90)sOW3 z+xNw1-Y1xsZ-2gwEWY7<(OMP(8lHn4hm*)N#`w@ho1@95aQ<&nq3|`OV^JRiwIA$N Wp|^giQcL{uR#nPDrM76+1^EXv5v9Wb diff --git a/Libft/objs/ft_strrchr.o b/Libft/objs/ft_strrchr.o deleted file mode 100644 index 13f006b4b3c7ee1284c5c581ec3c11f49aba071a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 672 zcmbVIyH3ME5L_n#8v#iHk|9l8QUVQf=K>@O3W^kTCuBfDkPyrvC?nC(<_qF7zmU#< zfM}>gcNF;mQ($JDyEsTlNUSusyEA)pkC)HM*9wtE2wo~ciwh4xYyv8;eqRzzKj#ia zrnkW}N?I2}o&DZ03ua~1hsgS>KkRp*Z2(hk6~h36hnPRs`+LY9`eo(-4xVA~UOwYLkv-AtxJK!_ zOQX!DRJp-OHOPnOx~c`KV+For(XDa^b*Dso1)umI4c3;fls%{qsn8UBW^)VFSMZ-? znLG9Sd*9d&QrxSbl*OBQQ_O{zKi5#RjI$Qk&{a{G;9sobb7D=fRGZUDTu5;zqbO`e ObS>N6oqXNa0 zmBUg9r&_KR99OJVR+lUHgt&2aI<6Y$rLzSb{3weJvIMEoLgPHvli;ZRF(iROoW%Z% zs52qoK;|J+;9FoOxI*UIxYQy3iN?D2K4|E@V3*n*eQq>Nli$(B2q2q#x2cVD*!D8i zXWuYw`|RhuE^NenFJt%3I6d@q+c#dHd8&Md247}t7T@p!=9?KH&h?DR80?d^Cp_KU zHrMTEIokL@>*jNg50b!60#l=XFS#|_k~puLb0eI=%mA?$JVVq!#E1cdYq_qAJnqqH zic!$G(!)O6JG%Hd-X-ie)(e{0FLH({^7qh-bGyhjGV8udSq$C+r3%RTh}A9L*gZH}NZnE`wGMPDP0uhefO z{e<&pIuu{S!7)9F#G&|0#Bn#Rc`4r^F9CZK66a{~)5Kl3<{^<{@tw!}wd}}FWTk}Q zc!HnqaVU!TwXm(`yd-Tk*G;zhG09hV7HWE`p8sd2%ut`UPalY1KVXx%?}|rmz2wv$ uL$6oMyi{D}cZzkTmX<0?b?eJznSHn5JRngnluA{HN^ZG!E?oIMn0^9Qn*u!m diff --git a/Libft/objs/ft_substr.o b/Libft/objs/ft_substr.o deleted file mode 100644 index d1abcbe0e1551f4589d91ffc49d0148a08dd3dff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1000 zcma)5F>ljQ5I)xpwh0hbtuSZ63BR!Y*+x++pZij;v$ znIbVDF*Gna{RPPcQhxw~fw^qYjTpMwNWpw(`zdL}(39`oy?6J0clJAf`}6znB_fR= zyo^HE*eO6E*P$}@{=c+iB+-6q)!sll>qrU{!d-ps_Bn)DTv%G{@0IsqfRC|`p7eyq zsw#)A5XFu1=1S2OJC)t_$_pVLKNyTFoVv| zuK|~VZNuJz%|f3*SvZH4v0UQ}G4|(?sHT1I?PXfM`&y%^=Yvm2Q|-_CRNx&gw`G>X zrY-{Tyq8%gG&SnVcL$UEM02P)5#=bn3hU|1fix)eklO-|G^-wCj6Md~7&Dx63=Z6V z!U3OoS^b<7PE+;AOokft*80eN$2Nu1jyX@I(eL9+Eg#_9Ohn^|1BY6t(nfqVsmXkD z+zDIg)6}f4oI9AbsQT15s53p(m$~lW1O65By^&fNo{I}NVXweZlIJ}JMa?OPaszSvlWI<5h&{9? k@zNFBJI}Y>t;BV=N~;wT<&{!tqevyUym>obc~~L;034LLZU6uP diff --git a/Libft/objs/ft_tolower.o b/Libft/objs/ft_tolower.o deleted file mode 100644 index 6feae5c437e7a3858d479fa91e0d6b7aeab4b71f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 600 zcmb7ByG{a85FG@CWR=xufmHhmYNI8I+EG|g&`k_rBmox9HBf42>laY^4cl4T5gTo{ z+{PcUP|pl^a7}ESX7y*vad)(pg_PjWv`1p;Ps2t6y@#hFzuGzUJvQ~2MlC&N*0zyV j+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T0Tu25o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNe&jdCVX-&`_vTQH(bNN=X1QM2;7z7>I!YqzEL=0c3#mTL5VVAk7WL0YD4_ zAT=Ni(hIf&NRtZwJ2PB-z|FAp1-HXaj#kFP7t7~M0pr0OXr>5Q>?Kg_`h2Mq3`k;) z423WF8Fm8W46Fvk2C09*@30eS-oyjU@z-GP0EdSF*qJaPI1SXpCJf~9fjj^OAm8%= kJp~I#kQ6_XJVSh1Nqk9uX+c415kpQ%Zh;|~G=S*`08)TIf&c&j diff --git a/Libft/objs/get_next_line.o b/Libft/objs/get_next_line.o deleted file mode 100644 index dcf776a4686982b7a8e2055048374f2b6a5d706e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2936 zcmb7GO>7%Q6rRn-@wzE>f+D#jQXGkkb6C_?2vVdVrwLLIIYd>2ICUEA4GuVVNsNjV zRWiy2DLoJY5)wZ(f`c9P&|B9hK)&RF1XLC3(YdWFD&S@#1@pc6vDdq4fsw~=-pu>` z-u&!Oe?9*DG-C!sqrYKvmj*NFXwRX~iB-Xd{@NpQ>YGRwkkw=WlLrYX+3_rG?dn{)CPL>b<68p^0EhoM(!g z*Vi&7{$An6Mj^}j@={L`107dIO{QR&>{VinMdTcX+iMpvI*Ts-JOg2LG!mluL+FhW zJ;m5v&{6aibZQhcb<%~Hz!BtswQhs`a=bHCJKkmcmBpl6UF5E1uy?(Cw}A-V z_-;4Zeiig5?S9W>(c;`|L zIPHIL@?ZUUHAh+JD9-BMsK^5`1>zc#`84C{y1*;2?#K5<<+lY}DT8&$w~ob%sa%1d zrEJRl)Abf?TSn|1!oR9=((xyiP12{>9(TKmkREJa4#Y_^*iaH4T}W>8I?~fUM4*Ek_Nj-b!FJ2WS8QUJaD0Ui@huNy|&v_ayo9Y_mqtV zqkM&ISPVLdTl>X1pZF1V(Yh2biT89Y0SwXSJ|?i{+KX9%xDuXgmF{`G@j|bKy_|}$4!s9rY@lwKOR9TeFxLM4h`2;MhfRP+p9up^&FgQ4 z(0We2j!RF_zoQ;!x}4EM`roQY_Kx%#TDS1sfTz^HI^)Me`3pY5r$P=kJ2T zwOs+F^)KZ7@@JCHXF=iGo&$v|8}EhCKd08ql8#(cG_B~2q97zcQUg7Mfo>lV4}i1I}C9id38eVq~n(zoD*X{9ARGGnZFU8 zM{UX{Zg6hT5V;I;ULCw-5fHf^P=jxqsS&<4Ht#zxuzM!`wsFyU4byM#yK8E l`+EQ4>fAcz+*CxJoLiQtf>pF^OO-1HDcYs#mN#ySd;{UChS2~3 diff --git a/Makefile b/Makefile index 8a3c73f..0f6723f 100644 --- a/Makefile +++ b/Makefile @@ -80,7 +80,6 @@ $(NAME): $(L_NAME) $(OBJS) # $(CC) $^ -o $@ -I $(INCS_DIR) -fsanitize=address $(L_NAME): - @echo "LIBFT BUILD" @$(MAKE) -C $(L_DIR) @cp ./$(L_DIR)/$(L_NAME) . diff --git a/incs/bulitin.h b/incs/bulitin.h index ee655ab..0b5df30 100644 --- a/incs/bulitin.h +++ b/incs/bulitin.h @@ -1,25 +1,13 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* bulitin.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/08/13 16:06:06 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 08:06:41 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - #ifndef BULITIN_H # define BULITIN_H # include "struct.h" -# define LLONG_MAX 9223372036854775807 -// # define LLONG_MIN -9223372036854775808ULL -# define LLONG_MIN (-LLONG_MAX - 1) +#define LLONG_MAX 9223372036854775807 +#define LLONG_MIN -9223372036854775808ULL +// #define LLONG_MIN (-LLONG_MAX - 1) -/*signal*/ + /*signal*/ void sig(void); void handle_sigint(int sig); void init_base(int ac); @@ -27,29 +15,30 @@ void child_handler(int signum); /*builtin*/ int check_equal(char *str); -void exec_bulitin(int bulitnum, t_data *data); +void ft_echo(t_leaf *cmd); +void exec_bulitin(int bulitnum,t_data *data); int check_bulitin_func(char *name); void ft_cd(t_data *data, t_leaf *cur_root); -void ft_echo(t_leaf *cmd); void ft_exit(t_data *data, t_leaf *cur_root); void ft_pwd(t_data *data, t_leaf *cur_root); void ft_unset(t_data *data, t_leaf *cur_root); +void update_env_export(t_data *data); +void update_env(t_data *data, char *key, char *value); void ft_export(t_data *data, t_leaf *cur_root); void ft_env(t_data *data, t_leaf *cur_root); char *check_keyval(t_data *data, char *str); char **sort_bubble(char **str, int size); int check_name(char *str); int check_underbar(char ch); +char **sort_bubble(char **str, int size); long long char_to_long_long(char *str, int *flag); int is_num_str(char *str); void exit_not_num(t_data *data, char *str); -void update_env_export(t_data *data); /*builtin utils*/ -char **join_cmd(t_leaf *com_leaf); +char **join_cmd(t_leaf * com_leaf); int count_args(char **args); t_list *create_env_node(char *key, char *value); void add_env_front(t_data *head, char *key, char *value); -void update_env(t_data *data, char *key, char *value); #endif \ No newline at end of file diff --git a/incs/minishell.h b/incs/minishell.h index f6a11d9..ab9129e 100644 --- a/incs/minishell.h +++ b/incs/minishell.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:05:33 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 08:06:14 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 09:27:42 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/incs/pipe.h b/incs/pipe.h index 8bfba4c..6a1e716 100644 --- a/incs/pipe.h +++ b/incs/pipe.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:03:34 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 08:31:51 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 16:03:34 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,7 +24,7 @@ void check_file(int fd, t_data *data); void check_redirect(t_leaf *leaf, t_data *data); void recover_std(t_data *data); void mk_heredoc_pipe(t_data *data); -t_bool link_pipe(int i, t_pipe *base, t_data *data); +int link_pipe(int i, t_pipe *base, t_data *data); void do_cmd(t_data *data); void exec_fork(t_data *data); void abs_path(t_data *data); diff --git a/incs/struct.h b/incs/struct.h index 7fc6685..4b962bd 100644 --- a/incs/struct.h +++ b/incs/struct.h @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* struct.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:24:15 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 08:08:48 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 04:46:45 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/incs/utils.h b/incs/utils.h index a15ac88..3d62ccd 100644 --- a/incs/utils.h +++ b/incs/utils.h @@ -6,10 +6,12 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:32:09 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 08:27:11 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 16:03:25 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ +//환경변수, 자료구조 및 기타 함수 + #ifndef UTILS_H # define UTILS_H @@ -37,7 +39,6 @@ void program_error_exit(char *str); void input_free(t_data *data); void data_free(t_data *data); void init_base(int ac); - /*temp.c 임시 함수*/ void tree_print(t_leaf *leaf); void print_token(t_data *data); diff --git a/libft.a b/libft.a deleted file mode 100644 index e89a040032707a0f23af53a6098e67071e520eaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35328 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 L{f%et+V%ed+@CQb diff --git a/objs/builtin/builtin.o b/objs/builtin/builtin.o deleted file mode 100644 index 1a9a150cc28d4793dcbebc1c6a8232e22c91bc11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2952 zcmb7GUuauZ82_$Gn#9_FwzIBow)MsCAw##Stq_cKgMxXeqYvVP$L{8Ct)@wAZ(N{) z)glb`(!lW1WilZJg+8`V8}4Nfg)x~@AC#yMUIk&okVL5Q_ucaymR?QK11G=l_nqJQ z&biM}UQg z!6E8|J%h>xF2C}S-BJPnt2Ec>&fbc(u{TBKT8J98P^y7p)<=oTXKD2-1iOqWyyHc$ z3{{CYLWQSD^U;xvxSKi|AZ?l55Vd z$7|A;YVcZMvkmyVxYoriy(X-QK@*EW7uVVeqwP94X2R(D4%Xp}=&=tStQ$1C!w2hd zpXhi;57u%1+SPqIouWInC^ec<+Gf2MMLsO9^t(5BWoXRgDw^6xp8GuLe9b78VK?qK zn}ap9HE|aFHJY+;Ho_ZwA*);o4cD)(Jz1xSJ`=TmYIyw;8)xI9tk?Cm;ri=5Hrj?Q ztr?C`gF?C=`zbDcu}=Qn(EpZMZ*IprbDU|36NhdZdkXX4_QwQA%-&{JmklH!9F^Oo~x?RQ7nShZ@Guw%3zta1M-*^Afk{QZ?$2JL$J~ zwzPMmJxt}86~Bb+xR3*c_L~BA zJbz7LSCJdGD{HF0w{mKuIc53lWoO8-=kw&07F;S^$WSr2?6{zX{1PDdE(SNHga9aV zTN^Kt_-VFH`;Oe+{vF)A|1Re!N8};fY}0=oBjR39ya#*?SODT)No2%71H}1Bj0+zS z74Kx_NQ0sdlu&j&cKYis}00e&>V zKMQbD=Ul}{)<=DUwTZLMhCbW)H&)EKYHsQLGG*0q{MGXtftg~#m^ph<+y3pKoRVX! zv&HO!yO1-IxAG6{ti$dl$021eIdiVV^H8~b1`Z6&7Yie98?`u>&E{=Q#kA)g`)w0m loh#;Snb`5?jq#i@#*J~3vhHHxgrP7%pEVQ)=rhO=(chy0P!9kA diff --git a/objs/builtin/builtin_utils.o b/objs/builtin/builtin_utils.o deleted file mode 100644 index 6bb856492f4f1b516e2f6a0331c023ec3b1d2c79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1456 zcmb7E&1(}u6o1=InuMrnX<)SnTW>)KR1fMwWVIDMco6MDL7awskV?7%nv4LAC`C-m*fBzc)MEMuP_*dGkKzef;LlPCowp{_7NxMj&1y z;4&+VV9+_RC$)bpdf;!$3ec4ugUUP=Y?Ban@ujT{2q9K)KU_VrLv33na6ML=02JlT z2stc55+YySsO9pu*s@-%TLmHRu7rCm9aYCs&N%8Yw0DsBF@?~iaT)7baBz&%2nK^V zi2a|C6oI(zL*xoI~hCMpwqqBkS%z*<)j;?IuoH|`Pwdib^NprCpE2mSJJeQLodGvUmyB-ejD+O!EK1au)fm4xz+h`Ke&Uwjy{-+?1MYN+X&93 zpY$#(UxNF}Sj-;#nJ980`5w4G_Zcm#`QrYE^{LLVK`j>;`k3Wc^lJl0JiJ?+3w>oj zi5+zqJI7Fhe0-B>8Gn;n9&nDw0QYVWy*Zxy4(qo%;oZV_OfG9nf4&WNxx6qT8Kj<& z)aBv^e)%?NW->qYYzHY5`DJ``c%RwFka$DcYf5gTE`qbyA@P5bT|++9X;aBXB_X8$ z5#$+#g?$g$MlA=-#9Jv|ls%*D5dVd6AClCLvDF(>4s_nO7Z&_${U{i7S8qv9OjylT0=6))bTFPfV z^J4zW^%D99V5q6Wp!C|m=#RL^jfiallVvoHgpBgpuBFc7^9!gA_2!mM@j=#&nm4+s z%RzkcbIpspk2Zc-hVP5>aiKM&&#blqPhQvDz1-zn0Y=mJ)S8Xlw~o+vzMDLGctgPB z1j$DKn@ivlLoi}jV$kOnO>zqrc&c#}&4|l5r5+g86b7jWjz)>2(Zj(t>;;EutZ&bl zOWUiITQq}P8|Y7ov7DxytbzMX*@KRs>_t;-VZ0u&AJ>zIjQh94b<|XZo!%BZ*=~{7 z)3tit#Fz(k{3E#sVxT~1mB4&y2CWLr7KY^^x zF?rVy{S#2RjxYjE#u&&B5`ZWO_==lc@o%7|Mvm#6V&=ks&b_ lotO~UlhM?Om`Dt#*gHBdGHH=ar-tQ5$;{|jhulx%tlzE{b|wG- diff --git a/objs/builtin/ft_cd.o b/objs/builtin/ft_cd.o deleted file mode 100644 index 72ec1f0e0f655610238c6d71a9657a9921089fb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2496 zcmb7GUuauZ82{3&ZPs>cyLNVNFz<%CBBpe6(^(8e?LZ;hf)wn7-8J6aHgRbZZ*I2A z1OvrKp#dL-4SjGGANtsU$k<*6KG=##5g%^Vhg(#b;6tyh*57yUchV%Spa;(Vo!|HG zeBYOQ&doP}{r-0kQHU`3u@7^Z7aAtUqnPJ?txtD7*1~~kO>7kJgqWwON!M+2&fam? z^@$6U6Fa=VYKYec;Zi%%X;$u|3WFNDZj@{*o1YQEu6PpXn&{WKu!h008wcVQW{WAq z*30?p*?d~p6XT8gIf?hC2$RT*MdwkZsG35af$j)q(3S%*!o*-BmM7uIxDp|H0PJQN zCXX(e9GAUV_kYL3!dHu1H$sbBFH?0p+`o!#79ydz$Mg35@lEF#dFw;uZ4Z#=4nf|I zxnE|8{%|{Q9(9SHL;i!#vA73ZI6+iJ9v{6RvR!`tutOZS!G7`XtHo{aL4iWndy?gt)@N+xKYs`DS zo4k{V<@<%{bEh-zwH;`#YrQ+}{e+n8$97yh&&ByGn~nX8g!cdH*Czd8TlBcPb>qdw zhlRVh?}YX5oBDsRZ+HJu2j}EqPu1H`D5%Tt9r~XMOaGCRvQag_rujF54d>6fIH#!g zIQMHWzaH2e4*Kh$M_eCXWA4^ib1_aAmu?*A*7FJ7RxQl-q8 z_C#q+yHwChWh0|aXLF`ju(Wj6G7Y<6z1u}b*|N;My(7}trHd{n#*?p)6VD)yksi}H ztd=j>TFJD#Xxi3s38l+LZ90|Bo#1n;Mg>Lp1=pz(`N(n}$$!zW$SpD&n6=zmM884* z2vO7p;tEOp5@2i@h`SPea zHNin3>WKCLk#ZsuU~Cfv_fqu7ppNKwK-RAW7~^lq0Q5^D|3c(^s5rlc0H<<5&U-@S z+!yGl;=m!uM+Kh-;yq2^j$n)(0s46X(WC_4RmRvR`o{hF6NvjW@gTsM1LXSe09pSf z5TzuR1B|@~#P1iK6y#46LMD;{#^CGcjXi_>0(plf2w?k;4d6j6)Od_JHc}r6M|it@ zG**Q_CA=p5RpEDqza;!K;im8<;TMJfAYASDHFN0H_lr~O#iJrQTEf+PcS|_H9|=4g z%ApTi_(%)C(!$?w;pbX-yoG&yZe&vV8B?#HaMH`gbjmh$Gk=Y8 z`Up-e=|$7B3P2+RJJRb1SuOL%Y!UxiaJ*B-Rajls`Ggb4&`V~@GBSvPzaRE=eZx#) z)`Yud;yGj5#`Sb_fSGd2f(Tm~X~|>cS+zK)7H8Gs8OqtS#WRXx0eV_dEI>zz{sFZF B&S3xm diff --git a/objs/builtin/ft_echo.o b/objs/builtin/ft_echo.o deleted file mode 100644 index f5d8d450fe5bb1b08a81864c5733cf2bb8356f84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1624 zcma)6Pe>GD6o2EmyR%x_lAsCUUWDzik{(hI!qiqMEEM6v+ow#cF0QNAM1hwDFAH^W zp}QU3P7wt=5VYW>TXczzCIqumU=ZO3+xB}i-#4yW(1W+{&-ecP-uw2O_rJdVK0~At zh=1C_6;|S4&;{_Acj}p^e)@FZ^-0DkI|4VeJSHLR%p?0KU5M!$Gt)=5(q6Rr8rNg> z0DwB#)lLN#iiEK4+xN2h1?f0hPt{=zOhq27g=Cw+gL*5=t8qgY9yExm0j>=Ebrw4u~8ltrtVhxSf z+}^GJcSNJ|EXeuUZ1x5|jlOeSLigiTJ+DU$ePX6#pr#wy>Mv@?YoUjit9k&(Cb-ms zC+PVFJzX8O7#C{&E2pu3wT$^oRb71KJ?wU4{!XgzVO9@wH!#V*Q7YW2VIRddiHpw| zbBJTAhmx`NI_*>&bh;uY=S1xLKJ%H0~rz@-{&;xt+{VjR5NWn3(wJ~oV?9ccM zh9E}PUzB%oPTm#v8spmgyc@2~cZzxUJI(r(W;)#a5@Mz_a%#Be1Y{Ml!G3o5f6`WN zU|-KR1`gk*2Kf2+Y;TA|wTE(Qt72%;$A)H(E365L^<-QJ=D|KouHNw+z4(6>+~;;m zR2c6zdbq&QSie?o?)di<$7>k05G@IPm`=P}yba$^ah7rKIeCHV2e>>c`r=gnCeHDu zl20J<1k<>8mJ>e^&;A2QB&EOla-u5zZy@pB(-mJ%6d;kBybK8_Nz<3%xRem=58s09 zVyu#4kZh|t2BocVb7&U|tMAuMX}^SzX%x)oucU2CTg4Bv4WR0KWx(!k>3%An72j7T3jJvEoQ7GF`t`TAhC)stUWKK$Yt{x%Gt}SBQk3U3d~_;LV?LEp+74k BHLm~w diff --git a/objs/builtin/ft_env.o b/objs/builtin/ft_env.o deleted file mode 100644 index 91293b9641706720ebd9d63d1c612bae8e4330fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3040 zcmb7GUuauZ7(cg3*Q9?}JIz*Mz0=A1&}?;1XNQ5XwxAGXjDmX@y9+nBZCsk9H#c*o zJ{0nz%!dUk`k*YGeMmr|4?eU{oA@G9@E;5x_K-aYcZi}eAt}W8`_7;CHp?D7^z`@r zzVDpx-#z!-{IK)KzrBoU41@mpF*ixjF)@x{zRsMxak=A^n1y4!Z2b}UVBv5c~vS8BQL5g5ZtYCpG(U5Fs5ir9~NO^&?3_7*!Mi} z$8N?BVo?v|3z#%Wrb+($F~v>@|6?>KwVxWx{z}8A6-$MY+L~{qcBgQ(Rw@{fjoJ%r zCz=XOQwL52leZ_k|<9_p7hB`YcjRGrH;p-vdQ5;pz2eO{K=)oZNRuSVN?7Q{*u-?~xJs$ZX zZbQvw>{oqhET69+u83ctK6h3c$Vc_Lj2;I%Q9F7-d#FyHPw4jWcbe!g*9D;;jBdfU z=#ow5%59$ge>Iz-GWtzE8TRo0^JgiZO=jUfUxd zD~@W6{N2JVl3zE3d^*{n3txXy+{r7O;EQxN%AT`9Yd@h_WDkn`-;}jci~#a%=l?^Q zAER2}qk4jE0r%pc;PH7p*Drd-{b7ATyEhT|N5l$vY~*VVXNvnnA5gc*iq>8xs&V)CCWd9n7PgZP0V5BVd>p*-OV1m%E1Zz}%fKP< z7!cpq@Nppdi2~vBfG!chxev;IOf{w<^dqNj6i;IZllXnff0ukm@&}S@^7q3pk_RRK zUh+Q4zmfcuiwg;%5iv06y@{sLtI%ee?2( z7Eb;0+Hs%n>koJ9K5n+~FIxD=Eu0y%j)C`_8To7??pQ*OClVwW zvvwx!FfL~C;}IfO=d!6JBr}swI|i;=CA_ADSCw!^39qn} UvyeTlCsgj<)deA54sDp8x;= diff --git a/objs/builtin/ft_exit.o b/objs/builtin/ft_exit.o deleted file mode 100644 index 831cf4fc2911594e0dbed608602ffbc25dde5fc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2096 zcmb7FO-vhC5FWD-+c@APpwiN)SUHh{5iw8%#3o-G{ z$_U4R?Xk4M2@GN<)=wht3^0!&?EnMd zaWE517IS{TWWYyJRq;HntSH6GV_Mr-?J3)AO7QhEOhtsQoe(MyHPW{?as7%x)` zm}uQp=)T!O25Rnv-YAZV9iPYlz4_5X{@@gCcbm|wta99vu!C9bV^gbd82a|1Hh$oV}ozf&J-I?X-2s8+iw zD`Q3Uy!J>DFRPCUy*Cvrs|~$-seI@qV~cz8qdqTs^2z$V@v_IBfmO#(O@(K*KHzs; zom;4jP-hS7WM30Gc#iuWb|2O(70lOLpBHrY45e>v56secoXwe&oFn{eb262<(HbgT z_P71jeg4PR&-t9J*`Xe`IeLPg_p#*@g9dy0y+K_>fm^O4>|t1jj=~SyeQ#KU=a8N5N|~|1LU|VAjeGt zIc~znSRB|6eH4f-5`#9zcF_#)`w+-++d!BSf7lrN70CPLfxKTokoSuN;dde=5n#y= zfbB3ibdF_g=)B9DQZ7NqbQ{d}Hh%O#zk?h7Z?O!U^A0aT4kEvEUPDp_Sj1bi-8ru* z$PMN2?BA35pd0O%T=JMpKJSu0amhcsWX&a$n9&8_OTr(|qN)qr;T(x{PN<7nfxkA& zh&~4P1FF;6d15D_-ApYAeMxgHnUqRaCZTFNMLt-BPmHJFW22D+o e_)bf!Vmf=BGJ1ACBDd_r0^$Wn!~!B8IOrWOV29KI diff --git a/objs/builtin/ft_exit_two.o b/objs/builtin/ft_exit_two.o deleted file mode 100644 index ecf3740c637f7f23aa647029b6c301fb9389792a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1176 zcma)5KWGzC82>J@>7}VgQK)9g4GKYMX**~WEM&0IA%lbt-5xQG^{~07mkSnL0$BtX z0}gI+tb?P_+X@c4Nf&i+h@fy81P6yytmp5$yw_aPr5}9n_x<^O-}~OXcOU=!{5MUc z5rmg>(0w)xDC8P+DaZ!yspX~2eUYgANibQXvO)-_vg-`Xg;-lzUmN<$x*qBmL9m7f z+y{d-8I%Z7t~<7AZOXuSKh@Im6ySJ z%*AKh!y_UKp9ykq%xP!KGGQeS;TMAVK+fX zev(`-kw4P4gRK6RcD$KRO4sN%=DKnce}njBC-s43Jeha(3A*H=mU)WXOEz6yi$Bw~ zd=@=|US4F_i}P`_x1`6KMerVZpF62cXs@82^FL7gzLRO4b&)INxcPyRbPJbn^+eGLCqE8YKwbK*{(L)*|7e6C)U+Sq#}zSk1{Zn{~d zEV<09?3&IL-7nQ2<_xxT#*KQ;uo~5hZI+Fay$Q>547;+^Fzw356lzZ7D_h3tPZPwE zS{*R?cN!4`hru_Uy$HmaXQzSqz6IPT<8mKtj{gQCRQNT(Wn+Lb0LNo1zzZ;xTxK5) z)VseU{hN|=Yb-y{KHi{u*D3f(aMk?$?$}qtX2_+?m`{Rlkc3$mxIlq_leWYhLy!>G cw!;Y$HT<;B1KM(`wZ&jvkiTX45YsU#Qu%&t_d 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 diff --git a/objs/builtin/ft_pwd.o b/objs/builtin/ft_pwd.o deleted file mode 100644 index 05208663fa3e088859fecddaacb812c0b1b850f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1184 zcmb7D&ubG=5T3ZT-85=0mTD22ih_tOwHHMQ6tp0igNGi(%QI{?abc4z+m#f0=z@YC zjd-tu2m2rNSkQwvF@ktpZ!02H@X!@v{APF7Y*RcqFz=ghe!ZRd-oF3!{r54V96@*) zgYK|VfdiNrh6Lx$X_im0Df7vpVFd6^Oz8jlV1&Yx7WKdX+=E(1%_wxX;u(%vy&L82#*33JiE1ZMaQ)riS z;u_?9K^=3QkUPCK^E#L0a{X70x_AQ||63Qp&-wk0>)ZIQ?yjajrM?io^0fC%&*i^` zkN>?d=jqYrNB;KSU@%?xlu@HEA0Ud;4A2cDsHZG`hX&Bo7+aE@i;q#U>1 zaH~yax^CN5=DOvPtrqYza>#0Vby9WLG_iWh>C{N!T5u~dPp*t?ujwpF)dCFA%PEBc Jx`=IK`2&&ntD*n^ diff --git a/objs/builtin/ft_unset.o b/objs/builtin/ft_unset.o deleted file mode 100644 index 59a5f6527bc975e10240219f9d97d37e63691cbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 784 zcmb7CzfZzY5I(3-2#PT=0bL|<(L@q|4C>Yx-5iWzV0#j%f=VG!P{TsP;wXu`tZZ(k zn~8sbx;W!j1{WtVLHw?^NYKSgzWeUiyWYFk$B(zqaUvH%Sd9T`HX;CI1~4t_Z*^;j zFRczljxQt5aNBtyboE@f9gq;Qop|iWcdRSh;C_5|1Bz#YsxmnuL^7AnCz84-X=fQN zCB*KwlVf)JMC@P~eI(d%ustfbAIK`KFz}t5KrsN}B90%x;QKs*6>tF916a6*!Dsm! z*1X{VNdJMJdlh%HSEG8PHrII#P}dA7U7ttkk{=+tZpqYb$phP1pz6LUk%8|{o04L* zWySEh{3qt!%`DzRa(IqhM9*uy#U=Z)ay9o~RVr*Fh2eB;YeK<8al;^z;xfB}l=STd- y5ud~%{}M%2C;TBLO&5v6QIUkIl|@0#=E^E63M%w*E~ANLHbtj;Hos!&Wuh;d;cavP diff --git a/objs/execute/checkbulitin.o b/objs/execute/checkbulitin.o deleted file mode 100644 index e5117c5f8070d591479bed1068a651d22ebf725f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 920 zcmb7CJuE{}6h8e?q-dHnK^Gk@6)Yr{M%W}oNNfkMPuifKdZkI1CKjV6_8Qp@Boa-! zbQ6oY5I^zp&3fYni@ecLAC4FO+!{SX5%5lOxVN4{qoP1eCdU36?+XzK+sHF!z$jfAQk{vRc-R@4> zNLpA;55Zm%tRPrOY6~`cQCcty9tvK15d4cM6in)6dJq+QNTf0TzIor<%ud>a4_LSWFJB<2Dw3`~r@m@kCVklgTRYLjC9!aADX3^vVXwvf`d z$9*OMQl5JCjZ^EiUVYx8R^+b<%Yl>--NZ_YDuEtSS{1+Sc*D$y`_q1ouzZSwi45`` z9q?BiEt!@t$Go$SmzT1?FDef>t~qAjfDtoR6@*T5@H2=O=HerUdkEOlZ2stJM3F9)47#kv%thUA^r|_ z&vpVsUm*{A0(xXOcWghkQ%8e6`Cz+1C_9o1*j*un9of|VZ=UU(Vm%=^o?~(WK2Fo# z+Q%Gt+Ft9;Mf|N!9Gyp9W^OghpVua-K8g9&V`64e=dufVHFI8(T*FuqLxE#>0DFVsU9a_eAJor7_Yl<{ zHOVwZ&Ykx}uA%HW_k@l!l~jCP$6d&;!7t(sZE>a>Y=t^&ZHxO6+LG@C_r!*J#qPir z^y1o1Q44#K&Kl>g`;yK*jAdu8Hjkd^LN1uKF4QlTNRI?xuHP5xDXR5d=w3z7g*C-G zMYV?iKiAfF2RKjilW7+#x(6HjFBaQUt5~_)CThR8idxXt7=zybwyt$6^;2%;UR$;H z9?rDu{FaZPb5XRbJDZ|fA>ItvpY}&?(+6;;o08R&Pe*r+{bYi zkmn&f`@(uW^>cez?;xIzXbkTrHpUR$r=An-#l2KWsy@phc9jeI9cMS{f=*&Jo>uArSx325HM4gwA-^Z{aKe|7sxc`kvo%9*vv%mf=!@bsLOmz%mstKL z(^~!-(I`;B^82uF15b}LOdHI*!L;tb2TbdJOGA(Bb$?xiJmOBg9;1&y7?q=z4fN3% z{bP)#x<~DQi_rry`m-2~o^7z7h|!r?eEVYb2QhtoM;rY88l$hqXo@`=|2r|-i_r&T zw2-B8aky-b%J9P@?QzE!(kj^2h%DQAr;P89kY`QD2h(x$q;A=jid_+|?8Z-VQYL=E z^zyD9l4LtL<~qLP2{^Q^b*kbFd#20Wp<;PN$cpXDlIa(OGzTlZD%jY&Xvrbh9Hs~z z&mU4oXKaOIJ{DGS%!9F0!rFDb5nftuv10RDWi@Dq>6m$FK{sEN)@Z)&sFA4Pp9|Mk rydh+5x^B@Dl7f{Smo5+|DTl^9OSt}M=`a_i8w-$!G>HXBx~u;I6Wh^T diff --git a/objs/execute/freepipe.o b/objs/execute/freepipe.o deleted file mode 100644 index aab781035b98c4182bdc96c1900af6bc1a47c4a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 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 AxBvhE diff --git a/objs/init/init.o b/objs/init/init.o deleted file mode 100644 index cc9ba65f101575e3dcf64d08d2eeea6948c1d320..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2520 zcmbtWL1-IC6#a^2TaIHpPMtUjDY9t`E@Xon3T?mwrA;9e9YS!yl)_{qZS1A1)poT` zWSoPFuYtsnL+His%|5k<9;{Ou9B2-PwxJaFQk+wjLm`D8q=M?czcVAR)|k-tliBy* z|9}4c`7<8n`@eqw`v_5jApA*UY_Kwh0Xc>7Zs-l^zRx62fNZN6&3j?v(Zx=P5P?+* zq%QgN2Q$-qTx+-01kQH|##9f{8|+L{l|hRT`Euaf?yNEh(V0)@8CL%3Zaq^X=Z*^U zm5QF355&BC%XSMw#g@`d8e0}&$_5NM%AZ@zUot?x?k_jHc?!Y zF_qv!f7E+dPCp@f2Q`l%<{ri}$1<1kS>(Yy*jkGh*RjU(w_W1r-A!KW(0U7ebt&C= z)=$k8Rgcw&s20xc&o-YAWovJC)9`cHQoq=ZaJ|u$)0dO&_3rPW#yax9w3aYmwMGke zgKObAG@#}VynO!Jl4#IHTGo5n-rXH-ExxyoeaQX9dPm9s-ZSoPx_htB>Ar}LnmhU! zT^GH;-r8pn?vc+c?9bjF>j~MvJ$v>-DnXy|S=QBAvX4*)_v+zhdgC>mXLv3V`wr{y zYs9q-bF4-3)3A&Q^Nq{95zmdcWJKo(eP2f69!Y(Is#n)g2iLH=DK-x50q!kz|G(Z7 z)=DR+rtdkQ{^bIRnJYl9V*)q`hvr zrC$~QoPR_h+Za(lKhlHn>EE3!_z?2xdor%LKKBn5*XR7P;($;-!k6dkd&H&j(DDV8 zD6hr%cQL*a<2Pd*XW5bOZj8^y_`?`?WBhE4e--1n10Cxv#W)GGP!Mx=IVkxHB+3hJ zU{*-n2!vA(T>&*uwJij#Sn?+&ye#sYB#fHstZ^F%*?cOLU)w4ZIs*X5^ z|BsMxtcnHjOux)1^XDDQ1POf05=w^y@r8MhMEH?`T;p{!|0xOIG7FCFT1bIeB#Nfv bl=5N1yi}c_=$$A2zD08Nb5KAhv32?f*fH4( diff --git a/objs/lexer/expand.o b/objs/lexer/expand.o deleted file mode 100644 index 3f868560ccdc88db977c52c507926d3277dbb71d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2312 zcmb7FPiP!f82=`d%}$MN60M}>&_qw0!xk;5IT%>n3OVFZqz6IC>vVR^F5R8o%uZ?` z2n*{W(1Qkgs30cwwA)j`%PtnI^derYBE_3YdYK#qJrs6@b^U$&-fJe)RN{j-zxVsT z?|uK?s3Q-V1Gjph6$o6Rt{5*K@TCEYTy^VWhD^eus`i*MCohr6CLb3I^eHd zs@P5-R=tl4UQUR`3sLO_36on>3nTOv@;LopHmStXHjgGV?WnKNJf2-+=xDpB zuMOkCW>@9BlcesUJd?5(&ObyhmLY4>{u`*Q zE7HFe?jOsDYVY;dvrY7U^PVXl_U{w=Kh*5iW&d|aiTnCF<|fDBTtnoCoc`iI>sV16 z_RI50o})+SIg8l)Nowa+PvZ6#>aspDR>H}xsStMT6S3PVliuX@4)TcaF^m(}UxnZQ zlj}b6OGWP0Fa7=``|hp3(?maHU$T5Jhnqe0N#Dz_>t{QBZnx@7ohLDIS3{i3pg+hv zrS9Q(*|YpSogU~;X1dMnSFJ&Pk8!rJ(|v4Yms)(k8?b+jJO*c&$aF)T!@=IA)+}tS z?`N;0FHgw{a;|?DHH0SJ-a&nPrgfWT?2i)E)qan2j@zh@_x9E=H2Yb3Pw0wW%|ob1 z4aH%oS5-@KyQG}XJVSp|y*}g5(&LdDBT8=oaaq%!0uf}fCUO2l;ERwi0AB#!g}+n4 zB9QI#K(^0GoL>O4{SM-d1MdOZ?kh3}Ujio}zX^ov#Tydm=YS_5N8k8OO#g{e zu}uF8#Cw;%1H_w{-T+#_%Rv06(r*Kw17?7*ADK}I81UbLr=ZZ|GsSC4wxzi4*DK7C zKm*C~c!l|GbWJ5*5F^?As;b`hM9L?ph%r@lhb~_w^h*prSa3B?%|*I#)$G$h#m? zpIfbH`O2zW4GLvXtBS5%7OHm9TP&b1c9%?cH@i~| zRAD8Th?lJN5D;mEf}5fs=ph4wh4i2&6-0XQu#G*;78Ski3Tym*?@zMX&88~#!JFUv zzW06K`~JQjD<_u_CNWpaZ8B<&2?)Er~)p1OjmPa6ri9tfd zzXQD_Fg(cE*T50X3z#&>o}Snic_jY78C$0DednsV*4bdSRdcL$H^JJQBdlFFd5cBu zHf&vM46}APY`0?u`y)Jd{lrv+Jr93J1uqVM)DB{gvH5WL`iY#W_7c#AKIE29GFE$n zRbL@nq2R+F5PH%k^bnh{37KWg8p+Zb_ebpZdBYA;&_5kz^XCl~)HlY~k<-zyfF!fJ z!Ph%i&#fVr+AWj+xOI+VimY`&Q%oN%KHl0qDr1TncDs4hZl5-)K`h^#h;^jjsi-_( z#QlOD(D@DIqQ3Zgi~J0c6Y@DkE*caA_U|Gmp~-GG;NzwlyGcBfM^QxncFwW`_?~3n zG$%*~ttxU=S22^$Sds-IUij7(Z*p+FlWT}m#yg;fKPOlKp99oQoYx(r@C|-%=iwd5 zptd<S)Z>T?#{7315G%(r~JE8KBoFW+E|E2gp z>o@Z6LFdKMYfXADRGoU|#hp--b=R^>d)B`i?1}|_62dO|K)thMvgg!V+=IR67)JcP z|9U4j@!qCzC!$xADcpw}TU*C;kL-6ZKE*CMl^n9)HGYt5`ke0?iqC$R+`j$W2#&@* z34Qx@^_5$da((+#igRPY{wHXp+;y zd?C^D)&3}u>>UA;y+abM5D6o_29WfAl4z{}N&Xs;7i+bw!(3R0MZ-!5_lL3J<>$uApKwTxuSnVzG-}l*}eZU(TH9D_soJ$ zz@F}pMMVR|cot9E*ZuLLqIJK$rfA(C3!uB)V;}U;@AuFo+b#cc4}G$SroXLjdB)%H zxmWQ$r{XhSDi<%8ojLB7%f&Kx7xLg?AAgjEtm89}pTUyxY|hQj@}i$}w~6^HZpF_R z3tHZDv6OO^lAFyto+dAOPGMFPZed0*Va%N=W`%*gUv%W6;&`Q;!#sbkbXGi{QC^(E L0?elo4~@S8p^%I4 diff --git a/objs/lexer/lexer.o b/objs/lexer/lexer.o deleted file mode 100644 index 6ed19071fc7c09282a0d09a2f78e1e04ebb533d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2720 zcmb7GO>7%Q6n>kv;|+njfk=f4$>pa~a#%#mUy!I|5s(ndp+c45Hf-%}W7V-!XAu#( zxXQ(-NYoNY96(Ju*%y=phpfb*h)X!pUJwTkO(P`xfJARuRAaukGvkgoZUQ6CzIkuI zdGF2p+1X$I{_~$li7dk4M+$R`7bh?=p2D1q-^T2|$K1FS{iZOQ&p^!6Ry%|U{MA4) zAVQpb`-5{2c)i+8%N6Sz!}6#@G|i$E)tTraL}4YUl`0pNAgNF5QR=9{&KQGrn*;i) zOUqs%5Fb@OE>(&`EWBmD-%^U|N_Y+W_-vc-k7I^0r1CTbPh!fjJO(f(27_3B3;U)( z?@SQg1f9e@i^+ps<;i;iBS8N5=>J5wduwCu-a0im)^mIP424kg#hnaAolHJ*EV|dp zTtB`|^cw7Nh_7Kb8N<9o^~YQDIWC3i*1FhptbEj-7hAJwnrcJt{5X3Rve%*Ka_89f zxSFr}JRwzN~S*wfT16whpXo6_+SCMWJ4Ee+>LmwQgAxSGBDNxItVa2YZ}DdU;r9 zKI9&zpSyEhTTV*mWyYv~La)njL_V|_%Q%uaUEl1>1aNVDa0VS8ix;(9b}R zf^NV%?mYJ^MH`^l;&M^49egiiJ1;&t5KRlJVVcZvNi=5a9nKQIqIYuNh|yung6!EYq^&lCK~1kcT9>f^P^ zUrF#BKl43_pnA!#2(MTa<xb|Db>o2nGNfXdr5N*Fu^S!`_rJ9eY+~HS>1P7Kq S&~mV}d^&!fil3Z!9{&OtRdmq+ diff --git a/objs/lexer/lexer_utils.o b/objs/lexer/lexer_utils.o deleted file mode 100644 index 413c2c8a7035b89fc4921577358084decaa905a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1144 zcmbVKJxtqB5I#d_EV(5`LZW3!mP&~#L}6%Qv--1jKqy1E*EETgh!BWyR3w&ESy+*} z!w7p9Z%A~YQ^kT9I)qMkrAqCFE2Zvt&-WA~n0oTPd-vVF@9v)8*FQi1-X*dK!b=9) z;7tJvc?b>k?)JqUOYmLIKxF(ZU{(o}QeJ)A8*wOAe)Xn2^3Cp>@Gu{rJslU04E0P7 zTcxTS>zkFTr@HO;&2~+x*DurYf$+Q)umK)?bRia7)0)m$#QFf59J_~PD1?(3|AliC zur4lW3D$wGKv_74mH9d6e%JV>*fr3nE_VMkjD&tnc;-ahC5?N zL-+^%{M9Aq`JScdu&=JdtQ(aq*Ds+D`V#VQ`e;*9yCL%&ATL0kjXaCzfODeM0mP-9*wM diff --git a/objs/lexer/quote.o b/objs/lexer/quote.o deleted file mode 100644 index d32bab96f697a3259e009da307c4c46ecd231eb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2928 zcmds3&1)M+6ra_~);dZn3<_#P!D&lDfhwdSNfW4HsS|J@;5Out+fR}bgAvdd_y1zFc$!IsB&9wuwZ{ED` zH}B2PuYW!L`ygW$!=O(bbCVWFFfrc7JR_(AjeN=px%Ei#Xq>ib+Dd|Rue9PR1c39) z=dWCTf$Plst@bw^7|NV?4def5P# zzTolY+Ko!B$oa){CjFuEtD`nM&_}U7hJVV&h{_Y7y@e^$@&=eOF^Gxwodb-~&LhA( zfJw~HFlp%A5iit>Gok(08T(u8x8Z7RW4OlJowcdGog^FVCfJ~#a0gk-^_?*`nYEbT zUE_PSchqY6PNjdwxyu%V#J$508T%N%r-P(Ba4dH)HOYL!JK(213wr_NV$ju#w=TiA z^~VXx^HQCedxs}j>r&rl{;VZ+NBAshI{=TcZM*(#jGYeK-G$v=!u83f6PGe& z4#&8?zn>w$ci=b4k{szAu70|KJhdO#{P%s^LcZ*cA@Gike5H`D4D)+)>@4wiZR9B< zbJU-EaMrOVt_M1%6!VcwkuQ_a(eZ#T;z_wa@+#s9GV%-p*yzK*m&tWw>I_owdCVQ` z%(3=+$RYV3h&?tS=zs=W&&+cJ&-a*Z9qUh9Q=91RbQbbmtVK?@_~vkRW&^RmItQqm z9{h(LU&oWRjaZS>=e6^dJd0T~7bg7!(2=vOqCWxc0_ul+Iy%M{FHk+gH}pqZ#^(-1 zUX%{Yn)ogpzsl=>&cVONjb6Er^WVk!_Yiv@wnzGf>cEWYTN(57exdU)`vv?Ii|7}~ zQNPUSeo=K{#wdD_bn4nl8vPQst?LUsA`eN|znPTv717z2e%_3no$Dj_lg`iReHBaD zs5^>PzxKj>aC&WB`r&`CWLmcjL(4%fnMCBLKWk=$$bQ^@y7 zp454C)!n9h_auDzKlkH&ehJt4=s1o8!=UHM$WZ$%{tEg@^;h1LQW5zN=_ihHMe;@H zU#p+HdILr1KcF!1&&k~ZgsO|{5>8hE@oUd{kjMKf_X!|`bEsGPr{{`5h~9w^T+bZ@ zBs~rw>4{4?y$!#J&jBQQ9FXYrkN}+ChA`3J0VF$rA{LNx4M5V{l5qSB1ziP?CT*o&LtT=*QrB`7Mk60-QX1qSDC5;v9%kwX=(n=#=E3&G$&^RH!ABpdA_7AqK Bv?l-n diff --git a/objs/lexer/tokenizer.o b/objs/lexer/tokenizer.o deleted file mode 100644 index 4d0c655b7cfc8e62805a4c52138ca4b752841d9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2280 zcmb7FPe>F|82`r2oU+^mp^~7jLs+y@5>$k+{i6;ZBs_G9*Sb69;<~G|BTCz0!47q6 zA?OrIbWn({wKt&-20|(k9n~%?6y(hbHv4_^zR}q=l|Fd$d*8p```-6v-hBT3^Uppa zgCP9ah4G#z5e&#-j0>LEQ#Ui>QAf|U-gEtS&xY>Len
  • MDqF7JO_nu}Nt`6=er}hcI+o_9GYr!a;0rL*4;KlV}Rqh|!I~!lm+H-aQ!H z$N!bJ4>VWF*G*Q&s5m}$bakRp zxvg8}t|0f|%htX??xsDt)%;u^@5`%C_<66v;ni@Aid@5SD%|4wEBPyv=w)##q`t0= z(cD6qP^0eUGU6U14m~K9!@6hHeU%=Cq_0&mvC_$UYBoP{|8?9=*$?xUnYW%w%-3eb zN+x1?9lRGU?4J-n*N^w9rF#7UxAY;%Z5rEiPY1Y}AN$t(|JOSe#@ zW}WW2XGeYb5M4iar!{z;+HW5q z`o5S0AH3%B`m}uy77$;_U!L^Or8l1I17DT&U=t9znl@Zw*B4X7yN))TnDxjlwyLe0 z^1I|79N)tK1^yXjL*I>lA6O90IpGK!pe;D`(h&wiV7YNtx zm|#Q@;Mv~+n-Jhj43j2s`~R7@qOYJXmI;iY{}t=-`Tr5rL}Bpx{eB|4-`_L7U)H=K zI>3`Wo`G`cd5wOjM(5aIJYQ}>{YZ^IP@|K&=cshf$yg(#oNT|9QSoF_rBgYF)S#Wc zZ^s9eW!qU>S)(b~bc}5!Q?`|GD6QJ@zZP@qfrTjuVM-1U`rJ&|8&C9;%HhYJw$#vY q*0D$>v%|d`nkG)zR-AnxNyO9XY=Y9xz+i{>JS(fUV*(?$lKukkh|v51 diff --git a/objs/minishell.o b/objs/minishell.o deleted file mode 100644 index 7b23751b8568a26693e01cfffcbc272deaf0061b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1088 zcmb7DF;5gh6n=2Xp>WWcs5DSmvP6lACdLF4wIb1if)J9&at!AtcYDX&oUXCCr%ha%K5KXI^X_sW%Ki#&SzyBh(hk zjJe!2ItVK^;MR+6{D$R7isj6a=%-w-HT<&SR`@;$H<_1S+jOf(~ra7PCL~7zB|*4 zJ2Sn5aY_!0lpGWnll=m9QS)=$;hyk*VKEUt5-w39JXQjR=+9B{>on&282#Kv&L*aNV%|h;L5cx*%v6x-;*C51zY** wAQpsJt2~eY5OK{9LgHpnL6Jz6TSg5M7(+^3l;JI{6je>Fv5>A0)Aa$J1JkpT761SM diff --git a/objs/parser/parser.o b/objs/parser/parser.o deleted file mode 100644 index 53d2d4bddad94b1744e7b9362e72ff270a5ebf53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1616 zcma)6&u9=vsph~Jx?!4YZFN#4Hs-h1DhZ{D)(|NQ>@B#}i}{8)sQ zc$0=wH~-Oygz>ks1ChotgxMApO$g6vcnZJ?k-PUe_ZREkn$b^kqeLe-xkxQt z!(NEO-maT3c;aR4Rk>Ca;^C&5*L|L6tT)?4VOj?mI%#Wg(FVBs~EQ3S){B9529 zi^KcyCHN$43&x9Q#>QNvb${%Rzb2pP%ecAFAGfK~ZJ$5vwZ&mPY6pIj0;1Mei&~G+ z?H$J{MM3E8VBLtvQ+5CWGRJ$#k5K?!XZ$3vML+!2_vdhjn;e^sC(vsYqd~?B^OBQb zo;?8fxgP@;dC7~}Tz7-_!A9WVJ#*n zaWrQ`aW2ntmK8_MRra%vr(;|7#BVIrVe(iD-q(HoK3J!j*XPc;pYF>uoV9Uty^q<= zouQ8z$un@y2>XnMnZhT4Gtip3L<7bItbdc5Ly53fYc%;>uYar4`lwNlcdYA8efkT! zj!R(iXZFuhaoRj0-%ww9H)Q?C_mRi{RQ7}NIrt^uU+9N#IopG0>?wR29wph&=!b3g zHazn$DsPAJrL^*JT(`6he+nDD9w@B!-%?oXeZm+A>Ho1b@QT4t0UJ>6O`Ms@lkn<} zBl5+fsF$CWJOfvq9Y8l}p&nIfaVw_9{+Ic&}ZD Ms@|@9RX(rKA6x)YNdN!< diff --git a/objs/parser/syntax.o b/objs/parser/syntax.o deleted file mode 100644 index b39c00d8b368179d8968bd05cdfdb9b26c478e9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3088 zcmb7GO=uHQ5Ps=jwpQz3)GCTwQS_2xtD%$u3_v+w<{@4r_o z6;UAiYeSo%j)?}^igv^w_1R^A`KT6sVIAQ~Os$nIY`fr07MKCp_RyL0Lw|Yc&9v(t z`D;Np*{Ren61Ax!fskzvj~BeGdxZt{{>0B_j;q9Riaq%b68z=H^6BA%echeNx*6L} zoeqwF=+Io5h0})4?ffdGIOHWR2cXx3rl(&6Wi${ek-P}IwZMFrQe_}Ookb%eO=@J@ z%?JoZi?izE!p)Xv3wPAiT$id=x)N2RJyEShRdo*i`DmgFhmVlPwMz8qw);vQ#(c4t zvpZ)_04o?5eUkfpME$62fo_M^^<|yVizHqc?b^>Y`IS-5%f8R|Fns@48nU&ndW?_YUWIBy#3 zM6OBr+!s+VYPFO6Id-EZP(!SXLAAv?Bm;GUZK+qOsgq{$Tr2$1dX*7ptiB#x(`Ib3 zSN%HtH|JC8~ zCbz;U4~9`b9!7aEoNM_0OW0FHDC1IMx%#Qa%f<)!>)b>3>-^8~5(h*4P{DmbwA`L0 zw;Ie}!o`Yjb^I<6zf@79HN^5H5TE?iX^mD7%U1*O#7P+%t*@Ae{Cof!kiXMtm0A7> zh^I`dq|u78+yKHws!gNy75VsnfOxv3-f6U+u)M_b2P|KQ`jCDbko2iSK)$_;Vm!#P0%O65kDkO1!AC<04~%(PRXWUdLl#H#$On%*%Sxn~26`{d$>~ z^+N6RID#SChSrThQhImJR>LocsU) diff --git a/objs/redirect/heredoc.o b/objs/redirect/heredoc.o deleted file mode 100644 index 8e563ec42295c1e0bb816184d3ed9b47c87e1c35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2504 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 diff --git a/objs/redirect/redirection.o b/objs/redirect/redirection.o deleted file mode 100644 index cfd16188bcf7f49fe2c279ed3b360f4f82f606e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1560 zcmb7EJ!n%=6h1GnX(CaJ(9$Mgn{3Sxutm^Go{XH{38qO}Ur@*r$kMR^ z_oiC{4h{|p2o~btAovHOTeC&b!7UMD{LX#%(j+!R4xIPh^K-v*&pq$G4}X6BJxyc~ zgdbDTBrn2HND$hVtCJrKrt9C83`E-Y!OiMX+k|lJXO1!eLTs$v+c>uMs;)LLA1^C7 z&>0R+QISE55b^9*?qS>!`OMQ)CLzSl8#>0Qc^)XI1s*=C-|Hfl`e-s^70(5z+XgC{ zvZ_pCe;E5t0bc@>zyS0Xl!b{{nIBKvF$oj1+JdbK1v z?ErP#0jujj2lZMF|9RSO`}RZY9=e3{&Q?v)@dstBTf;hvb=0sLQ7>)N_f*HA;+@tE zHE^Kktr@FP0dJ+bS!X+h{X^Vyira9xWz6f=CLnY1KIY)stju+Qx~_i{ex2ji;GACJ zdJR364^8oPqFy8Jd8%X1^TVX_?#1HgWrMnrtGe!DeRj03-~>E}$2{YDjEwX+)L)Y@ zOHZv=a%b7X{CJL-9nY`Z_7Uz8_wIvj(C_yAekkcx_su>%XPyOO=uOU9=IfYx2i}nz zJHoye-VvUG?0t}jdmqQ6?)M}f-Mg%-&i$p|pYIi})%ti(d6uXr<);hy%7#Vx>Bx2e z7k`f;EaUd?;lskF7~XaMzGAPDKMi~Z#Q!CR_kzE<*dEXiTvzxFoSgR&$a!ypoc99A zdHgG4e?r+75L>6i3IWo-4?K&2mb+}@Ec*Yl40{G~-N&4=bv|$9xW0!q*aLKQWyHQc zVqYGyNhGo&n|E?~N9@>%)Q%l@q%V~jcEyu+{P93aHfLu@#M9X)Hb4d+rP5d@^0`$? NJ6pLG`MiLFkbi~OLKOf2 diff --git a/objs/signal/signal.o b/objs/signal/signal.o deleted file mode 100644 index dcf0756884e2c747fa7263de080a3c4be49cf309..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1728 zcmb7EOKTHR6h33pHucf?C{(+!EfjRoDQ)r5g@H(`h-6Wuiwer^m`u~5(@9LGG^LwB zHiDZ*TnH}gvT-3UT(lxs=@0OMh|4Nn1VnJ*A{Ar(&deR1PEhf{neTq*ocrDPy!`h0 z$9^J(VEhTgSGmy*haH0tJ6VS|d}=cHUZTfaP{|&WJ%q6Jg8jR@5aSmn#(#6KmGbHB zLGTp>Iyo7pB7$^1EQB9gPV-=LS7&1y+o%vtk>l@cN`>dzPC zyoxe720fNs#)k2p!FEXwA#fD#b~}J#IE;%pzK%{ufM1%hM&Lg97@Q3u$62=(z8C(# zwzHwUt}ixM>LsNdAzF$k@on~%Qdey=N^8|({FI&Tr3#XQ@)sdxqB+$G?L z5h`;#5~jgwOJmJP zbodsKtqAA5XL-rJbGZucOVj-TKM~-(AO8B=0nRypekQfzwiJU2NddkRW zO>Ke1v}UDDUF40lVc8_?v~KI%&3|rjL^13sVj3q36UYLdj?pH|9X}J`c_H1^@`3{mh NY(E+Z4q#c1{REOY|AGJj diff --git a/objs/utils/env.o b/objs/utils/env.o deleted file mode 100644 index 1ef31584d20b2beb7ae2431207348951a501ccd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2224 zcmb7FO=ufO6n^Wq>~+*cO>9tVN}Lu7YC$Fmfs|5#S|{Lx525(rQzojsNkmsaS#1)# z?m?hSZjB&^T!P&shgB&(6)GJ{3cln}=+B{;o|GQSy3j+Q1#PLSd~at~TFI1>2je&I zXTJC5d+X8nfB*6COGFw$_|GI(i#I2+Ag^G(9Yh23;2%B!*$Z=&Jq;f(or4e|9CO2w zdugv;SX&+1;jW?%Fx~{5doiLp4o*^yRVYH_tBzeLT~!VtM)5+NxQZ_WCn}5`72uVN zm0aEtH%hk(rF9`z&PU@l)mKe9*MP^ajVZ|)wj+>d;5d#YX*rB!EC?sD{~pfqz4k!T z9yIrP5sL+(U@?`4)Pi~;>F?5yy{(C6uTG7f`a;*Oi>@(~^}RUx=xNT2XMIDXXI^r9 z-qq;bz;`(7@9We^Y2>5e9jpe{-5@_E&p+$;lfA9?o2b$FRu@0_>l$jsn!P2hv7;|^ zKdYbUK3F=@+Noda^4U(3d@rf$O>fUXAz3eq&-LA8$^&PM>$c z9oq)UUR`w`4`*F)jgijr-eA5^>o@TA7=G?y2Xp9cU1)+c$z5bl9n^fv^?=W{2KUv` zi$1*XZB_5_?m{ccwSw3%?uGrZA3f{?FEvAc&{yb#ep7=#Cb{Uq<~yapu?yUw*Im&X znX}Gw)|)-do#*U=Pr^49%p^|jPQ2FEwAxR~28Y9*20ep^)9Bft+A(m`W{lvw9L}VT zZ{R4$(0AL=W4p<4|COPlmSXaEV<`@ zK_1?gv;~b9D18@Bk-F{@_I&R=6tU|$JRt*TQkd~C|NZ5GQnu}1;;*G;QjV#_wAFQ2ola-J-w VSUICAFJc4pbZBA&^AzsK@*L5^&Q<^b diff --git a/objs/utils/list.o b/objs/utils/list.o deleted file mode 100644 index c567cef76b7df81e77d486898cc74f46824da7c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1184 zcma)5Jxmlq6n@Kb>?Nln$widLE3Y9zV`Awd(os-QSeT6K-WiC?L2_##UUSJcv?TUW z-gdUvkw`&jps>bnDJ)DhvL@^LeX}#(8Hw@b-n^fA^UXJJ-+lP;`R6qeM<84#q3d+& zP{y zY;A7)L8M-{cQ)EhrBDMQHBW%||C0CRH0wHXwj}#?>76;{-Wg86#l2}#^3sYUUlR9VZcpSP z@N2m%DekLrFM-e8x$C7_cQFRm{!vMN%-<7pBF+#W_U~SPs!BTOt4obFdoYLZs&C+9{4(qfgUQ?@#u(Ot$#J%);alGLo;tQXS;l=U4HH|Q4-k)S w`kl!7ezU1w_`xe1cQ)R%v>*6kxD`kkZEoMw>q2qkFA$*IssI20 diff --git a/objs/utils/list_clear.o b/objs/utils/list_clear.o deleted file mode 100644 index 699c263b40887b100a30dde1373086de8281d448..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 968 zcma)4Jxc>Y5S@$BQ{q>lL_;7V7B+&~Xc;v^3JZ%Ac1uW3BAik5L?Mk33tPd$E-5|m zM+9u_)W$mHH5P(JBAoHf-mVv;g#+{XW@aC|`}pztIZR{_giRD$;$Q{}nTC2Y`rBN} zNupkFqMbFO#)NRJGbh|3L~e5@7v?(3bnWBW@jjw{2BUP&PKywQgZ;yN!4W6r)4g(0 zh^>sq*k{$Av?@Mf8CKCMjN+uJ$&O{%DQGY@f@Ua$o4B4;JZ|6@k;kChP!{gd%J-*^ zX6WD2snWAwF`lSTmx4R_s~Sl=P_TNdGB=Mydz}<^L}OB#o3Yr`o5(RMEo2- zq@l8l!2iONAcZGhxC0Jwp|1Ry@^}kbpMgi~0G#ym@S`YbndKaxLjOaC#$Xz%VN~TR mr6hu`aU!wn2>aM6*jD~XCq>IXC|k&mEQ@Ss|8PlK{*PaICZ5Uw diff --git a/objs/utils/temp.o b/objs/utils/temp.o deleted file mode 100644 index fc3fcb9bc2970c75d5c019253ef0b326a5c13832..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3880 zcmbVPO>9(E6uv|MW`;s3f~AP^Fd>1YC7rfPZF+H#HbQ*FO1i+L$?Mp8(6Q6$IP;V? zby0-{BrIrx%EE*u#-wGVkuKV3qC`!)AQ~4M7Q{4$#SkSCS5z~O-+A}kH*bcH{M_Wu zcfRkQd+z^zcYgf)&cF3S1OyWOR3k5vVIU(lBX_x_F1_#PaGjEFu#e^>Q?B9~mgU$J z4ikW74fGu!C~|F0)F_MMt%GTVgm{&tYB5cqlVuHOolGKil7;ekI?gNHuYT^Qu1~T3 z3Gv3q(y?L3dOLM0k&0WE+3PP~u2pQB#o3@5+oknt&LEeBY=^K7Sv9`_&d5mQMEWA? zJqx@6xgSoTq92*kQ=Dlnb|ULJg!#~^a9aG7p9;+94~dzTI?L(;%=_)^7auS z_M^!y=a7|NEL-L>G;{%Z2KgfSx_*u9*K~P%ZoP_8)T2wmka)|DA1EuUiLTzR5;J=O zV$~n_Xh~eu-|%Sld&=uKs`_)as(pW3UO#Kl&Q|5O)>wD@W0G%kWnY|);=GXW)0KU( z%%#4&D*MuWSIS#;oMyBaP%%b)^Bvk7UCLF3uB5pm)*4Lc`r7yZ)>X%Rn0590K4@M2z7JYgzwaZgt1KU94etqFPybrE^GWkj;VkVf zkHu$k`7vU-drXgs){4*Nbn$NpP$AI@SQVy-T( zU>_D5#FE~Bw;QIHf|H4RI45^=bZ6;vg0bncwa$rKzX9W}5sf*-yHnPFe(LM_Jnl39 z`sAms&CwYNhg(aMld)|how3I=aXV8|(i#?rj`p?~_>6TMyR%_&@Yu^fcC4@W$g#dd z11*MdCewDe(GzClfHr!H60~stk^a6G!=6ZF9R!TK;USlIXnfR88A&*m_r{@;ZX=yY z+k)+k9ZzKJVW-#$-3Q&N9xWWubxvWZ@aJJ^b$Esx@h)Xhx_S(i@iAT>u6tzCwAP^|L@c3C%MKuo?R zvDuLLOIL&$3S$^yrfVbX1y1P5N1@N98y@zyw+e2 zAivrOel{ZO)BBJuzRwKi05_p3t-F`#ualog%eb)Y)H{|lZpAX0*rZ~vX{GV6$q^QPnAlEQ`*2$e z#ZU*I0byk)vyMF`tl<%Rc+{f1nH^3D<-afTg0?&((xoNOi0s#rXGEUYl4nGo(~@UI tI<@2(?HyW*coqz2EZwdP+C3}cSuo%d@mxGBQnXx`HqXVgB5i8Q{{sP$xby%3 diff --git a/objs/utils/tree.o b/objs/utils/tree.o deleted file mode 100644 index 378d586ef8344f26022f0d72b4ff3ac963ab9feb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1416 zcmcIk&ubGw6n^QNq$S!=D8v>aIp$zMz34$o(0UUTso+7FE}M-hq(2B-6mnTe54jcu zkIixOA0#J*T)c@rcuqZSksbuWtgx=%o1G!6u|f|%^5&cO-n=*8&YQ`HA7?)=6Qu~k z!zE~gCnYFk1?tP$--q#B?C;77MB2{6&8osAgk!&QrZt4vc<^jvYU|naL_MB1K!`bE za2d1+VeM}3nU*8=cV2Go)P#7ru49aws*bCizCnZ^b#=WdHM!yz#;efyGp=AU6vAcL z?;&p!2V6*^5q%8XbN#SGhvOUtCwUr{$URPF++!4aJvJ!t zjcPETqOX4TXthgp8(f#)c8Zflpr5Y}PZ2M#(9q9S136E{ImNWXg%~~LaBi<7CSm(t zAA29ZGsLIJNP&aV4`KI=;shLm&jlKKhM35G3rDNC3vyrVH_K&I9N@kzb8VTER%?*= zUgc@Ohx*^6sL(_0lR|YUzcCAbsC$~lcPwEJ>?4jd56a{|@lap#9*IHNzTXGm|HFIX z9NzF>h&RsrpS%-2@1Z9i`l0*VQ0K+Hm42M1k9#5K;Njz}xPS88(C@P-dNam(eF5?r zCHtDZhzGI3SM@hhej3EynfP54WjQbYO~t{RWhVa)9thq>g&T+`RN;rlcnyp3KT+8P z!j-8iEGYy?|5MlW)N!Mw%Jl4t7V&xE#Rq>s3RGpBP_Go+_k9bZ13HaPx# diff --git a/objs/utils/utils.o b/objs/utils/utils.o deleted file mode 100644 index f43749250b82bdb96280a73d984870983b5006db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1584 zcmb7EO=wd=5T3M6^J=sq(o$Q5R#0dUky-?QKuGhOM8Ne^yzK)u3Z(av~kIsZJHpH*u5c6)qR z`YMTY4fVL>Iu?*MfN|)3C=1sM)Pl|D_`lM6 zPoJ8r9o1%;D%<7ZgD-Jvd`*!5Elz$tp7yN>J*y9F4ebzJL63d4c)Ec#Hn3hF;*I@I zs*Fa6ecWD!W1Lq{r2T4H9gJQhAE)}Dxq7pTwJPsA)#p~3*Njw~x2RH!QKJ?!HF+*k z8u_#l&Z%?GIa8nQ;V3n#kS0|sC2p>BVYF%!+xWbWWJ9z z#s;BLK7*cx`kSpG>{FisuVEo(MX~=_$)^|D1Mc}}t2GeB2r>5Qevr#{b9J(cef{$c zbl#-dUvM7n`4^T>pv0lb6Ok)*#82mq>qvZ4QftS=SIkAE@nhnfh@+F#IuLg;^;GyH z!70Jtn9q6N1^0lx;2(tV0(m|@IQ0Nu197KPYe4*GQhdkp5>nGZl$@S2c;m9f9~<7C z790@-aDMkIU@we7`kCWV?TD`w;xC!wp$6}_0G>c@a31%B1GHo?ay&RsF3ViLi#~t$ z1;TH*opWA0Plfo|5WgGZ*F&6C(Jjoo_M&oJx8N#gCF@a6UBu51A??Gz)C5V*c`CQ$ zWpa* +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/08/13 17:07:47 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 17:07:50 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - #include "../../incs/minishell.h" int check_bulitin(t_data *data) diff --git a/srcs/execute/execve.c b/srcs/execute/execve.c index 61ee11b..258131d 100644 --- a/srcs/execute/execve.c +++ b/srcs/execute/execve.c @@ -1,15 +1,3 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* execve.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/08/13 17:07:56 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 08:32:27 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - #include "../../incs/minishell.h" void do_cmd(t_data *data) @@ -17,12 +5,12 @@ void do_cmd(t_data *data) int builtnum; t_leaf *temp; + temp = data->root->left_child->right_child; if (data->info->pipe_num >= 300) { printf("%s\n", E_SYNTAX_PIPE); exit(258); } - temp = data->root->left_child->right_child; if (temp != NULL) builtnum = check_bulitin_func(temp->token->str); if (data->root->left_child->left_child != NULL) @@ -67,7 +55,10 @@ void exec_fork(t_data *data) abs_path(data); base->command = set_path(data, data->root->left_child->right_child); if (!base->command) - exit(127); + { + data->error_code = 127; + exit(data->error_code); + } execve(base->command, base->cmd_path, data->env_array); } @@ -90,7 +81,7 @@ void execute_single_cmd(t_data *data, t_pipe *base, int i, int flag) signal(SIGQUIT, child_handler); data->info->parent = 1; if (data->info->pipe_num != 0) - if (link_pipe(i, base, data) == TRUE) + if (link_pipe(i, base, data) > 0) exit(1); do_cmd(data); } diff --git a/srcs/execute/freepipe.c b/srcs/execute/freepipe.c index 3b30945..074d93e 100644 --- a/srcs/execute/freepipe.c +++ b/srcs/execute/freepipe.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* freepipe.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/08 17:49:42 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 08:31:04 by eunwolee ### ########.fr */ +/* Updated: 2023/08/08 23:07:39 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/execute/pipe.c b/srcs/execute/pipe.c index 0603c9c..941e060 100644 --- a/srcs/execute/pipe.c +++ b/srcs/execute/pipe.c @@ -1,40 +1,28 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* pipe.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/08/13 17:08:11 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 08:34:15 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - #include "../../incs/minishell.h" -t_bool link_pipe(int i, t_pipe *base, t_data *data) +int link_pipe(int i, t_pipe *base, t_data *data) { if (i == data->info->pipe_num) { if (dup2(base->com[i - 1].fd[0], STDIN_FILENO) == -1 \ || close(base->com[i - 1].fd[0]) == -1) - return (TRUE); + return (1); } else if (i == 0) { if (close(base->com[i].fd[0]) == -1 \ || dup2(base->com[i].fd[1], STDOUT_FILENO) == -1 \ || close(base->com[i].fd[1]) == -1) - return (TRUE); + return (1); } else { if (close(base->com[i].fd[0]) == -1 \ || dup2(base->com[i - 1].fd[0], STDIN_FILENO) == -1 \ || dup2(base->com[i].fd[1], STDOUT_FILENO) == -1) - return (TRUE); + return (1); } - return (FALSE); + return (0); } void wait_child_processes(t_data *data) @@ -62,6 +50,8 @@ void wait_child_processes(t_data *data) close_file(data); } + + void error_check(int num, t_data *data) { if (num == 127) diff --git a/srcs/execute/pipeutils.c b/srcs/execute/pipeutils.c index 0d4d887..3cce735 100644 --- a/srcs/execute/pipeutils.c +++ b/srcs/execute/pipeutils.c @@ -1,18 +1,6 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* pipeutils.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/08/13 17:08:32 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 17:09:02 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - #include "../../incs/minishell.h" -void count_pipe(t_data *data) +void count_pipe(t_data*data) { t_leaf *temp; @@ -25,7 +13,7 @@ void count_pipe(t_data *data) if (data->info->pipe_num != 0) data->info->pipe_num--; data->pipe->com = (t_pid *)ft_calloc(data->info->pipe_num + 1, \ - sizeof(t_pid)); + sizeof(t_pid)); if (!data->pipe->com) program_error_exit("bash"); } diff --git a/srcs/execute/setpath.c b/srcs/execute/setpath.c index fb23258..0323e76 100644 --- a/srcs/execute/setpath.c +++ b/srcs/execute/setpath.c @@ -1,15 +1,3 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* setpath.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/08/13 17:09:09 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 08:35:19 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - #include "../../incs/minishell.h" static int check_path(char *str); diff --git a/srcs/init/init.c b/srcs/init/init.c index f278cda..2a078fc 100644 --- a/srcs/init/init.c +++ b/srcs/init/init.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* init.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:52 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 08:27:28 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 04:49:25 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,6 +15,7 @@ void init(t_data **data, char **envp); void env_init(t_data *data, char **envp); +//필요하신 초기화 내용 여기 넣어주시면 됩니당 void init(t_data **data, char **envp) { *data = (t_data *)ft_calloc(1, sizeof(t_data)); @@ -35,6 +36,7 @@ void env_init(t_data *data, char **envp) if (!new) program_error_exit("bash"); new->env = ft_strdup(envp[i]); + new->equal_flag = 0; if (!new->env) program_error_exit("bash"); ft_lstadd_back(&data->envs, new); @@ -55,10 +57,10 @@ t_bool get_input(t_data *data) { data->input = readline("minishell$ "); if (!data->input) - // { - // printf("exit\n"); - // exit(1); - // } + { + printf("exit\n"); + exit(1); + } if (!data->input[0]) { free(data->input); diff --git a/srcs/lexer/expand.c b/srcs/lexer/expand.c index e9df010..7d11bda 100644 --- a/srcs/lexer/expand.c +++ b/srcs/lexer/expand.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:20:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 08:25:21 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 16:48:09 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/lexer/expand_check.c b/srcs/lexer/expand_check.c index 8f75645..ccfe5c8 100644 --- a/srcs/lexer/expand_check.c +++ b/srcs/lexer/expand_check.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:23:58 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 16:30:15 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 09:34:28 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -42,6 +42,8 @@ t_bool check_question(t_data *data, t_token *token, int *i) { tmp = ft_itoa(data->error_code); token->str = ft_strncat(token->str, tmp, ft_strlen(tmp)); + if (!token->str) + program_error_exit("bash"); if (check_end(data->input[*i + 1]) == FALSE) token->blank = FALSE; *i += 1; @@ -92,6 +94,8 @@ t_bool check_special(t_data *data, t_token *token, int *i) if (!ft_isalpha(data->input[*i]) && data->input[*i] != '_') { token->str = ft_strncat(token->str, "$", 1); + if (!token->str) + program_error_exit("bash"); while (!ft_isalpha(data->input[*i]) \ && data->input[*i] != '$' \ && check_end(data->input[*i]) == FALSE) diff --git a/srcs/lexer/lexer.c b/srcs/lexer/lexer.c index f6626b0..de93a0e 100644 --- a/srcs/lexer/lexer.c +++ b/srcs/lexer/lexer.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 16:24:37 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 21:18:58 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 16:54:50 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/minishell.c b/srcs/minishell.c index 7d0348e..b1100f4 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -3,13 +3,14 @@ /* ::: :::::::: */ /* minishell.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 16:12:52 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 04:28:00 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ + #include "../incs/minishell.h" int main(int argc, char **argv, char **envp) @@ -25,6 +26,7 @@ int main(int argc, char **argv, char **envp) program_error_exit("bash"); while (TRUE) { + // print_token(data); sig(); if (get_input(data) == FALSE) continue ; diff --git a/srcs/redirect/heredoc.c b/srcs/redirect/heredoc.c index abab81c..8062d56 100644 --- a/srcs/redirect/heredoc.c +++ b/srcs/redirect/heredoc.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:21:48 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 08:23:42 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 16:22:09 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -36,8 +36,6 @@ int fork_heredoc(t_data *data) ft_putendl_fd("", STDERR_FILENO); return (1); } - // else 필요 없는건가? - // data->error_code = (status); } return (1); } diff --git a/srcs/redirect/heredocutils.c b/srcs/redirect/heredocutils.c index acfe7b2..88adc96 100644 --- a/srcs/redirect/heredocutils.c +++ b/srcs/redirect/heredocutils.c @@ -6,13 +6,14 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:16:20 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 08:24:30 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 09:36:04 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" static void heredoc_parser(t_data *data, int fd, char *str); +static char *heredoc_question(t_data *data, char *tmp, int *i); static char *heredoc_expand(t_data *data, char *str, char *tmp, int *i); static void heredoc_replace(t_data *data, char **tmp, char *name); @@ -46,7 +47,12 @@ static void heredoc_parser(t_data *data, int fd, char *str) while (str[++i]) { if (str[i] == '$') - tmp = heredoc_expand(data, str, tmp, &i); + { + if (str[i + 1] == '?') + tmp = heredoc_question(data, tmp, &i); + else + tmp = heredoc_expand(data, str, tmp, &i); + } else tmp = ft_strncat(tmp, &str[i], 1); } @@ -55,6 +61,18 @@ static void heredoc_parser(t_data *data, int fd, char *str) free (str); } +static char *heredoc_question(t_data *data, char *tmp, int *i) +{ + char *temp; + + temp = ft_itoa(data->error_code); + tmp = ft_strncat(tmp, temp, ft_strlen(temp)); + if (!tmp) + program_error_exit("bash"); + *i += 1; + return (tmp); +} + static char *heredoc_expand(t_data *data, char *str, char *tmp, int *i) { char *name; diff --git a/srcs/signal/signal.c b/srcs/signal/signal.c index f1ac252..3bca43c 100644 --- a/srcs/signal/signal.c +++ b/srcs/signal/signal.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/15 18:40:34 by kichlee #+# #+# */ -/* Updated: 2023/08/14 08:15:33 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 09:26:05 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/utils/env.c b/srcs/utils/env.c index 66f2535..1801edb 100644 --- a/srcs/utils/env.c +++ b/srcs/utils/env.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 06:38:21 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 08:14:32 by eunwolee ### ########.fr */ +/* Updated: 2023/08/13 16:49:27 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,6 +29,7 @@ void env_print(t_data *data) } } +//환경변수 이름에 해당하는 노드를 반환하는 함수입니다 t_list *env_search(t_data *data, char *key, t_bool flag) { char *tmp; @@ -36,14 +37,8 @@ t_list *env_search(t_data *data, char *key, t_bool flag) t_list *cur; tmp = ft_strdup(key); - if (!tmp) - program_error_exit("bash"); if (flag == TRUE) - { env = ft_strncat(tmp, "=", 1); - if (!env) - program_error_exit("bash"); - } else env = tmp; cur = data->envs; From 1d0555bfef6677597a9d533a5ddf9082618dd6a0 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Mon, 14 Aug 2023 17:59:07 +0900 Subject: [PATCH 31/57] builtin fix --- .DS_Store | Bin 6148 -> 6148 bytes Makefile | 1 + incs/bulitin.h | 12 +- srcs/.DS_Store | Bin 6148 -> 6148 bytes srcs/builtin/builtin.c | 36 +--- srcs/builtin/builtin_utils.c | 4 +- srcs/builtin/ft_atolong.c | 5 +- srcs/builtin/ft_cd.c | 4 +- srcs/builtin/ft_echo.c | 8 +- srcs/builtin/ft_export.c | 293 ++++++++------------------------- srcs/builtin/ft_export_three.c | 105 ++++++++++++ srcs/builtin/ft_export_two.c | 98 +++++++---- srcs/builtin/ft_unset.c | 4 +- srcs/utils/env.c | 10 +- 14 files changed, 271 insertions(+), 309 deletions(-) create mode 100644 srcs/builtin/ft_export_three.c diff --git a/.DS_Store b/.DS_Store index 6773416310fdfbab77827f20de291789ff3fc01b..961ef8556b28dd59ea1e2c746a37276bdeddd2a4 100644 GIT binary patch delta 116 zcmZoMXfc@J&&ahgU^g=(*JK_RX;xbX1_qr~uK#z%Y3Qt19az tpv= +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/21 17:42:18 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 21:58:42 by kichlee ### ########.fr */ +/* Updated: 2023/08/14 16:31:01 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -44,7 +44,7 @@ void exec_bulitin(int bulitnum, t_data *data) else if (bulitnum == 5) ft_unset(data, data->root); else if (bulitnum == 6) - ft_export(data, data->root); + ft_export(data); else if (bulitnum == 7) ft_env(data, data->root); } @@ -53,7 +53,7 @@ int count_args(char **args) { int count; - count= 0; + count = 0; while (*args != NULL) { count++; @@ -65,37 +65,19 @@ int count_args(char **args) t_list *create_env_node(char *key, char *value) { t_list *new_node; - char *key_equal; - new_node = (t_list *)malloc(sizeof(t_list)); + new_node = (t_list *)ft_calloc(1, sizeof(t_list)); if (!new_node) return (NULL); - new_node->pre = NULL; - new_node->next = NULL; - new_node->token = (t_token *)malloc(sizeof(t_token)); + new_node->token = (t_token *)ft_calloc(1, sizeof(t_token)); if (!new_node->token) { free(new_node); return (NULL); } - new_node->token->type = T_CMD; - new_node->token->redirect_type = 0; - new_node->token->str = key; - - if(value[0] != ' ') - { - key_equal = (char *)ft_calloc(ft_strlen(key) + 2, sizeof(char)); - key_equal = ft_strdup(key); - key_equal[ft_strlen(key)] = '='; - key_equal[ft_strlen(key) + 1] = '\0'; - new_node->env = ft_strjoin(key_equal, value); - } + if (value) + new_node->env = ft_strjoin(key, value); else - { - key_equal = (char *)ft_calloc(ft_strlen(key) + 1, sizeof(char)); - key_equal = ft_strdup(key); - key_equal[ft_strlen(key)] = '\0'; - new_node->env = key_equal; - } + new_node->env = ft_strdup(key); return (new_node); } diff --git a/srcs/builtin/builtin_utils.c b/srcs/builtin/builtin_utils.c index d7ace90..fd10457 100644 --- a/srcs/builtin/builtin_utils.c +++ b/srcs/builtin/builtin_utils.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* builtin_utils.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/22 13:20:41 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 21:58:50 by kichlee ### ########.fr */ +/* Updated: 2023/08/14 15:38:16 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/builtin/ft_atolong.c b/srcs/builtin/ft_atolong.c index 0dfa42b..bd39e32 100644 --- a/srcs/builtin/ft_atolong.c +++ b/srcs/builtin/ft_atolong.c @@ -6,7 +6,7 @@ /* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/10 20:31:59 by kichlee #+# #+# */ -/* Updated: 2023/08/14 05:08:08 by kichlee ### ########.fr */ +/* Updated: 2023/08/14 11:42:22 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -36,7 +36,8 @@ int check_overflow(long long result, char ch) int check_underflow(long long result, char ch) { if (result > (long long)(-(LLONG_MIN / 10)) || \ - (result == (long long)(-(LLONG_MIN / 10)) && (long long)(ch - '0') > (long long)(-(LLONG_MIN / 10)))) + (result == (long long)(-(LLONG_MIN / 10)) && (long long)(ch - '0') > \ + (long long)(-(LLONG_MIN / 10)))) return (1); return (0); } diff --git a/srcs/builtin/ft_cd.c b/srcs/builtin/ft_cd.c index 047fcde..536e83f 100644 --- a/srcs/builtin/ft_cd.c +++ b/srcs/builtin/ft_cd.c @@ -6,7 +6,7 @@ /* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:31:18 by kichlee #+# #+# */ -/* Updated: 2023/08/13 22:18:04 by kichlee ### ########.fr */ +/* Updated: 2023/08/14 11:43:18 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -57,7 +57,7 @@ int change_directory(t_data *data, char *path) if (env_search(data, "HOME", TRUE) == NULL) return (change_home(data, path)); else - buf = ft_strdup(env_search(data, "HOME",TRUE)->env + 5); + buf = ft_strdup(env_search(data, "HOME", TRUE)->env + 5); } else buf = ft_strdup(path); diff --git a/srcs/builtin/ft_echo.c b/srcs/builtin/ft_echo.c index c235532..571d616 100644 --- a/srcs/builtin/ft_echo.c +++ b/srcs/builtin/ft_echo.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* ft_echo.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:30:59 by kichan #+# #+# */ -/* Updated: 2023/08/12 21:30:31 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 11:44:02 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -78,8 +78,8 @@ static void print_line(t_leaf *cmd); void ft_echo(t_leaf *cmd) { - int cnt; - int flag; + int cnt; + int flag; cnt = 0; flag = FALSE; diff --git a/srcs/builtin/ft_export.c b/srcs/builtin/ft_export.c index 8271ac3..a654888 100644 --- a/srcs/builtin/ft_export.c +++ b/srcs/builtin/ft_export.c @@ -1,17 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_export.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/14 11:50:55 by kichlee #+# #+# */ +/* Updated: 2023/08/14 17:47:10 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ #include "../incs/minishell.h" -static void check_env(t_data *data, int arg_cnt); -static void print_export_order(t_data *data); +static void check_env(t_data *data, char *key, char *value); -int check_equal(char *str) +int check_equal(char *str) { int i; i = 0; while (str[i]) { - if(str[i] == '=') + if (str[i] == '=') return (1); ++i; } @@ -25,191 +35,86 @@ int plus_flag(char *str) i = 0; while (str[i]) { - if(str[i] == '+') - return (i); + if (str[i] == '+') + return (1); i++; } return (0); } -void shiftStringLeft(char *str) +void shiftstringleft(char *str) { - int length = (int) ft_strlen(str); - int i = 0; + int length; + int i; - while (i < length - 1) + i = 0; + length = (int) ft_strlen(str); + while (i < length - 1) { - str[i] = str[i + 1]; - i++; - } - str[length - 1] = '\0'; + str[i] = str[i + 1]; + i++; + } + str[length - 1] = '\0'; } - -void update_env_export(t_data *data) +void ft_export(t_data *data) { + int arg_cnt; t_list *tmp; - // t_list *tmp_two; - t_list *tmp_three; - t_list *search_list; - char **key_val_is_plus; - char **key_val_not_plus; - char *key_equal; - int flag; - + int i; tmp = data->tokens; - tmp_three = data->tokens; - while(tmp_three) + arg_cnt = 0; + while (tmp) { - printf("tmp->token->str %s\n", tmp_three->token->str); - tmp_three = tmp_three->next; + if(tmp->token->blank == 1) + ++arg_cnt; + tmp = tmp->next; } - // tmp_two = data->tokens; - tmp = tmp->next; - printf("mp->token->str %s\n", tmp->token->str); - key_val_not_plus = ft_split(tmp->token->str, '='); - - if(key_val_not_plus[1] == NULL && tmp->next && !tmp->token->blank) - key_val_not_plus[1] = tmp->next->token->str; - - printf("key_val_not_plus[0] : %s\n", key_val_not_plus[0]); - printf("key_val_not_plus[1] : %s\n", key_val_not_plus[1]); - key_val_is_plus = NULL; - flag = plus_flag(key_val_not_plus[0]); - - if(!flag) + if (arg_cnt == 0) + print_export_order(data); + i = 0; + tmp = data->tokens->next; + while (arg_cnt--) { - printf("flag start\n"); - printf("check_equal : %d\n",check_equal(tmp->token->str)); - printf("key_val_not_plus[0] %s\n", key_val_not_plus[0]); - printf("key_val_not_plus[1] %s\n", key_val_not_plus[1]); - - if(!check_equal(tmp->token->str)) + if (check_equal(tmp->token->str) == TRUE) { - printf("= 이 없을때!\n"); - search_list = env_search(data, key_val_not_plus[0], FALSE); - printf("search : %p\n", search_list); - if (search_list) + if (tmp->token->str[ft_strlen(tmp->token->str) - 1] == '=') { - printf("test\n"); - return ; - } - } - else - { - printf("= 이 있을때\n"); - data->envs->equal_flag = 1; - printf("env_search 해준 값 : %p\n", env_search(data, key_val_not_plus[0], TRUE)); - search_list = env_search(data, key_val_not_plus[0], TRUE); - } - - if(!search_list) - { - printf("+ 가 없고 = 있을수도, 없을수도, 기존에 환경변수가 없는 지점\n"); - printf("tmp_two->token->blank , %d\n", tmp->token->blank); - printf("key_val_not_plus[1] , %s\n", key_val_not_plus[1]); - - if(tmp->token->blank || !key_val_not_plus[1]) - { - printf("tmp if start!\n"); - add_env_front(data, key_val_not_plus[0], """"); - } - else - { - printf("else if start!\n"); - key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key_val_not_plus[0]) + 2); - key_equal = ft_memmove(key_equal, key_val_not_plus[0], ft_strlen(key_val_not_plus[0])); - key_equal[ft_strlen(key_val_not_plus[0])] = '='; - key_equal[ft_strlen(key_val_not_plus[0]) + 1] = '\0'; - printf("key_equal 완성 %s\n", key_equal); - printf("key_equal 완성 두번째 : %s\n", ft_strjoin(key_equal, key_val_not_plus[1])); - add_env_front(data, key_val_not_plus[0], key_val_not_plus[1]); - } - } - else if(search_list) - { - printf("+ 가 없고 = 는 있는데, 기존에 환경변수가 있는 지점\n"); - printf("first : ifcon!\n"); - printf("key not plus [1] : %s\n", key_val_not_plus[1]); - free(search_list->env); - if(key_val_not_plus[1]) - { - printf("second : ifcon!\n"); - key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key_val_not_plus[0]) + 2); - // key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key_val_not_plus[0]) + 4); - // key_equal[1] = '\"'; - // key_equal[ft_strlen(key_val_not_plus[0]) + 2] = '\"'; - key_equal = ft_memmove(key_equal, key_val_not_plus[0], ft_strlen(key_val_not_plus[0])); - key_equal[ft_strlen(key_val_not_plus[0])] = '='; - key_equal[ft_strlen(key_val_not_plus[0]) + 1] = '\0'; - printf("key_equal 완성 %s\n", key_equal); - printf("key_equal 완성 두번째 : %s\n", ft_strjoin(key_equal, key_val_not_plus[1])); - search_list->env = ft_strjoin(key_equal, key_val_not_plus[1]); + if (!tmp->next) + check_env(data, tmp->token->str, NULL); + else + { + check_env(data, tmp->token->str, tmp->next->token->str); + tmp = tmp->next->next; + } } else { - printf("+ 가 없고 = 는 있는데, 기존에 환경변수가 없는 지점\n"); - printf("final else start!\n"); - // printf("key_equal %s\n" , key_equal); - // printf("ft_strjoin %s\n" ,ft_strjoin(key_equal, """")); - key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key_val_not_plus[0]) + 2); - key_equal = ft_memmove(key_equal, key_val_not_plus[0], ft_strlen(key_val_not_plus[0])); - key_equal[ft_strlen(key_val_not_plus[0])] = '='; - key_equal[ft_strlen(key_val_not_plus[0]) + 1] = '\0'; - key_val_not_plus[1] = ft_strdup(""); - search_list->env = ft_strjoin(key_equal, key_val_not_plus[1]); + while (tmp->token->str[i] != '=') + i++; + i++; + char *tmp1 = (char *)ft_calloc(i, sizeof(char)); + ft_memmove(tmp1, tmp->token->str, i); + char *tmp2 = (char *)ft_calloc(ft_strlen(&tmp->token->str[i]), sizeof(char)); + ft_memmove(tmp2, &tmp->token->str[i], ft_strlen(&tmp->token->str[i])); + check_env(data, tmp1, tmp2); + tmp = tmp->next; } - - } - } - else - { - key_val_is_plus = ft_split(tmp->token->str, '+'); - key_val_is_plus[0][ft_strlen(key_val_is_plus[0])] = '\0'; - shiftStringLeft(key_val_is_plus[1]); - search_list = env_search(data, key_val_is_plus[0], TRUE); - if(!search_list) - { - if(tmp->token->blank || !key_val_is_plus[1]) - add_env_front(data, key_val_is_plus[0], " "); - else - add_env_front(data, key_val_is_plus[0], key_val_is_plus[1]); } else { - char *tmp = search_list->env; - search_list->env = ft_strjoin(search_list->env, key_val_is_plus[1]); - free(tmp); + check_env(data, tmp->token->str, NULL); + tmp = tmp->next; } - - } -} - - -void ft_export(t_data *data, t_leaf *cur_root) -{ - int arg_cnt; - (void) cur_root; - - t_list *tmp = data->tokens; - - arg_cnt = 0; - while(tmp) - { - ++arg_cnt; - tmp = tmp->next; } - if (arg_cnt == 1) - print_export_order(data); - else - check_env(data, arg_cnt); + } int ft_isalpha_str(char *str) { int i; - + i = 0; while (str[i]) { @@ -220,81 +125,17 @@ int ft_isalpha_str(char *str) return (1); } - -static void check_env(t_data *data, int arg_cnt) +static void check_env(t_data *data, char *key, char *value) { - int i; - t_list *tmp; + int i; - tmp = data->tokens; - tmp = tmp->next; i = 1; - - (void) arg_cnt; - - if(!check_name(tmp->token->str)) + printf("check %s %s\n", key, value); + if (!check_name(key)) { - printf("enter checkname!\n"); - printf("bash: export: `%s': not a valid identifier\n", tmp->token->str); + printf("bash: export: '%s': not a valid identifier\n", key); data->error_code = 1; return ; } - tmp = tmp->next; - if(!tmp) - { - printf("first if condition\n"); - update_env_export(data); - } - else - { - while(i < arg_cnt) - { - if(!ft_isalpha_str(tmp->token->str)) - { - printf("bash: export: `%s': not a valid identifier\n", tmp->token->str); - data->error_code = 1; - return ; - } - ++i; - } - update_env_export(data); - } + update_env_export(data, key, value); } - -static void print_export_order(t_data *data) -{ - int i; - int lst_size; - char **order_set; - char **order_copy; - t_list *cur; - - i = 0; - lst_size = ft_lstsize(data->envs); - cur = data->envs; - order_copy = (char **)ft_calloc(lst_size + 1, sizeof(char *)); - while (cur) - { - order_copy[i] = ft_strdup(cur->env); - cur = cur->next; - ++i; - } - order_set = sort_bubble(order_copy, lst_size); - i = -1; - - while (order_set[++i]) { - char **res_split = ft_split(order_set[i], '='); - printf("declare -x "); - printf("%s=", *res_split++); - printf("\""); - while (*res_split) - { - printf("%s", *res_split); - res_split++; - } - printf("\""); - printf("\n"); - } - } - // while (order_set[++i]) - // printf("declare -x %s\n", order_set[i]); diff --git a/srcs/builtin/ft_export_three.c b/srcs/builtin/ft_export_three.c new file mode 100644 index 0000000..99a2138 --- /dev/null +++ b/srcs/builtin/ft_export_three.c @@ -0,0 +1,105 @@ + /* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_export_three.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/14 11:59:34 by kichlee #+# #+# */ +/* Updated: 2023/08/14 15:57:23 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../incs/minishell.h" + +char **check_sort(char **res, int sorted) +{ + int i; + char *tmp; + + i = 0; + while (!sorted) + { + sorted = 1; + i = -1; + while (res[++i + 1]) + { + if (ft_strncmp(res[i], res[i + 1], ft_strlen(res[i])) > 0) + { + tmp = res[i]; + res[i] = res[i + 1]; + res[i + 1] = tmp; + sorted = 0; + } + } + } + return (res); +} + +char **sort_bubble(char **str, int size) +{ + char **res; + int sorted; + int i; + + sorted = 0; + i = -1; + res = (char **)ft_calloc(sizeof(char *), (size + 1)); + if (!res) + program_error_exit("Memory allocation error!"); + while (str[++i]) + { + res[i] = ft_strdup(str[i]); + if (!res[i]) + program_error_exit("Memory allocation error!"); + } + res[i] = NULL; + res = check_sort(res, sorted); + return (res); +} + +static void print_export_quote(char **order_set) +{ + int i; + char **res_split; + + i = 0; + while (order_set[i]) + { + t_bool flag = check_equal(order_set[i]); + res_split = ft_split(order_set[i], '='); + printf("declare -x "); + if (flag == TRUE) + { + if (!res_split[1]) + printf("%s=\"\"\n", res_split[0]); + else + printf("%s=\"%s\"\n", res_split[0], res_split[1]); + } + else + printf("%s\n", res_split[0]); + ++i; + } +} + +void print_export_order(t_data *data) +{ + int i; + int lst_size; + char **order_set; + char **order_copy; + t_list *cur; + + i = 0; + lst_size = ft_lstsize(data->envs); + cur = data->envs; + order_copy = (char **)ft_calloc(lst_size + 1, sizeof(char *)); + while (cur) + { + order_copy[i] = ft_strdup(cur->env); + cur = cur->next; + ++i; + } + order_set = sort_bubble(order_copy, lst_size); + print_export_quote(order_set); +} diff --git a/srcs/builtin/ft_export_two.c b/srcs/builtin/ft_export_two.c index 3423d83..05e87d8 100644 --- a/srcs/builtin/ft_export_two.c +++ b/srcs/builtin/ft_export_two.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* ft_export_two.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/09 19:33:40 by kichlee #+# #+# */ -/* Updated: 2023/08/13 21:25:30 by kichlee ### ########.fr */ +/* Updated: 2023/08/14 17:50:41 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -59,48 +59,76 @@ int check_name(char *str) return (1); } -char **check_sort(char **res, int sorted) +void update_env_export(t_data *data, char *key, char *value) { - int i; + int flag; char *tmp; + t_list *search_list; - i = 0; - while (!sorted) + printf("key val : %s\n", key); + flag = plus_flag(key); + printf("flag %d\n", flag); + if (flag == TRUE) + { + int i = 0; + while (key[i] != '+') + i++; + tmp = ft_strdup(""); + tmp = ft_strncat(tmp, key, i); + printf("tmp first : %s\n", tmp); + search_list = env_search(data, tmp, FALSE); + } + else if(check_equal(key) == TRUE) + { + tmp = ft_strdup(""); + tmp = ft_strncat(tmp, key, ft_strlen(key) - 1); + search_list = env_search(data, tmp, FALSE); + } + else { - sorted = 1; - i = -1; - while (res[++i + 1]) + tmp = ft_strdup(key); + printf("tmp %s\n", tmp); + search_list = env_search(data, tmp, FALSE); + } + if(flag == FALSE) + { + if(check_equal(key) == FALSE) + { + if (search_list) + { + printf("----------------------\n"); + return ; + } + printf("+ 가 없고 = 도 없는데, 기존에 환경변수가 없는 지점\n"); + add_env_front(data, key, value); + } + else { - if (ft_strncmp(res[i], res[i + 1], ft_strlen(res[i])) > 0) + printf("+ 가 없고 = 는 있는 지점\n"); + if (search_list) { - tmp = res[i]; - res[i] = res[i + 1]; - res[i + 1] = tmp; - sorted = 0; + printf("search_list %s\n", search_list->env); + free(search_list->env); + if (value) + search_list->env = ft_strjoin(key, value); + else + search_list->env = ft_strdup(key); } + else + add_env_front(data, key, value); } } - return (res); -} - -char **sort_bubble(char **str, int size) -{ - char **res; - int sorted; - int i; - - sorted = 0; - i = -1; - res = (char **)ft_calloc(sizeof(char *), (size + 1)); - if (!res) - program_error_exit("Memory allocation error!"); - while (str[++i]) + else { - res[i] = ft_strdup(str[i]); - if (!res[i]) - program_error_exit("Memory allocation error!"); + if(search_list) + search_list->env = ft_strjoin(search_list->env, value); + else + { + tmp = ft_strncat(tmp, "=", 1); + add_env_front(data, tmp, value); + } } - res[i] = NULL; - res = check_sort(res, sorted); - return (res); + free(tmp); } + +//a -> a=b \ No newline at end of file diff --git a/srcs/builtin/ft_unset.c b/srcs/builtin/ft_unset.c index 51ba277..bfe9142 100644 --- a/srcs/builtin/ft_unset.c +++ b/srcs/builtin/ft_unset.c @@ -6,7 +6,7 @@ /* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 22:51:02 by kichlee #+# #+# */ -/* Updated: 2023/08/12 18:40:43 by kichlee ### ########.fr */ +/* Updated: 2023/08/14 11:44:24 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,7 @@ void ft_unset(t_data *data, t_leaf *cur_root) char **cmd; int arg_cnt; int i; - + cmd = join_cmd(cur_root->left_child->right_child); arg_cnt = count_args(cmd); i = 1; diff --git a/srcs/utils/env.c b/srcs/utils/env.c index 1801edb..58d73d0 100644 --- a/srcs/utils/env.c +++ b/srcs/utils/env.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 06:38:21 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 16:49:27 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 17:51:42 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,12 +29,12 @@ void env_print(t_data *data) } } -//환경변수 이름에 해당하는 노드를 반환하는 함수입니다 t_list *env_search(t_data *data, char *key, t_bool flag) { char *tmp; char *env; t_list *cur; + int len; tmp = ft_strdup(key); if (flag == TRUE) @@ -44,8 +44,10 @@ t_list *env_search(t_data *data, char *key, t_bool flag) cur = data->envs; while (cur) { - if (!ft_strncmp(cur->env, env, ft_strlen(env))) - return (cur); + len = ft_strlen(env); + if (!ft_strncmp(cur->env, env, len)) + if (cur->env[len] == '\0' || cur->env[len] == '=') + return (cur); cur = cur->next; } return (NULL); From 492b57c2c8a11f060e83bcc78a426fdaee09f193 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Mon, 14 Aug 2023 22:16:48 +0900 Subject: [PATCH 32/57] =?UTF-8?q?=EB=B9=8C=ED=8A=B8=EC=9D=B8=20norm=20?= =?UTF-8?q?=EA=B3=A0=EC=B9=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 6148 -> 6148 bytes Makefile | 24 +-- incs/bulitin.h | 61 ++++---- incs/execute.h | 41 ++++- incs/init.h | 5 +- incs/pipe.h | 17 +-- srcs/builtin/builtin.c | 37 +---- srcs/builtin/ft_add_env_front.c | 53 +++++++ srcs/builtin/ft_atolong.c | 68 +++++---- srcs/builtin/ft_cd.c | 44 ++++-- .../{ft_exit_two.c => ft_count_args.c} | 38 ++--- srcs/builtin/ft_echo.c | 64 +------- srcs/builtin/ft_env.c | 144 +++++++----------- srcs/builtin/ft_exit.c | 100 +++++++----- srcs/builtin/ft_export.c | 137 +++++++++-------- srcs/builtin/ft_export_check.c | 105 +++++++++++++ .../{ft_export_three.c => ft_export_print.c} | 84 +++++----- srcs/builtin/ft_export_two.c | 134 ---------------- .../{builtin_utils.c => ft_join_cmd.c} | 65 ++++---- srcs/builtin/ft_pwd.c | 10 +- srcs/builtin/ft_unset.c | 8 +- srcs/execute/checkbulitin.c | 25 --- srcs/execute/child.c | 59 +++++++ srcs/execute/execve.c | 79 ++++------ srcs/execute/execve_utils.c | 71 +++++++++ srcs/execute/{freepipe.c => file.c} | 31 ++-- srcs/execute/parent.c | 55 +++++++ srcs/execute/{setpath.c => path.c} | 90 ++++++----- srcs/execute/pipe.c | 75 +++++---- srcs/execute/pipeutils.c | 49 ------ srcs/init/init.c | 48 +----- srcs/input/get_input.c | 41 +++++ srcs/minishell.c | 6 +- srcs/redirect/heredoc.c | 74 ++++----- .../{heredocutils.c => heredoc_parser.c} | 8 +- srcs/redirect/{redirection.c => redirect.c} | 44 +++--- srcs/signal/signal.c | 7 +- 37 files changed, 1043 insertions(+), 958 deletions(-) create mode 100644 srcs/builtin/ft_add_env_front.c rename srcs/builtin/{ft_exit_two.c => ft_count_args.c} (50%) create mode 100644 srcs/builtin/ft_export_check.c rename srcs/builtin/{ft_export_three.c => ft_export_print.c} (87%) delete mode 100644 srcs/builtin/ft_export_two.c rename srcs/builtin/{builtin_utils.c => ft_join_cmd.c} (67%) delete mode 100644 srcs/execute/checkbulitin.c create mode 100644 srcs/execute/child.c create mode 100644 srcs/execute/execve_utils.c rename srcs/execute/{freepipe.c => file.c} (62%) create mode 100644 srcs/execute/parent.c rename srcs/execute/{setpath.c => path.c} (53%) delete mode 100644 srcs/execute/pipeutils.c create mode 100644 srcs/input/get_input.c rename srcs/redirect/{heredocutils.c => heredoc_parser.c} (92%) rename srcs/redirect/{redirection.c => redirect.c} (85%) diff --git a/.DS_Store b/.DS_Store index 961ef8556b28dd59ea1e2c746a37276bdeddd2a4..9be00b3e82abc53b53aee165cabbb64ae5fcc021 100644 GIT binary patch delta 276 zcmZoMXfc@J&&atkU^g=(=Vl%jN5;w3tVT%%45bXk3>ggZK(d@6k)a@|ytp7KCqIdS zf#F+HK~83IiGjflMkZz!RyKAHPA+avZa!|#*x-!(^5BxhlG0+Q#G-fsnc&Qn)TG3s z@XVBwjF8kk*PPU{)I9$ppTv^X$+K8I>!U#$0uoCyfQmSj9TFOV#xpQ*a&X2ANLE)H zni*N>D3}?U*Xk%#o0}WxD3}!~jp +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/14 18:03:26 by eunwolee #+# #+# */ +/* Updated: 2023/08/14 22:14:52 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + #ifndef BULITIN_H # define BULITIN_H @@ -6,41 +18,32 @@ # define LLONG_MAX 9223372036854775807 # define LLONG_MIN -9223372036854775808ULL - /*signal*/ -void sig(void); -void handle_sigint(int sig); -void init_base(int ac); -void child_handler(int signum); - /*builtin*/ -int check_equal(char *str); -void ft_echo(t_leaf *cmd); -void exec_bulitin(int bulitnum,t_data *data); +void ft_export(t_data *data); +void update_env_export(t_data *data, char *key, char *value); int check_bulitin_func(char *name); +void exec_bulitin(int bulitnum, t_data *data); + +void ft_pwd(void); +void ft_echo(t_leaf *cmd); void ft_cd(t_data *data, t_leaf *cur_root); +void ft_env(t_data *data, t_leaf *cur_root); void ft_exit(t_data *data, t_leaf *cur_root); -void ft_pwd(t_data *data, t_leaf *cur_root); void ft_unset(t_data *data, t_leaf *cur_root); -void update_env_export(t_data *data, char *key, char *value); -void update_env(t_data *data, char *key, char *value); -void ft_export(t_data *data); -void ft_env(t_data *data, t_leaf *cur_root); -char *check_keyval(t_data *data, char *str); -char **sort_bubble(char **str, int size); + +int ft_count_args(char **args); +char **ft_join_cmd(t_leaf *com_leaf); +long long ft_atolong(char *str, int *flag); +void ft_add_env_front(t_data *head, char *key, char *value); + +/*ft_export_print*/ +void print_export_order(t_data *data); + +/*ft_export_check*/ +int check_plus(char *str); int check_name(char *str); +int check_equal(char *str); int check_underbar(char ch); -char **sort_bubble(char **str, int size); -long long char_to_long_long(char *str, int *flag); -int is_num_str(char *str); -void exit_not_num(t_data *data, char *str); -void print_export_order(t_data *data); -int plus_flag(char *str); -void shiftstringleft(char *str); - -/*builtin utils*/ -char **join_cmd(t_leaf * com_leaf); -int count_args(char **args); -t_list *create_env_node(char *key, char *value); -void add_env_front(t_data *head, char *key, char *value); +void check_env(t_data *data, char *key, char *value); #endif \ No newline at end of file diff --git a/incs/execute.h b/incs/execute.h index 1312fb8..4e984ce 100644 --- a/incs/execute.h +++ b/incs/execute.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/08 17:49:19 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 17:54:41 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 18:58:06 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,4 +17,43 @@ t_bool get_input(t_data *data); +/*execve*/ +void execute(t_data *data); +void execute_cmd(t_data *data, int flag); + +/*execve utils*/ +int check_bulitin(t_data *data); +void recover_std(t_data *data); +void heredoc_flag(t_leaf *leaf, t_data *data); + +/*child*/ +void do_cmd(t_data *data); +void exec_fork(t_data *data); + +/*parent*/ +void wait_child_processes(t_data *data); + +/*redirect*/ +void check_redirect(t_leaf *leaf, t_data *data); + +/*heredoc*/ +int fork_heredoc(t_data *data); + +/*heredoc_uilts*/ +void write_str(t_data *data, char *content, int fd); + +/*path*/ +char *set_path(t_data *data, t_leaf *leaf); +void abs_path(t_data *data); + +/*file*/ +void check_file(int fd, t_data *data); +void close_file(t_data *data); + +/*signal*/ +void sig(void); +void handle_sigint(int sig); +void init_base(int ac); +void child_handler(int signum); + #endif \ No newline at end of file diff --git a/incs/init.h b/incs/init.h index b7cd230..52660c8 100644 --- a/incs/init.h +++ b/incs/init.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:29:44 by eunwolee #+# #+# */ -/* Updated: 2023/07/12 16:17:39 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 18:30:13 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,10 @@ # include "struct.h" +/*init*/ void init(t_data **data, char **envp); void env_init(t_data *data, char **envp); +void pipe_init(t_pipe **pipe); +void info_init(t_info **info); #endif \ No newline at end of file diff --git a/incs/pipe.h b/incs/pipe.h index 6a1e716..d3c5f98 100644 --- a/incs/pipe.h +++ b/incs/pipe.h @@ -6,36 +6,21 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:03:34 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 16:03:34 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 20:48:50 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef PIPE_H # define PIPE_H -void info_init(t_info **info); -void pipe_init(t_pipe **pipe); void count_pipe(t_data*data); -void execute_cmd(t_data *data, int flag); -int fork_heredoc(t_data *data); int check_bulitin(t_data *data); -void heredoc_flag(t_leaf *leaf, t_data *data); void check_file(int fd, t_data *data); -void check_redirect(t_leaf *leaf, t_data *data); void recover_std(t_data *data); -void mk_heredoc_pipe(t_data *data); int link_pipe(int i, t_pipe *base, t_data *data); void do_cmd(t_data *data); void exec_fork(t_data *data); -void abs_path(t_data *data); -char *set_path(t_data *data, t_leaf *leaf); -char **join_cmd(t_leaf *com_leaf); void close_pipe(int i, t_pipe *base, t_data *data); -void wait_child_processes(t_data *data); -char *search_path(t_pipe *base, t_data *data); -void execute(t_data *data); -void write_str(char *content, int fd, t_data *data); -void error_check(int num, t_data *data); void close_file(t_data *data); #endif \ No newline at end of file diff --git a/srcs/builtin/builtin.c b/srcs/builtin/builtin.c index bcc966b..5851a4b 100644 --- a/srcs/builtin/builtin.c +++ b/srcs/builtin/builtin.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/21 17:42:18 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 16:31:01 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 20:39:23 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -40,7 +40,7 @@ void exec_bulitin(int bulitnum, t_data *data) else if (bulitnum == 3) ft_exit(data, data->root); else if (bulitnum == 4) - ft_pwd(data, data->root); + ft_pwd(); else if (bulitnum == 5) ft_unset(data, data->root); else if (bulitnum == 6) @@ -48,36 +48,3 @@ void exec_bulitin(int bulitnum, t_data *data) else if (bulitnum == 7) ft_env(data, data->root); } - -int count_args(char **args) -{ - int count; - - count = 0; - while (*args != NULL) - { - count++; - args++; - } - return (count); -} - -t_list *create_env_node(char *key, char *value) -{ - t_list *new_node; - - new_node = (t_list *)ft_calloc(1, sizeof(t_list)); - if (!new_node) - return (NULL); - new_node->token = (t_token *)ft_calloc(1, sizeof(t_token)); - if (!new_node->token) - { - free(new_node); - return (NULL); - } - if (value) - new_node->env = ft_strjoin(key, value); - else - new_node->env = ft_strdup(key); - return (new_node); -} diff --git a/srcs/builtin/ft_add_env_front.c b/srcs/builtin/ft_add_env_front.c new file mode 100644 index 0000000..517b1f5 --- /dev/null +++ b/srcs/builtin/ft_add_env_front.c @@ -0,0 +1,53 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_add_env_front.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/14 20:38:22 by eunwolee #+# #+# */ +/* Updated: 2023/08/14 20:41:24 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +void ft_add_env_front(t_data *head, char *key, char *value); +static t_list *create_env_node(char *key, char *value); +static void ft_lstadd_front(t_list **lst, t_list *new); + +void ft_add_env_front(t_data *head, char *key, char *value) +{ + if (head->envs == NULL) + head->envs = create_env_node(key, value); + else + ft_lstadd_front(&(head->envs), create_env_node(key, value)); +} + +static t_list *create_env_node(char *key, char *value) +{ + t_list *new_node; + + new_node = (t_list *)ft_calloc(1, sizeof(t_list)); + if (!new_node) + return (NULL); + new_node->token = (t_token *)ft_calloc(1, sizeof(t_token)); + if (!new_node->token) + { + free(new_node); + return (NULL); + } + if (value) + new_node->env = ft_strjoin(key, value); + else + new_node->env = ft_strdup(key); + return (new_node); +} + +static void ft_lstadd_front(t_list **lst, t_list *new) +{ + if (!lst || !new) + return ; + new->next = *lst; + *lst = new; +} diff --git a/srcs/builtin/ft_atolong.c b/srcs/builtin/ft_atolong.c index bd39e32..b9d13e4 100644 --- a/srcs/builtin/ft_atolong.c +++ b/srcs/builtin/ft_atolong.c @@ -3,16 +3,48 @@ /* ::: :::::::: */ /* ft_atolong.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/10 20:31:59 by kichlee #+# #+# */ -/* Updated: 2023/08/14 11:42:22 by kichlee ### ########.fr */ +/* Updated: 2023/08/14 20:43:13 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -char *pass_blank_sign(char *str, int *sign) +long long ft_atolong(char *str, int *flag); +static char *pass_blank_sign(char *str, int *sign); +static int check_overflow(long long result, char ch); +static int check_underflow(long long result, char ch); + +long long ft_atolong(char *str, int *flag) +{ + long long result; + int sign; + int i; + + result = 0; + sign = 1; + i = -1; + str = pass_blank_sign(str, &sign); + while (ft_isdigit(str[++i])) + { + if (check_overflow(result, str[i])) + { + if ((sign == 1 && check_overflow(result, str[i])) || \ + (sign == -1 && check_underflow(result, str[i]))) + { + *flag = 0; + return (0); + } + } + result = result * 10 + (str[i] - '0'); + } + *flag = 1; + return (result * sign); +} + +static char *pass_blank_sign(char *str, int *sign) { while ((*str >= 9 && *str <= 13) || *str == 32) ++str; @@ -25,7 +57,7 @@ char *pass_blank_sign(char *str, int *sign) return (str); } -int check_overflow(long long result, char ch) +static int check_overflow(long long result, char ch) { if (result > LLONG_MAX / 10 || \ (result == LLONG_MAX / 10 && (ch - '0') > LLONG_MAX % 10)) @@ -33,7 +65,7 @@ int check_overflow(long long result, char ch) return (0); } -int check_underflow(long long result, char ch) +static int check_underflow(long long result, char ch) { if (result > (long long)(-(LLONG_MIN / 10)) || \ (result == (long long)(-(LLONG_MIN / 10)) && (long long)(ch - '0') > \ @@ -42,29 +74,3 @@ int check_underflow(long long result, char ch) return (0); } -long long char_to_long_long(char *str, int *flag) -{ - long long result; - int sign; - int i; - - result = 0; - sign = 1; - i = -1; - str = pass_blank_sign(str, &sign); - while (ft_isdigit(str[++i])) - { - if (check_overflow(result, str[i])) - { - if ((sign == 1 && check_overflow(result, str[i])) || \ - (sign == -1 && check_underflow(result, str[i]))) - { - *flag = 0; - return (0); - } - } - result = result * 10 + (str[i] - '0'); - } - *flag = 1; - return (result * sign); -} diff --git a/srcs/builtin/ft_cd.c b/srcs/builtin/ft_cd.c index 536e83f..23fe882 100644 --- a/srcs/builtin/ft_cd.c +++ b/srcs/builtin/ft_cd.c @@ -3,16 +3,19 @@ /* ::: :::::::: */ /* ft_cd.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:31:18 by kichlee #+# #+# */ -/* Updated: 2023/08/14 11:43:18 by kichlee ### ########.fr */ +/* Updated: 2023/08/14 22:10:19 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -int change_directory(t_data *data, char *path); +void ft_cd(t_data *data, t_leaf *cur_root); +static void update_env_cd(t_data *data, char *key, char *value); +static int change_directory(t_data *data, char *path); +static int change_home(void); void ft_cd(t_data *data, t_leaf *cur_root) { @@ -33,20 +36,31 @@ void ft_cd(t_data *data, t_leaf *cur_root) { getcwd(pwd, 1024); printf("current directory : %s\n", pwd); - update_env(data, "OLDPWD", env_search(data, "PWD", TRUE)->env); - update_env(data, "PWD", pwd); + update_env_cd(data, "OLDPWD", env_search(data, "PWD", TRUE)->env); + update_env_cd(data, "PWD", pwd); } } -int change_home(t_data *data, char *path) +static void update_env_cd(t_data *data, char *key, char *value) { - (void) data; - (void) path; - printf("bash: cd: HOME not set\n"); - return (-1); + t_list *tmp; + char *key_equal; + + tmp = env_search(data, key,TRUE); + if (!tmp) + ft_add_env_front(data, key, value); + else + { + free(tmp->env); + key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key) + 2); + key_equal = ft_strdup(key); + key_equal[ft_strlen(key)] = '='; + key_equal[ft_strlen(key) + 1] = '\0'; + tmp->env = ft_strjoin(key_equal, value); + } } -int change_directory(t_data *data, char *path) +static int change_directory(t_data *data, char *path) { char *buf; int res; @@ -55,7 +69,7 @@ int change_directory(t_data *data, char *path) if (!ft_strncmp(path, "HOME", 5)) { if (env_search(data, "HOME", TRUE) == NULL) - return (change_home(data, path)); + return (change_home()); else buf = ft_strdup(env_search(data, "HOME", TRUE)->env + 5); } @@ -68,3 +82,9 @@ int change_directory(t_data *data, char *path) free(buf); return (res); } + +static int change_home(void) +{ + printf("bash: cd: HOME not set\n"); + return (-1); +} diff --git a/srcs/builtin/ft_exit_two.c b/srcs/builtin/ft_count_args.c similarity index 50% rename from srcs/builtin/ft_exit_two.c rename to srcs/builtin/ft_count_args.c index 6375179..339cf55 100644 --- a/srcs/builtin/ft_exit_two.c +++ b/srcs/builtin/ft_count_args.c @@ -1,38 +1,28 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* ft_exit_two.c :+: :+: :+: */ +/* ft_count_args.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2023/08/10 21:28:16 by kichlee #+# #+# */ -/* Updated: 2023/08/10 21:34:56 by kichlee ### ########.fr */ +/* Created: 2023/07/22 13:20:41 by eunwolee #+# #+# */ +/* Updated: 2023/08/14 20:49:20 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../incs/minishell.h" +#include "../../incs/minishell.h" -int is_num_str(char *str) +int ft_count_args(char **args); + +int ft_count_args(char **args) { - int i; + int count; - i = 0; - if (str[0] == '-' || str[0] == '+') - i++; - while (str[i]) + count = 0; + while (*args != NULL) { - if (!('0' <= str[i] && str[i] <= '9')) - return (0); - i++; + count++; + args++; } - return (1); -} - -void exit_not_num(t_data *data, char *str) -{ - (void)data; - printf("exit\n"); - printf("bash: exit: %s: numeric argument required\n", str); - data->error_code = 255; - exit(255); + return (count); } diff --git a/srcs/builtin/ft_echo.c b/srcs/builtin/ft_echo.c index 571d616..721b2b1 100644 --- a/srcs/builtin/ft_echo.c +++ b/srcs/builtin/ft_echo.c @@ -3,79 +3,19 @@ /* ::: :::::::: */ /* ft_echo.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:30:59 by kichan #+# #+# */ -/* Updated: 2023/08/14 11:44:02 by kichlee ### ########.fr */ +/* Updated: 2023/08/14 20:26:38 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" void ft_echo(t_leaf *cmd); -// static void check_flag(char **av, int *idx, int *flag); -// static void print_line(char *line); static void check_flag(t_leaf *cmd, int *cnt, int *flag); static void print_line(t_leaf *cmd); -// void ft_echo(t_leaf *cmd) -// { -// int i; -// int flag; -// int blank; -// char **cmd; - -// cmd = join_cmd(cmd->left_child->right_child); -// blank = count_args(cmd); -// i = 1; -// flag = FALSE; -// check_flag(cmd, &i, &flag); -// while (cmd[i]) -// { -// print_line(cmd[i]); -// if(i < blank - 1) -// printf(" "); -// i++; -// } -// if (flag == FALSE) -// printf("\n"); -// } - -// static void check_flag(char **av, int *idx, int *flag) -// { -// int i; -// int j; - -// i = 1; - // while (av[i] && av[i][0] == '-' && av[i][1] == 'n') -// { -// j = 1; -// while (av[i][j] != '\0') -// { -// if (av[i][j] != 'n') -// return ; -// j++; -// } -// i++; -// *idx += 1; -// *flag = TRUE; -// } -// } - -// static void print_line(char *line) -// { -// int i; - -// i = 0; -// while (line[i]) -// { -// if (line[i] == '$' && line[i + 1] != '\0') -// break ; -// printf("%c", line[i]); -// i++; -// } -// } - void ft_echo(t_leaf *cmd) { int cnt; diff --git a/srcs/builtin/ft_env.c b/srcs/builtin/ft_env.c index eb87b27..c0b6506 100644 --- a/srcs/builtin/ft_env.c +++ b/srcs/builtin/ft_env.c @@ -12,111 +12,77 @@ #include "../incs/minishell.h" -void ft_env(t_data *data, t_leaf *cur_root); +void ft_env(t_data *data, t_leaf *cur_root); +static void ft_env_count(t_data *data, char *str); +static void ft_env_count_else(t_data *data, char *str); +static char *check_keyval(t_data *data, char *str); -void update_env(t_data *data, char *key, char *value) +void ft_env(t_data *data, t_leaf *cur_root) { + char **cmd; + int arg_cnt; t_list *tmp; - char *key_equal; - tmp = env_search(data, key,TRUE); - if (!tmp) - add_env_front(data, key, value); + tmp = data->tokens; + cmd = ft_join_cmd(cur_root->left_child->right_child); + if (!cmd) + program_error_exit("bash"); + arg_cnt = ft_count_args(cmd); + if (arg_cnt == 1) + env_print(data); + else if (arg_cnt != 2) + printf("env: %s: No such file or directory\n", cmd[1]); else - { - free(tmp->env); - key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key) + 2); - key_equal = ft_strdup(key); - key_equal[ft_strlen(key)] = '='; - key_equal[ft_strlen(key) + 1] = '\0'; - tmp->env = ft_strjoin(key_equal, value); - } + ft_env_count(data, cmd[1]); + free(cmd); } -char *check_keyval(t_data *data, char *str) +static void ft_env_count(t_data *data, char *str) { - t_list *tmp; + int flag; - if(!str) - return (NULL); - tmp = env_search(data, str,TRUE); - if (tmp == NULL) - return (NULL); + flag = check_equal(str); + if (flag == 1 && str[0] != '=') + { + env_print(data); + printf("%s\n", str); + } + else if (flag == 1 && str[0] == '=') + printf("env: setenv %s: Invalid argument\n", str); else - return (tmp->env); + ft_env_count_else(data, str); } -void ft_env(t_data *data, t_leaf *cur_root) +static void ft_env_count_else(t_data *data, char *str) { - char **cmd; - int arg_cnt; - char **env_path; - int flag; - t_list *tmp; - // int cnt; - // cnt = 0; - tmp = data->tokens; - - while (tmp) + if (str[0] == '$') { - if(tmp->token->blank) - // cnt++; - tmp = tmp->next; - } - cmd = join_cmd(cur_root->left_child->right_child); - arg_cnt = count_args(cmd); - env_path = NULL; - - int k = 0; - - while (cmd[k]) - { - printf("cmd : %s\n", cmd[k]); - ++k; + if (ft_strlen(str) == 1) + { + printf("env: %s: No such file or directory\n", str); + data->error_code = 127; + } + else if (check_keyval(data, str) == NULL) + env_print(data); + else + printf("%s", env_search(data, str, TRUE)->env); } - if (arg_cnt == 1) - env_print(data); - else if(arg_cnt != 2) - printf("env: %s: No such file or directory\n", cmd[2]); else { - flag = check_equal(cmd[1]); - printf("flag!\n"); - if(flag == 1 && cmd[1][0] != '=') - { - env_path = ft_split(cmd[1], '='); - if(!env_path || !env_path[0]) - { - printf("error!\n"); - return ; - } - env_print(data); - printf("%s\n", cmd[1]); - } - else if(flag == 1 && cmd[1][0] == '=') - { - printf("env: setenv %s: Invalid argument\n", cmd[1]); - } - else - { - printf("else start!!\n"); - if (cmd[1][0] == '$') - { - if (ft_strlen(cmd[1]) == 1) - { - printf("env: %s: No such file or directory\n", cmd[1]); - data->error_code = 127; - } - else if (check_keyval(data, cmd[1]) == NULL) - env_print(data); - else - printf("%s", env_search(data, cmd[1],TRUE)->env); - } - else - { - printf("env: %s: No such file or directory\n", cmd[1]); - data->error_code = 127; - } - } + printf("env: %s: No such file or directory\n", str); + data->error_code = 127; } } + +static char *check_keyval(t_data *data, char *str) +{ + t_list *tmp; + + if (!str) + return (NULL); + tmp = env_search(data, str, TRUE); + if (tmp == NULL) + return (NULL); + else + return (tmp->env); +} diff --git a/srcs/builtin/ft_exit.c b/srcs/builtin/ft_exit.c index c590c1b..a3d8503 100644 --- a/srcs/builtin/ft_exit.c +++ b/srcs/builtin/ft_exit.c @@ -3,38 +3,42 @@ /* ::: :::::::: */ /* ft_exit.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:23:29 by kichlee #+# #+# */ -/* Updated: 2023/08/14 05:43:18 by kichlee ### ########.fr */ +/* Updated: 2023/08/14 20:47:16 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void arg_over_two(t_data *data, int count, char **cmd, int flag) +void ft_exit(t_data *data, t_leaf *cur_root); +static void arg_over_one(t_data *data, int count, char **cmd, int flag); +static void arg_over_two(t_data *data, int count, char **cmd, int flag); +static void exit_not_num(t_data *data, char *str); +static int is_num_str(char *str); + +void ft_exit(t_data *data, t_leaf *cur_root) { - int status; - int i; + long long status; + char **cmd; + int count; + int flag; - i = 1; - status = char_to_long_long(cmd[1], &flag); - (void)status; - while (i < count) + cmd = ft_join_cmd(cur_root->left_child->right_child); + count = ft_count_args(cmd); + flag = 1; + status = 0; + if (count == 1) { - if (flag && is_num_str(cmd[i]) && ft_strlen(cmd[i]) <= 20) - { - printf("bash: exit: too many arguments\n"); - data->error_code = 1; - break ; - } - else - exit_not_num(data, cmd[i]); - ++i; + printf("exit\n"); + exit(status); } + else + arg_over_one(data, count, cmd, flag); } -void arg_over_one(t_data *data, int count, char **cmd, int flag) +static void arg_over_one(t_data *data, int count, char **cmd, int flag) { int status; @@ -46,7 +50,7 @@ void arg_over_one(t_data *data, int count, char **cmd, int flag) data->error_code = 0; exit(0); } - status = char_to_long_long(cmd[1], &flag); + status = ft_atolong(cmd[1], &flag); if (flag && is_num_str(cmd[1]) && ft_strlen(cmd[1]) <= 20) { printf("exit\n"); @@ -59,23 +63,49 @@ void arg_over_one(t_data *data, int count, char **cmd, int flag) arg_over_two(data, count, cmd, flag); } -void ft_exit(t_data *data, t_leaf *cur_root) +static void arg_over_two(t_data *data, int count, char **cmd, int flag) { - long long status; - char **cmd; - int count; - int flag; + int status; + int i; - cmd = join_cmd(cur_root->left_child->right_child); - count = count_args(cmd); - flag = 1; - status = 0; - if (count == 1) + i = 1; + status = ft_atolong(cmd[1], &flag); + (void)status; + while (i < count) { - printf("exit\n"); - exit(status); + if (flag && is_num_str(cmd[i]) && ft_strlen(cmd[i]) <= 20) + { + printf("bash: exit: too many arguments\n"); + data->error_code = 1; + break ; + } + else + exit_not_num(data, cmd[i]); + ++i; } - else - arg_over_one(data, count, cmd, flag); - // free(cmd); +} + +static void exit_not_num(t_data *data, char *str) +{ + (void)data; + printf("exit\n"); + printf("bash: exit: %s: numeric argument required\n", str); + data->error_code = 255; + exit(255); +} + +static int is_num_str(char *str) +{ + int i; + + i = 0; + if (str[0] == '-' || str[0] == '+') + i++; + while (str[i]) + { + if (!('0' <= str[i] && str[i] <= '9')) + return (0); + i++; + } + return (1); } diff --git a/srcs/builtin/ft_export.c b/srcs/builtin/ft_export.c index a654888..032af09 100644 --- a/srcs/builtin/ft_export.c +++ b/srcs/builtin/ft_export.c @@ -6,56 +6,14 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 11:50:55 by kichlee #+# #+# */ -/* Updated: 2023/08/14 17:47:10 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 22:13:38 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -static void check_env(t_data *data, char *key, char *value); - -int check_equal(char *str) -{ - int i; - - i = 0; - while (str[i]) - { - if (str[i] == '=') - return (1); - ++i; - } - return (0); -} - -int plus_flag(char *str) -{ - int i; - - i = 0; - while (str[i]) - { - if (str[i] == '+') - return (1); - i++; - } - return (0); -} - -void shiftstringleft(char *str) -{ - int length; - int i; - - i = 0; - length = (int) ft_strlen(str); - while (i < length - 1) - { - str[i] = str[i + 1]; - i++; - } - str[length - 1] = '\0'; -} +void ft_export(t_data *data); +void update_env_export(t_data *data, char *key, char *value); void ft_export(t_data *data) { @@ -111,31 +69,78 @@ void ft_export(t_data *data) } -int ft_isalpha_str(char *str) -{ - int i; +// int ft_isalpha_str(char *str) +// { +// int i; - i = 0; - while (str[i]) - { - if (!((ft_isalnum(str[i]) || check_underbar(str[i])))) - return (0); - ++i; - } - return (1); -} +// i = 0; +// while (str[i]) +// { +// if (!((ft_isalnum(str[i]) || check_underbar(str[i])))) +// return (0); +// ++i; +// } +// return (1); +// } -static void check_env(t_data *data, char *key, char *value) +void update_env_export(t_data *data, char *key, char *value) { - int i; + int plus; + char *tmp; + t_list *search_list; - i = 1; - printf("check %s %s\n", key, value); - if (!check_name(key)) + plus = check_plus(key); + if (plus == TRUE) + { + int i = 0; + while (key[i] != '+') + i++; + tmp = ft_strdup(""); + tmp = ft_strncat(tmp, key, i); + search_list = env_search(data, tmp, FALSE); + } + else if(check_equal(key) == TRUE) + { + tmp = ft_strdup(""); + tmp = ft_strncat(tmp, key, ft_strlen(key) - 1); + search_list = env_search(data, tmp, FALSE); + } + else + { + tmp = ft_strdup(key); + search_list = env_search(data, tmp, FALSE); + } + if(plus == FALSE) { - printf("bash: export: '%s': not a valid identifier\n", key); - data->error_code = 1; - return ; + if(check_equal(key) == FALSE) + { + if (search_list) + return ; + ft_add_env_front(data, key, value); + } + else + { + if (search_list) + { + free(search_list->env); + if (value) + search_list->env = ft_strjoin(key, value); + else + search_list->env = ft_strdup(key); + } + else + ft_add_env_front(data, key, value); + } + } + else + { + if(search_list) + search_list->env = ft_strjoin(search_list->env, value); + else + { + tmp = ft_strncat(tmp, "=", 1); + ft_add_env_front(data, tmp, value); + } } - update_env_export(data, key, value); + free(tmp); } diff --git a/srcs/builtin/ft_export_check.c b/srcs/builtin/ft_export_check.c new file mode 100644 index 0000000..230ce9a --- /dev/null +++ b/srcs/builtin/ft_export_check.c @@ -0,0 +1,105 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_export_check.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/14 21:42:23 by eunwolee #+# #+# */ +/* Updated: 2023/08/14 22:05:18 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../incs/minishell.h" + +int check_plus(char *str); +int check_name(char *str); +int check_equal(char *str); +int check_underbar(char ch); +void check_env(t_data *data, char *key, char *value); + +int check_plus(char *str) +{ + int i; + + i = 0; + while (str[i]) + { + if (str[i] == '+') + return (1); + i++; + } + return (0); +} + +int check_name(char *str) +{ + int i; + int plus; + int j; + + j = 0; + i = 0; + plus = 0; + if(str[0] != '_' && ft_isalpha(str[0]) != 1) + return (0); + while (str[j] && str[j] != '+') + ++j; + if(str[j] == '+') + { + if(str[j + 1] != '=') + { + printf("plus condition\n"); + return (0); + } + } + plus = 0; + while (str[i] && str[i] != '=') + { + if(str[i] == '+') + ++plus; + if (str[i] != '+' && str[i] != '_' && !ft_isalnum(str[i])) + { + return (0); + } + if(plus > 1) + return (0); + ++i; + } + return (1); +} + +int check_equal(char *str) +{ + int i; + + i = 0; + while (str[i]) + { + if (str[i] == '=') + return (1); + ++i; + } + return (0); +} + +int check_underbar(char ch) +{ + if (ch == '_') + return (1); + return (0); +} + +void check_env(t_data *data, char *key, char *value) +{ + int i; + + i = 1; + if (!check_name(key)) + { + printf("bash: export: '%s': not a valid identifier\n", key); + data->error_code = 1; + return ; + } + update_env_export(data, key, value); +} diff --git a/srcs/builtin/ft_export_three.c b/srcs/builtin/ft_export_print.c similarity index 87% rename from srcs/builtin/ft_export_three.c rename to srcs/builtin/ft_export_print.c index 99a2138..0d4a2b9 100644 --- a/srcs/builtin/ft_export_three.c +++ b/srcs/builtin/ft_export_print.c @@ -12,31 +12,34 @@ #include "../incs/minishell.h" -char **check_sort(char **res, int sorted) +void print_export_order(t_data *data); +static char **sort_bubble(char **str, int size); +static char **check_sort(char **res, int sorted); +static void print_export_quote(char **order_set); + +void print_export_order(t_data *data) { int i; - char *tmp; + int lst_size; + char **order_set; + char **order_copy; + t_list *cur; i = 0; - while (!sorted) + lst_size = ft_lstsize(data->envs); + cur = data->envs; + order_copy = (char **)ft_calloc(lst_size + 1, sizeof(char *)); + while (cur) { - sorted = 1; - i = -1; - while (res[++i + 1]) - { - if (ft_strncmp(res[i], res[i + 1], ft_strlen(res[i])) > 0) - { - tmp = res[i]; - res[i] = res[i + 1]; - res[i + 1] = tmp; - sorted = 0; - } - } + order_copy[i] = ft_strdup(cur->env); + cur = cur->next; + ++i; } - return (res); + order_set = sort_bubble(order_copy, lst_size); + print_export_quote(order_set); } -char **sort_bubble(char **str, int size) +static char **sort_bubble(char **str, int size) { char **res; int sorted; @@ -58,7 +61,31 @@ char **sort_bubble(char **str, int size) return (res); } -static void print_export_quote(char **order_set) +static char **check_sort(char **res, int sorted) +{ + int i; + char *tmp; + + i = 0; + while (!sorted) + { + sorted = 1; + i = -1; + while (res[++i + 1]) + { + if (ft_strncmp(res[i], res[i + 1], ft_strlen(res[i])) > 0) + { + tmp = res[i]; + res[i] = res[i + 1]; + res[i + 1] = tmp; + sorted = 0; + } + } + } + return (res); +} + +static void print_export_quote(char **order_set) { int i; char **res_split; @@ -82,24 +109,3 @@ static void print_export_quote(char **order_set) } } -void print_export_order(t_data *data) -{ - int i; - int lst_size; - char **order_set; - char **order_copy; - t_list *cur; - - i = 0; - lst_size = ft_lstsize(data->envs); - cur = data->envs; - order_copy = (char **)ft_calloc(lst_size + 1, sizeof(char *)); - while (cur) - { - order_copy[i] = ft_strdup(cur->env); - cur = cur->next; - ++i; - } - order_set = sort_bubble(order_copy, lst_size); - print_export_quote(order_set); -} diff --git a/srcs/builtin/ft_export_two.c b/srcs/builtin/ft_export_two.c deleted file mode 100644 index 05e87d8..0000000 --- a/srcs/builtin/ft_export_two.c +++ /dev/null @@ -1,134 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_export_two.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/08/09 19:33:40 by kichlee #+# #+# */ -/* Updated: 2023/08/14 17:50:41 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../incs/minishell.h" - -int check_underbar(char ch) -{ - if (ch == '_') - return (1); - return (0); -} - -int check_name(char *str) -{ - int i; - int plus; - int j; - - j = 0; - i = 0; - plus = 0; - if(str[0] != '_' && ft_isalpha(str[0]) != 1) - return (0); - while (str[j] && str[j] != '+') - ++j; - if(str[j] == '+') - { - printf("plus : %d\n", plus); - printf("str[j - 1] : %c\n", str[j - 1]); - printf("str[j] : %c\n", str[j]); - if(str[j + 1] != '=') - { - printf("plus condition\n"); - return (0); - } - } - plus = 0; - while (str[i] && str[i] != '=') - { - if(str[i] == '+') - ++plus; - if (str[i] != '+' && str[i] != '_' && !ft_isalnum(str[i])) - { - return (0); - } - if(plus > 1) - return (0); - ++i; - } - return (1); -} - -void update_env_export(t_data *data, char *key, char *value) -{ - int flag; - char *tmp; - t_list *search_list; - - printf("key val : %s\n", key); - flag = plus_flag(key); - printf("flag %d\n", flag); - if (flag == TRUE) - { - int i = 0; - while (key[i] != '+') - i++; - tmp = ft_strdup(""); - tmp = ft_strncat(tmp, key, i); - printf("tmp first : %s\n", tmp); - search_list = env_search(data, tmp, FALSE); - } - else if(check_equal(key) == TRUE) - { - tmp = ft_strdup(""); - tmp = ft_strncat(tmp, key, ft_strlen(key) - 1); - search_list = env_search(data, tmp, FALSE); - } - else - { - tmp = ft_strdup(key); - printf("tmp %s\n", tmp); - search_list = env_search(data, tmp, FALSE); - } - if(flag == FALSE) - { - if(check_equal(key) == FALSE) - { - if (search_list) - { - printf("----------------------\n"); - return ; - } - printf("+ 가 없고 = 도 없는데, 기존에 환경변수가 없는 지점\n"); - add_env_front(data, key, value); - } - else - { - printf("+ 가 없고 = 는 있는 지점\n"); - if (search_list) - { - printf("search_list %s\n", search_list->env); - free(search_list->env); - if (value) - search_list->env = ft_strjoin(key, value); - else - search_list->env = ft_strdup(key); - } - else - add_env_front(data, key, value); - } - } - else - { - if(search_list) - search_list->env = ft_strjoin(search_list->env, value); - else - { - tmp = ft_strncat(tmp, "=", 1); - add_env_front(data, tmp, value); - } - } - free(tmp); -} - -//a -> a=b \ No newline at end of file diff --git a/srcs/builtin/builtin_utils.c b/srcs/builtin/ft_join_cmd.c similarity index 67% rename from srcs/builtin/builtin_utils.c rename to srcs/builtin/ft_join_cmd.c index fd10457..c3ae148 100644 --- a/srcs/builtin/builtin_utils.c +++ b/srcs/builtin/ft_join_cmd.c @@ -1,41 +1,21 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* builtin_utils.c :+: :+: :+: */ +/* ft_join_cmd.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/22 13:20:41 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 15:38:16 by eunwolee ### ########.fr */ +/* Created: 2023/08/14 22:15:42 by eunwolee #+# #+# */ +/* Updated: 2023/08/14 22:15:46 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../../incs/minishell.h" +#include "../incs/minishell.h" -char **input_leaf(t_leaf *com_leaf, char **input) -{ - t_leaf *leaf; - int i; - char **str; - - i = 1; - leaf = com_leaf; - str = input; - while (leaf) - { - if (leaf->right_child) - { - str[i] = leaf->right_child->token->str; - leaf = leaf->right_child; - i++; - } - else - break ; - } - return (str); -} +char **ft_join_cmd(t_leaf *com_leaf); +static char **input_leaf(t_leaf *com_leaf, char **input); -char **join_cmd(t_leaf *com_leaf) +char **ft_join_cmd(t_leaf *com_leaf) { int i; char **str; @@ -58,18 +38,25 @@ char **join_cmd(t_leaf *com_leaf) return (str); } -void ft_lstadd_front(t_list **lst, t_list *new) +static char **input_leaf(t_leaf *com_leaf, char **input) { - if (!lst || !new) - return ; - new->next = *lst; - *lst = new; -} + t_leaf *leaf; + int i; + char **str; -void add_env_front(t_data *head, char *key, char *value) -{ - if (head->envs == NULL) - head->envs = create_env_node(key, value); - else - ft_lstadd_front(&(head->envs), create_env_node(key, value)); + i = 1; + leaf = com_leaf; + str = input; + while (leaf) + { + if (leaf->right_child) + { + str[i] = leaf->right_child->token->str; + leaf = leaf->right_child; + i++; + } + else + break ; + } + return (str); } diff --git a/srcs/builtin/ft_pwd.c b/srcs/builtin/ft_pwd.c index 1fe86dd..e5ccd51 100644 --- a/srcs/builtin/ft_pwd.c +++ b/srcs/builtin/ft_pwd.c @@ -3,22 +3,22 @@ /* ::: :::::::: */ /* ft_pwd.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:24:31 by kichlee #+# #+# */ -/* Updated: 2023/08/12 18:42:29 by kichlee ### ########.fr */ +/* Updated: 2023/08/14 20:22:25 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void ft_pwd(t_data *data, t_leaf *cur_root) +void ft_pwd(void); + +void ft_pwd(void) { char *buf; size_t buf_size; - (void)data; - (void)cur_root; buf = NULL; buf_size = BUF_SIZE; while (1) diff --git a/srcs/builtin/ft_unset.c b/srcs/builtin/ft_unset.c index bfe9142..b65ab43 100644 --- a/srcs/builtin/ft_unset.c +++ b/srcs/builtin/ft_unset.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* ft_unset.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 22:51:02 by kichlee #+# #+# */ -/* Updated: 2023/08/14 11:44:24 by kichlee ### ########.fr */ +/* Updated: 2023/08/14 20:49:38 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,8 +20,8 @@ void ft_unset(t_data *data, t_leaf *cur_root) int arg_cnt; int i; - cmd = join_cmd(cur_root->left_child->right_child); - arg_cnt = count_args(cmd); + cmd = ft_join_cmd(cur_root->left_child->right_child); + arg_cnt = ft_count_args(cmd); i = 1; while (i < arg_cnt) { diff --git a/srcs/execute/checkbulitin.c b/srcs/execute/checkbulitin.c deleted file mode 100644 index 59c869e..0000000 --- a/srcs/execute/checkbulitin.c +++ /dev/null @@ -1,25 +0,0 @@ -#include "../../incs/minishell.h" - -int check_bulitin(t_data *data) -{ - int bulit; - t_leaf *temp; - - temp = data->root->left_child->right_child; - if (temp != NULL) - bulit = check_bulitin_func(temp->token->str); - if (temp == NULL) - { - check_redirect(data->root, data); - recover_std(data); - return (TRUE); - } - if (bulit != 0) - { - check_redirect(data->root, data); - exec_bulitin(bulit, data); - recover_std(data); - return (TRUE); - } - return (FALSE); -} diff --git a/srcs/execute/child.c b/srcs/execute/child.c new file mode 100644 index 0000000..88b12e8 --- /dev/null +++ b/srcs/execute/child.c @@ -0,0 +1,59 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* child.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/14 18:36:58 by eunwolee #+# #+# */ +/* Updated: 2023/08/14 18:37:20 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +void do_cmd(t_data *data); +void exec_fork(t_data *data); + +void do_cmd(t_data *data) +{ + int builtnum; + t_leaf *temp; + + temp = data->root->left_child->right_child; + if (data->info->pipe_num >= 300) + { + printf("%s\n", E_SYNTAX_PIPE); + exit(258); + } + if (temp != NULL) + builtnum = check_bulitin_func(temp->token->str); + if (data->root->left_child->left_child != NULL) + check_redirect (data->root, data); + if (temp == NULL) + exit(0); + if (builtnum != 0) + { + exec_bulitin(builtnum, data); + exit(0); + } + else + exec_fork(data); +} + +void exec_fork(t_data *data) +{ + t_pipe *base; + + base = data->pipe; + if (!data->root->left_child->right_child) + return ; + abs_path(data); + base->command = set_path(data, data->root->left_child->right_child); + if (!base->command) + { + data->error_code = 127; + exit(data->error_code); + } + execve(base->command, base->cmd_path, data->env_array); +} diff --git a/srcs/execute/execve.c b/srcs/execute/execve.c index 258131d..0994151 100644 --- a/srcs/execute/execve.c +++ b/srcs/execute/execve.c @@ -1,30 +1,20 @@ -#include "../../incs/minishell.h" +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* execve.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/14 18:31:21 by eunwolee #+# #+# */ +/* Updated: 2023/08/14 18:52:10 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ -void do_cmd(t_data *data) -{ - int builtnum; - t_leaf *temp; +#include "../../incs/minishell.h" - temp = data->root->left_child->right_child; - if (data->info->pipe_num >= 300) - { - printf("%s\n", E_SYNTAX_PIPE); - exit(258); - } - if (temp != NULL) - builtnum = check_bulitin_func(temp->token->str); - if (data->root->left_child->left_child != NULL) - check_redirect (data->root, data); - if (temp == NULL) - exit(0); - if (builtnum != 0) - { - exec_bulitin(builtnum, data); - exit(0); - } - else - exec_fork(data); -} +void execute(t_data *data); +void execute_cmd(t_data *data, int flag); +static void execute_single_cmd(t_data *data, t_pipe *base, int i, int flag); void execute(t_data *data) { @@ -45,24 +35,25 @@ void execute(t_data *data) execute_cmd(data, 0); } -void exec_fork(t_data *data) +void execute_cmd(t_data *data, int flag) { + int i; t_pipe *base; + t_leaf *head; + i = 0; base = data->pipe; - if (!data->root->left_child->right_child) - return ; - abs_path(data); - base->command = set_path(data, data->root->left_child->right_child); - if (!base->command) + head = data->root; + while (i < data->info->pipe_num + 1) { - data->error_code = 127; - exit(data->error_code); + execute_single_cmd(data, base, i, flag); + i++; } - execve(base->command, base->cmd_path, data->env_array); + data->root = head; + wait_child_processes(data); } -void execute_single_cmd(t_data *data, t_pipe *base, int i, int flag) +static void execute_single_cmd(t_data *data, t_pipe *base, int i, int flag) { if (i < data->info->pipe_num) if (pipe(base->com[i].fd) < 0) @@ -90,21 +81,3 @@ void execute_single_cmd(t_data *data, t_pipe *base, int i, int flag) if (data->info->pipe_num) close_pipe(i, base, data); } - -void execute_cmd(t_data *data, int flag) -{ - int i; - t_pipe *base; - t_leaf *head; - - i = 0; - base = data->pipe; - head = data->root; - while (i < data->info->pipe_num + 1) - { - execute_single_cmd(data, base, i, flag); - i++; - } - data->root = head; - wait_child_processes(data); -} diff --git a/srcs/execute/execve_utils.c b/srcs/execute/execve_utils.c new file mode 100644 index 0000000..973b60c --- /dev/null +++ b/srcs/execute/execve_utils.c @@ -0,0 +1,71 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* execve_utils.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/14 18:39:07 by eunwolee #+# #+# */ +/* Updated: 2023/08/14 20:16:30 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +int check_bulitin(t_data *data); +void recover_std(t_data *data); +void heredoc_flag(t_leaf *leaf, t_data *data); + +int check_bulitin(t_data *data) +{ + int bulit; + t_leaf *temp; + + temp = data->root->left_child->right_child; + if (temp != NULL) + bulit = check_bulitin_func(temp->token->str); + if (temp == NULL) + { + check_redirect(data->root, data); + recover_std(data); + return (TRUE); + } + if (bulit != 0) + { + check_redirect(data->root, data); + exec_bulitin(bulit, data); + recover_std(data); + return (TRUE); + } + return (FALSE); +} + +void recover_std(t_data *data) +{ + if (dup2(data->info->oristdin, STDIN_FILENO) == -1) + error_back_readline(data, "Bad file descriptor", EBADF, 1); + close(data->info->oristdin); + if (dup2(data->info->oristdout, STDOUT_FILENO) == -1) + error_back_readline(data, "Bad file descriptor", EBADF, 1); + close(data->info->oristdin); +} + +void heredoc_flag(t_leaf *leaf, t_data *data) +{ + if (!leaf) + return ; + if (leaf->token) + { + if (leaf->token->type == T_REDIRECT) + { + if (leaf->token->redirect_type == T_HEREDOC) + { + if (leaf->left_child == NULL) + return ; + data->info->heredoc_flag++; + } + } + } + heredoc_flag(leaf->left_child, data); + heredoc_flag(leaf->right_child, data); +} diff --git a/srcs/execute/freepipe.c b/srcs/execute/file.c similarity index 62% rename from srcs/execute/freepipe.c rename to srcs/execute/file.c index 074d93e..c7f4068 100644 --- a/srcs/execute/freepipe.c +++ b/srcs/execute/file.c @@ -1,29 +1,19 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* freepipe.c :+: :+: :+: */ +/* file.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2023/08/08 17:49:42 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 23:07:39 by kichlee ### ########.fr */ +/* Created: 2023/08/14 18:53:28 by eunwolee #+# #+# */ +/* Updated: 2023/08/14 18:53:45 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -void close_pipe(int i, t_pipe *base, t_data *data) -{ - if (i == data->info->pipe_num) - close(base->com[i - 1].fd[0]); - else if (i == 0) - close(base->com[i].fd[1]); - else - { - close(base->com[i - 1].fd[0]); - close(base->com[i].fd[1]); - } -} +void check_file(int fd, t_data *data); +void close_file(t_data *data); void check_file(int fd, t_data *data) { @@ -35,3 +25,12 @@ void check_file(int fd, t_data *data) exit(1); } } + +void close_file(t_data *data) +{ + int i; + + i = -1; + while (++i < data->info->index) + unlink(data->info->heredoc_file[i]); +} diff --git a/srcs/execute/parent.c b/srcs/execute/parent.c new file mode 100644 index 0000000..9f93885 --- /dev/null +++ b/srcs/execute/parent.c @@ -0,0 +1,55 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* parent.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/14 18:37:35 by eunwolee #+# #+# */ +/* Updated: 2023/08/14 20:16:40 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +void wait_child_processes(t_data *data); +static void check_error(int num, t_data *data); + +void wait_child_processes(t_data *data) +{ + int i; + int status; + + i = 0; + signal (SIGINT, SIG_IGN); + while (i < data->info->pipe_num + 1) + { + if (wait(&status) \ + == data->pipe->com[data->info->pipe_num].pid) + data->error_code = WEXITSTATUS(status); + if (WIFSIGNALED(status) && !data->info->heredoc_flag) + data->error_code = 128 + WTERMSIG(status); + if (WEXITSTATUS(status)) + check_error(WEXITSTATUS(status), data); + i++; + } + if (WTERMSIG (status) == 2) + ft_putendl_fd("", STDERR_FILENO); + else if (WTERMSIG (status) == 3) + ft_putendl_fd("Quit: 3", STDOUT_FILENO); + close_file(data); +} + +static void check_error(int num, t_data *data) +{ + if (num == 127) + { + printf("bash: %s: command not found\n", \ + data->root->left_child->right_child->token->str); + } + if (num == 1) + { + printf("bash: %s: No such file or directory\n", \ + data->root->left_child->right_child->token->str); + } +} diff --git a/srcs/execute/setpath.c b/srcs/execute/path.c similarity index 53% rename from srcs/execute/setpath.c rename to srcs/execute/path.c index 0323e76..87b9ac8 100644 --- a/srcs/execute/setpath.c +++ b/srcs/execute/path.c @@ -1,26 +1,42 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* path.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/14 18:43:04 by eunwolee #+# #+# */ +/* Updated: 2023/08/14 20:47:42 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "../../incs/minishell.h" +char *set_path(t_data *data, t_leaf *leaf); +void abs_path(t_data *data); static int check_path(char *str); +static char *search_path(t_pipe *base, t_data *data); +static char **get_path_envp(char **env); -char **get_path_envp(char **env) +char *set_path(t_data *data, t_leaf *leaf) { - char *path; - int i; + char *tmp; + t_pipe *base; - path = NULL; - i = 0; - if (*env == NULL) - return (NULL); - while (env[i]) + base = data->pipe; + base->cmd_path = ft_join_cmd(leaf); + if (!base->cmd_path) + exit(1); + if (check_path(base->cmd_path[0]) == 1) { - if (ft_strncmp("PATH=", env[i], 5) == 0) - { - path = env[i]; - return (ft_split(path, ':')); - } - i++; + tmp = ft_strdup(base->cmd_path[0]); + if (access(tmp, X_OK) == 0) + return (tmp); + free(tmp); + return (NULL); } - return (NULL); + else + return (search_path(base, data)); } void abs_path(t_data *data) @@ -50,28 +66,7 @@ static int check_path(char *str) return (0); } -char *set_path(t_data *data, t_leaf *leaf) -{ - char *tmp; - t_pipe *base; - - base = data->pipe; - base->cmd_path = join_cmd(leaf); - if (!base->cmd_path) - exit(1); - if (check_path(base->cmd_path[0]) == 1) - { - tmp = ft_strdup(base->cmd_path[0]); - if (access(tmp, X_OK) == 0) - return (tmp); - free(tmp); - return (NULL); - } - else - return (search_path(base, data)); -} - -char *search_path(t_pipe *base, t_data *data) +static char *search_path(t_pipe *base, t_data *data) { char *tmp; int k; @@ -92,3 +87,24 @@ char *search_path(t_pipe *base, t_data *data) } return (NULL); } + +static char **get_path_envp(char **env) +{ + char *path; + int i; + + path = NULL; + i = 0; + if (*env == NULL) + return (NULL); + while (env[i]) + { + if (ft_strncmp("PATH=", env[i], 5) == 0) + { + path = env[i]; + return (ft_split(path, ':')); + } + i++; + } + return (NULL); +} diff --git a/srcs/execute/pipe.c b/srcs/execute/pipe.c index 941e060..bcf9426 100644 --- a/srcs/execute/pipe.c +++ b/srcs/execute/pipe.c @@ -1,3 +1,15 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* pipe.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/14 18:38:38 by eunwolee #+# #+# */ +/* Updated: 2023/08/14 20:16:44 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "../../incs/minishell.h" int link_pipe(int i, t_pipe *base, t_data *data) @@ -25,52 +37,33 @@ int link_pipe(int i, t_pipe *base, t_data *data) return (0); } -void wait_child_processes(t_data *data) -{ - int i; - int status; - - i = 0; - signal (SIGINT, SIG_IGN); - while (i < data->info->pipe_num + 1) - { - if (wait(&status) \ - == data->pipe->com[data->info->pipe_num].pid) - data->error_code = WEXITSTATUS(status); - if (WIFSIGNALED(status) && !data->info->heredoc_flag) - data->error_code = 128 + WTERMSIG(status); - if (WEXITSTATUS(status)) - error_check(WEXITSTATUS(status), data); - i++; - } - if (WTERMSIG (status) == 2) - ft_putendl_fd("", STDERR_FILENO); - else if (WTERMSIG (status) == 3) - ft_putendl_fd("Quit: 3", STDOUT_FILENO); - close_file(data); -} - - - -void error_check(int num, t_data *data) +void close_pipe(int i, t_pipe *base, t_data *data) { - if (num == 127) - { - printf("bash: %s: command not found\n", \ - data->root->left_child->right_child->token->str); - } - if (num == 1) + if (i == data->info->pipe_num) + close(base->com[i - 1].fd[0]); + else if (i == 0) + close(base->com[i].fd[1]); + else { - printf("bash: %s: No such file or directory\n", \ - data->root->left_child->right_child->token->str); + close(base->com[i - 1].fd[0]); + close(base->com[i].fd[1]); } } -void close_file(t_data *data) +void count_pipe(t_data*data) { - int i; + t_leaf *temp; - i = -1; - while (++i < data->info->index) - unlink(data->info->heredoc_file[i]); + temp = data->root; + while (temp) + { + data->info->pipe_num++; + temp = temp->right_child; + } + if (data->info->pipe_num != 0) + data->info->pipe_num--; + data->pipe->com = (t_pid *)ft_calloc(data->info->pipe_num + 1, \ + sizeof(t_pid)); + if (!data->pipe->com) + program_error_exit("bash"); } diff --git a/srcs/execute/pipeutils.c b/srcs/execute/pipeutils.c deleted file mode 100644 index 3cce735..0000000 --- a/srcs/execute/pipeutils.c +++ /dev/null @@ -1,49 +0,0 @@ -#include "../../incs/minishell.h" - -void count_pipe(t_data*data) -{ - t_leaf *temp; - - temp = data->root; - while (temp) - { - data->info->pipe_num++; - temp = temp->right_child; - } - if (data->info->pipe_num != 0) - data->info->pipe_num--; - data->pipe->com = (t_pid *)ft_calloc(data->info->pipe_num + 1, \ - sizeof(t_pid)); - if (!data->pipe->com) - program_error_exit("bash"); -} - -void heredoc_flag(t_leaf *leaf, t_data *data) -{ - if (!leaf) - return ; - if (leaf->token) - { - if (leaf->token->type == T_REDIRECT) - { - if (leaf->token->redirect_type == T_HEREDOC) - { - if (leaf->left_child == NULL) - return ; - data->info->heredoc_flag++; - } - } - } - heredoc_flag(leaf->left_child, data); - heredoc_flag(leaf->right_child, data); -} - -void recover_std(t_data *data) -{ - if (dup2(data->info->oristdin, STDIN_FILENO) == -1) - error_back_readline(data, "Bad file descriptor", EBADF, 1); - close(data->info->oristdin); - if (dup2(data->info->oristdout, STDOUT_FILENO) == -1) - error_back_readline(data, "Bad file descriptor", EBADF, 1); - close(data->info->oristdin); -} diff --git a/srcs/init/init.c b/srcs/init/init.c index 2a078fc..6e83a39 100644 --- a/srcs/init/init.c +++ b/srcs/init/init.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* init.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:52 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 04:49:25 by kichlee ### ########.fr */ +/* Updated: 2023/08/14 18:29:56 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,8 +14,9 @@ void init(t_data **data, char **envp); void env_init(t_data *data, char **envp); +void pipe_init(t_pipe **pipe); +void info_init(t_info **info); -//필요하신 초기화 내용 여기 넣어주시면 됩니당 void init(t_data **data, char **envp) { *data = (t_data *)ft_calloc(1, sizeof(t_data)); @@ -45,53 +46,16 @@ void env_init(t_data *data, char **envp) void pipe_init(t_pipe **pipe) { - *pipe = (t_pipe *)malloc(sizeof(t_pipe)); + *pipe = (t_pipe *)ft_calloc(1, sizeof(t_pipe)); if (!*pipe) program_error_exit("bash"); - (*pipe)->cmd_path = NULL; - (*pipe)->command = NULL; - (*pipe)->cmd_abs = NULL; -} - -t_bool get_input(t_data *data) -{ - data->input = readline("minishell$ "); - if (!data->input) - { - printf("exit\n"); - exit(1); - } - if (!data->input[0]) - { - free(data->input); - return (FALSE); - } - add_history(data->input); - lexer(data); - if (syntax(data) == FALSE) - { - tree_clear(data->root); - ft_lstclear(&data->tokens); - free(data->input); - return (FALSE); - } - parser(data); - pipe_init(&data->pipe); - info_init(&data->info); - return (TRUE); } void info_init(t_info **info) { - *info = (t_info *)malloc(sizeof(t_info)); + *info = (t_info *)ft_calloc(1, sizeof(t_info)); if (!*info) program_error_exit("bash"); - (*info)->index = 0; - (*info)->heredoc_flag = 0; - (*info)->heredoc_file = NULL; (*info)->oristdin = dup(STDIN_FILENO); (*info)->oristdout = dup(STDOUT_FILENO); - (*info)->pipe_num = 0; - (*info)->pipe_index = 0; - (*info)->parent = 0; } diff --git a/srcs/input/get_input.c b/srcs/input/get_input.c new file mode 100644 index 0000000..6a794ab --- /dev/null +++ b/srcs/input/get_input.c @@ -0,0 +1,41 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* get_input.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/14 18:27:16 by eunwolee #+# #+# */ +/* Updated: 2023/08/14 20:17:02 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../incs/minishell.h" + +t_bool get_input(t_data *data) +{ + data->input = readline("minishell$ "); + if (!data->input) + { + printf("exit\n"); + exit(1); + } + if (!data->input[0]) + { + free(data->input); + return (FALSE); + } + add_history(data->input); + lexer(data); + if (syntax(data) == FALSE) + { + tree_clear(data->root); + ft_lstclear(&data->tokens); + free(data->input); + return (FALSE); + } + parser(data); + pipe_init(&data->pipe); + info_init(&data->info); + return (TRUE); +} diff --git a/srcs/minishell.c b/srcs/minishell.c index b1100f4..5e10ace 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -3,14 +3,13 @@ /* ::: :::::::: */ /* minishell.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 04:28:00 by kichlee ### ########.fr */ +/* Updated: 2023/08/14 20:17:28 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ - #include "../incs/minishell.h" int main(int argc, char **argv, char **envp) @@ -26,7 +25,6 @@ int main(int argc, char **argv, char **envp) program_error_exit("bash"); while (TRUE) { - // print_token(data); sig(); if (get_input(data) == FALSE) continue ; diff --git a/srcs/redirect/heredoc.c b/srcs/redirect/heredoc.c index 8062d56..9a049e0 100644 --- a/srcs/redirect/heredoc.c +++ b/srcs/redirect/heredoc.c @@ -6,12 +6,18 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:21:48 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 16:22:09 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 18:22:52 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" +int fork_heredoc(t_data *data); +static void mk_heredoc_pipe(t_data *data); +static char *mk_filename(void); +static void mk_num(char *str, int num); +static void do_heredoc(t_leaf *leaf, t_data *data); + int fork_heredoc(t_data *data) { int status; @@ -40,27 +46,25 @@ int fork_heredoc(t_data *data) return (1); } -void mk_num(char *str, int num) +static void mk_heredoc_pipe(t_data *data) { - int i; - int j; + t_leaf *pipe; - i = 0; - j = 1; - while (i < 3) + pipe = data->root; + while (pipe) { - if (i == 0) + data->info->heredoc_file[data->info->index] = mk_filename(); + if (pipe->left_child->left_child \ + && pipe->left_child->left_child->token->redirect_type == T_HEREDOC) { - str[13 + i++] = num / 100 + '0'; - num %= 100; + do_heredoc(pipe->left_child->left_child, data); + data->info->index++; } - str[13 + i++] = num / (100 / (j * 10)) + '0'; - num %= (100 / (j * 10)); - j *= 10; + pipe = pipe->right_child; } } -char *mk_filename(void) +static char *mk_filename(void) { char *str; int exist; @@ -79,38 +83,40 @@ char *mk_filename(void) return (str); } -void do_heredoc(t_leaf *leaf, t_data *data) +static void mk_num(char *str, int num) { - int fd; - t_leaf *temp; + int i; + int j; - temp = leaf; - while (temp) + i = 0; + j = 1; + while (i < 3) { - if (temp->token->redirect_type == T_HEREDOC) + if (i == 0) { - fd = open(data->info->heredoc_file[data->info->index], \ - O_WRONLY | O_CREAT | O_TRUNC, 0644); - write_str(temp->left_child->token->str, fd, data); + str[13 + i++] = num / 100 + '0'; + num %= 100; } - temp = temp ->left_child; + str[13 + i++] = num / (100 / (j * 10)) + '0'; + num %= (100 / (j * 10)); + j *= 10; } } -void mk_heredoc_pipe(t_data *data) +static void do_heredoc(t_leaf *leaf, t_data *data) { - t_leaf *pipe; + int fd; + t_leaf *temp; - pipe = data->root; - while (pipe) + temp = leaf; + while (temp) { - data->info->heredoc_file[data->info->index] = mk_filename(); - if (pipe->left_child->left_child \ - && pipe->left_child->left_child->token->redirect_type == T_HEREDOC) + if (temp->token->redirect_type == T_HEREDOC) { - do_heredoc(pipe->left_child->left_child, data); - data->info->index++; + fd = open(data->info->heredoc_file[data->info->index], \ + O_WRONLY | O_CREAT | O_TRUNC, 0644); + write_str(data, temp->left_child->token->str, fd); } - pipe = pipe->right_child; + temp = temp ->left_child; } } diff --git a/srcs/redirect/heredocutils.c b/srcs/redirect/heredoc_parser.c similarity index 92% rename from srcs/redirect/heredocutils.c rename to srcs/redirect/heredoc_parser.c index 88adc96..8c00a73 100644 --- a/srcs/redirect/heredocutils.c +++ b/srcs/redirect/heredoc_parser.c @@ -1,27 +1,27 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* heredocutils.c :+: :+: :+: */ +/* heredoc_utils.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:16:20 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 09:36:04 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 18:17:54 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" +void write_str(t_data *data, char *content, int fd); static void heredoc_parser(t_data *data, int fd, char *str); static char *heredoc_question(t_data *data, char *tmp, int *i); static char *heredoc_expand(t_data *data, char *str, char *tmp, int *i); static void heredoc_replace(t_data *data, char **tmp, char *name); -void write_str(char *content, int fd, t_data *data) +void write_str(t_data *data, char *content, int fd) { char *str; - (void)data; while (1) { str = readline ("> "); diff --git a/srcs/redirect/redirection.c b/srcs/redirect/redirect.c similarity index 85% rename from srcs/redirect/redirection.c rename to srcs/redirect/redirect.c index 0f47f81..17a7c64 100644 --- a/srcs/redirect/redirection.c +++ b/srcs/redirect/redirect.c @@ -6,13 +6,34 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:16:07 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 16:16:13 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 18:25:06 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -void do_input_redirect(t_leaf *leaf, t_data *data) +void check_redirect(t_leaf *leaf, t_data *data); +static void do_input_redirect(t_leaf *leaf, t_data *data); +static void do_output_redirect(t_leaf *leaf, t_data *data); + +void check_redirect(t_leaf *leaf, t_data *data) +{ + t_leaf *temp; + + temp = leaf->left_child->left_child; + while (temp) + { + if (temp->token->redirect_type == T_INPUT \ + ||temp->token->redirect_type == T_HEREDOC) + do_input_redirect(temp, data); + else if (temp->token->redirect_type == T_OUTPUT \ + ||temp->token->redirect_type == T_APPEND) + do_output_redirect(temp, data); + temp = temp->left_child; + } +} + +static void do_input_redirect(t_leaf *leaf, t_data *data) { int fd; t_leaf *temp; @@ -33,7 +54,7 @@ void do_input_redirect(t_leaf *leaf, t_data *data) close (fd); } -void do_output_redirect(t_leaf *leaf, t_data *data) +static void do_output_redirect(t_leaf *leaf, t_data *data) { int fd; t_leaf *temp; @@ -54,20 +75,3 @@ void do_output_redirect(t_leaf *leaf, t_data *data) dup2 (fd, STDOUT_FILENO); close (fd); } - -void check_redirect(t_leaf *leaf, t_data *data) -{ - t_leaf *temp; - - temp = leaf->left_child->left_child; - while (temp) - { - if (temp->token->redirect_type == T_INPUT \ - ||temp->token->redirect_type == T_HEREDOC) - do_input_redirect(temp, data); - else if (temp->token->redirect_type == T_OUTPUT \ - ||temp->token->redirect_type == T_APPEND) - do_output_redirect(temp, data); - temp = temp->left_child; - } -} diff --git a/srcs/signal/signal.c b/srcs/signal/signal.c index 3bca43c..43c5f18 100644 --- a/srcs/signal/signal.c +++ b/srcs/signal/signal.c @@ -6,12 +6,17 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/15 18:40:34 by kichlee #+# #+# */ -/* Updated: 2023/08/14 09:26:05 by eunwolee ### ########.fr */ +/* Updated: 2023/08/14 20:17:17 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" +void init_base(int ac); +void handle_sigint(int sig); +void child_handler(int signum); +void sig(void); + void init_base(int ac) { struct termios termi; From 864f560bcf284cea3440e4ca69e58fbae880d743 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Tue, 15 Aug 2023 12:39:25 +0900 Subject: [PATCH 33/57] =?UTF-8?q?=ED=95=A8=EC=88=98=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 6148 -> 0 bytes .vscode/settings.json | 3 +- Makefile | 3 +- incs/bulitin.h | 9 +- incs/execute.h | 12 +- incs/init.h | 3 +- incs/minishell.h | 3 +- incs/parse.h | 19 +-- incs/pipe.h | 26 --- incs/utils.h | 5 +- srcs/builtin/ft_cd.c | 26 +-- .../{ft_count_args.c => ft_cnt_args.c} | 6 +- srcs/builtin/ft_env.c | 4 +- srcs/builtin/ft_exit.c | 4 +- srcs/builtin/ft_export.c | 149 ++++++------------ srcs/builtin/ft_export_check.c | 61 +++---- srcs/builtin/ft_unset.c | 4 +- srcs/builtin/ft_update_env.c | 112 +++++++++++++ srcs/execute/pipe.c | 8 +- 19 files changed, 227 insertions(+), 230 deletions(-) delete mode 100644 .DS_Store delete mode 100644 incs/pipe.h rename srcs/builtin/{ft_count_args.c => ft_cnt_args.c} (86%) create mode 100644 srcs/builtin/ft_update_env.c diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 9be00b3e82abc53b53aee165cabbb64ae5fcc021..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~TWb?R6vxk`Tf5t!L{MzOhlM`)V8C1?QAAi`D+m>(DfYojy4$Q~>AD-To8}<| zf{zva0Q#yGzk%=SR}epmulk=$+FUC5AR=}S%>2*HoU^<0+so__5vz5ZMWP%LnJ8S1 zMO4QaALnJpGOEXdGJcFZVZ7sov4=K4pf*iF6Zp3Y@ORgsfFjzVWa|CBiLufTW$@=| z9g!YArF1fqeZc7c@sVCHX{&F-N3R_QNm?j;Wtll+{?vlGU}nw7^;X=gr*7I!YHsHt zZ*9hL=#6~Wdl2}&M(*6LI7;0h@;f3SX!;0wv=v0nxL1q2Q8N*_bva;Krq#$T_50;Y zA#YzTRtI^zf4#*0a%C{E%=0T(ZfrDm!{<@FkE@3u&1*F^mG~eK&1^wYlPK4>1`c!FIXdFIGy|@^+;p;8v?g zaLwgQw>O@2U%Yz#=Iy(K_n$tCv?Ic2W&5!H!VfyjWs0-`UY*(Jl(msv9((#MN^v(5 z)Hb4BcvJU;T}H;iSjORnoG3>HhXDUR*eF~br9-LW(}7BC0iXuD zg~1oU{!p8DKpmw+spx?*nF^JuOl>ik+Bqmtol3H75Cdb!W8)X}X8;=`G m6)C9Hax5Ia6fdC&! +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:03:26 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 22:14:52 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 00:40:38 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,22 +19,23 @@ # define LLONG_MIN -9223372036854775808ULL /*builtin*/ -void ft_export(t_data *data); -void update_env_export(t_data *data, char *key, char *value); int check_bulitin_func(char *name); void exec_bulitin(int bulitnum, t_data *data); void ft_pwd(void); void ft_echo(t_leaf *cmd); +void ft_export(t_data *data); void ft_cd(t_data *data, t_leaf *cur_root); void ft_env(t_data *data, t_leaf *cur_root); void ft_exit(t_data *data, t_leaf *cur_root); void ft_unset(t_data *data, t_leaf *cur_root); -int ft_count_args(char **args); +int ft_cnt_args(char **args); char **ft_join_cmd(t_leaf *com_leaf); long long ft_atolong(char *str, int *flag); void ft_add_env_front(t_data *head, char *key, char *value); +void ft_update_env_cd(t_data *data, char *key, char *value); +void ft_update_env_export(t_data *data, char *key, char *value); /*ft_export_print*/ void print_export_order(t_data *data); diff --git a/incs/execute.h b/incs/execute.h index 4e984ce..9f5001d 100644 --- a/incs/execute.h +++ b/incs/execute.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/08 17:49:19 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 18:58:06 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 00:54:21 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,7 +17,6 @@ t_bool get_input(t_data *data); -/*execve*/ void execute(t_data *data); void execute_cmd(t_data *data, int flag); @@ -33,27 +32,26 @@ void exec_fork(t_data *data); /*parent*/ void wait_child_processes(t_data *data); -/*redirect*/ void check_redirect(t_leaf *leaf, t_data *data); -/*heredoc*/ int fork_heredoc(t_data *data); /*heredoc_uilts*/ void write_str(t_data *data, char *content, int fd); -/*path*/ char *set_path(t_data *data, t_leaf *leaf); void abs_path(t_data *data); -/*file*/ void check_file(int fd, t_data *data); void close_file(t_data *data); -/*signal*/ void sig(void); void handle_sigint(int sig); void init_base(int ac); void child_handler(int signum); +int link_pipe(int i, t_pipe *base, t_data *data); +void close_pipe(int i, t_pipe *base, t_data *data); +void count_pipe(t_data *data); + #endif \ No newline at end of file diff --git a/incs/init.h b/incs/init.h index 52660c8..1a216c3 100644 --- a/incs/init.h +++ b/incs/init.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:29:44 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 18:30:13 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 00:45:00 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,6 @@ # include "struct.h" -/*init*/ void init(t_data **data, char **envp); void env_init(t_data *data, char **envp); void pipe_init(t_pipe **pipe); diff --git a/incs/minishell.h b/incs/minishell.h index ab9129e..b26e324 100644 --- a/incs/minishell.h +++ b/incs/minishell.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:05:33 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 09:27:42 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 00:47:03 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,7 +28,6 @@ # include "bulitin.h" # include "execute.h" # include "utils.h" -# include "pipe.h" # include "message.h" # include "../Libft/incs/libft.h" diff --git a/incs/parse.h b/incs/parse.h index e6533fb..ffd2ebd 100644 --- a/incs/parse.h +++ b/incs/parse.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/04 07:53:54 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 17:02:14 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 00:43:59 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,6 +25,15 @@ void double_quote(t_data *data, char *input, t_token **token, int *i); void lexer(t_data *data); +t_bool expand(t_data *data, t_token **token, int *i, t_bool quote); + +/*expand_check*/ +t_bool check_heredoc(t_data *data, t_token *token, int *i); +t_bool check_question(t_data *data, t_token *token, int *i); +t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote); +t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote); +t_bool check_special(t_data *data, t_token *token, int *i); + /*lexer_uitls*/ t_bool check_end(char c); t_bool check_last_blank(char *str, int i); @@ -34,13 +43,5 @@ t_bool syntax(t_data *data); void parser(t_data *data); -t_bool expand(t_data *data, t_token **token, int *i, t_bool quote); - -/*expand_check*/ -t_bool check_heredoc(t_data *data, t_token *token, int *i); -t_bool check_question(t_data *data, t_token *token, int *i); -t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote); -t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote); -t_bool check_special(t_data *data, t_token *token, int *i); #endif \ No newline at end of file diff --git a/incs/pipe.h b/incs/pipe.h deleted file mode 100644 index d3c5f98..0000000 --- a/incs/pipe.h +++ /dev/null @@ -1,26 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* pipe.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/08/13 16:03:34 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 20:48:50 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#ifndef PIPE_H -# define PIPE_H - -void count_pipe(t_data*data); -int check_bulitin(t_data *data); -void check_file(int fd, t_data *data); -void recover_std(t_data *data); -int link_pipe(int i, t_pipe *base, t_data *data); -void do_cmd(t_data *data); -void exec_fork(t_data *data); -void close_pipe(int i, t_pipe *base, t_data *data); -void close_file(t_data *data); - -#endif \ No newline at end of file diff --git a/incs/utils.h b/incs/utils.h index 3d62ccd..51c0df2 100644 --- a/incs/utils.h +++ b/incs/utils.h @@ -6,12 +6,10 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:32:09 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 16:03:25 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 00:38:27 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -//환경변수, 자료구조 및 기타 함수 - #ifndef UTILS_H # define UTILS_H @@ -39,6 +37,7 @@ void program_error_exit(char *str); void input_free(t_data *data); void data_free(t_data *data); void init_base(int ac); + /*temp.c 임시 함수*/ void tree_print(t_leaf *leaf); void print_token(t_data *data); diff --git a/srcs/builtin/ft_cd.c b/srcs/builtin/ft_cd.c index 23fe882..a252945 100644 --- a/srcs/builtin/ft_cd.c +++ b/srcs/builtin/ft_cd.c @@ -6,14 +6,13 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:31:18 by kichlee #+# #+# */ -/* Updated: 2023/08/14 22:10:19 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 00:41:11 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" void ft_cd(t_data *data, t_leaf *cur_root); -static void update_env_cd(t_data *data, char *key, char *value); static int change_directory(t_data *data, char *path); static int change_home(void); @@ -36,27 +35,8 @@ void ft_cd(t_data *data, t_leaf *cur_root) { getcwd(pwd, 1024); printf("current directory : %s\n", pwd); - update_env_cd(data, "OLDPWD", env_search(data, "PWD", TRUE)->env); - update_env_cd(data, "PWD", pwd); - } -} - -static void update_env_cd(t_data *data, char *key, char *value) -{ - t_list *tmp; - char *key_equal; - - tmp = env_search(data, key,TRUE); - if (!tmp) - ft_add_env_front(data, key, value); - else - { - free(tmp->env); - key_equal = (char *)ft_calloc(sizeof(char), ft_strlen(key) + 2); - key_equal = ft_strdup(key); - key_equal[ft_strlen(key)] = '='; - key_equal[ft_strlen(key) + 1] = '\0'; - tmp->env = ft_strjoin(key_equal, value); + ft_update_env_cd(data, "OLDPWD", env_search(data, "PWD", TRUE)->env); + ft_update_env_cd(data, "PWD", pwd); } } diff --git a/srcs/builtin/ft_count_args.c b/srcs/builtin/ft_cnt_args.c similarity index 86% rename from srcs/builtin/ft_count_args.c rename to srcs/builtin/ft_cnt_args.c index 339cf55..60883be 100644 --- a/srcs/builtin/ft_count_args.c +++ b/srcs/builtin/ft_cnt_args.c @@ -1,7 +1,7 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* ft_count_args.c :+: :+: :+: */ +/* ft_cnt_args.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ @@ -12,9 +12,9 @@ #include "../../incs/minishell.h" -int ft_count_args(char **args); +int ft_cnt_args(char **args); -int ft_count_args(char **args) +int ft_cnt_args(char **args) { int count; diff --git a/srcs/builtin/ft_env.c b/srcs/builtin/ft_env.c index c0b6506..051c71b 100644 --- a/srcs/builtin/ft_env.c +++ b/srcs/builtin/ft_env.c @@ -21,13 +21,11 @@ void ft_env(t_data *data, t_leaf *cur_root) { char **cmd; int arg_cnt; - t_list *tmp; - tmp = data->tokens; cmd = ft_join_cmd(cur_root->left_child->right_child); if (!cmd) program_error_exit("bash"); - arg_cnt = ft_count_args(cmd); + arg_cnt = ft_cnt_args(cmd); if (arg_cnt == 1) env_print(data); else if (arg_cnt != 2) diff --git a/srcs/builtin/ft_exit.c b/srcs/builtin/ft_exit.c index a3d8503..52c5935 100644 --- a/srcs/builtin/ft_exit.c +++ b/srcs/builtin/ft_exit.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:23:29 by kichlee #+# #+# */ -/* Updated: 2023/08/14 20:47:16 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 00:33:25 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,7 +26,7 @@ void ft_exit(t_data *data, t_leaf *cur_root) int flag; cmd = ft_join_cmd(cur_root->left_child->right_child); - count = ft_count_args(cmd); + count = ft_cnt_args(cmd); flag = 1; status = 0; if (count == 1) diff --git a/srcs/builtin/ft_export.c b/srcs/builtin/ft_export.c index 032af09..1a0c7f6 100644 --- a/srcs/builtin/ft_export.c +++ b/srcs/builtin/ft_export.c @@ -6,59 +6,34 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 11:50:55 by kichlee #+# #+# */ -/* Updated: 2023/08/14 22:13:38 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 00:37:50 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void ft_export(t_data *data); -void update_env_export(t_data *data, char *key, char *value); +void ft_export(t_data *data); +static int cnt_args(t_list *tmp); +static void separated_token(t_data *data, t_list **tmp); +static void combined_token(t_data *data, t_list **tmp); void ft_export(t_data *data) { - int arg_cnt; + int args; t_list *tmp; - int i; - tmp = data->tokens; - arg_cnt = 0; - while (tmp) - { - if(tmp->token->blank == 1) - ++arg_cnt; - tmp = tmp->next; - } - if (arg_cnt == 0) + args = cnt_args(data->tokens); + if (args == 0) print_export_order(data); - i = 0; tmp = data->tokens->next; - while (arg_cnt--) + while (args--) { if (check_equal(tmp->token->str) == TRUE) { if (tmp->token->str[ft_strlen(tmp->token->str) - 1] == '=') - { - if (!tmp->next) - check_env(data, tmp->token->str, NULL); - else - { - check_env(data, tmp->token->str, tmp->next->token->str); - tmp = tmp->next->next; - } - } + separated_token(data, &tmp); else - { - while (tmp->token->str[i] != '=') - i++; - i++; - char *tmp1 = (char *)ft_calloc(i, sizeof(char)); - ft_memmove(tmp1, tmp->token->str, i); - char *tmp2 = (char *)ft_calloc(ft_strlen(&tmp->token->str[i]), sizeof(char)); - ft_memmove(tmp2, &tmp->token->str[i], ft_strlen(&tmp->token->str[i])); - check_env(data, tmp1, tmp2); - tmp = tmp->next; - } + combined_token(data, &tmp); } else { @@ -66,81 +41,47 @@ void ft_export(t_data *data) tmp = tmp->next; } } - } -// int ft_isalpha_str(char *str) -// { -// int i; - -// i = 0; -// while (str[i]) -// { -// if (!((ft_isalnum(str[i]) || check_underbar(str[i])))) -// return (0); -// ++i; -// } -// return (1); -// } - -void update_env_export(t_data *data, char *key, char *value) +static int cnt_args(t_list *tmp) { - int plus; - char *tmp; - t_list *search_list; + int args; - plus = check_plus(key); - if (plus == TRUE) - { - int i = 0; - while (key[i] != '+') - i++; - tmp = ft_strdup(""); - tmp = ft_strncat(tmp, key, i); - search_list = env_search(data, tmp, FALSE); - } - else if(check_equal(key) == TRUE) - { - tmp = ft_strdup(""); - tmp = ft_strncat(tmp, key, ft_strlen(key) - 1); - search_list = env_search(data, tmp, FALSE); - } - else - { - tmp = ft_strdup(key); - search_list = env_search(data, tmp, FALSE); - } - if(plus == FALSE) + args = 0; + while (tmp) { - if(check_equal(key) == FALSE) - { - if (search_list) - return ; - ft_add_env_front(data, key, value); - } - else - { - if (search_list) - { - free(search_list->env); - if (value) - search_list->env = ft_strjoin(key, value); - else - search_list->env = ft_strdup(key); - } - else - ft_add_env_front(data, key, value); - } + if(tmp->token->blank == 1) + ++args; + tmp = tmp->next; } + return (args); +} + +static void separated_token(t_data *data, t_list **tmp) +{ + if (!(*tmp)->next) + check_env(data, (*tmp)->token->str, NULL); else { - if(search_list) - search_list->env = ft_strjoin(search_list->env, value); - else - { - tmp = ft_strncat(tmp, "=", 1); - ft_add_env_front(data, tmp, value); - } + check_env(data, (*tmp)->token->str, (*tmp)->next->token->str); + *tmp = (*tmp)->next->next; } - free(tmp); +} + +static void combined_token(t_data *data, t_list **tmp) +{ + int i; + char *str1; + char *str2; + + i = 0; + while ((*tmp)->token->str[i] != '=') + i++; + i++; + str1 = (char *)ft_calloc(i, sizeof(char)); + ft_memmove(str1, (*tmp)->token->str, i); + str2 = (char *)ft_calloc(ft_strlen(&(*tmp)->token->str[i]), sizeof(char)); + ft_memmove(str2, &(*tmp)->token->str[i], ft_strlen(&(*tmp)->token->str[i])); + check_env(data, str1, str2); + *tmp = (*tmp)->next; } diff --git a/srcs/builtin/ft_export_check.c b/srcs/builtin/ft_export_check.c index 230ce9a..a4ae85c 100644 --- a/srcs/builtin/ft_export_check.c +++ b/srcs/builtin/ft_export_check.c @@ -6,21 +6,21 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 21:42:23 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 22:05:18 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 00:41:15 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" int check_plus(char *str); -int check_name(char *str); int check_equal(char *str); +int check_name(char *str); int check_underbar(char ch); void check_env(t_data *data, char *key, char *value); int check_plus(char *str) { - int i; + int i; i = 0; while (str[i]) @@ -32,57 +32,49 @@ int check_plus(char *str) return (0); } +int check_equal(char *str) +{ + int i; + + i = 0; + while (str[i]) + { + if (str[i] == '=') + return (1); + ++i; + } + return (0); +} + int check_name(char *str) { int i; + int j; int plus; - int j; j = 0; i = 0; plus = 0; - if(str[0] != '_' && ft_isalpha(str[0]) != 1) + if (str[0] != '_' && ft_isalpha(str[0]) != 1) return (0); while (str[j] && str[j] != '+') ++j; - if(str[j] == '+') - { - if(str[j + 1] != '=') - { - printf("plus condition\n"); + if (str[j] == '+') + if (str[j + 1] != '=') return (0); - } - } plus = 0; while (str[i] && str[i] != '=') { - if(str[i] == '+') + if (str[i] == '+') ++plus; - if (str[i] != '+' && str[i] != '_' && !ft_isalnum(str[i])) - { - return (0); - } - if(plus > 1) + if ((str[i] != '+' && str[i] != '_' && !ft_isalnum(str[i])) \ + || plus > 1) return (0); ++i; } return (1); } -int check_equal(char *str) -{ - int i; - - i = 0; - while (str[i]) - { - if (str[i] == '=') - return (1); - ++i; - } - return (0); -} - int check_underbar(char ch) { if (ch == '_') @@ -92,14 +84,11 @@ int check_underbar(char ch) void check_env(t_data *data, char *key, char *value) { - int i; - - i = 1; if (!check_name(key)) { printf("bash: export: '%s': not a valid identifier\n", key); data->error_code = 1; return ; } - update_env_export(data, key, value); + ft_update_env_export(data, key, value); } diff --git a/srcs/builtin/ft_unset.c b/srcs/builtin/ft_unset.c index b65ab43..e32f20f 100644 --- a/srcs/builtin/ft_unset.c +++ b/srcs/builtin/ft_unset.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 22:51:02 by kichlee #+# #+# */ -/* Updated: 2023/08/14 20:49:38 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 00:33:28 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,7 +21,7 @@ void ft_unset(t_data *data, t_leaf *cur_root) int i; cmd = ft_join_cmd(cur_root->left_child->right_child); - arg_cnt = ft_count_args(cmd); + arg_cnt = ft_cnt_args(cmd); i = 1; while (i < arg_cnt) { diff --git a/srcs/builtin/ft_update_env.c b/srcs/builtin/ft_update_env.c new file mode 100644 index 0000000..b7fc41b --- /dev/null +++ b/srcs/builtin/ft_update_env.c @@ -0,0 +1,112 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_update_env.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/15 00:37:38 by eunwolee #+# #+# */ +/* Updated: 2023/08/15 12:34:59 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../incs/minishell.h" + +void ft_update_env_cd(t_data *data, char *key, char *value); +void ft_update_env_export(t_data *data, char *key, char *value); +static char *get_tmp_key(t_data *data, char *key, t_bool plus, t_list **search_list); +static void is_not_plus(t_data *data, char *key, char *value, t_list *search_list); +static void is_plus(t_data *data, char *tmp, char *value, t_list *search_list); + +void ft_update_env_cd(t_data *data, char *key, char *value) +{ + t_list *tmp; + char *key_equal; + + tmp = env_search(data, key,TRUE); + if (!tmp) + ft_add_env_front(data, key, value); + else + { + free(tmp->env); + key_equal = ft_strdup(key); + key_equal = ft_strncat(key_equal, "=", 1); + tmp->env = ft_strjoin(key_equal, value); + } +} + +void ft_update_env_export(t_data *data, char *key, char *value) +{ + int plus; + char *tmp; + t_list *search_list; + + plus = check_plus(key); + tmp = get_tmp_key(data, key, plus, &search_list); + if(plus == FALSE) + is_not_plus(data, key, value, search_list); + else + is_plus(data, tmp, value, search_list); + free(tmp); +} + +static char *get_tmp_key(t_data *data, char *key, t_bool plus, t_list **search_list) +{ + int i; + char *tmp; + + tmp = ft_strdup(""); + if (plus == TRUE) + { + i = 0; + while (key[i] != '+') + i++; + tmp = ft_strncat(tmp, key, i); + *search_list = env_search(data, tmp, FALSE); + } + else if(check_equal(key) == TRUE) + { + tmp = ft_strncat(tmp, key, ft_strlen(key) - 1); + *search_list = env_search(data, tmp, FALSE); + } + else + { + tmp = ft_strncat(tmp, key, ft_strlen(key)); + *search_list = env_search(data, tmp, FALSE); + } + return (tmp); +} + +static void is_not_plus(t_data *data, char *key, char *value, t_list *search_list) +{ + if(check_equal(key) == FALSE) + { + if (search_list) + return ; + ft_add_env_front(data, key, value); + } + else + { + if (search_list) + { + free(search_list->env); + if (value) + search_list->env = ft_strjoin(key, value); + else + search_list->env = ft_strdup(key); + } + else + ft_add_env_front(data, key, value); + } +} + +static void is_plus(t_data *data, char *tmp, char *value, t_list *search_list) +{ + if(search_list) + search_list->env = ft_strjoin(search_list->env, value); + else + { + tmp = ft_strncat(tmp, "=", 1); + ft_add_env_front(data, tmp, value); + } +} diff --git a/srcs/execute/pipe.c b/srcs/execute/pipe.c index bcf9426..9a79dc9 100644 --- a/srcs/execute/pipe.c +++ b/srcs/execute/pipe.c @@ -6,12 +6,16 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:38:38 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 20:16:44 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 00:46:01 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" +int link_pipe(int i, t_pipe *base, t_data *data); +void close_pipe(int i, t_pipe *base, t_data *data); +void count_pipe(t_data *data); + int link_pipe(int i, t_pipe *base, t_data *data) { if (i == data->info->pipe_num) @@ -50,7 +54,7 @@ void close_pipe(int i, t_pipe *base, t_data *data) } } -void count_pipe(t_data*data) +void count_pipe(t_data *data) { t_leaf *temp; From 2b8d1f2bd505a4349f068278ee8a115011c6513c Mon Sep 17 00:00:00 2001 From: eunwoo Date: Tue, 15 Aug 2023 14:05:34 +0900 Subject: [PATCH 34/57] leak fixing --- Libft/libft.a | Bin 0 -> 35328 bytes Libft/objs/ft_atoi.o | Bin 0 -> 880 bytes Libft/objs/ft_bzero.o | Bin 0 -> 584 bytes Libft/objs/ft_calloc.o | Bin 0 -> 696 bytes Libft/objs/ft_isalnum.o | Bin 0 -> 688 bytes Libft/objs/ft_isalpha.o | Bin 0 -> 632 bytes Libft/objs/ft_isascii.o | Bin 0 -> 592 bytes Libft/objs/ft_isdigit.o | Bin 0 -> 592 bytes Libft/objs/ft_isprint.o | Bin 0 -> 592 bytes Libft/objs/ft_itoa.o | Bin 0 -> 1128 bytes Libft/objs/ft_memchr.o | Bin 0 -> 648 bytes Libft/objs/ft_memcmp.o | Bin 0 -> 680 bytes Libft/objs/ft_memcpy.o | Bin 0 -> 680 bytes Libft/objs/ft_memmove.o | Bin 0 -> 784 bytes Libft/objs/ft_memset.o | Bin 0 -> 608 bytes Libft/objs/ft_putchar_fd.o | Bin 0 -> 624 bytes Libft/objs/ft_putendl_fd.o | Bin 0 -> 856 bytes Libft/objs/ft_putnbr_fd.o | Bin 0 -> 1048 bytes Libft/objs/ft_putstr_fd.o | Bin 0 -> 680 bytes Libft/objs/ft_split.o | Bin 0 -> 1976 bytes Libft/objs/ft_strchr.o | Bin 0 -> 672 bytes Libft/objs/ft_strdup.o | Bin 0 -> 736 bytes Libft/objs/ft_striteri.o | Bin 0 -> 624 bytes Libft/objs/ft_strjoin.o | Bin 0 -> 888 bytes Libft/objs/ft_strlcat.o | Bin 0 -> 840 bytes Libft/objs/ft_strlcpy.o | Bin 0 -> 768 bytes Libft/objs/ft_strlen.o | Bin 0 -> 624 bytes Libft/objs/ft_strmapi.o | Bin 0 -> 792 bytes Libft/objs/ft_strncat.o | Bin 0 -> 968 bytes Libft/objs/ft_strncmp.o | Bin 0 -> 776 bytes Libft/objs/ft_strnstr.o | Bin 0 -> 936 bytes Libft/objs/ft_strrchr.o | Bin 0 -> 672 bytes Libft/objs/ft_strtrim.o | Bin 0 -> 1320 bytes Libft/objs/ft_substr.o | Bin 0 -> 1000 bytes Libft/objs/ft_tolower.o | Bin 0 -> 600 bytes Libft/objs/ft_toupper.o | Bin 0 -> 600 bytes Libft/objs/get_next_line.o | Bin 0 -> 2936 bytes Libft/objs/get_next_line_utils.o | Bin 0 -> 808 bytes Libft/srcs/ft_substr.c | 4 +-- incs/bulitin.h | 4 +-- libft.a | Bin 0 -> 35328 bytes minishell | Bin 0 -> 74790 bytes objs/builtin/builtin.o | Bin 0 -> 2024 bytes objs/builtin/ft_add_env_front.o | Bin 0 -> 1312 bytes objs/builtin/ft_atolong.o | Bin 0 -> 1672 bytes objs/builtin/ft_cd.o | Bin 0 -> 2480 bytes objs/builtin/ft_cnt_args.o | Bin 0 -> 592 bytes objs/builtin/ft_echo.o | Bin 0 -> 1624 bytes objs/builtin/ft_env.o | Bin 0 -> 2360 bytes objs/builtin/ft_exit.o | Bin 0 -> 2592 bytes objs/builtin/ft_export.o | Bin 0 -> 2216 bytes objs/builtin/ft_export_check.o | Bin 0 -> 2328 bytes objs/builtin/ft_export_print.o | Bin 0 -> 2536 bytes objs/builtin/ft_join_cmd.o | Bin 0 -> 1040 bytes objs/builtin/ft_pwd.o | Bin 0 -> 1176 bytes objs/builtin/ft_unset.o | Bin 0 -> 792 bytes objs/builtin/ft_update_env.o | Bin 0 -> 2624 bytes objs/execute/child.o | Bin 0 -> 1608 bytes objs/execute/execve.o | Bin 0 -> 2464 bytes objs/execute/execve_utils.o | Bin 0 -> 1752 bytes objs/execute/file.o | Bin 0 -> 896 bytes objs/execute/parent.o | Bin 0 -> 1720 bytes objs/execute/path.o | Bin 0 -> 2472 bytes objs/execute/pipe.o | Bin 0 -> 2048 bytes objs/init/init.o | Bin 0 -> 1736 bytes objs/input/get_input.o | Bin 0 -> 1392 bytes objs/lexer/expand.o | Bin 0 -> 2312 bytes objs/lexer/expand_check.o | Bin 0 -> 3120 bytes objs/lexer/lexer.o | Bin 0 -> 2720 bytes objs/lexer/lexer_utils.o | Bin 0 -> 1144 bytes objs/lexer/quote.o | Bin 0 -> 2928 bytes objs/lexer/tokenizer.o | Bin 0 -> 2280 bytes objs/minishell.o | Bin 0 -> 1232 bytes objs/parser/parser.o | Bin 0 -> 1616 bytes objs/parser/syntax.o | Bin 0 -> 3088 bytes objs/redirect/heredoc.o | Bin 0 -> 2504 bytes objs/redirect/heredoc_parser.o | Bin 0 -> 3192 bytes objs/redirect/redirect.o | Bin 0 -> 1560 bytes objs/signal/signal.o | Bin 0 -> 1728 bytes objs/utils/env.o | Bin 0 -> 2096 bytes objs/utils/list.o | Bin 0 -> 1184 bytes objs/utils/list_clear.o | Bin 0 -> 968 bytes objs/utils/temp.o | Bin 0 -> 3880 bytes objs/utils/tree.o | Bin 0 -> 1416 bytes objs/utils/utils.o | Bin 0 -> 1584 bytes srcs/builtin/ft_add_env_front.c | 9 +++-- srcs/builtin/ft_export.c | 59 +++++++++++++++++-------------- srcs/builtin/ft_export_check.c | 14 +++++--- srcs/builtin/ft_update_env.c | 23 +++++++----- srcs/minishell.c | 6 ++-- srcs/utils/utils.c | 8 ++--- 91 files changed, 74 insertions(+), 53 deletions(-) create mode 100644 Libft/libft.a create mode 100644 Libft/objs/ft_atoi.o create mode 100644 Libft/objs/ft_bzero.o create mode 100644 Libft/objs/ft_calloc.o create mode 100644 Libft/objs/ft_isalnum.o create mode 100644 Libft/objs/ft_isalpha.o create mode 100644 Libft/objs/ft_isascii.o create mode 100644 Libft/objs/ft_isdigit.o create mode 100644 Libft/objs/ft_isprint.o create mode 100644 Libft/objs/ft_itoa.o create mode 100644 Libft/objs/ft_memchr.o create mode 100644 Libft/objs/ft_memcmp.o create mode 100644 Libft/objs/ft_memcpy.o create mode 100644 Libft/objs/ft_memmove.o create mode 100644 Libft/objs/ft_memset.o create mode 100644 Libft/objs/ft_putchar_fd.o create mode 100644 Libft/objs/ft_putendl_fd.o create mode 100644 Libft/objs/ft_putnbr_fd.o create mode 100644 Libft/objs/ft_putstr_fd.o create mode 100644 Libft/objs/ft_split.o create mode 100644 Libft/objs/ft_strchr.o create mode 100644 Libft/objs/ft_strdup.o create mode 100644 Libft/objs/ft_striteri.o create mode 100644 Libft/objs/ft_strjoin.o create mode 100644 Libft/objs/ft_strlcat.o create mode 100644 Libft/objs/ft_strlcpy.o create mode 100644 Libft/objs/ft_strlen.o create mode 100644 Libft/objs/ft_strmapi.o create mode 100644 Libft/objs/ft_strncat.o create mode 100644 Libft/objs/ft_strncmp.o create mode 100644 Libft/objs/ft_strnstr.o create mode 100644 Libft/objs/ft_strrchr.o create mode 100644 Libft/objs/ft_strtrim.o create mode 100644 Libft/objs/ft_substr.o create mode 100644 Libft/objs/ft_tolower.o create mode 100644 Libft/objs/ft_toupper.o create mode 100644 Libft/objs/get_next_line.o create mode 100644 Libft/objs/get_next_line_utils.o create mode 100644 libft.a create mode 100755 minishell create mode 100644 objs/builtin/builtin.o create mode 100644 objs/builtin/ft_add_env_front.o create mode 100644 objs/builtin/ft_atolong.o create mode 100644 objs/builtin/ft_cd.o create mode 100644 objs/builtin/ft_cnt_args.o create mode 100644 objs/builtin/ft_echo.o create mode 100644 objs/builtin/ft_env.o create mode 100644 objs/builtin/ft_exit.o create mode 100644 objs/builtin/ft_export.o create mode 100644 objs/builtin/ft_export_check.o create mode 100644 objs/builtin/ft_export_print.o create mode 100644 objs/builtin/ft_join_cmd.o create mode 100644 objs/builtin/ft_pwd.o create mode 100644 objs/builtin/ft_unset.o create mode 100644 objs/builtin/ft_update_env.o create mode 100644 objs/execute/child.o create mode 100644 objs/execute/execve.o create mode 100644 objs/execute/execve_utils.o create mode 100644 objs/execute/file.o create mode 100644 objs/execute/parent.o create mode 100644 objs/execute/path.o create mode 100644 objs/execute/pipe.o create mode 100644 objs/init/init.o create mode 100644 objs/input/get_input.o create mode 100644 objs/lexer/expand.o create mode 100644 objs/lexer/expand_check.o create mode 100644 objs/lexer/lexer.o create mode 100644 objs/lexer/lexer_utils.o create mode 100644 objs/lexer/quote.o create mode 100644 objs/lexer/tokenizer.o create mode 100644 objs/minishell.o create mode 100644 objs/parser/parser.o create mode 100644 objs/parser/syntax.o create mode 100644 objs/redirect/heredoc.o create mode 100644 objs/redirect/heredoc_parser.o create mode 100644 objs/redirect/redirect.o create mode 100644 objs/signal/signal.o create mode 100644 objs/utils/env.o create mode 100644 objs/utils/list.o create mode 100644 objs/utils/list_clear.o create mode 100644 objs/utils/temp.o create mode 100644 objs/utils/tree.o create mode 100644 objs/utils/utils.o diff --git a/Libft/libft.a b/Libft/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..29c03bcd5000b329bb0f872c68e2ecd19e3ee6d4 GIT binary patch literal 35328 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 Y5Rak0VIRf%36BZzg^YpB#yso)3u4q&a{vGU literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_atoi.o b/Libft/objs/ft_atoi.o new file mode 100644 index 0000000000000000000000000000000000000000..6af93fb94d9f00580a48389b4dde722c5e961288 GIT binary patch literal 880 zcmbVKze~eV5Wck4rdEwmAsUw~LhGc0idzQ-1qYE1-5#YX7VQrqVi%#};@Zuvqb`mP z+3KX5xH!91Qo%o<4%Y9|y!3~iJaX^dyYKG1yO;O!{q-|Wq!5Ic5cG%*6AGDyI<7T* zxp6azuDxBJ!w6>$cxggd2W6|vAw+63o$8*YRqo-Fxh@u>ij3i1h-@)m%498ZRyfZU z_J!El=*1+`R`|5P&)$Z2Y1tAqF@aJ^+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710W6Ja|1EV4v-oU z2I&Qka^N;VM%6WsHdj0+yj@uS>ON=lNy2a${wQsYu}Ib z9Cy;g*r$GwrRde9C^XB_Teck0<@`0~T?GbWMmd^G(MM?Bto4YtuxI|>FN_wz0dl%0 zjh+;B52a6f?ocDOw?2>J&dw0~^&bp=(dSg}C7*xFs_<~9q6J2>C`rtjT?gmn!paKZ w94@ZrP#*sBL|){COZexeeBxt|-MV{L_lVt^<23CgWRIoexvdS7RURMq17ML_N&o-= literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_isalnum.o b/Libft/objs/ft_isalnum.o new file mode 100644 index 0000000000000000000000000000000000000000..8311ad73435a78ccf372be4688ce3871f566087b GIT binary patch literal 688 zcmb7CJxjw-6uq(43eoD2L0!xu6tti&Iw~qSIEZv`yM#tbGrtu!Qc8_$9=2%U4OodZ)X*#d2kCYvp0S2 z#*NJmyxaE~eoDWSzGrOt8B0h}ELvckr6^r^jV*%nazGsm;5-hR+_T))RH`rkO)6D7 hof98N?47&bi5F?@RD+uTrNfFt)yNN5)Vi!6OCOCqO%MP8 literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_isalpha.o b/Libft/objs/ft_isalpha.o new file mode 100644 index 0000000000000000000000000000000000000000..f936134384ebac76d78e8c6def92e55f0fe03b61 GIT binary patch literal 632 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg{|11j7BHi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJHe0cC*9gXskeu`o2i)PU&t_~iWDg2d#K_|m-c%)FHNcpn#J zd6+p0FhQVU%s{pRkcK)H#dss2oCFX<!C2I2r91_6*7 z5C-W5*+CBY@62%V0XM_W7u*gzIanDBUo4+51q^p{pqV0Iu}q-Y@%d7~a6yQ*LezO6 zi@gMjU7s(t0;*Sop&{r6Kf_L-yF~s2X^?pj_#Jiv?VEUjIsO{Vt>Ewy0DA)_1gC*| w*o1*RK9C2Y02DfWKu^QM86?GzB+n3^RuZ3CoS0LPk;sr!l3QR1CJkWv0U(J-hX4Qo literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_isascii.o b/Libft/objs/ft_isascii.o new file mode 100644 index 0000000000000000000000000000000000000000..6895e02eb9b0f074c0d3d2b35b63434a98217467 GIT binary patch literal 592 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P08wF5<5+(=K!zK*m@PQl-1t4GZ0X+lr h8%T;DNuD7-tt39PII%c6Gm{~wB)7m2Od7!S0{}(4JCpzb literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_isdigit.o b/Libft/objs/ft_isdigit.o new file mode 100644 index 0000000000000000000000000000000000000000..922557d07d952d8a42f60e7d36dfb72bb195ae68 GIT binary patch literal 592 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P08wF5<5+(=K!zK*m@PQl-1t4GZ0X+lr h8%T;DNuD7-tt39PxS%LAuY@6|B)7m2Od7!S0|2AlJTw3R literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_itoa.o b/Libft/objs/ft_itoa.o new file mode 100644 index 0000000000000000000000000000000000000000..853a82d120c8aa5ad2a5be249327b6184fbacfa5 GIT binary patch literal 1128 zcma)6O=uHQ5T5Ne$!=o}g+jHc8}L$)LhZ!}9u}fdr3WcJc=8cae-`pnVWmPT1ab-J zCFn`PimgTU!r;henL?o87nB2o@YNZ{C|X-#0(J&8MH=exD#x z2*S%a^geIWP{?Vh=kNZ#m}7yz<}(n5=LFoW@|uLO?>w?24k1>r-CB*#;qI5@VLrz0 zsFGuxDq##;A@b$odMK3@Zd*ZLcXXpKVlK62VXi z*T8-cxEO2(16qJhLT^G@n3t8YJU`h2cKdma-I@yNnC8^gQ zYj)1LPUp6($7sq^^=*C2d^$&!J=)S=@O?KyJuhMQG=;uv@&Hy_W zVA*$Fsq9TmetdodHEYVmf%bvwU%~lGZMcVOa{CGDdyV>*tP2^R1F_6~I2g=uZ>`Qt z7x^9=sFBYOdgGkUsyOOzW?PtH{kD%RS2ZjN-z6HQB=t?g6}FPjA?p4qtZ^ zas^v}=Fh-_Vm=+%I1HcT=V4C<-0bq-D4#>#vwY8wU4F3B*rrC}@gL!1U;+{Ok}cM( edzMY2m@5>@c@lSRVcF#z73|{rMStZ_#g{+$EZs){ literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_memchr.o b/Libft/objs/ft_memchr.o new file mode 100644 index 0000000000000000000000000000000000000000..a0a51afb13a7db7b5870c94d8eaad50fab46323f GIT binary patch literal 648 zcmbVKJx{|h5WVz+qzV*?R!ZrT{)EB;-8{g?z|eusLZPS#QX&)tBO?O?{RLeaS-T~8OM=W)hv4B>fMuTGWdDyv~HWpEls`#~(v2Ny?!11Wd5 z^7^d_TE;gptO&jdZ?^ht{5rG-@S`oE7=UpR=Y{Ey;5l}IU4V^i7~IR>_>ZNJ^gO9i z^6Jz0&80-uM51hXUyPMc9n7vPS0t4(&8E;Di)P9jHJt)&Xw4SLiO$p)9mlF1D|^(u zqq(L$N^l=_#dT#G^6d9C^-|=yf8vP*dl)_x9tMYa+E;eO2rY7NF@CNegJ{3BjE!8 zgDwPd6^P13aJ*S|!;ugKlf0cb^JZpuZ}0y7?PHS2As8cWl|UAw19a>QsTwZ4G-VqvN={6D9Jbb9&I(m2z`E zuiu!UX8bCKx!^5$bJQQ>m!Zu9U)mIk0T>r?e%th4!gCw|TL2r^Fu0fZ_>X0G^f;)H zdJajw1fp}dnOHpDivuogzh^uN~>4%zDp}w^8|8YZRiTM2=6_Z+sf83}Oxc e8kO;}?EA13=5&&KiHzHE6nE(;iMvaBZO|tV&tNV9 literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_memcpy.o b/Libft/objs/ft_memcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..432a71542dd2a40a3eb37fb4330688e9c6f1b691 GIT binary patch literal 680 zcmbVKyH3L}6uluWDGIa_trY0g5iu1O=#~LC28IsZ3<^a>A|*o*urYR|U(g?5=qDiY z0l>msm=Yw0j%Fa7>)L9Nn7GpMeVu!3$9ekt{9Y!q2*yhR=yA{hVCz7lqQ94CT^=X} zB9l9)GZu7Th`4(l>jX}S_I{^5&rNi%1J*OMs#Ks`!(lH(a1lnwK`bu&S7-ebArAKP z{jp9O+V4WlM%;ndNBt$gjounC>#cwcz?j7KBRziy&$$a60&L7-@GS4~AIl!;Wl|;i zRw4QBl1!?;ELk*7oKbzlq8(`0lFGa`pjj>RNaBrZ%ugK5fs@!I72oycQjw-9^puu2 zs`reRt$M>0+>+(DQpcB@MH+rU1N*h6S>`EC=(EzCj9_ICSg$k literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_memmove.o b/Libft/objs/ft_memmove.o new file mode 100644 index 0000000000000000000000000000000000000000..9d5e31641ef589af73b037128240e95a73f0b95e GIT binary patch literal 784 zcmbVJJx>Bb5S`=D15q%6L#`LfiqSo@;$F)FQG_TH@Cqf+T&DRZ2 zDNf#j%!WUJjYs^T-$88+I<2js84BSh&JSb!J8TJY26_l(;T~4T@{IpTbWe|?JgMg# zsh12XnfFx6qKS0+#SM#g!CjEKS*}CVT;!6%?gj3b4shs^Hmu{R(B}U1tGw+OJBew( z=E-;}y+D%?bMy?iUu>8ez=Ws+*G*YoB?QkH@us!Z#U7PO6uEiK`wI_d^g`@nc(xFa zv7_P99K1K~!2Zbf6yBjXw8fKoL;a6s{k$giZGl Sy6?9x>vSIY?QMOQ4gL#Ewtlk! literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_memset.o b/Libft/objs/ft_memset.o new file mode 100644 index 0000000000000000000000000000000000000000..3524c0760ee6ccd2ade520ebc4f7777a2b686b43 GIT binary patch literal 608 zcmbVKJxc>Y5S=rLADreygo{?`B398xuF4e(78VvM>;_3rB6u<2ik6mX^9%eP=>&g( z*jPuajUX7XISbD>=Pq8r%7M4@@n#;o!#;ezeJv6>1e2o(bR?((ur)wu(ceekl>3 z$0Swb-=SAPybMuu)hYRHa24Q(TS7AclP0NG5Xk&KyyPx$2#86KKxU=qKbGFp+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*TVsc4*XM+jxbm+v!^8!jY5FJf4;wKUdwMn$I@GBtN2#3+mB1MW6!XVzMf%A-dApx6%`~d^@o?YS} zFm{4JK(r7`wMt`egs5*WdzhS!18?5EnccV9z1)Ake+?3K5kgWJs7VnA5EHK!K}FdGM2vmq=7 z5VA=66%_J5<1o>{13(IpkZ&N6y>j;sW9a|H_Z>YnPrIwl5|!Oj?Bg;St5uR*>+7PU z`t`-+KG8D#$3_9^*Q0b(De*@=LJb#;GtOTlTH`H5S1(cRMzo7{*mE{TRGud1QF`Lh zJYB2eyz*^`pZWtoPJIWtPDkiay+pHHV0dh1TD&T6AbkytyU&7T-n#@IM&XB)!+03w zPxApiBN}h(fF&k@k+%JP&~1{U0Zk^);SWZJ@(ZQxjqFov={-i-uM6jq}A%loRw~N0usA)`}D2VXDrDFqy zj&V%ZE={&d9MnbHp*Wf?D&0j$)9<{ThtJf42hKfz-}&x+_nmus^ZQRLkwy?+8lZW0 z0#L|PXw<4&;Xli?)Xv1(aWjytF6mIpSlTvj+m)J~d^>v^+g`xI_Xx=sAkewkKqebo zlv?;;q~eKplBnmidAw4;W-^D=g#^C$>&dwVLv1Fu;)zA2ViOKH4am6ylGJf7{MP%&S9glZs;_WrBRf7o1nrE@8MG2qaT$WEms+*^nTHw zFS)5uc8?WwjW){PGQJg}Veod0K(ob6{$g+LtFEtK%Qe?3H76D^~ox{DPzq{10P6$JPfp+jWZnqs$M@lRts+OVTM(p-2i z7mczn1tsnk%=5Z>7sr?xdmh^mw>kLutvEuWHPwfQLTW1&Hyu2L;y$2gw2Y3zT`9zyJUM literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_putstr_fd.o b/Libft/objs/ft_putstr_fd.o new file mode 100644 index 0000000000000000000000000000000000000000..e34149bfbdabb9b249a3d3fc46968974ecf735e1 GIT binary patch literal 680 zcmb7Bze_?<6h8VagUSLOszsY>5vrwCvbKf>hqgob6a_W2D+(^bTU-VAY}5XMbPM_e zqNTZ--V!uwVD+8bee{Bs4t(eP&X0TEJ@?(ezkVzb1qdcC1QbLh0N5(vYW25kn{-=G zAoAic@`9kLGpk%vnE=F`IXKSz#GbN^ka==;8BWg#(S_F|%$z+fS5LBv>y<{aVlyA^ z`|AZ0Bn-b{o&}x2FmqKs)|6=nVg>lFEutBKNt5I^A!fi$@D_L;I0D3^M<8eA8>0Vf zpLg^yZ3PEYhdMncKE6uFhy64U=K^%*-dwI>pIyw4;a|lh??!3VcX;fEY0?AZd)?=7 zYVu;y^;0x8l34nut-S$ecWy0y^xw(6bI6|)EjuBZOo6dW5+r-gZh#}Qps{su1dDp_ u97Vk3tBdr7gnR#riSvrjRjrh(5I1T?mD8DOT_MSNn@Xx&-PT^7o4x>P!Baf| literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_split.o b/Libft/objs/ft_split.o new file mode 100644 index 0000000000000000000000000000000000000000..0274283b48990647c87703b37087a4f2885a4d9d GIT binary patch literal 1976 zcma)7y-!n76hDs&ZT+B8h$yIq4NPjpLFr&pttJi(#4xy+3zn*lrBr;x8e;Mi784w7 zWHg~Twf+Tt6C^BbL}HASDd5l!CK@#XlUjf0e#nC^p5(rB&&NIIch0%JUH|>{&ru?a zK>Rs`Rpw1E7U(qAkhDs%>2rz?fIev-Bm1G_p3O)h;c?eM!DqZAOyJBvzm5x_^!FTjL_S&+X4Qcb! zZq*;#4OsNO>R;@BL39OJI+y3dJ7I7>2is$|flC|Cy~4`#c|ME6caOt&J3;wI54jcS zmXQCg&L22LgM7ZKW3zp;C+70`0`j1zot%?n6(RG!Fei5Ev+)vY%dhyv$Hpq5#+Fij z4mHAODIP92I>=?;B76f@EGlt!Ep|WjDV$2b5-r6=Iba1JF@`mbLE2g=&-vPQz9Rgr zv(&-3Dk1c&1GRI{kf#=MToo@kZ!m5(8eJ9m)Mu}kfKTB(FpJF)?QRK*ZtFgWErq!n z;-2qeUTamDm3}2!6Dz1^KW1qI<|<Dj=JR}MT&p=WC5MctDCIVXy%;WF-OXAN-_mf$?+<2e16>PNq>VIB1^!(Yy8Rh0M5 zYmVn-mFjWIS5W&V@Ub6e%=hqd4YHY+xfeWt&P%|?_TO0p*}5}{+wqS3Cugr?<4!0{tRl_^dqiiQ-9*X`MWHm5c7_6>X0Y@Fl3KN z{A2OTT&Gt)c|ay{-xg1@>6A?(nM;~2D`)QEpNd2xgFQBBaY4!H+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|z0xH}AHi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJIp1j+!J2h$4{Vqs{2sR7aP@yYqQ1&PTe@uhj?nRzMk@jfod z@++Vm1t@I*G>jR@4gk_nr=l2d1eB8iVu&0sP%#h#0Z0)@JOZk}14x7T+&~-v#2^4t z1HvG^AUntb|C<>uKHz5f`H-Js=L>#^oiFqmEP>{Uyx?~D$-(Gg$-&4__(FWX6bBQ7 zIYRt^}0RzA^#=r**Bv`zFr1+8K8RFAQ;)_d) Rk~4}Ja!PUw48f!U0|4h5Suy|s literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strdup.o b/Libft/objs/ft_strdup.o new file mode 100644 index 0000000000000000000000000000000000000000..ada19c5ee0486eb467f07cc0d4dbe8f7ba0b764c GIT binary patch literal 736 zcmb7CJxjw-6uoWQrlne!4(ejTrJ@DvqGJ#R2M31^ZqJfd6w)?mib@dzS-KY79PHTs z3I%_F=-?c;I5@a9Le+EA7p>yrf&0$6pYP_8ySJD338DxAe8gY}EOIbl2Id9o@1rZj z?O*~?=&OjcMP*(Ht9oil2P8ykbGP*Ehsu_M=W%Zyhr+QK*-RmX&>JTKuyC&xk+3K1GtFeTM!9w54;9W!**Z{u3_U|-Zj`4 z{2zSW(*3X%?GGL5xM}j;wC1D#!d1zCRy99Q_QOJ)I&_}84B`s;o}&552)%mh)ohz+ z758Vaow-2@>>~Gs86JA0+=p3Q-$S13x{eqOTkCz?+qqH1W4Nn568szdz#cq&S78Yp z2WP=3DuDRA6Gd=_A3$OeoWY~m(&yKl8q2dBbI0C()G+@mPh#H^$JUXdn`fb}G|f;N U)jEk<*)SS98CK0K2In%-C!!=_w*UYD literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_striteri.o b/Libft/objs/ft_striteri.o new file mode 100644 index 0000000000000000000000000000000000000000..a0a8a3eb480b1c2684ca86ec97c56499edd8e498 GIT binary patch literal 624 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg{|0V>=9Hi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJHe0A+y8gXskeu`o2i)PU&t_~iWDg2d#K_|m-c%)FHNcpn#J zd6+p0P{AKS^O%8b380}+r=l2d1d;<{h#W6aF%Sa*ND)X}0muO94*=2%K$;uG24WBZ zsR3b-UXU7c!2iPx7yni>t^C`}FmXY%{Evs+3_t(#GwcMKDYBwD{>MxHhMgRYoZTFZ z4wf8@423Vm=Su;@$Q&g9g4^Ne1Ad2{D}m}>0o5roa&+FyGC6ysoJ5PShN=l%cx z;(x21Rs!vrcz`+n8qAH*Z~{d;1^}APCIS@Y19=Pz_<%GY(6g}c1xfKE$uq>KmBbg9 V6lIpA7G*Nzl;jo|f=L6YegJtAPvQUo literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strjoin.o b/Libft/objs/ft_strjoin.o new file mode 100644 index 0000000000000000000000000000000000000000..de774eabb4c94570e4232da47ad82f2dc58cd1aa GIT binary patch literal 888 zcmb7Cze`(D6h5!lG(XxJ1RrwX><{{2W`Q@!NI}pB58`Y`C;29Ed(KuMaUFz zb1RD5pR0j%jV>zgTw~S}(s|S-y*X_B^1+vsYLYlOs|k z_@;HPT-;dAS$ebddA;;T>%~`oj+pgy(%$A*Pv-~FOHuxh&4Nw9hq))X6b@q%_Z^TB zZ~@I^fsf!za2jjqJj-6m|JVA;IPX2adDeUJJ8u_D{#fex)H;iN8JZI zv6nnGhIQPJLa&AUneRaBCQ&`?s@TE%kc@S4K4Zk{Q-;ic@AnhbveDOlTHL2r2jB58 zTI{=nyCO!ko`OE(ee}&cnlY5Z(0>??N;d3ega9*C~Ra7D~DUwX+bhuyP48q7Y-$69pR~jbIh9PwX!K zgLIa5Vk4GfAs58L?jpqaX0xX!SU4~{Z|CF9?#|wQynPNZ#u=VrDigvfoH#!mLaZ&Vul?);ln(Jx?JX9`5n*RR4p|}cd%NXa-VsNo z~UirciCu_)VbAz$X`=!>}O+uY`CF5p34wShYr+|D-8dlLI=^afYxGZc!`)I(c*v@J&*ItRsk&iTfL5-U2p literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strlcpy.o b/Libft/objs/ft_strlcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..b280b25b58ee194985258aabecda6f07dcdacef9 GIT binary patch literal 768 zcmb7Cu}eZ>5Wm;co?__|SQ06;NDx#*;U-jDLxe-yN0?!tX7!@NMR0LU2x`+&`w!fN zmbPe#hK5%VJcouhUtspT=l9Zvh7RuTclX`>zI*q*`_K2UF(QQ^Y+TSZg9sEd1vPE- zhp{_}%F_3lh%}V5j>tA4^wgO?;1D9QzMUAv4tkb=`M9?XV^h1R=+v+mB6*O_?<93` zk~`hc?FzB6HhgZ#AR>JlJSy;o!#5bsu2_Pdg!VsU9K}!w&%pU>0N%|Ld=%aX-Gs7m z4J-HZ9eoafe@IVN9=Zj!(Y>WgO$~Qm0%X1V$T9+P3pAI8MwaP|TONfzOsyKK6RqH$ z2~&$(^-{Pq3v9=z_b9Cx>JH6dHRPq@R$HSc-mqWK9By!2RYNB7lB0R2(6ZC-byKB{ z`#nlL)=))f4)G0UiYgSdXW)L!_SWkK>o^Z{Ue3WBwUX#`3#$!$Q>CSf$Kf@|_vKao zl4(TP-8?73F**b92XKVnz>g&xGQmfIp>uw%p%6dFo-U5{qf9b?{)1CF%IMkrqHPy! Frf*NVcrE|{ literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strlen.o b/Libft/objs/ft_strlen.o new file mode 100644 index 0000000000000000000000000000000000000000..e5563189f7ffb9f76d73eb6efd9f398b04828652 GIT binary patch literal 624 zcmbVKp-uxq5S^oiD>>+;grrb)5(yZBI{~f&QBgM`r38}pD6oV|5=;|R9j?Dpi6a`hzWdZqgSy Cv`MJ| literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strmapi.o b/Libft/objs/ft_strmapi.o new file mode 100644 index 0000000000000000000000000000000000000000..8eef3c68ca51aaefaa12c673617b608def692e64 GIT binary patch literal 792 zcmb7Cze_?<6h5z~sZ>f3ymHZ&s6nWfY)YuMhK7c=o0yT{uj)mC1P@w*mV}0&A;7MOPl?D zv{m}VRv>a>AM)&dsxE|?J~UMT5Mph4eeEZ9*pnix$Fmj=Tf;+^)59o4s*o!tQ>NI@ zA7t{ILaZ#g>kSn|6>dO82R{Rzd zpAgOA?vb10NIL@T8C2u=8uKrPRr70sQ@@s&NB@pAuEJ9L?w6rNr)eZ=RrIycH=b$5 zNn5D1HqTLJDlSp?dudog^R?GAoEmFJG@9r58u#*jm1EKFmKLk{FXdZZ)ZIH!@5-Oo zFPlV!WQ=!=-Nm>Ft^NsM5X7-4NDzx{s06-Q3c2b`U7_nO)qvPC#h$sFP3K9`T(X!U UkxOQ?g%oAYTye%e`E`lD082u9{Qv*} literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strncat.o b/Libft/objs/ft_strncat.o new file mode 100644 index 0000000000000000000000000000000000000000..9548586b43d63ff5f27709b1586807476c394701 GIT binary patch literal 968 zcmb7CzfTlV5T3^qcF#jj1Ig+Yf*nUfL>r~sL}?6#1qI#9Wj%uNI1XH+2{E~ZhU6NF z_ID-t516gg*w_&)td;7Wh6KAilVkbj?Y``V&@kDVdGqU=**EXt|MBT4ksuI@E8tZ= zOo2hSz}lQH7CWYr=)882&ODTsDHT@Ugc*iXOAE_OnQc#|Hw?z(+Ut@C9}m`GWl5=E zeXU*&LiMWl`g!e{Qj3pmjJ3s?N}VSFW1MM-bYwf4$+!=B6P(1ZAsGzfB=*mtZUp)r z^h4-8_$io)bC|i7doW*?Vkr*$TXMhujdt5|virM0y(5pJJ*m2`pnuwH6|sj0=rN%S ze$V)vR&giwecqnzE+E!MK6-!9UL$hJZR&A~^td18hUtcuxsUYLe}9J>KRD-?Lp|+W zjD`D{h#iW!AJ5QnfG2WISNQYjy}|Q*7s)*5;~ilBL4HYGZB7fCM~}$m{=hqqW6#bQ z%LHFbKk9hM5xE!oQ>*9>W&hccS>FWLkNzV6iOA_<5}-}=_fj>LM0b&o z_c^39(ova|-qEc$(U7vSz2BJZ<0zBRi)#&+p>`0@E&3o;s^MMnv!1ww+MvXJdyzzC-M1XRIlMH*xSG^z{WWYuH_#8vA{~b4wuP) zcgg=Kk*}A9uN`<7-X%~UL5or3>Ih( z&)Yfl8(y7BGujJ z%>h}a&-sop*Cn_(n=kjDbJXtZ4@pb&UdRnU#C=`#dXITt!`Dzz_i*(XciK90)sOW3 z+xNw1-Y1xsZ-2gwEWY7<(OMP(8lHn4hm*)N#`w@ho1@95aQ<&nq3|`OV^JRiwIA$N Wp|^giQcL{uR#nPDrM76+1^EXv5v9Wb literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strrchr.o b/Libft/objs/ft_strrchr.o new file mode 100644 index 0000000000000000000000000000000000000000..13f006b4b3c7ee1284c5c581ec3c11f49aba071a GIT binary patch literal 672 zcmbVIyH3ME5L_n#8v#iHk|9l8QUVQf=K>@O3W^kTCuBfDkPyrvC?nC(<_qF7zmU#< zfM}>gcNF;mQ($JDyEsTlNUSusyEA)pkC)HM*9wtE2wo~ciwh4xYyv8;eqRzzKj#ia zrnkW}N?I2}o&DZ03ua~1hsgS>KkRp*Z2(hk6~h36hnPRs`+LY9`eo(-4xVA~UOwYLkv-AtxJK!_ zOQX!DRJp-OHOPnOx~c`KV+For(XDa^b*Dso1)umI4c3;fls%{qsn8UBW^)VFSMZ-? znLG9Sd*9d&QrxSbl*OBQQ_O{zKi5#RjI$Qk&{a{G;9sobb7D=fRGZUDTu5;zqbO`e ObS>N6oqXNa0 zmBUg9r&_KR99OJVR+lUHgt&2aI<6Y$rLzSb{3weJvIMEoLgPHvli;ZRF(iROoW%Z% zs52qoK;|J+;9FoOxI*UIxYQy3iN?D2K4|E@V3*n*eQq>Nli$(B2q2q#x2cVD*!D8i zXWuYw`|RhuE^NenFJt%3I6d@q+c#dHd8&Md247}t7T@p!=9?KH&h?DR80?d^Cp_KU zHrMTEIokL@>*jNg50b!60#l=XFS#|_k~puLb0eI=%mA?$JVVq!#E1cdYq_qAJnqqH zic!$G(!)O6JG%Hd-X-ie)(e{0FLH({^7qh-bGyhjGV8udSq$C+r3%RTh}A9L*gZH}NZnE`wGMPDP0uhefO z{e<&pIuu{S!7)9F#G&|0#Bn#Rc`4r^F9CZK66a{~)5Kl3<{^<{@tw!}wd}}FWTk}Q zc!HnqaVU!TwXm(`yd-Tk*G;zhG09hV7HWE`p8sd2%ut`UPalY1KVXx%?}|rmz2wv$ uL$6oMyi{D}cZzkTmX<0?b?eJznSHn5JRngnluA{HN^ZG!E?oIMn0^9Qn*u!m literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_substr.o b/Libft/objs/ft_substr.o new file mode 100644 index 0000000000000000000000000000000000000000..5b0938c9201ee1626ef01ec757767c5080906d8c GIT binary patch literal 1000 zcma)5&rcIk5T0czyR}GTAg*$t#dyF2iFy#ZZ6aLIgE1U9@x+ROq%8krdO~BR zsD`Z&xsAf+O3o2G#SiPnw?e#_i|4R~qEiQQH8Hv}8qLj2;G9g}GXD3J%nW~L+iRdl zQ%iQ_%)xk)O0U`mwWhB0WUjZL0{@=*v7eU08g|PZpeO7{y`SmHI>uRnvtnxY zY#Y6uVV&pbw}W0DXg4b0pZ(+emf}IajXc+9Fwc9bqj%2L%EImL&Npxu)$h9a9ly8m zUGneICr5~I=hL5Hk(^!%?fuZg@VgkAf*pYq$vuwoP@;FrsdOxFA&!NFf3zlaY^4cl4T5gTo{ z+{PcUP|pl^a7}ESX7y*vad)(pg_PjWv`1p;Ps2t6y@#hFzuGzUJvQ~2MlC&N*0zyV j+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T0Tu25o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNe&jdCVX-&`_vTQH(bNN=X1QM2;7z7>I!YqzEL=0c3#mTL5VVAk7WL0YD4_ zAT=Ni(hIf&NRtZwJ2PB-z|FAp1-HXaj#kFP7t7~M0pr0OXr>5Q>?Kg_`h2Mq3`k;) z423WF8Fm8W46Fvk2C09*@30eS-oyjU@z-GP0EdSF*qJaPI1SXpCJf~9fjj^OAm8%= kJp~I#kQ6_XJVSh1Nqk9uX+c415kpQ%Zh;|~G=S*`08)TIf&c&j literal 0 HcmV?d00001 diff --git a/Libft/objs/get_next_line.o b/Libft/objs/get_next_line.o new file mode 100644 index 0000000000000000000000000000000000000000..dcf776a4686982b7a8e2055048374f2b6a5d706e GIT binary patch literal 2936 zcmb7GO>7%Q6rRn-@wzE>f+D#jQXGkkb6C_?2vVdVrwLLIIYd>2ICUEA4GuVVNsNjV zRWiy2DLoJY5)wZ(f`c9P&|B9hK)&RF1XLC3(YdWFD&S@#1@pc6vDdq4fsw~=-pu>` z-u&!Oe?9*DG-C!sqrYKvmj*NFXwRX~iB-Xd{@NpQ>YGRwkkw=WlLrYX+3_rG?dn{)CPL>b<68p^0EhoM(!g z*Vi&7{$An6Mj^}j@={L`107dIO{QR&>{VinMdTcX+iMpvI*Ts-JOg2LG!mluL+FhW zJ;m5v&{6aibZQhcb<%~Hz!BtswQhs`a=bHCJKkmcmBpl6UF5E1uy?(Cw}A-V z_-;4Zeiig5?S9W>(c;`|L zIPHIL@?ZUUHAh+JD9-BMsK^5`1>zc#`84C{y1*;2?#K5<<+lY}DT8&$w~ob%sa%1d zrEJRl)Abf?TSn|1!oR9=((xyiP12{>9(TKmkREJa4#Y_^*iaH4T}W>8I?~fUM4*Ek_Nj-b!FJ2WS8QUJaD0Ui@huNy|&v_ayo9Y_mqtV zqkM&ISPVLdTl>X1pZF1V(Yh2biT89Y0SwXSJ|?i{+KX9%xDuXgmF{`G@j|bKy_|}$4!s9rY@lwKOR9TeFxLM4h`2;MhfRP+p9up^&FgQ4 z(0We2j!RF_zoQ;!x}4EM`roQY_Kx%#TDS1sfTz^HI^)Me`3pY5r$P=kJ2T zwOs+F^)KZ7@@JCHXF=iGo&$v|8}EhCKd08ql8#(cG_B~2q97zcQUg7Mfo>lV4}i1I}C9id38eVq~n(zoD*X{9ARGGnZFU8 zM{UX{Zg6hT5V;I;ULCw-5fHf^P=jxqsS&<4Ht#zxuzM!`wsFyU4byM#yK8E l`+EQ4>fAcz+*CxJoLiQtf>pF^OO-1HDcYs#mN#ySd;{UChS2~3 literal 0 HcmV?d00001 diff --git a/Libft/srcs/ft_substr.c b/Libft/srcs/ft_substr.c index fc44b76..f795706 100644 --- a/Libft/srcs/ft_substr.c +++ b/Libft/srcs/ft_substr.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/14 17:55:14 by eunwolee #+# #+# */ -/* Updated: 2022/11/25 16:48:59 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 13:20:57 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,7 +24,7 @@ char *ft_substr(char const *s, unsigned int start, size_t len) size = ft_strlen(s + start); else size = len; - tmp = (char *)malloc(sizeof(char) * (size + 1)); + tmp = (char *)ft_calloc((size + 1), sizeof(char)); if (!tmp) return (0); idx = 0; diff --git a/incs/bulitin.h b/incs/bulitin.h index a056a9a..e1a09e3 100644 --- a/incs/bulitin.h +++ b/incs/bulitin.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:03:26 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 00:40:38 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 13:58:21 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -45,6 +45,6 @@ int check_plus(char *str); int check_name(char *str); int check_equal(char *str); int check_underbar(char ch); -void check_env(t_data *data, char *key, char *value); +t_bool check_env(t_data *data, char *key, char *value); #endif \ No newline at end of file diff --git a/libft.a b/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..29c03bcd5000b329bb0f872c68e2ecd19e3ee6d4 GIT binary patch literal 35328 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 Y5Rak0VIRf%36BZzg^YpB#yso)3u4q&a{vGU literal 0 HcmV?d00001 diff --git a/minishell b/minishell new file mode 100755 index 0000000000000000000000000000000000000000..8b47eb2b5dfa5cb0909b1d077c6e2e24bc6d383c GIT binary patch literal 74790 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 T-dU^O-Zg*qudmwki--R&M=83* literal 0 HcmV?d00001 diff --git a/objs/builtin/builtin.o b/objs/builtin/builtin.o new file mode 100644 index 0000000000000000000000000000000000000000..abf7adb9aceaf43ae5760c02f71db52ef3474c55 GIT binary patch literal 2024 zcmb7FO-NKx6h1cojFo?-kfk)W$<0Wql>|c*8VJpz!bPoa`R18J`keGl4oEN*go_}B z7OhGmXoP}RG0-AOf?7!t;&N&=oAw!4edpbC_4Q(gx^U+^-#Ons_r7y~X7$InpSy{w z2#tTL(F<%u(9zn_`@N_~|N4o9v};{7hS$N(UBaZ4YiHf<;Ytmky)?YdjaAs8EzZa0 zcPyxbUDcFhFik0I+MP-{*TfObXYw4D_&k4@ugNr99^{*xNME&Fm2qZLPEx7F;8qYu zQ3k}tSwKGiw)GmlPMCkB?15t+x-Lrt#OP=&Vt)zaT7g|C(lT%t`gwG2JEgN0dqZLL z|82kS(8tZ$s-?{VS}2BSqZo>BU@h~9h!#dD_X+tPAn%P*-Q)dvqLYZVc2VwPe&t}{ z9BjY-Ng4f+=uiKneoXYe0sZYV`R7D`B%ps=MxPh`fq?#N8U1_FHwE9Ha_PzBD z>cll$Tv3J1*)vP1_rh{Wt@-P|2+bGNJ`YW}M%TI|wdVSkcu!j58@v}>Lr+()b>S+# zC#(rW6Rv@-UTe92p0=TK&Mu>C(YiUAo9By|SX<>BZARCwb>^(_`Z*8Ir(R2E>p)!j z#Al7Mm*Ph~dGU#-8e=)}XMs3p34StxF@763&kztx^ByN)EFyk+YZCmXU~12=m*DZ* zSMWE&VH)lfH6np|CtnDE4Ij5h=p0`beqZ=I;dh095PnPes&HO6k6#o1Ot_ivA#;3K zQQ}v?n|$jV5N`JIGPo~HrvjW~{e{`iFe?+)eHxAoKrUR zIUQHs_*?QEK*yR$>j8YEm7TRMHIf-mxhcnU^ZDknIP}UIv#skUszx)8MLJpc31b{L aMxQZyY22Mi_ZSKT^q8SAK#$@}h<*bbgj^f| literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_add_env_front.o b/objs/builtin/ft_add_env_front.o new file mode 100644 index 0000000000000000000000000000000000000000..efe59dfabcb9781d913269f7a79f6e880578d61a GIT binary patch literal 1312 zcmb7DziU%b6h6sol2>AlU_dR185}Yg&>~oHNlgU@2aygA%1wBAr9%1=(x(>U5XjOs z;NaGbNhbdT3p%(-JBVY_=>>Ff%M)Y#&iz5s=;9&ge)s(T&gJFv&+os_5k&~X#}agh zFBvH03N(V?pn^lKN2;bfJXFY`2y8mQrW}Dkr-G}>e?U6;a%)upU zG8hrUsqWTFjxSz#ubz8lAs%j;7^CS^)XpOM;72wVWP})M(pbZJ8LGywAPEZLB=%=e z$2{HvYrrJ*5tIcksazY=cffzi^aCAF8qwaQMeR=O+IX0x@H9bTwiZ#E>_f19BlarDgsGwF8U7`JACe{eh+Oxqi~P*Tc;AktM!Ntq5jY zy$S4&h1n?zGt@kZ#F{7Ee*i84<{1tLq&U0>&l~6^b1jw2dCW!T&+-1GYnT)F3unJsc5Nb#opZN=HZTLk|1S3pG4_81 z#({4&Vh3)LdkREqZe3$uVLYP|!11^PJdcZ!4Q(6V7qxA8K4TjL%>R!|Q*-rqVb7WL zc)`B8U|(ObNo@O~R4xnGdnvZ-RnM26%AU{8nPbnddrnCOaj&=@^6IWj!l}C@-<9=V XwG0OuI;Bdb>QKest=*C*(~$B9(h2&* literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_atolong.o b/objs/builtin/ft_atolong.o new file mode 100644 index 0000000000000000000000000000000000000000..bc2f759f2ae93a8f187e9949bba41df45a9e4091 GIT binary patch literal 1672 zcmb7EPe>GD6o2FBI_p-8Ay^Bs5(I9rp+%)97b-C7P~pKt@MWv3i|ekoYYHN47?IRv zsY`TNZ)wy;=rE@g57{Z~P}g0EoH2s(v=iv|do$nYYFYT$_r34^{eJI#JKu+2-!~5s zDFouB8a%+8CNStI*synhUw){L{h?if$kl6MX0DQHLS*{JGg5&NqU%z3*S7BN5*770 zcf5uOKL(a%;gS&1)X;EGG$TfnWAS9K5LYj{K9<9>PF5OAXpBuWD8@a4Txhm(8tW0T z)5bvrgFzg`_66i|KP?`jZb%>a8kmXkF>@~5vIaK$pt7p0Y)q(g8%va%QG=zTpRBTv ztl}BUHB|w)4`iv?{DE*YfVFlk-QdH?U)No!j$tFi5)_k9)RGD!3zH z(v-TvX7s-MJk|^70sU_G&HtqiYPaXKS~WlYthlZz-fza|e4yDqlV@1z1D;v8=Z=MT zFXnHk-j~{BE3vM mJVRo*C!H3z6Ftd6k&gE#Nx<2YNhMOreoAD9hFk3w&He^jn04&{ literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_cd.o b/objs/builtin/ft_cd.o new file mode 100644 index 0000000000000000000000000000000000000000..d2317fa624dc33b1bb2e03d25f758e99f355ccb6 GIT binary patch literal 2480 zcmb7G&1)QG7=JdK=DYc>i7Aw6sWeKrG_}O7b|(?^WuN&yU+?oZ zGwa!#AiaXe;k?jxFFRXdd#~XqlPZqEH0m$v9VpeS;foS|UwDgLwI+LPEE+ zQtoOdm((s>@!z+O-s z#0&SsBi_rq*!F+d^ZYl}`f{jRf14`X;h~2}v(gocxlC&}4sF>7$=w_ycYB0fXAJs% zpl(4S`ornGHQ^Awjv7YogE1Gla+s)sI#%Blx?TH*;DZgu5x^@ve(Pz(Dy z$H0fF_Frabhhw$vyMrxrtS{fG*70m0U!w-1@^F3mTW`+i&cAz>K1dYPGs;WF8Rfma zQY`6dC6&n)gNC?}^hw@w~ia*XP9bG3;YRkw?I8 zBK3if(c3_r36Yz?exmHEkMq}nL(mt12Y?H}0pJ|)1z;SAXGT?hj2;ILLq9IC4~RY@ z?Ld^Q@<9cRKEnk^RpckXkH{k+e(D1sqx`KHf&I47eT=$&N$Avxy z9EJX*z~jIU#K&2{7##<4U41}2uPUBR#weeeJfA;-INH@`K1OXI_rC#T``196&+595 z(T{*=EpkyHe}WKFjr$lyEneNo$v7YL^&N^p0Q-0R4(tab7iK{H2rR!lY+`#^`1~sD zPvOJsM-clDi;u@0Ax{Yz@1AFWMaU_Z5lcQdUkUpeVgFLd?+DozvaIJJ%djm7`)7~` zL~URx25J)N|YGXF9+n)0eLkbUk}I=0r^ruCQVN#a*Kx6c*7~Hoxs~m zTEQ^QJWx-=Mq1;gmTXR6D&YSJUiE~28D5t)e%nbia#ysXkudc%V&JcZm1-nO=a&p@ zHw|1D4NJe8Yz?qjN|;a~RjH6nScVr%_cZ{&vJ+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(PGD6o2EmyR%x_lAsCUUWDzik{(hI!qiqMEEM6v+ow#cF0QNAM1hwDFAH^W zp}QU3P7wt=5VYW>TXczzCIqumU=ZO3+xB}i-#4yW(1W+{&-ecP-uw2O_rJdVK0~At zh=1C_6;|S4&;{_Acj}p^e)@FZ^-0DkI|4VeJSHLR%p?0KU5M!$Gt)=5(q6Rr8rNg> z0DwB#)lLN#iiEK4+xN2h1?f0hPt{=zOhq27g=Cw+gL*5=t8qgY9yExm0j>=Ebrw4u~8ltrtVhxSf z+}^GJcSNJ|EXeuUZ1x5|jlOeSLigiTJ+DU$ePX6#pr#wy>Mv@?YoUjit9k&(Cb-ms zC+PVFJzX8O7#C{&E2pu3wT$^oRb71KJ?wU4{!XgzVO9@wH!#V*Q7YW2VIRddiHpw| zbBJTAhmx`NI_*>&bh;uY=S1xLKJ%H0~rz@-{&;xt+{VjR5NWn3(wJ~oV?9ccM zh9E}PUzB%oPTm#v8spmgyc@2~cZzxUJI(r(W;)#a5@Mz_a%#Be1Y{Ml!G3o5f6`WN zU|-KR1`gk*2Kf2+Y;TA|wTE(Qt72%;$A)H(E365L^<-QJ=D|KouHNw+z4(6>+~;;m zR2c6zdbq&QSie?o?)di<$7>k05G@IPm`=P}yba$^ah7rKIeCHV2e>>c`r=gnCeHDu zl20J<1k<>8mJ>e^&;A2QB&EOla-u5zZy@pB(-mJ%6d;kBybK8_Nz<3%xRem=58s09 zVyu#4kZh|t2BocVb7&U|tMAuMX}^SzX%x)oucU2CTg4Bv4WR0KWx(!k>3%An72j7T3jJvEoQ7GF`t`TAhC)stUWKK$Yt{x%Gt}SBQk3U3d~_;LV?LEp+74k BHLm~w literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_env.o b/objs/builtin/ft_env.o new file mode 100644 index 0000000000000000000000000000000000000000..27047b3683b295221ed3d5a787d469e4adedc1fd GIT binary patch literal 2360 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 ZE2}mYgHq+3ih3FYh)-z|1Bho)!{297>`?#! literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_export_print.o b/objs/builtin/ft_export_print.o new file mode 100644 index 0000000000000000000000000000000000000000..d210f6f1bf6ae1cdf5fba54e445d4aa1028e5340 GIT binary patch literal 2536 zcmb7GUuauZ82{4SENQ!~+pM$>b=lY;t7Nz-D1$(-Q;I~GV-LQ_F-`B*;LV@j++b@R z1nR?lTX7G2P};sF#aAJL;VKj6iwyTL9PA;AgIhtIZ;24&@4M%m?B>o29ytA--}mo) z-*?VE>D|A6|9dY{h%oriFlK`nF-(l-Fkkny9)0T1HalSaq-->gK*rNxC58}=x#Y;T ze;{5l zU&>@1Q7L?sE6fX#KIhk`R9;mjoI+k)+f@{)R0AQ;KsSXc+p-VFm>6ut@*4b}1-7F^ zkAY*D=P`NknkW0>Y-j}Y|Bjv!`mwuW)VsH7ZDaLF`_{~nMr~EJX(ZJ_tm_+w{ zH)#1}+p`U;xHF;=Mcf+p|D)HNY{705dwH?PsnZ&l{@s(kHtRbe(HH2JA=ZZS|c}CU`e@`+`>~#%ujrZidd2%myj8yX^a@#@7 z=!0Ba*H;^oe$uAeq~%nL=d-+%1)2zBqk_cyku>b>~#bh`!qb0pQ| zxGm((yu0#79kt6I{LA_2yt&W)eQ_QOktg}eGm!bVCebU@sb!my>IH8<^c~pmi94BU z;*1tu)Ns{MXNz-*;tX|dv--?g9^yXGT0Aru2X}SCg?tUURK39Wknd4V+i`zzANd~CA!GF4h1syL zw}$Myi*Lf~tMX%e7iTDC{0+$d<9s{67_`NAp8JkZebK#x9{cWBUB|?k1Y_2b+ZObE zU$~!=i^ki?G5%oM`=+_pyXebzm>aP7_valmU$mEF8OthWGfu8ph?%xsw2#ufnYA*u z8A~k1VsxUMJa%lmwo6{$l literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_join_cmd.o b/objs/builtin/ft_join_cmd.o new file mode 100644 index 0000000000000000000000000000000000000000..81625599cc0f03e51d1edd1b48ef31b161a0bc11 GIT binary patch literal 1040 zcma)5&1(}u6o1=InuMsKG_ab3?L`Pmp?Xk{3)Y(lDLr^{2-}uM@^#o^OA!LSz8j(dHJ~H4f zRu;jaTVScRtB*)W67`Hs>>S|CGbT(3e`Cj=<`81->5H|gooGQSAIEOlCP#+435KN* zUc1?;dA`_gy{@;`g?P4-zEASF##u!k{Aef1H*HNL9^kwQj>}&M7!2Yb*xy537V-@8 zF=P?^9L&UdnK_pCXGVbb|1^GLos9M}MMq}WdZdzUAl{RDFk4UnbxkO*E{ zjO|$n_RrpfykT+}Uu+xS9ll3nfwB4PET!-j*eMf#kb0}L?Tf}nZIi^NFJ86lE#WoS Vwc*tojkZS(zuCF3&t5n}wkyYJd-#Gwz~_j|wh@4N4P-@X6+ne=-Br-))s)E@wo8DnL^Xkgl>LHJ+G80;RFQ{o#Z zUmzA{W8HJDT17cV`^9}OsrV~tmXHxj=vS{gMZ@DqwT4wIF&Azp($$0x#zI{*kh49& zqKBC@SYgdAVYohJo7oT+@B-AgPt$85!-2TPuJ*IFu67Rj_8KuAodK}mK@>R$oYag z;W{CAW@~mwi*lv@Yl_Bh0S>)9~K`N*{SFm{Van!u(|*=9B}7f5HHsh7rqI;b^G7 zkM1iTsD!(Ue^*?7m1O>kaC~_D_^!g7PV|@k6O?X_aCx7}_=OQJv1FXsaqAVgSY^|7 z>n@v3%Ojf?@DobNs(EGNvTK@HJ$4!;Vq6PuCFIeSk?mETMOC!`1N3@KVSrx4wxRq5 D?Axn0 literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_unset.o b/objs/builtin/ft_unset.o new file mode 100644 index 0000000000000000000000000000000000000000..a9c6031872e077f44eb11e39a6f73091cf3801cf GIT binary patch literal 792 zcmb7Cze@sf6n}b|hGhgn){;X*L_)RL5*$&`&=Aqk_LB2TD^IcO7cGKIV?ukbZf$W} z&>v7O&9$9FOOpm>pLgD=R7(#&@AJOz*Z1A~-s9){*C3IPAfoz!v=}h}G7i{|^|!ip z-Iq=WBJUi8U*LD+%%*;3x(5*R*6Q|F_v~3$t|9%Tb`eTuf+`Am!mQ=8`J`s@v2mI) zQq1csUQF2Q6LXzW^ig1MgWXZ3eMc5xMS*r~2+06MlEl9QL%!z;yao;f8-R%92&7i- zaOMU7M_Lc`+`RBtnI1`Pm2*RMfpyaqeAHBH4$TOkYgj@pW9 z)q<)O@(mo=cQ+Gw!-V)NC9d13sVPOvcb=(BAIS{`Xhdp1TCFj!XY*pYiaE;n3cq-> zyLdZSsCDW3ZM@(V>~m&pUdqeeX9d CuWuCq literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_update_env.o b/objs/builtin/ft_update_env.o new file mode 100644 index 0000000000000000000000000000000000000000..df7a70dd97740e920734d8b8c43ed3923aa9be8d GIT binary patch literal 2624 zcmb7GO=w$35FYv2@oOF1NiA?1^5eFKxRB?%p|n2KAd&`p5Tq1Sd`Pnv(zC5vkreqk zO>qyV%CUhMatf5VDFi8`cLzcnP!6G&rW8sKJxFp6FNYigq3D&W>Nor2JWF-c4y?YN z*_qjy+1Y*i@sG!U?Iwy4h<~~$DVeukJ2+zIX zsk!2(PtHs~zGH|m2FtQQ65qVX!Neh8;m zs(lpreX+of&=bG++J2wt9mE_pdiB9rz zxv;GEn)1Q1aO~`FTTDf+T~E1rBC=Jx>y<+r-<@=gSx>h9L?{l`|W5kBVWzQZamA zImlNiT0#!x%2yk9`q8BQEp&#j?Z2<iFhGNHkkY_w*ay0#ldT#Zrt_SDG zd5v?8P(QAz>EYKopRlbyuW(=cTpzv*@cq8tPv(vq@EURs%pSFWsDbHoql33W_Q50U zJJzrIA5TX|Y^FZj`mjRi!>)3(sP1qLHK`*G+yTV#EY30A`z+)8S<^kOcnSt}-W2J) zr!wA%>NTE6pi|fO98+`Uc)5i)gzxGU3TvpOCi+!0QX(yY^FYqlb-vea5 zKM@z}J=KW&#&5H85s2@nlLxZ>X&~EAYWb*^@7D5%2!`z*0NL&iQ0@!FIXS0+=$ZJ8 z!l|P`-gg9u&>b6ykeuI;JX|{WfcSPeUjjL=&w=cZKebSe=M_$+fYLvZ{l$T@PC$-h z6$t%Zvl?R>M>GQD`p>`tC>mnF0|>-?Z+VH=%{d>}d+ zd9mnzMq&>CFY>8`=L$D_Ubq+Xxq>I9iBw98<_fv2lHl)6HkrUYy(F?ZPvkSpOOjEO z#Nih6OuYO zIMBqwjXFs;OdM#!K%%?47zYOihdP+(MvWD}^WMEs9+M|I{qFhu?s=#8-VeWj{Ou&t z2*N)>=q@jGD5MX1-Hp2DnV-29&-F#-C_4lOwzNZ?IwrpF`p&ui?l8GCR$XRPCDYjT zmt;XqI)8$XDRIbBGGLO6;2`>2ZmcUp;F0?$G3L0RB(m2-K9Vd($L z(L4IoD6~`>MJknx1Bcs1aTvZ3tA|^m?Xh|-M0MBK2fHs;4ZjJl)?RP*Cp8*F&pqD* zRKmWSVU0?I8r8A?CbR^75z{wj7;7QaYV@ntyVVbL>s%l9A?(9B<*5NaPCcjg=N@ET zjl4RJ6Y5?uqK<2h`9oX%&tx8vxA*px*agQb@2xn>@Tq#0S8n2K6mC{9m(qSfd_F4j ze6&hqib@BVg}c{9%q1Y#O|x=)MGr~Y!vK0az_)XsjOv?twi;&Z&L#kC2N#g%tvG<* ze7P>NF*7($Rj#M;SoNe1G1O_`<5)|V$H_Bk6ecU^-Tj6u*$!HWXOlPd>|@J`=XKMz z)3$Dzaa+$>W0dl`Wf zx@Thx*WdOW*o}aaBHJjeNnfwD)qC*7XRoo1i>&VV1K5!!zH8D}bD4zQ6eh!G^L=fO zU-sGeeKzMd=il|&V?LXNnNK++jHGES3ENDhZ2Zf#EQatLa?muyLT)+bq%3JIrtKvX zS7%g5FRHESvRGQNlHir)QBD&p+#*kaG=tbfYd_{RnAmGpdhe#l$z@*2Lw@Pig-Zuqt?tPU>~9Fd>?1@^voc9_1~r7Rs$Rt@E=z$B{r;4n5vjkW7Lv2? z=zzb{YT2|rQ7c|`ig_XCUy15FGOo)~xC4JI8pkE2s?X&a=$^m~)AA^cFfrJOb~oWpU<|2ujc^hc1*`)*~RF_extIG5^^a-JaPcdI8~2!uC4mChuXsZ#!+Y zV0(pab3>u+z7A(9-T6eQQ*mm^a8E({KMtRLe%0Qo?U{kSguRffy=b9eFZ)hV{i2Go zyMC^LJZ9HFAeufFIm(!e}+1 zpGAH!TeHZYmPoC1zQNh@J~yD}T;GT7XLF*-XY)Rda}ECwdcCR6u;H_xT!wtMXPfT& z%MHYIXl(5<^6#gq_1hS=I_drx)cLzA*JG$z!tj4j*IVzPrnA?Md<2_!DHGNT?RSOa z%|+tH-L5}_S`H=a7oUyfi|-u7e~3?VW}BUeJUGX3nz-j_u6^Mkp0MVq&tbiTcqTaq zDu%ZbgE2(U*}oH?CHt(94138y?4cj@J8H(Uw~_11@=jdO6l#|P&pjn;&F_NhS;Tl# z^(FG$#{E8(^$GI!N}(BBUC(Rldv8qn|Jp*;?bPtFxnf@B^F<=&mcT=B~ zcoc}-xLSy>{|vwQebIja;;8wZ5YOHMqM7usr2GphUjQD1d>+XA45@!f>Q4eEApaK5 z9tUm#A<~}&;yu^-(1i2UnoKt9I<^7-Wu&+^9|-&Or2FazYqJ_0m=>?$h}5b%G1 z$DmN-Ip#Q6{my*H9D0?{zhe3a%#jm(JA&cjnU47TT5?sdbKns*@$X5LzZc`R82>WH zw_+SQ>hre{5VP9Z=g^5sNj~@th)wsZrRA2Ywp@qdESm6LvCTZJV4E)qYc;>`sGn5v hFU7S(*%HDxUAJU~fv7mh^;XMgg6HYrc?#(W#($g@9BjY2dQJ=lXaLSpnnvI1TV2SYe;8_Mni8<)0jx7ws0nvfU| z9>AFBjUMUU10*Jza53>fycmvF=BW|C>L5{>;wKuOGip z6GaHZe=+DL4>C~5AoQLW^~~dcQQx(zIMPnQ%_>b2!ZoYz;dCKp9?Z@h+G_N&#~*P% z9`2%`bL@&yok58Zdf9cX!lHD9^Qk;(8K2{gb%|Ui@E~7txs=ykQ7JsL3Wg9*D$l@Gfdidp__8JS_TVZ-BM} zKXVi7LraQ_oCNMZBXcEYsXo22eRUJPPqzlNE#!W}YkWRw9yllEKo8O%k&A0+Y>Uly zZM=!St$m7$Z=Dt1W2D)hz#bFWPXhZH^lC!Q^=YoDFGeF=b5^ds2M%(r4il|ii`1vD zOP;sKuK7GS$ag{88vYOY+O_*l)cn`l_xU_{ebr;~&m+e@WIvysJS&`?e^!AXJx-y= z*k`LJ6pJHvMaESBc^=<`&|2qtE!>HI^f1fw;*`q9{qyJks2=g%*avT?(|OCa5$+S) zUtlw*d!OTZBeP)HX2vkfx?`2xqJ!2R%6EUr*Zqh{KYj4M$Knkv#M1KNSbP=nexlrS zAik|!35eg6?c>-C@D%(Ska;(O%**)ksmnf&#emG?I`AFl-UIPo<~D$Rz^e3@q&*45 zH=EOdnA)3>2=MIJz_SP_NwJMbLA_V6LiP)`@e!!^hu@BYuK9PQ-H<*ZZPh;;b{E|n zciR)8cs*o44B0nAHVJ*n)E^7SG%Ux|U9!b3Jj}{HU$HIMDv&U%rY-_&$ppWsiv>Hs z2&!Eyo1i#O(Gl}`FI(QQtpc3LS$t|bqU;)>oMNF;&`B7T(kR*Pviu+M#<%GYRZ&LE literal 0 HcmV?d00001 diff --git a/objs/execute/file.o b/objs/execute/file.o new file mode 100644 index 0000000000000000000000000000000000000000..afd51698c33b6863b6740e99d78a08c2ca42a071 GIT binary patch literal 896 zcmb7CJxc>Y5S=r|i}-~iet{UQBB-bcVt1l;79uGughgT`N6r}WM8zgxlQv+lW%3J5 zx`2(H+E`h{?otSro)F`k+dXokjSptuyqVdVy}f<-eEaGq(g@(C9hPDz3Ij%Aj_3Wo zM7^CvdBwigQO?$;wh3V;&+JwYA>!-X@s{?z7v*q2-dn^H;#fQ7n0yG4I6TPiCTww% zIW;qTLTs%0Ip&%YhT@d!Qw4KhK#>#+pb?n-j2;Yy0bIoKM>zaF1`cC@yI`9z2G{t; z_vf9L6aPT-lAanDTB)&0g`2yH@@t6P;+-f*G&*u_ug79-w1l$_-XMmySM`wL#wfQH zTc(NwKQam%H!6`Z>hFHZE35m{X{R#B*?7O(!=(xdBI~3fDQh*QcL# zT{qk*^q$fX(>l}MSv1)jb#iXlaO--mLg(fO&w6h*hl8_%*N~NhujvO=oGcmrmA^;4 zgJ@<490pH=Q8W_;KC l;T2kDCQTw?9Udn^sbnH8_Dzd@4oTm#53=*b>m2$pz5&pPgSP+x literal 0 HcmV?d00001 diff --git a/objs/execute/parent.o b/objs/execute/parent.o new file mode 100644 index 0000000000000000000000000000000000000000..621ae409fd05124133dcd49519489852450c48f0 GIT binary patch literal 1720 zcmbVMO-vI(6n@K(T|iI}gAj>pf(ay+2pj|=N%1E!u^Kfs;h-67yM+y97rNVk5RxW% zFvf!<-ZX(DB;IY~#e|DDBM0LVZsp+3gEiLrz1>+@ix++A+c)3)`R2_`XFmS;`s*l> zLJn$CwN_RL;phvF1TaFxu1&-aus@0g_;{E{ zL&rH-M>#gW2$8UzjA2enM>U_%b3?|@^TGlmr`h*_&zhNyCmfMA=M6I{MD*%@5QBAD z5RuLW@bTJ)>xpFO56VHrPC>nGX+|;>!b$AEj=C1u-XlaWV4I+~p)9IYu5ExK^`E7( zLZ8Y@%4Ycrt?q=VR0&ZbLbm*8$Mh9ZT%P^8q?>1v^`o?2CKst*aQK zi=4AlORJoZ+>&|{szgc$HMznwCAZzT-1tg0jJ!(fbTPEnr7B)+u{Kgrm(>$$H??t1 z?+6v#dD-7dZE9JWD|W1PJ*^4kcT$FZMW2J`MSp5NY809~#LqlRP3s|kZ(f(Hx*tM6 zyWkD(gNn6d&4qWBN{8Dw^EP<%70K%l`FvEX8#fi4>=QjU67yIqz^19vql=GIC z#y4?BtM6;Y=gJnJRn2A@czx?kez%EA8(Sjp?hp3!gTEI|*oRhkFG^~|!FUg6)TYvEWzA$` zAb88t>}+C6OBrchvoc!J$mj{j$~!vtzGeahJl+VKII92`uh!H0Rl|htfX*3#w?$vtvE5_=ThB1Lqw+ z4U6|Otii&M+w0jC*cLc^>5k^-`|r}C#P{H1nTB%wfyDPEUX+-h&S1UH7z5@7xwIOkh{R*vu z#FGLN14DxtkQnMB1{*Oj+EXH>J3m6GqYDf#Lx)NXHmWh-dH3Ap<)x9@quzY?-1BqK zch7y-{rTVf{~aNU5rqE?W3+gZ!hoE_cs;NN>VZF7900j1K1PpYjfcfXh*GX|-PLog zFTC~6!k%tsM?(3Au=vd=(erE^CXd00QiYmZEtRjxf>QhQnLG)x|2<+NHFEB-Am7#1 z%3{G)*UBH4%1cV+-wfMRQdeCTyU54fJdl*s`%<2VZ4yHt%Q&1dAne5J4a6mZzD=|R z9K*PT!Sb{W_C;?9E>A22EB0%D&1&|yX`^mUb?+sp*RWLAKA!FQaq4vv*&dR9?Z<&5 zgtctX9>Ivw13!N2xi5%bL+!~FdGp4P?G)2-_Aq_OevKjRXX1^$Glo6Jvc1z14-VR2 z^7^nf)~CAQnq)uTV-q^so$R2N+o+Y->R97C>g%f8U&}SYYh%k&e+gneEJ`!H9j{VX^&wx?R?e{vHT)VHl# z{k7R9>eBT+;`|2*Y6m?S-#cfVcW}--=!c*1=FeWBw$Ht}kZm&u&TV3L5?j`9@h|S)GfDF+Rba#=Sv~o2PLH!h7?6 z>_<0V>hj$RY&q3peht+77x?wpE;a}FR)V_~;>2e+!1sdD<~wWSOrzfjpUsOnJFcI7 zcH;Z{G$(yBwitSZ8iKp}UF43LduV)_zu`6;*WV(aGd~~r=5&ux+n)z|w8!ThP2(TN zrP+nK40aAlN6+PT+cU^I)eo_IAj{%wI1pcy*YNj4>@)Ji@XI0gyRaW4O8*Fa7Wh37 zobz>!nNz@{SSR2!z=zlm?{L1WG4mM^Z%KLv$bOSRyrpRy$o_XwKVIbY9FX&8fgC@h zF>^-NPXR$LKdCXp4?6pE1F?1fAB~wiK%`Fp1myj`1oD2L04IR&0uh?d19{&wK>RkP zJ-t5qo?uomB?#cSQGN`LVq#=j^o}f4Mfb!fsDrsnXKu3{`h@5wMK`~bDTz0I`AY1^ z#s7zh|F^8;0L0zba}oXRi2g=IC*@o( zxulj|RjaJ)A)}BsVk1FDvNGWIpvQk+Rv>nUE7_O3#+^H_pg@9q-qj@ zRF`W(EU7}#DSROFnzL9f6h&FCI!=(4V^v{wNj9E-l~&x<%6X$=0`(Q6VgmJLqW=Lv CtNzvi literal 0 HcmV?d00001 diff --git a/objs/execute/pipe.o b/objs/execute/pipe.o new file mode 100644 index 0000000000000000000000000000000000000000..f1f5f9d7229b5aad7ac76932f256f4d35a710146 GIT binary patch literal 2048 zcma)7O-vI(6rQD&ZowZ&AW&ighD#fR3Kxxu$@&`)9F&kqOw3qIr46MmWr-w6Qqv3S zg+^~2;MjWh(4Hjeg`1Is@!+9)T8t(TxzwcA@6FCG+ftO5yuNw!{=PT+X8Pgx&p#&^ zQy7STTEPWc41z&E@MU2Y>Y<+`1%N(FA4~UOkJv><5a)V$Q8(A7K5=Vu;y|}nsv}VmvR)gKCpQ#C*cGJkrVBg5!V5^ibG05()uo#h)NMtUOGcr z8mr?|t;9Z7ms;}G49jk01`1z0Smm3CRdN|#*zstUfKPByRlGBXXT9HWu}i?(ZFFdr zc106@s+-NdP}1XSAh5>VT2W!?aUghuvmG&d*Za4W|Hs(=sF7o)zaM#WrGdgj)O!FX zOsc}>2uH+ykW&SYd}h7yQb}(ImfP2W^%dc;a{@!efxD@{S1X?V2kxU{>>5pQUjXKF z@~oQ1H(*?GU_9>G8jiDVTBEVACO9#o-Ska~-{ZVVZj^YTx^z8{`N(d%_@}x#fsZ{W z@M|_F5eF{O3;Y`AgwAdVwQ^*$zN;fn^iyj1uIPv2x)Ep3;6d)~9T%%OXOVoryR-`V zTKVi5k-4ni>-x>my-@Pi8!TJKeK2qr)Gp*fe)2bv6PWjCzU^M&teugC)*m3*jY#6y~Qsy=>>;zcd0En~dMYq-2`*|PTfIp&@E6FGad3LX&? zC)U&}^6t@H*^>7OzN_FY#Zcbr(zSdI_nyA*3PWBCm*?^ z?EA2{Gd8>n2@GRDOnG$^(u;k1%Ni}j+)m01KyxI{XXfyYQ6VYpr1y(bv{EzulmduhXCLWGXS83eNIyDwRm_@M2VFF@7F@c8rH&iTN-@Vj-^cWHgC& kEE=DYOJSAkCpr%WW3fbt@u`L6D2wT{@^?h6FQTlVziXtSVE_OC literal 0 HcmV?d00001 diff --git a/objs/init/init.o b/objs/init/init.o new file mode 100644 index 0000000000000000000000000000000000000000..5b9681b0f79dec0f999d8e4a36e695a36c64698d GIT binary patch literal 1736 zcmbVMO-NKx6h4!qGiEA=p^4zMt6;)}D1w1!8MT;2gpdp2I?jytXnZp~pJ@p3z!okW za2eRr*|liV?1DBef=WURTIg-+Ch zL;-^E5QM&FBLan-gkf&M|%nVb&HsLkKUuTg04x0{h1Lh&5nV;ky~ue6&2ujM zD&ImK%tNfYJX*jS`8O?MtM-=HI#H;?f3Y%D-tC}DnEcbFZYs*T9ad$p+bUjYrJg;+ z!e8vNT(56^U^TeE-r5d&ETR69y~uigksjM+?uF-2rQ2;_dIl;37)jA#UK-L@ydE*M5E7+rX0b3ZLL`7ZmoSj>GBf!~e!<~v-} zzS-C7+6PFvf|2vhcj1Fjw>&?XYD#Gg)os>|9!z8F2~sxU2$9E#yeZK~+tpQerxhd?@*3B9qA` RDdWxMM&x)|j>G7P=nvgfBeehk literal 0 HcmV?d00001 diff --git a/objs/input/get_input.o b/objs/input/get_input.o new file mode 100644 index 0000000000000000000000000000000000000000..a9a38aebab28fbb5e1de293e473370b9d7dd38cd GIT binary patch literal 1392 zcmb7EJ%|%Q6n-)1-T9aEB#7F$CxU7A&}&riAfkd`3ehX<#wD5DEo?Sxb`EnK$blAO zWxzr!&o0+lSfumhT0w2Z!s5ylS_n1~qJD38hD_GV2XDUj&3p6ho1f&vukXJP66FZS z!vws?fdhvfhhIpt3H@idu5({B8a{4w+E9B1ZFuo zK^qLlgs8@<<%i39BCBU~j_CY17PBlv33|;&tDH)@FUL%xFWy@h zgHDY}E+BUdp5_jr7!Knio_~#X+}lSS_$KfG{3e`juXbKL3CI2XxBYoYpN8wXt>G2w z?B;0zfv4~e{8>L=9-y%S<8+Rle)Okap6C;u$2W_1twS5P%$l^ed=d5c?D|v>n$Ui` zbFy~|8ur{Se-Al>)0D37=F;yawXU@_7es=6HK0oj(dbW9e~dQJTx}2N`}l!_QUJ1vGYNO^SRl1oY@$^o8ct9T1~9@v1+!~NW^QQ^4cVpr4oJ^ttt|H^8`|FV&E|H zBbkPQn8%+Ai9og`Ao5x&_qw0!xk;5IT%>n3OVFZqz6IC>vVR^F5R8o%uZ?` z2n*{W(1Qkgs30cwwA)j`%PtnI^derYBE_3YdYK#qJrs6@b^U$&-fJe)RN{j-zxVsT z?|uK?s3Q-V1Gjph6$o6Rt{5*K@TCEYTy^VWhD^eus`i*MCohr6CLb3I^eHd zs@P5-R=tl4UQUR`3sLO_36on>3nTOv@;LopHmStXHjgGV?WnKNJf2-+=xDpB zuMOkCW>@9BlcesUJd?5(&ObyhmLY4>{u`*Q zE7HFe?jOsDYVY;dvrY7U^PVXl_U{w=Kh*5iW&d|aiTnCF<|fDBTtnoCoc`iI>sV16 z_RI50o})+SIg8l)Nowa+PvZ6#>aspDR>H}xsStMT6S3PVliuX@4)TcaF^m(}UxnZQ zlj}b6OGWP0Fa7=``|hp3(?maHU$T5Jhnqe0N#Dz_>t{QBZnx@7ohLDIS3{i3pg+hv zrS9Q(*|YpSogU~;X1dMnSFJ&Pk8!rJ(|v4Yms)(k8?b+jJO*c&$aF)T!@=IA)+}tS z?`N;0FHgw{a;|?DHH0SJ-a&nPrgfWT?2i)E)qan2j@zh@_x9E=H2Yb3Pw0wW%|ob1 z4aH%oS5-@KyQG}XJVSp|y*}g5(&LdDBT8=oaaq%!0uf}fCUO2l;ERwi0AB#!g}+n4 zB9QI#K(^0GoL>O4{SM-d1MdOZ?kh3}Ujio}zX^ov#Tydm=YS_5N8k8OO#g{e zu}uF8#Cw;%1H_w{-T+#_%Rv06(r*Kw17?7*ADK}I81UbLr=ZZ|GsSC4wxzi4*DK7C zKm*C~c!l|GbWJ5*5F^?As;b`hM9L?ph%r@lhb~_w^h*prSa3B?%|*I#)$G$h#m? zpIfbH`O2zW4GLvXtBS5%7OHm9TPXJi1v%JVc}s2LD7cS9vjkiSa0AM(hf4*N-+tG;!BqbK>a11F4JXf)Dj(M&0X0bG5n%Q%~{qriWWu=^eKhEvcL86${?QnS-x?`BKERTSUiNPe+ zUxHl{SQsU`2L#Z|m^|2@KS2|9Wc@!Gn-T5n{`JU8f1R4kk@4<>1obvXsn?2_U5Xh! z_*!ZYQ_mYVdU1_@^^V>?em+XiA>NeGjX)nW-1uWO?+xERUWll@1Z-gs-r@`xAgUES~hbuV}qr8o|r1E0+S_YtiZAoJe?G9UNPsM|n}^J9?MZW+jSw3i;fuS#}EfEn)szzUCCmC7*BSv6Q@8C7&x=wl7|> vtQCz literal 0 HcmV?d00001 diff --git a/objs/lexer/lexer.o b/objs/lexer/lexer.o new file mode 100644 index 0000000000000000000000000000000000000000..6ed19071fc7c09282a0d09a2f78e1e04ebb533d5 GIT binary patch literal 2720 zcmb7GO>7%Q6n>kv;|+njfk=f4$>pa~a#%#mUy!I|5s(ndp+c45Hf-%}W7V-!XAu#( zxXQ(-NYoNY96(Ju*%y=phpfb*h)X!pUJwTkO(P`xfJARuRAaukGvkgoZUQ6CzIkuI zdGF2p+1X$I{_~$li7dk4M+$R`7bh?=p2D1q-^T2|$K1FS{iZOQ&p^!6Ry%|U{MA4) zAVQpb`-5{2c)i+8%N6Sz!}6#@G|i$E)tTraL}4YUl`0pNAgNF5QR=9{&KQGrn*;i) zOUqs%5Fb@OE>(&`EWBmD-%^U|N_Y+W_-vc-k7I^0r1CTbPh!fjJO(f(27_3B3;U)( z?@SQg1f9e@i^+ps<;i;iBS8N5=>J5wduwCu-a0im)^mIP424kg#hnaAolHJ*EV|dp zTtB`|^cw7Nh_7Kb8N<9o^~YQDIWC3i*1FhptbEj-7hAJwnrcJt{5X3Rve%*Ka_89f zxSFr}JRwzN~S*wfT16whpXo6_+SCMWJ4Ee+>LmwQgAxSGBDNxItVa2YZ}DdU;r9 zKI9&zpSyEhTTV*mWyYv~La)njL_V|_%Q%uaUEl1>1aNVDa0VS8ix;(9b}R zf^NV%?mYJ^MH`^l;&M^49egiiJ1;&t5KRlJVVcZvNi=5a9nKQIqIYuNh|yung6!EYq^&lCK~1kcT9>f^P^ zUrF#BKl43_pnA!#2(MTa<xb|Db>o2nGNfXdr5N*Fu^S!`_rJ9eY+~HS>1P7Kq S&~mV}d^&!fil3Z!9{&OtRdmq+ literal 0 HcmV?d00001 diff --git a/objs/lexer/lexer_utils.o b/objs/lexer/lexer_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..413c2c8a7035b89fc4921577358084decaa905a6 GIT binary patch literal 1144 zcmbVKJxtqB5I#d_EV(5`LZW3!mP&~#L}6%Qv--1jKqy1E*EETgh!BWyR3w&ESy+*} z!w7p9Z%A~YQ^kT9I)qMkrAqCFE2Zvt&-WA~n0oTPd-vVF@9v)8*FQi1-X*dK!b=9) z;7tJvc?b>k?)JqUOYmLIKxF(ZU{(o}QeJ)A8*wOAe)Xn2^3Cp>@Gu{rJslU04E0P7 zTcxTS>zkFTr@HO;&2~+x*DurYf$+Q)umK)?bRia7)0)m$#QFf59J_~PD1?(3|AliC zur4lW3D$wGKv_74mH9d6e%JV>*fr3nE_VMkjD&tnc;-ahC5?N zL-+^%{M9Aq`JScdu&=JdtQ(aq*Ds+D`V#VQ`e;*9yCL%&ATL0kjXaCzfODeM0mP-9*wM literal 0 HcmV?d00001 diff --git a/objs/lexer/quote.o b/objs/lexer/quote.o new file mode 100644 index 0000000000000000000000000000000000000000..d32bab96f697a3259e009da307c4c46ecd231eb8 GIT binary patch literal 2928 zcmds3&1)M+6ra_~);dZn3<_#P!D&lDfhwdSNfW4HsS|J@;5Out+fR}bgAvdd_y1zFc$!IsB&9wuwZ{ED` zH}B2PuYW!L`ygW$!=O(bbCVWFFfrc7JR_(AjeN=px%Ei#Xq>ib+Dd|Rue9PR1c39) z=dWCTf$Plst@bw^7|NV?4def5P# zzTolY+Ko!B$oa){CjFuEtD`nM&_}U7hJVV&h{_Y7y@e^$@&=eOF^Gxwodb-~&LhA( zfJw~HFlp%A5iit>Gok(08T(u8x8Z7RW4OlJowcdGog^FVCfJ~#a0gk-^_?*`nYEbT zUE_PSchqY6PNjdwxyu%V#J$508T%N%r-P(Ba4dH)HOYL!JK(213wr_NV$ju#w=TiA z^~VXx^HQCedxs}j>r&rl{;VZ+NBAshI{=TcZM*(#jGYeK-G$v=!u83f6PGe& z4#&8?zn>w$ci=b4k{szAu70|KJhdO#{P%s^LcZ*cA@Gike5H`D4D)+)>@4wiZR9B< zbJU-EaMrOVt_M1%6!VcwkuQ_a(eZ#T;z_wa@+#s9GV%-p*yzK*m&tWw>I_owdCVQ` z%(3=+$RYV3h&?tS=zs=W&&+cJ&-a*Z9qUh9Q=91RbQbbmtVK?@_~vkRW&^RmItQqm z9{h(LU&oWRjaZS>=e6^dJd0T~7bg7!(2=vOqCWxc0_ul+Iy%M{FHk+gH}pqZ#^(-1 zUX%{Yn)ogpzsl=>&cVONjb6Er^WVk!_Yiv@wnzGf>cEWYTN(57exdU)`vv?Ii|7}~ zQNPUSeo=K{#wdD_bn4nl8vPQst?LUsA`eN|znPTv717z2e%_3no$Dj_lg`iReHBaD zs5^>PzxKj>aC&WB`r&`CWLmcjL(4%fnMCBLKWk=$$bQ^@y7 zp454C)!n9h_auDzKlkH&ehJt4=s1o8!=UHM$WZ$%{tEg@^;h1LQW5zN=_ihHMe;@H zU#p+HdILr1KcF!1&&k~ZgsO|{5>8hE@oUd{kjMKf_X!|`bEsGPr{{`5h~9w^T+bZ@ zBs~rw>4{4?y$!#J&jBQQ9FXYrkN}+ChA`3J0VF$rA{LNx4M5V{l5qSB1ziP?CT*o&LtT=*QrB`7Mk60-QX1qSDC5;v9%kwX=(n=#=E3&G$&^RH!ABpdA_7AqK Bv?l-n literal 0 HcmV?d00001 diff --git a/objs/lexer/tokenizer.o b/objs/lexer/tokenizer.o new file mode 100644 index 0000000000000000000000000000000000000000..4d0c655b7cfc8e62805a4c52138ca4b752841d9c GIT binary patch literal 2280 zcmb7FPe>F|82`r2oU+^mp^~7jLs+y@5>$k+{i6;ZBs_G9*Sb69;<~G|BTCz0!47q6 zA?OrIbWn({wKt&-20|(k9n~%?6y(hbHv4_^zR}q=l|Fd$d*8p```-6v-hBT3^Uppa zgCP9ah4G#z5e&#-j0>LEQ#Ui>QAf|U-gEtS&xY>Len
  • MDqF7JO_nu}Nt`6=er}hcI+o_9GYr!a;0rL*4;KlV}Rqh|!I~!lm+H-aQ!H z$N!bJ4>VWF*G*Q&s5m}$bakRp zxvg8}t|0f|%htX??xsDt)%;u^@5`%C_<66v;ni@Aid@5SD%|4wEBPyv=w)##q`t0= z(cD6qP^0eUGU6U14m~K9!@6hHeU%=Cq_0&mvC_$UYBoP{|8?9=*$?xUnYW%w%-3eb zN+x1?9lRGU?4J-n*N^w9rF#7UxAY;%Z5rEiPY1Y}AN$t(|JOSe#@ zW}WW2XGeYb5M4iar!{z;+HW5q z`o5S0AH3%B`m}uy77$;_U!L^Or8l1I17DT&U=t9znl@Zw*B4X7yN))TnDxjlwyLe0 z^1I|79N)tK1^yXjL*I>lA6O90IpGK!pe;D`(h&wiV7YNtx zm|#Q@;Mv~+n-Jhj43j2s`~R7@qOYJXmI;iY{}t=-`Tr5rL}Bpx{eB|4-`_L7U)H=K zI>3`Wo`G`cd5wOjM(5aIJYQ}>{YZ^IP@|K&=cshf$yg(#oNT|9QSoF_rBgYF)S#Wc zZ^s9eW!qU>S)(b~bc}5!Q?`|GD6QJ@zZP@qfrTjuVM-1U`rJ&|8&C9;%HhYJw$#vY q*0D$>v%|d`nkG)zR-AnxNyO9XY=Y9xz+i{>JS(fUV*(?$lKukkh|v51 literal 0 HcmV?d00001 diff --git a/objs/minishell.o b/objs/minishell.o new file mode 100644 index 0000000000000000000000000000000000000000..5861a64166e6e5e3069b0971e27473738c7d960d GIT binary patch literal 1232 zcmb7DO=uHQ5S}#sNv+9ND5$xl2aj&iB3KY1QUwncr1Vfw7}s>0E=@LZv(ZQq3h|)e z!GQPHo4t7uOhHiSr8o5=9;tWW=0CROgU!hnyVQar9Ym|e5x_S>14t}HM0c@TY5f#?k(_OM_+ z8EjJ^Fy>svbu2rtHllig&WOst5wVa(C_%4OEE_qOtM)z1USVFi94eSyMW=8&knE1C;0Yv_|Nd2kq~j z&hdVJbFsZKzk_#cyo>Xv+eQU)gQm`1KH-3U02?LJUjgw=^_M{0EByr!v*}NO%Bm9AI+=WBc zZ~>@=`Y(ZpC^-=>xp00l!sU*I^D_~CBf?iBJRRZJBAnQ?@3LEB!*PuJ#Cg+Y%Pv=4 z;<8i9J4TUB$0<2%)-3E9=vsph~Jx?!4YZFN#4Hs-h1DhZ{D)(|NQ>@B#}i}{8)sQ zc$0=wH~-Oygz>ks1ChotgxMApO$g6vcnZJ?k-PUe_ZREkn$b^kqeLe-xkxQt z!(NEO-maT3c;aR4Rk>Ca;^C&5*L|L6tT)?4VOj?mI%#Wg(FVBs~EQ3S){B9529 zi^KcyCHN$43&x9Q#>QNvb${%Rzb2pP%ecAFAGfK~ZJ$5vwZ&mPY6pIj0;1Mei&~G+ z?H$J{MM3E8VBLtvQ+5CWGRJ$#k5K?!XZ$3vML+!2_vdhjn;e^sC(vsYqd~?B^OBQb zo;?8fxgP@;dC7~}Tz7-_!A9WVJ#*n zaWrQ`aW2ntmK8_MRra%vr(;|7#BVIrVe(iD-q(HoK3J!j*XPc;pYF>uoV9Uty^q<= zouQ8z$un@y2>XnMnZhT4Gtip3L<7bItbdc5Ly53fYc%;>uYar4`lwNlcdYA8efkT! zj!R(iXZFuhaoRj0-%ww9H)Q?C_mRi{RQ7}NIrt^uU+9N#IopG0>?wR29wph&=!b3g zHazn$DsPAJrL^*JT(`6he+nDD9w@B!-%?oXeZm+A>Ho1b@QT4t0UJ>6O`Ms@lkn<} zBl5+fsF$CWJOfvq9Y8l}p&nIfaVw_9{+Ic&}ZD Ms@|@9RX(rKA6x)YNdN!< literal 0 HcmV?d00001 diff --git a/objs/parser/syntax.o b/objs/parser/syntax.o new file mode 100644 index 0000000000000000000000000000000000000000..b39c00d8b368179d8968bd05cdfdb9b26c478e9c GIT binary patch literal 3088 zcmb7GO=uHQ5Ps=jwpQz3)GCTwQS_2xtD%$u3_v+w<{@4r_o z6;UAiYeSo%j)?}^igv^w_1R^A`KT6sVIAQ~Os$nIY`fr07MKCp_RyL0Lw|Yc&9v(t z`D;Np*{Ren61Ax!fskzvj~BeGdxZt{{>0B_j;q9Riaq%b68z=H^6BA%echeNx*6L} zoeqwF=+Io5h0})4?ffdGIOHWR2cXx3rl(&6Wi${ek-P}IwZMFrQe_}Ookb%eO=@J@ z%?JoZi?izE!p)Xv3wPAiT$id=x)N2RJyEShRdo*i`DmgFhmVlPwMz8qw);vQ#(c4t zvpZ)_04o?5eUkfpME$62fo_M^^<|yVizHqc?b^>Y`IS-5%f8R|Fns@48nU&ndW?_YUWIBy#3 zM6OBr+!s+VYPFO6Id-EZP(!SXLAAv?Bm;GUZK+qOsgq{$Tr2$1dX*7ptiB#x(`Ib3 zSN%HtH|JC8~ zCbz;U4~9`b9!7aEoNM_0OW0FHDC1IMx%#Qa%f<)!>)b>3>-^8~5(h*4P{DmbwA`L0 zw;Ie}!o`Yjb^I<6zf@79HN^5H5TE?iX^mD7%U1*O#7P+%t*@Ae{Cof!kiXMtm0A7> zh^I`dq|u78+yKHws!gNy75VsnfOxv3-f6U+u)M_b2P|KQ`jCDbko2iSK)$_;Vm!#P0%O65kDkO1!AC<04~%(PRXWUdLl#H#$On%*%Sxn~26`{d$>~ z^+N6RID#SChSrThQhImJR>LocsU) literal 0 HcmV?d00001 diff --git a/objs/redirect/heredoc.o b/objs/redirect/heredoc.o new file mode 100644 index 0000000000000000000000000000000000000000..beea1d45126b1e3eb96f15880d781af29e7cd273 GIT binary patch literal 2504 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 RBVqvY1tVer5zn@2{{lOW!q)%* literal 0 HcmV?d00001 diff --git a/objs/redirect/redirect.o b/objs/redirect/redirect.o new file mode 100644 index 0000000000000000000000000000000000000000..0eb3fcdd052bd8cede091c57dfebf79f512b70ad GIT binary patch literal 1560 zcmb7EJ!n%=6h6sonn=_jw6qD>CR;NEv=nrb=TD)7LzRLq_EugZ38qO}Ur``vTy$#_vE%KR{sZ3mm`}cH?QS+>+pa~vs)#q^#rfyAE%wwH~I%D8OL!K&& zI3C8n3&4F~66l96Ls>vAmG>eoZNRyt-=q({g1go$QMpo@?X>*Vt(HW`=P|piZ7+4f zKhgHWchS%G)NUy0p&Q4sE3&TPo1_iS&AHCVT}95j8+u1h?g(5hzu85jI}@5)^929F z6B*6J{T%nC`u^1KPxT6SYM8NnV2ICs!-ZLmS`R+Yx@XLG-Zp3IJZ~Fwx6zYN_n~@T zayva&4ctl4xsw{~DD0@qY(zb@L0?lH7Zo420@UD{S^=|B0dJ+bT4z7RGY)d|UEw~K z^j&d|?;B?mkhyptbLhF4YY*o-@m0iijdKRq^$K@unDP9xs(Y=D=;xb3DG|{V938YIyo7pB7$^1EQB9gPV-=LS7&1y+o%vtk>l@cN`>dzPC zyoxe720fNs#)k2p!FEXwA#fD#b~}J#IE;%pzK%{ufM1%hM&Lg97@Q3u$62=(z8C(# zwzHwUt}ixM>LsNdAzF$k@on~%Qdey=N^8|({FI&Tr3#XQ@)sdxqB+$G?L z5h`;#5~jgwOJmJP zbodsKtqAA5XL-rJbGZucOVj-TKM~-(AO8B=0nRypekQfzwiJU2NddkRW zO>Ke1v}UDDUF40lVc8_?v~KI%&3|rjL^13sVj3q36UYLdj?pH|9X}J`c_H1^@`3{mh NY(E+Z4q#c1{REOY|AGJj literal 0 HcmV?d00001 diff --git a/objs/utils/env.o b/objs/utils/env.o new file mode 100644 index 0000000000000000000000000000000000000000..c643d155567adff6d3d932129730afe7631c4d4b GIT binary patch literal 2096 zcmb7FO=weD6h5!7ZC>nXR0`E1))`QukfLtv!a}eWx+u&rxDW)dA&nY*P15A~Q@aUd zqbm)#62a(VNCsgxf(Z;LbmLB(#mq3PbXG5dV8KG35aW05y)TKcxbVPz=bry_zjL|o z&8PRDe;_gl#GhfTI&ThPf%ap~NUIdLeLk2<^{@8vgjgI zy_QMks6ieI-p49qJ&^t*Dt@!uo#?Ecsi8*sl_~!2&KamRTHK27@F4N=2|58*5u(ElGQHrQs7s{eXOpO^FSd11HGtr_64!gwtBcm(ZR zD!xkn_$shP-f@W^`!h!9^B-XJ5;oRXfPH6ez6P8WUIVjf;=CL1Z=%l)#P@J8$#YG8 zPGELN*L=A?Ri9vdq^)mv{hnBl9$Ls34U>oKrF>Zj+ff7h5rtzDGUE~j_EqGSy{?P; zSF<&Fwq~t^S@Udp7KD4GXVqwq6&r?8{7cK2S-+=V&%ogX`mm_D*Nsr4H&5IPiCZMz zz}?uxHuT-FjPN!01@4KSE#Cz>C**z?DK?_3$J$({g}t?!Zewnn@?Pn=`Z>e6Z!P46 zUCy+p>GbDXPnanJeQA1>^mStJ-FTM7C}=v%a& zjw2ChoBff}(=!#a&Ay;tmjmC3kK!@HTM^5_ZwL4#aJ=iWC^+7h*q?~QU5M=l-wpl| zb?~mno`Xlgxh`B6tBTKJc7zuzwg|old;uJx@=*kzy`<#PxaNm62V=j{Kfrfkks<^6vRd|W`&r92I1{_FzmMBptz#S0J*?Nln$widLE3Y9zV`Awd(os-QSeT6K-WiC?L2_##UUSJcv?TUW z-gdUvkw`&jps>bnDJ)DhvL@^LeX}#(8Hw@b-n^fA^UXJJ-+lP;`R6qeM<84#q3d+& zP{y zY;A7)L8M-{cQ)EhrBDMQHBW%||C0CRH0wHXwj}#?>76;{-Wg86#l2}#^3sYUUlR9VZcpSP z@N2m%DekLrFM-e8x$C7_cQFRm{!vMN%-<7pBF+#W_U~SPs!BTOt4obFdoYLZs&C+9{4(qfgUQ?@#u(Ot$#J%);alGLo;tQXS;l=U4HH|Q4-k)S w`kl!7ezU1w_`xe1cQ)R%v>*6kxD`kkZEoMw>q2qkFA$*IssI20 literal 0 HcmV?d00001 diff --git a/objs/utils/list_clear.o b/objs/utils/list_clear.o new file mode 100644 index 0000000000000000000000000000000000000000..699c263b40887b100a30dde1373086de8281d448 GIT binary patch literal 968 zcma)4Jxc>Y5S@$BQ{q>lL_;7V7B+&~Xc;v^3JZ%Ac1uW3BAik5L?Mk33tPd$E-5|m zM+9u_)W$mHH5P(JBAoHf-mVv;g#+{XW@aC|`}pztIZR{_giRD$;$Q{}nTC2Y`rBN} zNupkFqMbFO#)NRJGbh|3L~e5@7v?(3bnWBW@jjw{2BUP&PKywQgZ;yN!4W6r)4g(0 zh^>sq*k{$Av?@Mf8CKCMjN+uJ$&O{%DQGY@f@Ua$o4B4;JZ|6@k;kChP!{gd%J-*^ zX6WD2snWAwF`lSTmx4R_s~Sl=P_TNdGB=Mydz}<^L}OB#o3Yr`o5(RMEo2- zq@l8l!2iONAcZGhxC0Jwp|1Ry@^}kbpMgi~0G#ym@S`YbndKaxLjOaC#$Xz%VN~TR mr6hu`aU!wn2>aM6*jD~XCq>IXC|k&mEQ@Ss|8PlK{*PaICZ5Uw literal 0 HcmV?d00001 diff --git a/objs/utils/temp.o b/objs/utils/temp.o new file mode 100644 index 0000000000000000000000000000000000000000..fc3fcb9bc2970c75d5c019253ef0b326a5c13832 GIT binary patch literal 3880 zcmbVPO>9(E6uv|MW`;s3f~AP^Fd>1YC7rfPZF+H#HbQ*FO1i+L$?Mp8(6Q6$IP;V? zby0-{BrIrx%EE*u#-wGVkuKV3qC`!)AQ~4M7Q{4$#SkSCS5z~O-+A}kH*bcH{M_Wu zcfRkQd+z^zcYgf)&cF3S1OyWOR3k5vVIU(lBX_x_F1_#PaGjEFu#e^>Q?B9~mgU$J z4ikW74fGu!C~|F0)F_MMt%GTVgm{&tYB5cqlVuHOolGKil7;ekI?gNHuYT^Qu1~T3 z3Gv3q(y?L3dOLM0k&0WE+3PP~u2pQB#o3@5+oknt&LEeBY=^K7Sv9`_&d5mQMEWA? zJqx@6xgSoTq92*kQ=Dlnb|ULJg!#~^a9aG7p9;+94~dzTI?L(;%=_)^7auS z_M^!y=a7|NEL-L>G;{%Z2KgfSx_*u9*K~P%ZoP_8)T2wmka)|DA1EuUiLTzR5;J=O zV$~n_Xh~eu-|%Sld&=uKs`_)as(pW3UO#Kl&Q|5O)>wD@W0G%kWnY|);=GXW)0KU( z%%#4&D*MuWSIS#;oMyBaP%%b)^Bvk7UCLF3uB5pm)*4Lc`r7yZ)>X%Rn0590K4@M2z7JYgzwaZgt1KU94etqFPybrE^GWkj;VkVf zkHu$k`7vU-drXgs){4*Nbn$NpP$AI@SQVy-T( zU>_D5#FE~Bw;QIHf|H4RI45^=bZ6;vg0bncwa$rKzX9W}5sf*-yHnPFe(LM_Jnl39 z`sAms&CwYNhg(aMld)|how3I=aXV8|(i#?rj`p?~_>6TMyR%_&@Yu^fcC4@W$g#dd z11*MdCewDe(GzClfHr!H60~stk^a6G!=6ZF9R!TK;USlIXnfR88A&*m_r{@;ZX=yY z+k)+k9ZzKJVW-#$-3Q&N9xWWubxvWZ@aJJ^b$Esx@h)Xhx_S(i@iAT>u6tzCwAP^|L@c3C%MKuo?R zvDuLLOIL&$3S$^yrfVbX1y1P5N1@N98y@zyw+e2 zAivrOel{ZO)BBJuzRwKi05_p3t-F`#ualog%eb)Y)H{|lZpAX0*rZ~vX{GV6$q^QPnAlEQ`*2$e z#ZU*I0byk)vyMF`tl<%Rc+{f1nH^3D<-afTg0?&((xoNOi0s#rXGEUYl4nGo(~@UI tI<@2(?HyW*coqz2EZwdP+C3}cSuo%d@mxGBQnXx`HqXVgB5i8Q{{sP$xby%3 literal 0 HcmV?d00001 diff --git a/objs/utils/tree.o b/objs/utils/tree.o new file mode 100644 index 0000000000000000000000000000000000000000..378d586ef8344f26022f0d72b4ff3ac963ab9feb GIT binary patch literal 1416 zcmcIk&ubGw6n^QNq$S!=D8v>aIp$zMz34$o(0UUTso+7FE}M-hq(2B-6mnTe54jcu zkIixOA0#J*T)c@rcuqZSksbuWtgx=%o1G!6u|f|%^5&cO-n=*8&YQ`HA7?)=6Qu~k z!zE~gCnYFk1?tP$--q#B?C;77MB2{6&8osAgk!&QrZt4vc<^jvYU|naL_MB1K!`bE za2d1+VeM}3nU*8=cV2Go)P#7ru49aws*bCizCnZ^b#=WdHM!yz#;efyGp=AU6vAcL z?;&p!2V6*^5q%8XbN#SGhvOUtCwUr{$URPF++!4aJvJ!t zjcPETqOX4TXthgp8(f#)c8Zflpr5Y}PZ2M#(9q9S136E{ImNWXg%~~LaBi<7CSm(t zAA29ZGsLIJNP&aV4`KI=;shLm&jlKKhM35G3rDNC3vyrVH_K&I9N@kzb8VTER%?*= zUgc@Ohx*^6sL(_0lR|YUzcCAbsC$~lcPwEJ>?4jd56a{|@lap#9*IHNzTXGm|HFIX z9NzF>h&RsrpS%-2@1Z9i`l0*VQ0K+Hm42M1k9#5K;Njz}xPS88(C@P-dNam(eF5?r zCHtDZhzGI3SM@hhej3EynfP54WjQbYO~t{RWhVa)9thq>g&T+`RN;rlcnyp3KT+8P z!j-8iEGYy?|5MlW)N!Mw%Jl4t7V&xE#Rq>s3RGpBP_Go+_k9bZ13HaPx# literal 0 HcmV?d00001 diff --git a/objs/utils/utils.o b/objs/utils/utils.o new file mode 100644 index 0000000000000000000000000000000000000000..6dcddd969e96fc0fc0de331b8389161ea3b6e5e6 GIT binary patch literal 1584 zcmb7EO=wd=5T3M6lNxP^wA2=%6%^_rQj6dZ2&sScP^3r?9)$IozSht*i7&4h?IjS9 z9y~PALvQV|x%H;+Cg@$fNRLr3=|SkR5o7#jcODI|_Ta$mH{Ztu3^;t1CB>+pG4%KksUb6kWQF{Nx(U%nRW)rPzWcne;1SD!0j+<0AtWuC=1u~H42;i_`lNr zNMBm3UA0z)s@s*(!*4Naevgy)BSu~$mhz$@deIo#8rdPbjy(?4W2q+A*uZ)Nh&T7U zsX87a_VMTvufdFbk+*6N)a)~bH!R$to{UNcl{-KA0^))o`wV z_CV)Nne+Mm=*+)VJcSZRB2PrF)GI!~-2x%Ywr6x#f!ByF! zo6g!6qON1xO6&rDmF@ybk!MzVNjbJPpUvcKQkh&~#Z?PPCpB-mmNB#La$%BqysAfY GbN&K$gbMQj literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_add_env_front.c b/srcs/builtin/ft_add_env_front.c index 517b1f5..5348efa 100644 --- a/srcs/builtin/ft_add_env_front.c +++ b/srcs/builtin/ft_add_env_front.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 20:38:22 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 20:41:24 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 13:56:10 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,9 +38,12 @@ static t_list *create_env_node(char *key, char *value) return (NULL); } if (value) - new_node->env = ft_strjoin(key, value); + { + new_node->env = ft_strncat(key, value, ft_strlen(value)); + free(value); + } else - new_node->env = ft_strdup(key); + new_node->env = key; return (new_node); } diff --git a/srcs/builtin/ft_export.c b/srcs/builtin/ft_export.c index 1a0c7f6..8e9e6a3 100644 --- a/srcs/builtin/ft_export.c +++ b/srcs/builtin/ft_export.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 11:50:55 by kichlee #+# #+# */ -/* Updated: 2023/08/15 00:37:50 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 13:58:41 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,25 +20,25 @@ static void combined_token(t_data *data, t_list **tmp); void ft_export(t_data *data) { int args; - t_list *tmp; + t_list *cur; args = cnt_args(data->tokens); if (args == 0) print_export_order(data); - tmp = data->tokens->next; + cur = data->tokens->next; while (args--) { - if (check_equal(tmp->token->str) == TRUE) + if (check_equal(cur->token->str) == TRUE) { - if (tmp->token->str[ft_strlen(tmp->token->str) - 1] == '=') - separated_token(data, &tmp); + if (cur->token->str[ft_strlen(cur->token->str) - 1] == '=') + separated_token(data, &cur); else - combined_token(data, &tmp); + combined_token(data, &cur); } else { - check_env(data, tmp->token->str, NULL); - tmp = tmp->next; + check_env(data, ft_strdup(cur->token->str), NULL); + cur = cur->next; } } } @@ -57,31 +57,38 @@ static int cnt_args(t_list *tmp) return (args); } -static void separated_token(t_data *data, t_list **tmp) +static void separated_token(t_data *data, t_list **cur) { - if (!(*tmp)->next) - check_env(data, (*tmp)->token->str, NULL); + char *tmp; + + if (!(*cur)->next) + check_env(data, ft_strdup((*cur)->token->str), NULL); else { - check_env(data, (*tmp)->token->str, (*tmp)->next->token->str); - *tmp = (*tmp)->next->next; - } + tmp = ft_strdup((*cur)->next->token->str); + if (!tmp) + program_error_exit("bash"); + check_env(data, ft_strdup((*cur)->token->str), tmp); + *cur = (*cur)->next->next; + } } -static void combined_token(t_data *data, t_list **tmp) +static void combined_token(t_data *data, t_list **cur) { - int i; + int equal_len; + int value_len; char *str1; char *str2; - i = 0; - while ((*tmp)->token->str[i] != '=') - i++; - i++; - str1 = (char *)ft_calloc(i, sizeof(char)); - ft_memmove(str1, (*tmp)->token->str, i); - str2 = (char *)ft_calloc(ft_strlen(&(*tmp)->token->str[i]), sizeof(char)); - ft_memmove(str2, &(*tmp)->token->str[i], ft_strlen(&(*tmp)->token->str[i])); + equal_len = 0; + while ((*cur)->token->str[equal_len] != '=') + equal_len++; + equal_len++; + value_len = ft_strlen(&(*cur)->token->str[equal_len]); + str1 = ft_substr((*cur)->token->str, 0, equal_len); + str2 = ft_substr((*cur)->token->str, equal_len, value_len); + if (!str1 || !str2) + program_error_exit("bash"); check_env(data, str1, str2); - *tmp = (*tmp)->next; + *cur = (*cur)->next; } diff --git a/srcs/builtin/ft_export_check.c b/srcs/builtin/ft_export_check.c index a4ae85c..2af759a 100644 --- a/srcs/builtin/ft_export_check.c +++ b/srcs/builtin/ft_export_check.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 21:42:23 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 00:41:15 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 14:00:54 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,7 +16,7 @@ int check_plus(char *str); int check_equal(char *str); int check_name(char *str); int check_underbar(char ch); -void check_env(t_data *data, char *key, char *value); +t_bool check_env(t_data *data, char *key, char *value); int check_plus(char *str) { @@ -82,13 +82,19 @@ int check_underbar(char ch) return (0); } -void check_env(t_data *data, char *key, char *value) +t_bool check_env(t_data *data, char *key, char *value) { + printf("key %p, value %p\n", key, value); + if (!key) + program_error_exit("bash"); if (!check_name(key)) { printf("bash: export: '%s': not a valid identifier\n", key); data->error_code = 1; - return ; + free(key); + if (value) + free(value); + return (FALSE); //에러처리중 } ft_update_env_export(data, key, value); } diff --git a/srcs/builtin/ft_update_env.c b/srcs/builtin/ft_update_env.c index b7fc41b..7da4f80 100644 --- a/srcs/builtin/ft_update_env.c +++ b/srcs/builtin/ft_update_env.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/15 00:37:38 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 12:34:59 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 13:54:37 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,7 +16,7 @@ void ft_update_env_cd(t_data *data, char *key, char *value); void ft_update_env_export(t_data *data, char *key, char *value); static char *get_tmp_key(t_data *data, char *key, t_bool plus, t_list **search_list); static void is_not_plus(t_data *data, char *key, char *value, t_list *search_list); -static void is_plus(t_data *data, char *tmp, char *value, t_list *search_list); +static void is_plus(t_data *data, char **tmp, char *value, t_list *search_list); void ft_update_env_cd(t_data *data, char *key, char *value) { @@ -46,7 +46,7 @@ void ft_update_env_export(t_data *data, char *key, char *value) if(plus == FALSE) is_not_plus(data, key, value, search_list); else - is_plus(data, tmp, value, search_list); + is_plus(data, &tmp, value, search_list); free(tmp); } @@ -82,7 +82,11 @@ static void is_not_plus(t_data *data, char *key, char *value, t_list *search_lis if(check_equal(key) == FALSE) { if (search_list) + { + free(key); + free(value); return ; + } ft_add_env_front(data, key, value); } else @@ -91,22 +95,25 @@ static void is_not_plus(t_data *data, char *key, char *value, t_list *search_lis { free(search_list->env); if (value) - search_list->env = ft_strjoin(key, value); + { + search_list->env = ft_strncat(key, value, ft_strlen(value)); + free(value); + } else - search_list->env = ft_strdup(key); + search_list->env = key; } else ft_add_env_front(data, key, value); } } -static void is_plus(t_data *data, char *tmp, char *value, t_list *search_list) +static void is_plus(t_data *data, char **tmp, char *value, t_list *search_list) { if(search_list) search_list->env = ft_strjoin(search_list->env, value); else { - tmp = ft_strncat(tmp, "=", 1); - ft_add_env_front(data, tmp, value); + *tmp = ft_strncat(*tmp, "=", 1); + ft_add_env_front(data, *tmp, value); } } diff --git a/srcs/minishell.c b/srcs/minishell.c index 5e10ace..0263190 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 20:17:28 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 13:49:47 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,13 +23,15 @@ int main(int argc, char **argv, char **envp) data->env_array = env_to_array(data); if (!data->env_array) program_error_exit("bash"); - while (TRUE) + // while (TRUE) + for (int i =0; i<2; i++) { sig(); if (get_input(data) == FALSE) continue ; execute(data); input_free(data); + check_leak(); } data_free(data); return (0); diff --git a/srcs/utils/utils.c b/srcs/utils/utils.c index 324fd77..4f2e92f 100644 --- a/srcs/utils/utils.c +++ b/srcs/utils/utils.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/12 19:40:44 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 16:13:19 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 13:45:19 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,7 +17,6 @@ void program_error_exit(char *str); void input_free(t_data *data); void data_free(t_data *data); -//input 관련 에러일 때 사용 t_bool error_back_readline(t_data *data, char *str, int error_code, int flag) { if (flag) @@ -28,14 +27,12 @@ t_bool error_back_readline(t_data *data, char *str, int error_code, int flag) return (FALSE); } -//system 관련 에러일 때 void program_error_exit(char *str) { perror(str); exit(errno); } -//input 한번 끝났을 때 사용 void input_free(t_data *data) { int i; @@ -46,8 +43,8 @@ void input_free(t_data *data) data->input = NULL; tree_clear(data->root); data->root = NULL; - free(data->pipe); free(data->pipe->com); + free(data->pipe); i = -1; while (++i < data->info->heredoc_flag) free(data->info->heredoc_file[i]); @@ -55,7 +52,6 @@ void input_free(t_data *data) free(data->info); } -//정상종료 시 사용 void data_free(t_data *data) { ft_lstclear(&data->envs); From de26f59964d61c12b6172ec5e438ab248dceb34e Mon Sep 17 00:00:00 2001 From: eunwoo Date: Tue, 15 Aug 2023 22:47:48 +0900 Subject: [PATCH 35/57] . --- .DS_Store | Bin 0 -> 6148 bytes Libft/libft.a | Bin 35328 -> 0 bytes Libft/objs/ft_atoi.o | Bin 880 -> 0 bytes Libft/objs/ft_bzero.o | Bin 584 -> 0 bytes Libft/objs/ft_calloc.o | Bin 696 -> 0 bytes Libft/objs/ft_isalnum.o | Bin 688 -> 0 bytes Libft/objs/ft_isalpha.o | Bin 632 -> 0 bytes Libft/objs/ft_isascii.o | Bin 592 -> 0 bytes Libft/objs/ft_isdigit.o | Bin 592 -> 0 bytes Libft/objs/ft_isprint.o | Bin 592 -> 0 bytes Libft/objs/ft_itoa.o | Bin 1128 -> 0 bytes Libft/objs/ft_memchr.o | Bin 648 -> 0 bytes Libft/objs/ft_memcmp.o | Bin 680 -> 0 bytes Libft/objs/ft_memcpy.o | Bin 680 -> 0 bytes Libft/objs/ft_memmove.o | Bin 784 -> 0 bytes Libft/objs/ft_memset.o | Bin 608 -> 0 bytes Libft/objs/ft_putchar_fd.o | Bin 624 -> 0 bytes Libft/objs/ft_putendl_fd.o | Bin 856 -> 0 bytes Libft/objs/ft_putnbr_fd.o | Bin 1048 -> 0 bytes Libft/objs/ft_putstr_fd.o | Bin 680 -> 0 bytes Libft/objs/ft_split.o | Bin 1976 -> 0 bytes Libft/objs/ft_strchr.o | Bin 672 -> 0 bytes Libft/objs/ft_strdup.o | Bin 736 -> 0 bytes Libft/objs/ft_striteri.o | Bin 624 -> 0 bytes Libft/objs/ft_strjoin.o | Bin 888 -> 0 bytes Libft/objs/ft_strlcat.o | Bin 840 -> 0 bytes Libft/objs/ft_strlcpy.o | Bin 768 -> 0 bytes Libft/objs/ft_strlen.o | Bin 624 -> 0 bytes Libft/objs/ft_strmapi.o | Bin 792 -> 0 bytes Libft/objs/ft_strncat.o | Bin 968 -> 0 bytes Libft/objs/ft_strncmp.o | Bin 776 -> 0 bytes Libft/objs/ft_strnstr.o | Bin 936 -> 0 bytes Libft/objs/ft_strrchr.o | Bin 672 -> 0 bytes Libft/objs/ft_strtrim.o | Bin 1320 -> 0 bytes Libft/objs/ft_substr.o | Bin 1000 -> 0 bytes Libft/objs/ft_tolower.o | Bin 600 -> 0 bytes Libft/objs/ft_toupper.o | Bin 600 -> 0 bytes Libft/objs/get_next_line.o | Bin 2936 -> 0 bytes Libft/objs/get_next_line_utils.o | Bin 808 -> 0 bytes incs/bulitin.h | 12 ++-- incs/execute.h | 1 + incs/parse.h | 3 +- incs/struct.h | 4 +- libft.a | Bin 35328 -> 0 bytes minishell | Bin 74790 -> 0 bytes objs/builtin/builtin.o | Bin 2024 -> 0 bytes objs/builtin/ft_add_env_front.o | Bin 1312 -> 0 bytes objs/builtin/ft_atolong.o | Bin 1672 -> 0 bytes objs/builtin/ft_cd.o | Bin 2480 -> 0 bytes objs/builtin/ft_cnt_args.o | Bin 592 -> 0 bytes objs/builtin/ft_echo.o | Bin 1624 -> 0 bytes objs/builtin/ft_env.o | Bin 2360 -> 0 bytes objs/builtin/ft_exit.o | Bin 2592 -> 0 bytes objs/builtin/ft_export.o | Bin 2216 -> 0 bytes objs/builtin/ft_export_check.o | Bin 2328 -> 0 bytes objs/builtin/ft_export_print.o | Bin 2536 -> 0 bytes objs/builtin/ft_join_cmd.o | Bin 1040 -> 0 bytes objs/builtin/ft_pwd.o | Bin 1176 -> 0 bytes objs/builtin/ft_unset.o | Bin 792 -> 0 bytes objs/builtin/ft_update_env.o | Bin 2624 -> 0 bytes objs/execute/child.o | Bin 1608 -> 0 bytes objs/execute/execve.o | Bin 2464 -> 0 bytes objs/execute/execve_utils.o | Bin 1752 -> 0 bytes objs/execute/file.o | Bin 896 -> 0 bytes objs/execute/parent.o | Bin 1720 -> 0 bytes objs/execute/path.o | Bin 2472 -> 0 bytes objs/execute/pipe.o | Bin 2048 -> 0 bytes objs/init/init.o | Bin 1736 -> 0 bytes objs/input/get_input.o | Bin 1392 -> 0 bytes objs/lexer/expand.o | Bin 2312 -> 0 bytes objs/lexer/expand_check.o | Bin 3120 -> 0 bytes objs/lexer/lexer.o | Bin 2720 -> 0 bytes objs/lexer/lexer_utils.o | Bin 1144 -> 0 bytes objs/lexer/quote.o | Bin 2928 -> 0 bytes objs/lexer/tokenizer.o | Bin 2280 -> 0 bytes objs/minishell.o | Bin 1232 -> 0 bytes objs/parser/parser.o | Bin 1616 -> 0 bytes objs/parser/syntax.o | Bin 3088 -> 0 bytes objs/redirect/heredoc.o | Bin 2504 -> 0 bytes objs/redirect/heredoc_parser.o | Bin 3192 -> 0 bytes objs/redirect/redirect.o | Bin 1560 -> 0 bytes objs/signal/signal.o | Bin 1728 -> 0 bytes objs/utils/env.o | Bin 2096 -> 0 bytes objs/utils/list.o | Bin 1184 -> 0 bytes objs/utils/list_clear.o | Bin 968 -> 0 bytes objs/utils/temp.o | Bin 3880 -> 0 bytes objs/utils/tree.o | Bin 1416 -> 0 bytes objs/utils/utils.o | Bin 1584 -> 0 bytes srcs/builtin/builtin.c | 32 ++++++---- srcs/builtin/ft_add_env_front.c | 4 +- srcs/builtin/ft_atolong.c | 7 +-- srcs/builtin/ft_cd.c | 32 ++++++---- srcs/builtin/ft_exit.c | 12 ++-- srcs/builtin/ft_export.c | 97 ++++++++++++++++++------------- srcs/builtin/ft_export_check.c | 8 +-- srcs/builtin/ft_export_print.c | 97 ++++++++++++++++++------------- srcs/builtin/ft_join_cmd.c | 2 +- srcs/builtin/ft_pwd.c | 2 +- srcs/builtin/ft_unset.c | 5 +- srcs/builtin/ft_update_env.c | 68 +++++++++++++--------- srcs/execute/child.c | 64 +++++++++++++++++++- srcs/execute/execve_utils.c | 4 +- srcs/execute/file.c | 5 +- srcs/execute/parent.c | 19 ------ srcs/execute/path.c | 4 +- srcs/input/get_input.c | 18 +++++- srcs/lexer/expand.c | 4 +- srcs/minishell.c | 9 ++- srcs/redirect/redirect.c | 4 +- srcs/signal/signal.c | 5 +- srcs/utils/env.c | 27 +++++---- 111 files changed, 338 insertions(+), 211 deletions(-) create mode 100644 .DS_Store delete mode 100644 Libft/libft.a delete mode 100644 Libft/objs/ft_atoi.o delete mode 100644 Libft/objs/ft_bzero.o delete mode 100644 Libft/objs/ft_calloc.o delete mode 100644 Libft/objs/ft_isalnum.o delete mode 100644 Libft/objs/ft_isalpha.o delete mode 100644 Libft/objs/ft_isascii.o delete mode 100644 Libft/objs/ft_isdigit.o delete mode 100644 Libft/objs/ft_isprint.o delete mode 100644 Libft/objs/ft_itoa.o delete mode 100644 Libft/objs/ft_memchr.o delete mode 100644 Libft/objs/ft_memcmp.o delete mode 100644 Libft/objs/ft_memcpy.o delete mode 100644 Libft/objs/ft_memmove.o delete mode 100644 Libft/objs/ft_memset.o delete mode 100644 Libft/objs/ft_putchar_fd.o delete mode 100644 Libft/objs/ft_putendl_fd.o delete mode 100644 Libft/objs/ft_putnbr_fd.o delete mode 100644 Libft/objs/ft_putstr_fd.o delete mode 100644 Libft/objs/ft_split.o delete mode 100644 Libft/objs/ft_strchr.o delete mode 100644 Libft/objs/ft_strdup.o delete mode 100644 Libft/objs/ft_striteri.o delete mode 100644 Libft/objs/ft_strjoin.o delete mode 100644 Libft/objs/ft_strlcat.o delete mode 100644 Libft/objs/ft_strlcpy.o delete mode 100644 Libft/objs/ft_strlen.o delete mode 100644 Libft/objs/ft_strmapi.o delete mode 100644 Libft/objs/ft_strncat.o delete mode 100644 Libft/objs/ft_strncmp.o delete mode 100644 Libft/objs/ft_strnstr.o delete mode 100644 Libft/objs/ft_strrchr.o delete mode 100644 Libft/objs/ft_strtrim.o delete mode 100644 Libft/objs/ft_substr.o delete mode 100644 Libft/objs/ft_tolower.o delete mode 100644 Libft/objs/ft_toupper.o delete mode 100644 Libft/objs/get_next_line.o delete mode 100644 Libft/objs/get_next_line_utils.o delete mode 100644 libft.a delete mode 100755 minishell delete mode 100644 objs/builtin/builtin.o delete mode 100644 objs/builtin/ft_add_env_front.o delete mode 100644 objs/builtin/ft_atolong.o delete mode 100644 objs/builtin/ft_cd.o delete mode 100644 objs/builtin/ft_cnt_args.o delete mode 100644 objs/builtin/ft_echo.o delete mode 100644 objs/builtin/ft_env.o delete mode 100644 objs/builtin/ft_exit.o delete mode 100644 objs/builtin/ft_export.o delete mode 100644 objs/builtin/ft_export_check.o delete mode 100644 objs/builtin/ft_export_print.o delete mode 100644 objs/builtin/ft_join_cmd.o delete mode 100644 objs/builtin/ft_pwd.o delete mode 100644 objs/builtin/ft_unset.o delete mode 100644 objs/builtin/ft_update_env.o delete mode 100644 objs/execute/child.o delete mode 100644 objs/execute/execve.o delete mode 100644 objs/execute/execve_utils.o delete mode 100644 objs/execute/file.o delete mode 100644 objs/execute/parent.o delete mode 100644 objs/execute/path.o delete mode 100644 objs/execute/pipe.o delete mode 100644 objs/init/init.o delete mode 100644 objs/input/get_input.o delete mode 100644 objs/lexer/expand.o delete mode 100644 objs/lexer/expand_check.o delete mode 100644 objs/lexer/lexer.o delete mode 100644 objs/lexer/lexer_utils.o delete mode 100644 objs/lexer/quote.o delete mode 100644 objs/lexer/tokenizer.o delete mode 100644 objs/minishell.o delete mode 100644 objs/parser/parser.o delete mode 100644 objs/parser/syntax.o delete mode 100644 objs/redirect/heredoc.o delete mode 100644 objs/redirect/heredoc_parser.o delete mode 100644 objs/redirect/redirect.o delete mode 100644 objs/signal/signal.o delete mode 100644 objs/utils/env.o delete mode 100644 objs/utils/list.o delete mode 100644 objs/utils/list_clear.o delete mode 100644 objs/utils/temp.o delete mode 100644 objs/utils/tree.o delete mode 100644 objs/utils/utils.o diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ae64fe527eb241ffe1a2a484fde9693a0033f0c2 GIT binary patch literal 6148 zcmeHKyH3ME5S%rRutk%S(k%@Ve_%zSKq3`CfE|J`7%Y*{`!DzndOi+j?~W+Gm=;B7 zSK6I>%-(s&lFtV~W^Z>Fz!X46S4?t-5z~3~JxjufPKvH^)ppCe?P~UQL9@eGK;K=8 z1}|7*9lgH==gO~OY)^1aW{rDnBIakrJVyJt-VTh1bOh6O4-Va1gjX09Usd&JN2 z?4G#68V}5B(GD|`NtBVI<8wcbR`{_~VagR>N0iX|c6m8A+;`1bkX^AAKeN`jo58M` zDPRhi0tcf2&uq2q#G^%1z!WeAwhHL?p`a_40eg?`)4|}b0K}BT&e(Rp{=`BDh-JXu zBS&cBQ;9xR!WBcp%|U!R=gYwFJ^FNr+nMWxoh95*BwReCaCAuN(V{6}3JeuE^4+PP z|Chht|A$G|GX+e6f2Dw=^PBmMC55wfuQ)wx3;HcxO?kb?Z3-LiC?;2r;#0aaju+Y> VmH~T@9HH5dfRn+3De$KXd;=;efs_CM literal 0 HcmV?d00001 diff --git a/Libft/libft.a b/Libft/libft.a deleted file mode 100644 index 29c03bcd5000b329bb0f872c68e2ecd19e3ee6d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35328 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 Y5Rak0VIRf%36BZzg^YpB#yso)3u4q&a{vGU diff --git a/Libft/objs/ft_atoi.o b/Libft/objs/ft_atoi.o deleted file mode 100644 index 6af93fb94d9f00580a48389b4dde722c5e961288..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 880 zcmbVKze~eV5Wck4rdEwmAsUw~LhGc0idzQ-1qYE1-5#YX7VQrqVi%#};@Zuvqb`mP z+3KX5xH!91Qo%o<4%Y9|y!3~iJaX^dyYKG1yO;O!{q-|Wq!5Ic5cG%*6AGDyI<7T* zxp6azuDxBJ!w6>$cxggd2W6|vAw+63o$8*YRqo-Fxh@u>ij3i1h-@)m%498ZRyfZU z_J!El=*1+`R`|5P&)$Z2Y1tAqF@aJ^+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710W6Ja|1EV4v-oU z2I&Qka^N;VM%6WsHdj0+yj@uS>ON=lNy2a${wQsYu}Ib z9Cy;g*r$GwrRde9C^XB_Teck0<@`0~T?GbWMmd^G(MM?Bto4YtuxI|>FN_wz0dl%0 zjh+;B52a6f?ocDOw?2>J&dw0~^&bp=(dSg}C7*xFs_<~9q6J2>C`rtjT?gmn!paKZ w94@ZrP#*sBL|){COZexeeBxt|-MV{L_lVt^<23CgWRIoexvdS7RURMq17ML_N&o-= diff --git a/Libft/objs/ft_isalnum.o b/Libft/objs/ft_isalnum.o deleted file mode 100644 index 8311ad73435a78ccf372be4688ce3871f566087b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 688 zcmb7CJxjw-6uq(43eoD2L0!xu6tti&Iw~qSIEZv`yM#tbGrtu!Qc8_$9=2%U4OodZ)X*#d2kCYvp0S2 z#*NJmyxaE~eoDWSzGrOt8B0h}ELvckr6^r^jV*%nazGsm;5-hR+_T))RH`rkO)6D7 hof98N?47&bi5F?@RD+uTrNfFt)yNN5)Vi!6OCOCqO%MP8 diff --git a/Libft/objs/ft_isalpha.o b/Libft/objs/ft_isalpha.o deleted file mode 100644 index f936134384ebac76d78e8c6def92e55f0fe03b61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 632 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg{|11j7BHi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJHe0cC*9gXskeu`o2i)PU&t_~iWDg2d#K_|m-c%)FHNcpn#J zd6+p0FhQVU%s{pRkcK)H#dss2oCFX<!C2I2r91_6*7 z5C-W5*+CBY@62%V0XM_W7u*gzIanDBUo4+51q^p{pqV0Iu}q-Y@%d7~a6yQ*LezO6 zi@gMjU7s(t0;*Sop&{r6Kf_L-yF~s2X^?pj_#Jiv?VEUjIsO{Vt>Ewy0DA)_1gC*| w*o1*RK9C2Y02DfWKu^QM86?GzB+n3^RuZ3CoS0LPk;sr!l3QR1CJkWv0U(J-hX4Qo diff --git a/Libft/objs/ft_isascii.o b/Libft/objs/ft_isascii.o deleted file mode 100644 index 6895e02eb9b0f074c0d3d2b35b63434a98217467..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 592 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P08wF5<5+(=K!zK*m@PQl-1t4GZ0X+lr h8%T;DNuD7-tt39PII%c6Gm{~wB)7m2Od7!S0{}(4JCpzb diff --git a/Libft/objs/ft_isdigit.o b/Libft/objs/ft_isdigit.o deleted file mode 100644 index 922557d07d952d8a42f60e7d36dfb72bb195ae68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 592 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(P08wF5<5+(=K!zK*m@PQl-1t4GZ0X+lr h8%T;DNuD7-tt39PxS%LAuY@6|B)7m2Od7!S0|2AlJTw3R diff --git a/Libft/objs/ft_itoa.o b/Libft/objs/ft_itoa.o deleted file mode 100644 index 853a82d120c8aa5ad2a5be249327b6184fbacfa5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1128 zcma)6O=uHQ5T5Ne$!=o}g+jHc8}L$)LhZ!}9u}fdr3WcJc=8cae-`pnVWmPT1ab-J zCFn`PimgTU!r;henL?o87nB2o@YNZ{C|X-#0(J&8MH=exD#x z2*S%a^geIWP{?Vh=kNZ#m}7yz<}(n5=LFoW@|uLO?>w?24k1>r-CB*#;qI5@VLrz0 zsFGuxDq##;A@b$odMK3@Zd*ZLcXXpKVlK62VXi z*T8-cxEO2(16qJhLT^G@n3t8YJU`h2cKdma-I@yNnC8^gQ zYj)1LPUp6($7sq^^=*C2d^$&!J=)S=@O?KyJuhMQG=;uv@&Hy_W zVA*$Fsq9TmetdodHEYVmf%bvwU%~lGZMcVOa{CGDdyV>*tP2^R1F_6~I2g=uZ>`Qt z7x^9=sFBYOdgGkUsyOOzW?PtH{kD%RS2ZjN-z6HQB=t?g6}FPjA?p4qtZ^ zas^v}=Fh-_Vm=+%I1HcT=V4C<-0bq-D4#>#vwY8wU4F3B*rrC}@gL!1U;+{Ok}cM( edzMY2m@5>@c@lSRVcF#z73|{rMStZ_#g{+$EZs){ diff --git a/Libft/objs/ft_memchr.o b/Libft/objs/ft_memchr.o deleted file mode 100644 index a0a51afb13a7db7b5870c94d8eaad50fab46323f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 648 zcmbVKJx{|h5WVz+qzV*?R!ZrT{)EB;-8{g?z|eusLZPS#QX&)tBO?O?{RLeaS-T~8OM=W)hv4B>fMuTGWdDyv~HWpEls`#~(v2Ny?!11Wd5 z^7^d_TE;gptO&jdZ?^ht{5rG-@S`oE7=UpR=Y{Ey;5l}IU4V^i7~IR>_>ZNJ^gO9i z^6Jz0&80-uM51hXUyPMc9n7vPS0t4(&8E;Di)P9jHJt)&Xw4SLiO$p)9mlF1D|^(u zqq(L$N^l=_#dT#G^6d9C^-|=yf8vP*dl)_x9tMYa+E;eO2rY7NF@CNegJ{3BjE!8 zgDwPd6^P13aJ*S|!;ugKlf0cb^JZpuZ}0y7?PHS2As8cWl|UAw19a>QsTwZ4G-VqvN={6D9Jbb9&I(m2z`E zuiu!UX8bCKx!^5$bJQQ>m!Zu9U)mIk0T>r?e%th4!gCw|TL2r^Fu0fZ_>X0G^f;)H zdJajw1fp}dnOHpDivuogzh^uN~>4%zDp}w^8|8YZRiTM2=6_Z+sf83}Oxc e8kO;}?EA13=5&&KiHzHE6nE(;iMvaBZO|tV&tNV9 diff --git a/Libft/objs/ft_memcpy.o b/Libft/objs/ft_memcpy.o deleted file mode 100644 index 432a71542dd2a40a3eb37fb4330688e9c6f1b691..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmbVKyH3L}6uluWDGIa_trY0g5iu1O=#~LC28IsZ3<^a>A|*o*urYR|U(g?5=qDiY z0l>msm=Yw0j%Fa7>)L9Nn7GpMeVu!3$9ekt{9Y!q2*yhR=yA{hVCz7lqQ94CT^=X} zB9l9)GZu7Th`4(l>jX}S_I{^5&rNi%1J*OMs#Ks`!(lH(a1lnwK`bu&S7-ebArAKP z{jp9O+V4WlM%;ndNBt$gjounC>#cwcz?j7KBRziy&$$a60&L7-@GS4~AIl!;Wl|;i zRw4QBl1!?;ELk*7oKbzlq8(`0lFGa`pjj>RNaBrZ%ugK5fs@!I72oycQjw-9^puu2 zs`reRt$M>0+>+(DQpcB@MH+rU1N*h6S>`EC=(EzCj9_ICSg$k diff --git a/Libft/objs/ft_memmove.o b/Libft/objs/ft_memmove.o deleted file mode 100644 index 9d5e31641ef589af73b037128240e95a73f0b95e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 784 zcmbVJJx>Bb5S`=D15q%6L#`LfiqSo@;$F)FQG_TH@Cqf+T&DRZ2 zDNf#j%!WUJjYs^T-$88+I<2js84BSh&JSb!J8TJY26_l(;T~4T@{IpTbWe|?JgMg# zsh12XnfFx6qKS0+#SM#g!CjEKS*}CVT;!6%?gj3b4shs^Hmu{R(B}U1tGw+OJBew( z=E-;}y+D%?bMy?iUu>8ez=Ws+*G*YoB?QkH@us!Z#U7PO6uEiK`wI_d^g`@nc(xFa zv7_P99K1K~!2Zbf6yBjXw8fKoL;a6s{k$giZGl Sy6?9x>vSIY?QMOQ4gL#Ewtlk! diff --git a/Libft/objs/ft_memset.o b/Libft/objs/ft_memset.o deleted file mode 100644 index 3524c0760ee6ccd2ade520ebc4f7777a2b686b43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 608 zcmbVKJxc>Y5S=rLADreygo{?`B398xuF4e(78VvM>;_3rB6u<2ik6mX^9%eP=>&g( z*jPuajUX7XISbD>=Pq8r%7M4@@n#;o!#;ezeJv6>1e2o(bR?((ur)wu(ceekl>3 z$0Swb-=SAPybMuu)hYRHa24Q(TS7AclP0NG5Xk&KyyPx$2#86KKxU=qKbGFp+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*TVsc4*XM+jxbm+v!^8!jY5FJf4;wKUdwMn$I@GBtN2#3+mB1MW6!XVzMf%A-dApx6%`~d^@o?YS} zFm{4JK(r7`wMt`egs5*WdzhS!18?5EnccV9z1)Ake+?3K5kgWJs7VnA5EHK!K}FdGM2vmq=7 z5VA=66%_J5<1o>{13(IpkZ&N6y>j;sW9a|H_Z>YnPrIwl5|!Oj?Bg;St5uR*>+7PU z`t`-+KG8D#$3_9^*Q0b(De*@=LJb#;GtOTlTH`H5S1(cRMzo7{*mE{TRGud1QF`Lh zJYB2eyz*^`pZWtoPJIWtPDkiay+pHHV0dh1TD&T6AbkytyU&7T-n#@IM&XB)!+03w zPxApiBN}h(fF&k@k+%JP&~1{U0Zk^);SWZJ@(ZQxjqFov={-i-uM6jq}A%loRw~N0usA)`}D2VXDrDFqy zj&V%ZE={&d9MnbHp*Wf?D&0j$)9<{ThtJf42hKfz-}&x+_nmus^ZQRLkwy?+8lZW0 z0#L|PXw<4&;Xli?)Xv1(aWjytF6mIpSlTvj+m)J~d^>v^+g`xI_Xx=sAkewkKqebo zlv?;;q~eKplBnmidAw4;W-^D=g#^C$>&dwVLv1Fu;)zA2ViOKH4am6ylGJf7{MP%&S9glZs;_WrBRf7o1nrE@8MG2qaT$WEms+*^nTHw zFS)5uc8?WwjW){PGQJg}Veod0K(ob6{$g+LtFEtK%Qe?3H76D^~ox{DPzq{10P6$JPfp+jWZnqs$M@lRts+OVTM(p-2i z7mczn1tsnk%=5Z>7sr?xdmh^mw>kLutvEuWHPwfQLTW1&Hyu2L;y$2gw2Y3zT`9zyJUM diff --git a/Libft/objs/ft_putstr_fd.o b/Libft/objs/ft_putstr_fd.o deleted file mode 100644 index e34149bfbdabb9b249a3d3fc46968974ecf735e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmb7Bze_?<6h8VagUSLOszsY>5vrwCvbKf>hqgob6a_W2D+(^bTU-VAY}5XMbPM_e zqNTZ--V!uwVD+8bee{Bs4t(eP&X0TEJ@?(ezkVzb1qdcC1QbLh0N5(vYW25kn{-=G zAoAic@`9kLGpk%vnE=F`IXKSz#GbN^ka==;8BWg#(S_F|%$z+fS5LBv>y<{aVlyA^ z`|AZ0Bn-b{o&}x2FmqKs)|6=nVg>lFEutBKNt5I^A!fi$@D_L;I0D3^M<8eA8>0Vf zpLg^yZ3PEYhdMncKE6uFhy64U=K^%*-dwI>pIyw4;a|lh??!3VcX;fEY0?AZd)?=7 zYVu;y^;0x8l34nut-S$ecWy0y^xw(6bI6|)EjuBZOo6dW5+r-gZh#}Qps{su1dDp_ u97Vk3tBdr7gnR#riSvrjRjrh(5I1T?mD8DOT_MSNn@Xx&-PT^7o4x>P!Baf| diff --git a/Libft/objs/ft_split.o b/Libft/objs/ft_split.o deleted file mode 100644 index 0274283b48990647c87703b37087a4f2885a4d9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1976 zcma)7y-!n76hDs&ZT+B8h$yIq4NPjpLFr&pttJi(#4xy+3zn*lrBr;x8e;Mi784w7 zWHg~Twf+Tt6C^BbL}HASDd5l!CK@#XlUjf0e#nC^p5(rB&&NIIch0%JUH|>{&ru?a zK>Rs`Rpw1E7U(qAkhDs%>2rz?fIev-Bm1G_p3O)h;c?eM!DqZAOyJBvzm5x_^!FTjL_S&+X4Qcb! zZq*;#4OsNO>R;@BL39OJI+y3dJ7I7>2is$|flC|Cy~4`#c|ME6caOt&J3;wI54jcS zmXQCg&L22LgM7ZKW3zp;C+70`0`j1zot%?n6(RG!Fei5Ev+)vY%dhyv$Hpq5#+Fij z4mHAODIP92I>=?;B76f@EGlt!Ep|WjDV$2b5-r6=Iba1JF@`mbLE2g=&-vPQz9Rgr zv(&-3Dk1c&1GRI{kf#=MToo@kZ!m5(8eJ9m)Mu}kfKTB(FpJF)?QRK*ZtFgWErq!n z;-2qeUTamDm3}2!6Dz1^KW1qI<|<Dj=JR}MT&p=WC5MctDCIVXy%;WF-OXAN-_mf$?+<2e16>PNq>VIB1^!(Yy8Rh0M5 zYmVn-mFjWIS5W&V@Ub6e%=hqd4YHY+xfeWt&P%|?_TO0p*}5}{+wqS3Cugr?<4!0{tRl_^dqiiQ-9*X`MWHm5c7_6>X0Y@Fl3KN z{A2OTT&Gt)c|ay{-xg1@>6A?(nM;~2D`)QEpNd2xgFQBBaY4!H+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|z0xH}AHi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJIp1j+!J2h$4{Vqs{2sR7aP@yYqQ1&PTe@uhj?nRzMk@jfod z@++Vm1t@I*G>jR@4gk_nr=l2d1eB8iVu&0sP%#h#0Z0)@JOZk}14x7T+&~-v#2^4t z1HvG^AUntb|C<>uKHz5f`H-Js=L>#^oiFqmEP>{Uyx?~D$-(Gg$-&4__(FWX6bBQ7 zIYRt^}0RzA^#=r**Bv`zFr1+8K8RFAQ;)_d) Rk~4}Ja!PUw48f!U0|4h5Suy|s diff --git a/Libft/objs/ft_strdup.o b/Libft/objs/ft_strdup.o deleted file mode 100644 index ada19c5ee0486eb467f07cc0d4dbe8f7ba0b764c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 736 zcmb7CJxjw-6uoWQrlne!4(ejTrJ@DvqGJ#R2M31^ZqJfd6w)?mib@dzS-KY79PHTs z3I%_F=-?c;I5@a9Le+EA7p>yrf&0$6pYP_8ySJD338DxAe8gY}EOIbl2Id9o@1rZj z?O*~?=&OjcMP*(Ht9oil2P8ykbGP*Ehsu_M=W%Zyhr+QK*-RmX&>JTKuyC&xk+3K1GtFeTM!9w54;9W!**Z{u3_U|-Zj`4 z{2zSW(*3X%?GGL5xM}j;wC1D#!d1zCRy99Q_QOJ)I&_}84B`s;o}&552)%mh)ohz+ z758Vaow-2@>>~Gs86JA0+=p3Q-$S13x{eqOTkCz?+qqH1W4Nn568szdz#cq&S78Yp z2WP=3DuDRA6Gd=_A3$OeoWY~m(&yKl8q2dBbI0C()G+@mPh#H^$JUXdn`fb}G|f;N U)jEk<*)SS98CK0K2In%-C!!=_w*UYD diff --git a/Libft/objs/ft_striteri.o b/Libft/objs/ft_striteri.o deleted file mode 100644 index a0a8a3eb480b1c2684ca86ec97c56499edd8e498..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 624 zcmX^A>+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg{|0V>=9Hi3Zw#%BkLgD?|RK0dxA zwW0*d0aEetA+8Z22tJHe0A+y8gXskeu`o2i)PU&t_~iWDg2d#K_|m-c%)FHNcpn#J zd6+p0P{AKS^O%8b380}+r=l2d1d;<{h#W6aF%Sa*ND)X}0muO94*=2%K$;uG24WBZ zsR3b-UXU7c!2iPx7yni>t^C`}FmXY%{Evs+3_t(#GwcMKDYBwD{>MxHhMgRYoZTFZ z4wf8@423Vm=Su;@$Q&g9g4^Ne1Ad2{D}m}>0o5roa&+FyGC6ysoJ5PShN=l%cx z;(x21Rs!vrcz`+n8qAH*Z~{d;1^}APCIS@Y19=Pz_<%GY(6g}c1xfKE$uq>KmBbg9 V6lIpA7G*Nzl;jo|f=L6YegJtAPvQUo diff --git a/Libft/objs/ft_strjoin.o b/Libft/objs/ft_strjoin.o deleted file mode 100644 index de774eabb4c94570e4232da47ad82f2dc58cd1aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 888 zcmb7Cze`(D6h5!lG(XxJ1RrwX><{{2W`Q@!NI}pB58`Y`C;29Ed(KuMaUFz zb1RD5pR0j%jV>zgTw~S}(s|S-y*X_B^1+vsYLYlOs|k z_@;HPT-;dAS$ebddA;;T>%~`oj+pgy(%$A*Pv-~FOHuxh&4Nw9hq))X6b@q%_Z^TB zZ~@I^fsf!za2jjqJj-6m|JVA;IPX2adDeUJJ8u_D{#fex)H;iN8JZI zv6nnGhIQPJLa&AUneRaBCQ&`?s@TE%kc@S4K4Zk{Q-;ic@AnhbveDOlTHL2r2jB58 zTI{=nyCO!ko`OE(ee}&cnlY5Z(0>??N;d3ega9*C~Ra7D~DUwX+bhuyP48q7Y-$69pR~jbIh9PwX!K zgLIa5Vk4GfAs58L?jpqaX0xX!SU4~{Z|CF9?#|wQynPNZ#u=VrDigvfoH#!mLaZ&Vul?);ln(Jx?JX9`5n*RR4p|}cd%NXa-VsNo z~UirciCu_)VbAz$X`=!>}O+uY`CF5p34wShYr+|D-8dlLI=^afYxGZc!`)I(c*v@J&*ItRsk&iTfL5-U2p diff --git a/Libft/objs/ft_strlcpy.o b/Libft/objs/ft_strlcpy.o deleted file mode 100644 index b280b25b58ee194985258aabecda6f07dcdacef9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 768 zcmb7Cu}eZ>5Wm;co?__|SQ06;NDx#*;U-jDLxe-yN0?!tX7!@NMR0LU2x`+&`w!fN zmbPe#hK5%VJcouhUtspT=l9Zvh7RuTclX`>zI*q*`_K2UF(QQ^Y+TSZg9sEd1vPE- zhp{_}%F_3lh%}V5j>tA4^wgO?;1D9QzMUAv4tkb=`M9?XV^h1R=+v+mB6*O_?<93` zk~`hc?FzB6HhgZ#AR>JlJSy;o!#5bsu2_Pdg!VsU9K}!w&%pU>0N%|Ld=%aX-Gs7m z4J-HZ9eoafe@IVN9=Zj!(Y>WgO$~Qm0%X1V$T9+P3pAI8MwaP|TONfzOsyKK6RqH$ z2~&$(^-{Pq3v9=z_b9Cx>JH6dHRPq@R$HSc-mqWK9By!2RYNB7lB0R2(6ZC-byKB{ z`#nlL)=))f4)G0UiYgSdXW)L!_SWkK>o^Z{Ue3WBwUX#`3#$!$Q>CSf$Kf@|_vKao zl4(TP-8?73F**b92XKVnz>g&xGQmfIp>uw%p%6dFo-U5{qf9b?{)1CF%IMkrqHPy! Frf*NVcrE|{ diff --git a/Libft/objs/ft_strlen.o b/Libft/objs/ft_strlen.o deleted file mode 100644 index e5563189f7ffb9f76d73eb6efd9f398b04828652..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 624 zcmbVKp-uxq5S^oiD>>+;grrb)5(yZBI{~f&QBgM`r38}pD6oV|5=;|R9j?Dpi6a`hzWdZqgSy Cv`MJ| diff --git a/Libft/objs/ft_strmapi.o b/Libft/objs/ft_strmapi.o deleted file mode 100644 index 8eef3c68ca51aaefaa12c673617b608def692e64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 792 zcmb7Cze_?<6h5z~sZ>f3ymHZ&s6nWfY)YuMhK7c=o0yT{uj)mC1P@w*mV}0&A;7MOPl?D zv{m}VRv>a>AM)&dsxE|?J~UMT5Mph4eeEZ9*pnix$Fmj=Tf;+^)59o4s*o!tQ>NI@ zA7t{ILaZ#g>kSn|6>dO82R{Rzd zpAgOA?vb10NIL@T8C2u=8uKrPRr70sQ@@s&NB@pAuEJ9L?w6rNr)eZ=RrIycH=b$5 zNn5D1HqTLJDlSp?dudog^R?GAoEmFJG@9r58u#*jm1EKFmKLk{FXdZZ)ZIH!@5-Oo zFPlV!WQ=!=-Nm>Ft^NsM5X7-4NDzx{s06-Q3c2b`U7_nO)qvPC#h$sFP3K9`T(X!U UkxOQ?g%oAYTye%e`E`lD082u9{Qv*} diff --git a/Libft/objs/ft_strncat.o b/Libft/objs/ft_strncat.o deleted file mode 100644 index 9548586b43d63ff5f27709b1586807476c394701..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 968 zcmb7CzfTlV5T3^qcF#jj1Ig+Yf*nUfL>r~sL}?6#1qI#9Wj%uNI1XH+2{E~ZhU6NF z_ID-t516gg*w_&)td;7Wh6KAilVkbj?Y``V&@kDVdGqU=**EXt|MBT4ksuI@E8tZ= zOo2hSz}lQH7CWYr=)882&ODTsDHT@Ugc*iXOAE_OnQc#|Hw?z(+Ut@C9}m`GWl5=E zeXU*&LiMWl`g!e{Qj3pmjJ3s?N}VSFW1MM-bYwf4$+!=B6P(1ZAsGzfB=*mtZUp)r z^h4-8_$io)bC|i7doW*?Vkr*$TXMhujdt5|virM0y(5pJJ*m2`pnuwH6|sj0=rN%S ze$V)vR&giwecqnzE+E!MK6-!9UL$hJZR&A~^td18hUtcuxsUYLe}9J>KRD-?Lp|+W zjD`D{h#iW!AJ5QnfG2WISNQYjy}|Q*7s)*5;~ilBL4HYGZB7fCM~}$m{=hqqW6#bQ z%LHFbKk9hM5xE!oQ>*9>W&hccS>FWLkNzV6iOA_<5}-}=_fj>LM0b&o z_c^39(ova|-qEc$(U7vSz2BJZ<0zBRi)#&+p>`0@E&3o;s^MMnv!1ww+MvXJdyzzC-M1XRIlMH*xSG^z{WWYuH_#8vA{~b4wuP) zcgg=Kk*}A9uN`<7-X%~UL5or3>Ih( z&)Yfl8(y7BGujJ z%>h}a&-sop*Cn_(n=kjDbJXtZ4@pb&UdRnU#C=`#dXITt!`Dzz_i*(XciK90)sOW3 z+xNw1-Y1xsZ-2gwEWY7<(OMP(8lHn4hm*)N#`w@ho1@95aQ<&nq3|`OV^JRiwIA$N Wp|^giQcL{uR#nPDrM76+1^EXv5v9Wb diff --git a/Libft/objs/ft_strrchr.o b/Libft/objs/ft_strrchr.o deleted file mode 100644 index 13f006b4b3c7ee1284c5c581ec3c11f49aba071a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 672 zcmbVIyH3ME5L_n#8v#iHk|9l8QUVQf=K>@O3W^kTCuBfDkPyrvC?nC(<_qF7zmU#< zfM}>gcNF;mQ($JDyEsTlNUSusyEA)pkC)HM*9wtE2wo~ciwh4xYyv8;eqRzzKj#ia zrnkW}N?I2}o&DZ03ua~1hsgS>KkRp*Z2(hk6~h36hnPRs`+LY9`eo(-4xVA~UOwYLkv-AtxJK!_ zOQX!DRJp-OHOPnOx~c`KV+For(XDa^b*Dso1)umI4c3;fls%{qsn8UBW^)VFSMZ-? znLG9Sd*9d&QrxSbl*OBQQ_O{zKi5#RjI$Qk&{a{G;9sobb7D=fRGZUDTu5;zqbO`e ObS>N6oqXNa0 zmBUg9r&_KR99OJVR+lUHgt&2aI<6Y$rLzSb{3weJvIMEoLgPHvli;ZRF(iROoW%Z% zs52qoK;|J+;9FoOxI*UIxYQy3iN?D2K4|E@V3*n*eQq>Nli$(B2q2q#x2cVD*!D8i zXWuYw`|RhuE^NenFJt%3I6d@q+c#dHd8&Md247}t7T@p!=9?KH&h?DR80?d^Cp_KU zHrMTEIokL@>*jNg50b!60#l=XFS#|_k~puLb0eI=%mA?$JVVq!#E1cdYq_qAJnqqH zic!$G(!)O6JG%Hd-X-ie)(e{0FLH({^7qh-bGyhjGV8udSq$C+r3%RTh}A9L*gZH}NZnE`wGMPDP0uhefO z{e<&pIuu{S!7)9F#G&|0#Bn#Rc`4r^F9CZK66a{~)5Kl3<{^<{@tw!}wd}}FWTk}Q zc!HnqaVU!TwXm(`yd-Tk*G;zhG09hV7HWE`p8sd2%ut`UPalY1KVXx%?}|rmz2wv$ uL$6oMyi{D}cZzkTmX<0?b?eJznSHn5JRngnluA{HN^ZG!E?oIMn0^9Qn*u!m diff --git a/Libft/objs/ft_substr.o b/Libft/objs/ft_substr.o deleted file mode 100644 index 5b0938c9201ee1626ef01ec757767c5080906d8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1000 zcma)5&rcIk5T0czyR}GTAg*$t#dyF2iFy#ZZ6aLIgE1U9@x+ROq%8krdO~BR zsD`Z&xsAf+O3o2G#SiPnw?e#_i|4R~qEiQQH8Hv}8qLj2;G9g}GXD3J%nW~L+iRdl zQ%iQ_%)xk)O0U`mwWhB0WUjZL0{@=*v7eU08g|PZpeO7{y`SmHI>uRnvtnxY zY#Y6uVV&pbw}W0DXg4b0pZ(+emf}IajXc+9Fwc9bqj%2L%EImL&Npxu)$h9a9ly8m zUGneICr5~I=hL5Hk(^!%?fuZg@VgkAf*pYq$vuwoP@;FrsdOxFA&!NFf3zlaY^4cl4T5gTo{ z+{PcUP|pl^a7}ESX7y*vad)(pg_PjWv`1p;Ps2t6y@#hFzuGzUJvQ~2MlC&N*0zyV j+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T0Tu25o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNe&jdCVX-&`_vTQH(bNN=X1QM2;7z7>I!YqzEL=0c3#mTL5VVAk7WL0YD4_ zAT=Ni(hIf&NRtZwJ2PB-z|FAp1-HXaj#kFP7t7~M0pr0OXr>5Q>?Kg_`h2Mq3`k;) z423WF8Fm8W46Fvk2C09*@30eS-oyjU@z-GP0EdSF*qJaPI1SXpCJf~9fjj^OAm8%= kJp~I#kQ6_XJVSh1Nqk9uX+c415kpQ%Zh;|~G=S*`08)TIf&c&j diff --git a/Libft/objs/get_next_line.o b/Libft/objs/get_next_line.o deleted file mode 100644 index dcf776a4686982b7a8e2055048374f2b6a5d706e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2936 zcmb7GO>7%Q6rRn-@wzE>f+D#jQXGkkb6C_?2vVdVrwLLIIYd>2ICUEA4GuVVNsNjV zRWiy2DLoJY5)wZ(f`c9P&|B9hK)&RF1XLC3(YdWFD&S@#1@pc6vDdq4fsw~=-pu>` z-u&!Oe?9*DG-C!sqrYKvmj*NFXwRX~iB-Xd{@NpQ>YGRwkkw=WlLrYX+3_rG?dn{)CPL>b<68p^0EhoM(!g z*Vi&7{$An6Mj^}j@={L`107dIO{QR&>{VinMdTcX+iMpvI*Ts-JOg2LG!mluL+FhW zJ;m5v&{6aibZQhcb<%~Hz!BtswQhs`a=bHCJKkmcmBpl6UF5E1uy?(Cw}A-V z_-;4Zeiig5?S9W>(c;`|L zIPHIL@?ZUUHAh+JD9-BMsK^5`1>zc#`84C{y1*;2?#K5<<+lY}DT8&$w~ob%sa%1d zrEJRl)Abf?TSn|1!oR9=((xyiP12{>9(TKmkREJa4#Y_^*iaH4T}W>8I?~fUM4*Ek_Nj-b!FJ2WS8QUJaD0Ui@huNy|&v_ayo9Y_mqtV zqkM&ISPVLdTl>X1pZF1V(Yh2biT89Y0SwXSJ|?i{+KX9%xDuXgmF{`G@j|bKy_|}$4!s9rY@lwKOR9TeFxLM4h`2;MhfRP+p9up^&FgQ4 z(0We2j!RF_zoQ;!x}4EM`roQY_Kx%#TDS1sfTz^HI^)Me`3pY5r$P=kJ2T zwOs+F^)KZ7@@JCHXF=iGo&$v|8}EhCKd08ql8#(cG_B~2q97zcQUg7Mfo>lV4}i1I}C9id38eVq~n(zoD*X{9ARGGnZFU8 zM{UX{Zg6hT5V;I;ULCw-5fHf^P=jxqsS&<4Ht#zxuzM!`wsFyU4byM#yK8E l`+EQ4>fAcz+*CxJoLiQtf>pF^OO-1HDcYs#mN#ySd;{UChS2~3 diff --git a/incs/bulitin.h b/incs/bulitin.h index e1a09e3..e04fac9 100644 --- a/incs/bulitin.h +++ b/incs/bulitin.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:03:26 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 13:58:21 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 19:18:52 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,14 +20,14 @@ /*builtin*/ int check_bulitin_func(char *name); -void exec_bulitin(int bulitnum, t_data *data); +t_bool exec_bulitin(int bulitnum, t_data *data); void ft_pwd(void); +t_bool ft_cd(t_data *data); void ft_echo(t_leaf *cmd); -void ft_export(t_data *data); -void ft_cd(t_data *data, t_leaf *cur_root); +void ft_exit(t_data *data); +t_bool ft_export(t_data *data); void ft_env(t_data *data, t_leaf *cur_root); -void ft_exit(t_data *data, t_leaf *cur_root); void ft_unset(t_data *data, t_leaf *cur_root); int ft_cnt_args(char **args); @@ -39,6 +39,8 @@ void ft_update_env_export(t_data *data, char *key, char *value); /*ft_export_print*/ void print_export_order(t_data *data); +void devide_equal(char *src, char **str1, char **str2, \ + t_bool key_need_equal); /*ft_export_check*/ int check_plus(char *str); diff --git a/incs/execute.h b/incs/execute.h index 9f5001d..f549a03 100644 --- a/incs/execute.h +++ b/incs/execute.h @@ -24,6 +24,7 @@ void execute_cmd(t_data *data, int flag); int check_bulitin(t_data *data); void recover_std(t_data *data); void heredoc_flag(t_leaf *leaf, t_data *data); +void error_print(char *cmd, char *option, int flag); /*child*/ void do_cmd(t_data *data); diff --git a/incs/parse.h b/incs/parse.h index ffd2ebd..ea6b9b4 100644 --- a/incs/parse.h +++ b/incs/parse.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/04 07:53:54 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 00:43:59 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 18:43:54 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -43,5 +43,4 @@ t_bool syntax(t_data *data); void parser(t_data *data); - #endif \ No newline at end of file diff --git a/incs/struct.h b/incs/struct.h index 4b962bd..056e6f6 100644 --- a/incs/struct.h +++ b/incs/struct.h @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* struct.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:24:15 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 04:46:45 by kichlee ### ########.fr */ +/* Updated: 2023/08/15 22:34:44 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/libft.a b/libft.a deleted file mode 100644 index 29c03bcd5000b329bb0f872c68e2ecd19e3ee6d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35328 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 Y5Rak0VIRf%36BZzg^YpB#yso)3u4q&a{vGU diff --git a/minishell b/minishell deleted file mode 100755 index 8b47eb2b5dfa5cb0909b1d077c6e2e24bc6d383c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74790 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 T-dU^O-Zg*qudmwki--R&M=83* diff --git a/objs/builtin/builtin.o b/objs/builtin/builtin.o deleted file mode 100644 index abf7adb9aceaf43ae5760c02f71db52ef3474c55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2024 zcmb7FO-NKx6h1cojFo?-kfk)W$<0Wql>|c*8VJpz!bPoa`R18J`keGl4oEN*go_}B z7OhGmXoP}RG0-AOf?7!t;&N&=oAw!4edpbC_4Q(gx^U+^-#Ons_r7y~X7$InpSy{w z2#tTL(F<%u(9zn_`@N_~|N4o9v};{7hS$N(UBaZ4YiHf<;Ytmky)?YdjaAs8EzZa0 zcPyxbUDcFhFik0I+MP-{*TfObXYw4D_&k4@ugNr99^{*xNME&Fm2qZLPEx7F;8qYu zQ3k}tSwKGiw)GmlPMCkB?15t+x-Lrt#OP=&Vt)zaT7g|C(lT%t`gwG2JEgN0dqZLL z|82kS(8tZ$s-?{VS}2BSqZo>BU@h~9h!#dD_X+tPAn%P*-Q)dvqLYZVc2VwPe&t}{ z9BjY-Ng4f+=uiKneoXYe0sZYV`R7D`B%ps=MxPh`fq?#N8U1_FHwE9Ha_PzBD z>cll$Tv3J1*)vP1_rh{Wt@-P|2+bGNJ`YW}M%TI|wdVSkcu!j58@v}>Lr+()b>S+# zC#(rW6Rv@-UTe92p0=TK&Mu>C(YiUAo9By|SX<>BZARCwb>^(_`Z*8Ir(R2E>p)!j z#Al7Mm*Ph~dGU#-8e=)}XMs3p34StxF@763&kztx^ByN)EFyk+YZCmXU~12=m*DZ* zSMWE&VH)lfH6np|CtnDE4Ij5h=p0`beqZ=I;dh095PnPes&HO6k6#o1Ot_ivA#;3K zQQ}v?n|$jV5N`JIGPo~HrvjW~{e{`iFe?+)eHxAoKrUR zIUQHs_*?QEK*yR$>j8YEm7TRMHIf-mxhcnU^ZDknIP}UIv#skUszx)8MLJpc31b{L aMxQZyY22Mi_ZSKT^q8SAK#$@}h<*bbgj^f| diff --git a/objs/builtin/ft_add_env_front.o b/objs/builtin/ft_add_env_front.o deleted file mode 100644 index efe59dfabcb9781d913269f7a79f6e880578d61a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1312 zcmb7DziU%b6h6sol2>AlU_dR185}Yg&>~oHNlgU@2aygA%1wBAr9%1=(x(>U5XjOs z;NaGbNhbdT3p%(-JBVY_=>>Ff%M)Y#&iz5s=;9&ge)s(T&gJFv&+os_5k&~X#}agh zFBvH03N(V?pn^lKN2;bfJXFY`2y8mQrW}Dkr-G}>e?U6;a%)upU zG8hrUsqWTFjxSz#ubz8lAs%j;7^CS^)XpOM;72wVWP})M(pbZJ8LGywAPEZLB=%=e z$2{HvYrrJ*5tIcksazY=cffzi^aCAF8qwaQMeR=O+IX0x@H9bTwiZ#E>_f19BlarDgsGwF8U7`JACe{eh+Oxqi~P*Tc;AktM!Ntq5jY zy$S4&h1n?zGt@kZ#F{7Ee*i84<{1tLq&U0>&l~6^b1jw2dCW!T&+-1GYnT)F3unJsc5Nb#opZN=HZTLk|1S3pG4_81 z#({4&Vh3)LdkREqZe3$uVLYP|!11^PJdcZ!4Q(6V7qxA8K4TjL%>R!|Q*-rqVb7WL zc)`B8U|(ObNo@O~R4xnGdnvZ-RnM26%AU{8nPbnddrnCOaj&=@^6IWj!l}C@-<9=V XwG0OuI;Bdb>QKest=*C*(~$B9(h2&* diff --git a/objs/builtin/ft_atolong.o b/objs/builtin/ft_atolong.o deleted file mode 100644 index bc2f759f2ae93a8f187e9949bba41df45a9e4091..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1672 zcmb7EPe>GD6o2FBI_p-8Ay^Bs5(I9rp+%)97b-C7P~pKt@MWv3i|ekoYYHN47?IRv zsY`TNZ)wy;=rE@g57{Z~P}g0EoH2s(v=iv|do$nYYFYT$_r34^{eJI#JKu+2-!~5s zDFouB8a%+8CNStI*synhUw){L{h?if$kl6MX0DQHLS*{JGg5&NqU%z3*S7BN5*770 zcf5uOKL(a%;gS&1)X;EGG$TfnWAS9K5LYj{K9<9>PF5OAXpBuWD8@a4Txhm(8tW0T z)5bvrgFzg`_66i|KP?`jZb%>a8kmXkF>@~5vIaK$pt7p0Y)q(g8%va%QG=zTpRBTv ztl}BUHB|w)4`iv?{DE*YfVFlk-QdH?U)No!j$tFi5)_k9)RGD!3zH z(v-TvX7s-MJk|^70sU_G&HtqiYPaXKS~WlYthlZz-fza|e4yDqlV@1z1D;v8=Z=MT zFXnHk-j~{BE3vM mJVRo*C!H3z6Ftd6k&gE#Nx<2YNhMOreoAD9hFk3w&He^jn04&{ diff --git a/objs/builtin/ft_cd.o b/objs/builtin/ft_cd.o deleted file mode 100644 index d2317fa624dc33b1bb2e03d25f758e99f355ccb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2480 zcmb7G&1)QG7=JdK=DYc>i7Aw6sWeKrG_}O7b|(?^WuN&yU+?oZ zGwa!#AiaXe;k?jxFFRXdd#~XqlPZqEH0m$v9VpeS;foS|UwDgLwI+LPEE+ zQtoOdm((s>@!z+O-s z#0&SsBi_rq*!F+d^ZYl}`f{jRf14`X;h~2}v(gocxlC&}4sF>7$=w_ycYB0fXAJs% zpl(4S`ornGHQ^Awjv7YogE1Gla+s)sI#%Blx?TH*;DZgu5x^@ve(Pz(Dy z$H0fF_Frabhhw$vyMrxrtS{fG*70m0U!w-1@^F3mTW`+i&cAz>K1dYPGs;WF8Rfma zQY`6dC6&n)gNC?}^hw@w~ia*XP9bG3;YRkw?I8 zBK3if(c3_r36Yz?exmHEkMq}nL(mt12Y?H}0pJ|)1z;SAXGT?hj2;ILLq9IC4~RY@ z?Ld^Q@<9cRKEnk^RpckXkH{k+e(D1sqx`KHf&I47eT=$&N$Avxy z9EJX*z~jIU#K&2{7##<4U41}2uPUBR#weeeJfA;-INH@`K1OXI_rC#T``196&+595 z(T{*=EpkyHe}WKFjr$lyEneNo$v7YL^&N^p0Q-0R4(tab7iK{H2rR!lY+`#^`1~sD zPvOJsM-clDi;u@0Ax{Yz@1AFWMaU_Z5lcQdUkUpeVgFLd?+DozvaIJJ%djm7`)7~` zL~URx25J)N|YGXF9+n)0eLkbUk}I=0r^ruCQVN#a*Kx6c*7~Hoxs~m zTEQ^QJWx-=Mq1;gmTXR6D&YSJUiE~28D5t)e%nbia#ysXkudc%V&JcZm1-nO=a&p@ zHw|1D4NJe8Yz?qjN|;a~RjH6nScVr%_cZ{&vJ+L@t1_nk3AOI08K%4<$C;%}KNCNQ-Fbg|T02S^4o4~*T+d~$wnL1J=Ad}&^JW?o8sypIdA zJj@&gsNfBtdCWle4(6$3F4fE0nmK@5<710bycq`83@W(PGD6o2EmyR%x_lAsCUUWDzik{(hI!qiqMEEM6v+ow#cF0QNAM1hwDFAH^W zp}QU3P7wt=5VYW>TXczzCIqumU=ZO3+xB}i-#4yW(1W+{&-ecP-uw2O_rJdVK0~At zh=1C_6;|S4&;{_Acj}p^e)@FZ^-0DkI|4VeJSHLR%p?0KU5M!$Gt)=5(q6Rr8rNg> z0DwB#)lLN#iiEK4+xN2h1?f0hPt{=zOhq27g=Cw+gL*5=t8qgY9yExm0j>=Ebrw4u~8ltrtVhxSf z+}^GJcSNJ|EXeuUZ1x5|jlOeSLigiTJ+DU$ePX6#pr#wy>Mv@?YoUjit9k&(Cb-ms zC+PVFJzX8O7#C{&E2pu3wT$^oRb71KJ?wU4{!XgzVO9@wH!#V*Q7YW2VIRddiHpw| zbBJTAhmx`NI_*>&bh;uY=S1xLKJ%H0~rz@-{&;xt+{VjR5NWn3(wJ~oV?9ccM zh9E}PUzB%oPTm#v8spmgyc@2~cZzxUJI(r(W;)#a5@Mz_a%#Be1Y{Ml!G3o5f6`WN zU|-KR1`gk*2Kf2+Y;TA|wTE(Qt72%;$A)H(E365L^<-QJ=D|KouHNw+z4(6>+~;;m zR2c6zdbq&QSie?o?)di<$7>k05G@IPm`=P}yba$^ah7rKIeCHV2e>>c`r=gnCeHDu zl20J<1k<>8mJ>e^&;A2QB&EOla-u5zZy@pB(-mJ%6d;kBybK8_Nz<3%xRem=58s09 zVyu#4kZh|t2BocVb7&U|tMAuMX}^SzX%x)oucU2CTg4Bv4WR0KWx(!k>3%An72j7T3jJvEoQ7GF`t`TAhC)stUWKK$Yt{x%Gt}SBQk3U3d~_;LV?LEp+74k BHLm~w diff --git a/objs/builtin/ft_env.o b/objs/builtin/ft_env.o deleted file mode 100644 index 27047b3683b295221ed3d5a787d469e4adedc1fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2360 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 ZE2}mYgHq+3ih3FYh)-z|1Bho)!{297>`?#! diff --git a/objs/builtin/ft_export_print.o b/objs/builtin/ft_export_print.o deleted file mode 100644 index d210f6f1bf6ae1cdf5fba54e445d4aa1028e5340..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2536 zcmb7GUuauZ82{4SENQ!~+pM$>b=lY;t7Nz-D1$(-Q;I~GV-LQ_F-`B*;LV@j++b@R z1nR?lTX7G2P};sF#aAJL;VKj6iwyTL9PA;AgIhtIZ;24&@4M%m?B>o29ytA--}mo) z-*?VE>D|A6|9dY{h%oriFlK`nF-(l-Fkkny9)0T1HalSaq-->gK*rNxC58}=x#Y;T ze;{5l zU&>@1Q7L?sE6fX#KIhk`R9;mjoI+k)+f@{)R0AQ;KsSXc+p-VFm>6ut@*4b}1-7F^ zkAY*D=P`NknkW0>Y-j}Y|Bjv!`mwuW)VsH7ZDaLF`_{~nMr~EJX(ZJ_tm_+w{ zH)#1}+p`U;xHF;=Mcf+p|D)HNY{705dwH?PsnZ&l{@s(kHtRbe(HH2JA=ZZS|c}CU`e@`+`>~#%ujrZidd2%myj8yX^a@#@7 z=!0Ba*H;^oe$uAeq~%nL=d-+%1)2zBqk_cyku>b>~#bh`!qb0pQ| zxGm((yu0#79kt6I{LA_2yt&W)eQ_QOktg}eGm!bVCebU@sb!my>IH8<^c~pmi94BU z;*1tu)Ns{MXNz-*;tX|dv--?g9^yXGT0Aru2X}SCg?tUURK39Wknd4V+i`zzANd~CA!GF4h1syL zw}$Myi*Lf~tMX%e7iTDC{0+$d<9s{67_`NAp8JkZebK#x9{cWBUB|?k1Y_2b+ZObE zU$~!=i^ki?G5%oM`=+_pyXebzm>aP7_valmU$mEF8OthWGfu8ph?%xsw2#ufnYA*u z8A~k1VsxUMJa%lmwo6{$l diff --git a/objs/builtin/ft_join_cmd.o b/objs/builtin/ft_join_cmd.o deleted file mode 100644 index 81625599cc0f03e51d1edd1b48ef31b161a0bc11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1040 zcma)5&1(}u6o1=InuMsKG_ab3?L`Pmp?Xk{3)Y(lDLr^{2-}uM@^#o^OA!LSz8j(dHJ~H4f zRu;jaTVScRtB*)W67`Hs>>S|CGbT(3e`Cj=<`81->5H|gooGQSAIEOlCP#+435KN* zUc1?;dA`_gy{@;`g?P4-zEASF##u!k{Aef1H*HNL9^kwQj>}&M7!2Yb*xy537V-@8 zF=P?^9L&UdnK_pCXGVbb|1^GLos9M}MMq}WdZdzUAl{RDFk4UnbxkO*E{ zjO|$n_RrpfykT+}Uu+xS9ll3nfwB4PET!-j*eMf#kb0}L?Tf}nZIi^NFJ86lE#WoS Vwc*tojkZS(zuCF3&t5n}wkyYJd-#Gwz~_j|wh@4N4P-@X6+ne=-Br-))s)E@wo8DnL^Xkgl>LHJ+G80;RFQ{o#Z zUmzA{W8HJDT17cV`^9}OsrV~tmXHxj=vS{gMZ@DqwT4wIF&Azp($$0x#zI{*kh49& zqKBC@SYgdAVYohJo7oT+@B-AgPt$85!-2TPuJ*IFu67Rj_8KuAodK}mK@>R$oYag z;W{CAW@~mwi*lv@Yl_Bh0S>)9~K`N*{SFm{Van!u(|*=9B}7f5HHsh7rqI;b^G7 zkM1iTsD!(Ue^*?7m1O>kaC~_D_^!g7PV|@k6O?X_aCx7}_=OQJv1FXsaqAVgSY^|7 z>n@v3%Ojf?@DobNs(EGNvTK@HJ$4!;Vq6PuCFIeSk?mETMOC!`1N3@KVSrx4wxRq5 D?Axn0 diff --git a/objs/builtin/ft_unset.o b/objs/builtin/ft_unset.o deleted file mode 100644 index a9c6031872e077f44eb11e39a6f73091cf3801cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 792 zcmb7Cze@sf6n}b|hGhgn){;X*L_)RL5*$&`&=Aqk_LB2TD^IcO7cGKIV?ukbZf$W} z&>v7O&9$9FOOpm>pLgD=R7(#&@AJOz*Z1A~-s9){*C3IPAfoz!v=}h}G7i{|^|!ip z-Iq=WBJUi8U*LD+%%*;3x(5*R*6Q|F_v~3$t|9%Tb`eTuf+`Am!mQ=8`J`s@v2mI) zQq1csUQF2Q6LXzW^ig1MgWXZ3eMc5xMS*r~2+06MlEl9QL%!z;yao;f8-R%92&7i- zaOMU7M_Lc`+`RBtnI1`Pm2*RMfpyaqeAHBH4$TOkYgj@pW9 z)q<)O@(mo=cQ+Gw!-V)NC9d13sVPOvcb=(BAIS{`Xhdp1TCFj!XY*pYiaE;n3cq-> zyLdZSsCDW3ZM@(V>~m&pUdqeeX9d CuWuCq diff --git a/objs/builtin/ft_update_env.o b/objs/builtin/ft_update_env.o deleted file mode 100644 index df7a70dd97740e920734d8b8c43ed3923aa9be8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2624 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 diff --git a/objs/execute/file.o b/objs/execute/file.o deleted file mode 100644 index afd51698c33b6863b6740e99d78a08c2ca42a071..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 896 zcmb7CJxc>Y5S=r|i}-~iet{UQBB-bcVt1l;79uGughgT`N6r}WM8zgxlQv+lW%3J5 zx`2(H+E`h{?otSro)F`k+dXokjSptuyqVdVy}f<-eEaGq(g@(C9hPDz3Ij%Aj_3Wo zM7^CvdBwigQO?$;wh3V;&+JwYA>!-X@s{?z7v*q2-dn^H;#fQ7n0yG4I6TPiCTww% zIW;qTLTs%0Ip&%YhT@d!Qw4KhK#>#+pb?n-j2;Yy0bIoKM>zaF1`cC@yI`9z2G{t; z_vf9L6aPT-lAanDTB)&0g`2yH@@t6P;+-f*G&*u_ug79-w1l$_-XMmySM`wL#wfQH zTc(NwKQam%H!6`Z>hFHZE35m{X{R#B*?7O(!=(xdBI~3fDQh*QcL# zT{qk*^q$fX(>l}MSv1)jb#iXlaO--mLg(fO&w6h*hl8_%*N~NhujvO=oGcmrmA^;4 zgJ@<490pH=Q8W_;KC l;T2kDCQTw?9Udn^sbnH8_Dzd@4oTm#53=*b>m2$pz5&pPgSP+x diff --git a/objs/execute/parent.o b/objs/execute/parent.o deleted file mode 100644 index 621ae409fd05124133dcd49519489852450c48f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1720 zcmbVMO-vI(6n@K(T|iI}gAj>pf(ay+2pj|=N%1E!u^Kfs;h-67yM+y97rNVk5RxW% zFvf!<-ZX(DB;IY~#e|DDBM0LVZsp+3gEiLrz1>+@ix++A+c)3)`R2_`XFmS;`s*l> zLJn$CwN_RL;phvF1TaFxu1&-aus@0g_;{E{ zL&rH-M>#gW2$8UzjA2enM>U_%b3?|@^TGlmr`h*_&zhNyCmfMA=M6I{MD*%@5QBAD z5RuLW@bTJ)>xpFO56VHrPC>nGX+|;>!b$AEj=C1u-XlaWV4I+~p)9IYu5ExK^`E7( zLZ8Y@%4Ycrt?q=VR0&ZbLbm*8$Mh9ZT%P^8q?>1v^`o?2CKst*aQK zi=4AlORJoZ+>&|{szgc$HMznwCAZzT-1tg0jJ!(fbTPEnr7B)+u{Kgrm(>$$H??t1 z?+6v#dD-7dZE9JWD|W1PJ*^4kcT$FZMW2J`MSp5NY809~#LqlRP3s|kZ(f(Hx*tM6 zyWkD(gNn6d&4qWBN{8Dw^EP<%70K%l`FvEX8#fi4>=QjU67yIqz^19vql=GIC z#y4?BtM6;Y=gJnJRn2A@czx?kez%EA8(Sjp?hp3!gTEI|*oRhkFG^~|!FUg6)TYvEWzA$` zAb88t>}+C6OBrchvoc!J$mj{j$~!vtzGeahJl+VKII92`uh!H0Rl|htfX*3#w?$vtvE5_=ThB1Lqw+ z4U6|Otii&M+w0jC*cLc^>5k^-`|r}C#P{H1nTB%wfyDPEUX+-h&S1UH7z5@7xwIOkh{R*vu z#FGLN14DxtkQnMB1{*Oj+EXH>J3m6GqYDf#Lx)NXHmWh-dH3Ap<)x9@quzY?-1BqK zch7y-{rTVf{~aNU5rqE?W3+gZ!hoE_cs;NN>VZF7900j1K1PpYjfcfXh*GX|-PLog zFTC~6!k%tsM?(3Au=vd=(erE^CXd00QiYmZEtRjxf>QhQnLG)x|2<+NHFEB-Am7#1 z%3{G)*UBH4%1cV+-wfMRQdeCTyU54fJdl*s`%<2VZ4yHt%Q&1dAne5J4a6mZzD=|R z9K*PT!Sb{W_C;?9E>A22EB0%D&1&|yX`^mUb?+sp*RWLAKA!FQaq4vv*&dR9?Z<&5 zgtctX9>Ivw13!N2xi5%bL+!~FdGp4P?G)2-_Aq_OevKjRXX1^$Glo6Jvc1z14-VR2 z^7^nf)~CAQnq)uTV-q^so$R2N+o+Y->R97C>g%f8U&}SYYh%k&e+gneEJ`!H9j{VX^&wx?R?e{vHT)VHl# z{k7R9>eBT+;`|2*Y6m?S-#cfVcW}--=!c*1=FeWBw$Ht}kZm&u&TV3L5?j`9@h|S)GfDF+Rba#=Sv~o2PLH!h7?6 z>_<0V>hj$RY&q3peht+77x?wpE;a}FR)V_~;>2e+!1sdD<~wWSOrzfjpUsOnJFcI7 zcH;Z{G$(yBwitSZ8iKp}UF43LduV)_zu`6;*WV(aGd~~r=5&ux+n)z|w8!ThP2(TN zrP+nK40aAlN6+PT+cU^I)eo_IAj{%wI1pcy*YNj4>@)Ji@XI0gyRaW4O8*Fa7Wh37 zobz>!nNz@{SSR2!z=zlm?{L1WG4mM^Z%KLv$bOSRyrpRy$o_XwKVIbY9FX&8fgC@h zF>^-NPXR$LKdCXp4?6pE1F?1fAB~wiK%`Fp1myj`1oD2L04IR&0uh?d19{&wK>RkP zJ-t5qo?uomB?#cSQGN`LVq#=j^o}f4Mfb!fsDrsnXKu3{`h@5wMK`~bDTz0I`AY1^ z#s7zh|F^8;0L0zba}oXRi2g=IC*@o( zxulj|RjaJ)A)}BsVk1FDvNGWIpvQk+Rv>nUE7_O3#+^H_pg@9q-qj@ zRF`W(EU7}#DSROFnzL9f6h&FCI!=(4V^v{wNj9E-l~&x<%6X$=0`(Q6VgmJLqW=Lv CtNzvi diff --git a/objs/execute/pipe.o b/objs/execute/pipe.o deleted file mode 100644 index f1f5f9d7229b5aad7ac76932f256f4d35a710146..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcma)7O-vI(6rQD&ZowZ&AW&ighD#fR3Kxxu$@&`)9F&kqOw3qIr46MmWr-w6Qqv3S zg+^~2;MjWh(4Hjeg`1Is@!+9)T8t(TxzwcA@6FCG+ftO5yuNw!{=PT+X8Pgx&p#&^ zQy7STTEPWc41z&E@MU2Y>Y<+`1%N(FA4~UOkJv><5a)V$Q8(A7K5=Vu;y|}nsv}VmvR)gKCpQ#C*cGJkrVBg5!V5^ibG05()uo#h)NMtUOGcr z8mr?|t;9Z7ms;}G49jk01`1z0Smm3CRdN|#*zstUfKPByRlGBXXT9HWu}i?(ZFFdr zc106@s+-NdP}1XSAh5>VT2W!?aUghuvmG&d*Za4W|Hs(=sF7o)zaM#WrGdgj)O!FX zOsc}>2uH+ykW&SYd}h7yQb}(ImfP2W^%dc;a{@!efxD@{S1X?V2kxU{>>5pQUjXKF z@~oQ1H(*?GU_9>G8jiDVTBEVACO9#o-Ska~-{ZVVZj^YTx^z8{`N(d%_@}x#fsZ{W z@M|_F5eF{O3;Y`AgwAdVwQ^*$zN;fn^iyj1uIPv2x)Ep3;6d)~9T%%OXOVoryR-`V zTKVi5k-4ni>-x>my-@Pi8!TJKeK2qr)Gp*fe)2bv6PWjCzU^M&teugC)*m3*jY#6y~Qsy=>>;zcd0En~dMYq-2`*|PTfIp&@E6FGad3LX&? zC)U&}^6t@H*^>7OzN_FY#Zcbr(zSdI_nyA*3PWBCm*?^ z?EA2{Gd8>n2@GRDOnG$^(u;k1%Ni}j+)m01KyxI{XXfyYQ6VYpr1y(bv{EzulmduhXCLWGXS83eNIyDwRm_@M2VFF@7F@c8rH&iTN-@Vj-^cWHgC& kEE=DYOJSAkCpr%WW3fbt@u`L6D2wT{@^?h6FQTlVziXtSVE_OC diff --git a/objs/init/init.o b/objs/init/init.o deleted file mode 100644 index 5b9681b0f79dec0f999d8e4a36e695a36c64698d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1736 zcmbVMO-NKx6h4!qGiEA=p^4zMt6;)}D1w1!8MT;2gpdp2I?jytXnZp~pJ@p3z!okW za2eRr*|liV?1DBef=WURTIg-+Ch zL;-^E5QM&FBLan-gkf&M|%nVb&HsLkKUuTg04x0{h1Lh&5nV;ky~ue6&2ujM zD&ImK%tNfYJX*jS`8O?MtM-=HI#H;?f3Y%D-tC}DnEcbFZYs*T9ad$p+bUjYrJg;+ z!e8vNT(56^U^TeE-r5d&ETR69y~uigksjM+?uF-2rQ2;_dIl;37)jA#UK-L@ydE*M5E7+rX0b3ZLL`7ZmoSj>GBf!~e!<~v-} zzS-C7+6PFvf|2vhcj1Fjw>&?XYD#Gg)os>|9!z8F2~sxU2$9E#yeZK~+tpQerxhd?@*3B9qA` RDdWxMM&x)|j>G7P=nvgfBeehk diff --git a/objs/input/get_input.o b/objs/input/get_input.o deleted file mode 100644 index a9a38aebab28fbb5e1de293e473370b9d7dd38cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1392 zcmb7EJ%|%Q6n-)1-T9aEB#7F$CxU7A&}&riAfkd`3ehX<#wD5DEo?Sxb`EnK$blAO zWxzr!&o0+lSfumhT0w2Z!s5ylS_n1~qJD38hD_GV2XDUj&3p6ho1f&vukXJP66FZS z!vws?fdhvfhhIpt3H@idu5({B8a{4w+E9B1ZFuo zK^qLlgs8@<<%i39BCBU~j_CY17PBlv33|;&tDH)@FUL%xFWy@h zgHDY}E+BUdp5_jr7!Knio_~#X+}lSS_$KfG{3e`juXbKL3CI2XxBYoYpN8wXt>G2w z?B;0zfv4~e{8>L=9-y%S<8+Rle)Okap6C;u$2W_1twS5P%$l^ed=d5c?D|v>n$Ui` zbFy~|8ur{Se-Al>)0D37=F;yawXU@_7es=6HK0oj(dbW9e~dQJTx}2N`}l!_QUJ1vGYNO^SRl1oY@$^o8ct9T1~9@v1+!~NW^QQ^4cVpr4oJ^ttt|H^8`|FV&E|H zBbkPQn8%+Ai9og`Ao5x&_qw0!xk;5IT%>n3OVFZqz6IC>vVR^F5R8o%uZ?` z2n*{W(1Qkgs30cwwA)j`%PtnI^derYBE_3YdYK#qJrs6@b^U$&-fJe)RN{j-zxVsT z?|uK?s3Q-V1Gjph6$o6Rt{5*K@TCEYTy^VWhD^eus`i*MCohr6CLb3I^eHd zs@P5-R=tl4UQUR`3sLO_36on>3nTOv@;LopHmStXHjgGV?WnKNJf2-+=xDpB zuMOkCW>@9BlcesUJd?5(&ObyhmLY4>{u`*Q zE7HFe?jOsDYVY;dvrY7U^PVXl_U{w=Kh*5iW&d|aiTnCF<|fDBTtnoCoc`iI>sV16 z_RI50o})+SIg8l)Nowa+PvZ6#>aspDR>H}xsStMT6S3PVliuX@4)TcaF^m(}UxnZQ zlj}b6OGWP0Fa7=``|hp3(?maHU$T5Jhnqe0N#Dz_>t{QBZnx@7ohLDIS3{i3pg+hv zrS9Q(*|YpSogU~;X1dMnSFJ&Pk8!rJ(|v4Yms)(k8?b+jJO*c&$aF)T!@=IA)+}tS z?`N;0FHgw{a;|?DHH0SJ-a&nPrgfWT?2i)E)qan2j@zh@_x9E=H2Yb3Pw0wW%|ob1 z4aH%oS5-@KyQG}XJVSp|y*}g5(&LdDBT8=oaaq%!0uf}fCUO2l;ERwi0AB#!g}+n4 zB9QI#K(^0GoL>O4{SM-d1MdOZ?kh3}Ujio}zX^ov#Tydm=YS_5N8k8OO#g{e zu}uF8#Cw;%1H_w{-T+#_%Rv06(r*Kw17?7*ADK}I81UbLr=ZZ|GsSC4wxzi4*DK7C zKm*C~c!l|GbWJ5*5F^?As;b`hM9L?ph%r@lhb~_w^h*prSa3B?%|*I#)$G$h#m? zpIfbH`O2zW4GLvXtBS5%7OHm9TPXJi1v%JVc}s2LD7cS9vjkiSa0AM(hf4*N-+tG;!BqbK>a11F4JXf)Dj(M&0X0bG5n%Q%~{qriWWu=^eKhEvcL86${?QnS-x?`BKERTSUiNPe+ zUxHl{SQsU`2L#Z|m^|2@KS2|9Wc@!Gn-T5n{`JU8f1R4kk@4<>1obvXsn?2_U5Xh! z_*!ZYQ_mYVdU1_@^^V>?em+XiA>NeGjX)nW-1uWO?+xERUWll@1Z-gs-r@`xAgUES~hbuV}qr8o|r1E0+S_YtiZAoJe?G9UNPsM|n}^J9?MZW+jSw3i;fuS#}EfEn)szzUCCmC7*BSv6Q@8C7&x=wl7|> vtQCz diff --git a/objs/lexer/lexer.o b/objs/lexer/lexer.o deleted file mode 100644 index 6ed19071fc7c09282a0d09a2f78e1e04ebb533d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2720 zcmb7GO>7%Q6n>kv;|+njfk=f4$>pa~a#%#mUy!I|5s(ndp+c45Hf-%}W7V-!XAu#( zxXQ(-NYoNY96(Ju*%y=phpfb*h)X!pUJwTkO(P`xfJARuRAaukGvkgoZUQ6CzIkuI zdGF2p+1X$I{_~$li7dk4M+$R`7bh?=p2D1q-^T2|$K1FS{iZOQ&p^!6Ry%|U{MA4) zAVQpb`-5{2c)i+8%N6Sz!}6#@G|i$E)tTraL}4YUl`0pNAgNF5QR=9{&KQGrn*;i) zOUqs%5Fb@OE>(&`EWBmD-%^U|N_Y+W_-vc-k7I^0r1CTbPh!fjJO(f(27_3B3;U)( z?@SQg1f9e@i^+ps<;i;iBS8N5=>J5wduwCu-a0im)^mIP424kg#hnaAolHJ*EV|dp zTtB`|^cw7Nh_7Kb8N<9o^~YQDIWC3i*1FhptbEj-7hAJwnrcJt{5X3Rve%*Ka_89f zxSFr}JRwzN~S*wfT16whpXo6_+SCMWJ4Ee+>LmwQgAxSGBDNxItVa2YZ}DdU;r9 zKI9&zpSyEhTTV*mWyYv~La)njL_V|_%Q%uaUEl1>1aNVDa0VS8ix;(9b}R zf^NV%?mYJ^MH`^l;&M^49egiiJ1;&t5KRlJVVcZvNi=5a9nKQIqIYuNh|yung6!EYq^&lCK~1kcT9>f^P^ zUrF#BKl43_pnA!#2(MTa<xb|Db>o2nGNfXdr5N*Fu^S!`_rJ9eY+~HS>1P7Kq S&~mV}d^&!fil3Z!9{&OtRdmq+ diff --git a/objs/lexer/lexer_utils.o b/objs/lexer/lexer_utils.o deleted file mode 100644 index 413c2c8a7035b89fc4921577358084decaa905a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1144 zcmbVKJxtqB5I#d_EV(5`LZW3!mP&~#L}6%Qv--1jKqy1E*EETgh!BWyR3w&ESy+*} z!w7p9Z%A~YQ^kT9I)qMkrAqCFE2Zvt&-WA~n0oTPd-vVF@9v)8*FQi1-X*dK!b=9) z;7tJvc?b>k?)JqUOYmLIKxF(ZU{(o}QeJ)A8*wOAe)Xn2^3Cp>@Gu{rJslU04E0P7 zTcxTS>zkFTr@HO;&2~+x*DurYf$+Q)umK)?bRia7)0)m$#QFf59J_~PD1?(3|AliC zur4lW3D$wGKv_74mH9d6e%JV>*fr3nE_VMkjD&tnc;-ahC5?N zL-+^%{M9Aq`JScdu&=JdtQ(aq*Ds+D`V#VQ`e;*9yCL%&ATL0kjXaCzfODeM0mP-9*wM diff --git a/objs/lexer/quote.o b/objs/lexer/quote.o deleted file mode 100644 index d32bab96f697a3259e009da307c4c46ecd231eb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2928 zcmds3&1)M+6ra_~);dZn3<_#P!D&lDfhwdSNfW4HsS|J@;5Out+fR}bgAvdd_y1zFc$!IsB&9wuwZ{ED` zH}B2PuYW!L`ygW$!=O(bbCVWFFfrc7JR_(AjeN=px%Ei#Xq>ib+Dd|Rue9PR1c39) z=dWCTf$Plst@bw^7|NV?4def5P# zzTolY+Ko!B$oa){CjFuEtD`nM&_}U7hJVV&h{_Y7y@e^$@&=eOF^Gxwodb-~&LhA( zfJw~HFlp%A5iit>Gok(08T(u8x8Z7RW4OlJowcdGog^FVCfJ~#a0gk-^_?*`nYEbT zUE_PSchqY6PNjdwxyu%V#J$508T%N%r-P(Ba4dH)HOYL!JK(213wr_NV$ju#w=TiA z^~VXx^HQCedxs}j>r&rl{;VZ+NBAshI{=TcZM*(#jGYeK-G$v=!u83f6PGe& z4#&8?zn>w$ci=b4k{szAu70|KJhdO#{P%s^LcZ*cA@Gike5H`D4D)+)>@4wiZR9B< zbJU-EaMrOVt_M1%6!VcwkuQ_a(eZ#T;z_wa@+#s9GV%-p*yzK*m&tWw>I_owdCVQ` z%(3=+$RYV3h&?tS=zs=W&&+cJ&-a*Z9qUh9Q=91RbQbbmtVK?@_~vkRW&^RmItQqm z9{h(LU&oWRjaZS>=e6^dJd0T~7bg7!(2=vOqCWxc0_ul+Iy%M{FHk+gH}pqZ#^(-1 zUX%{Yn)ogpzsl=>&cVONjb6Er^WVk!_Yiv@wnzGf>cEWYTN(57exdU)`vv?Ii|7}~ zQNPUSeo=K{#wdD_bn4nl8vPQst?LUsA`eN|znPTv717z2e%_3no$Dj_lg`iReHBaD zs5^>PzxKj>aC&WB`r&`CWLmcjL(4%fnMCBLKWk=$$bQ^@y7 zp454C)!n9h_auDzKlkH&ehJt4=s1o8!=UHM$WZ$%{tEg@^;h1LQW5zN=_ihHMe;@H zU#p+HdILr1KcF!1&&k~ZgsO|{5>8hE@oUd{kjMKf_X!|`bEsGPr{{`5h~9w^T+bZ@ zBs~rw>4{4?y$!#J&jBQQ9FXYrkN}+ChA`3J0VF$rA{LNx4M5V{l5qSB1ziP?CT*o&LtT=*QrB`7Mk60-QX1qSDC5;v9%kwX=(n=#=E3&G$&^RH!ABpdA_7AqK Bv?l-n diff --git a/objs/lexer/tokenizer.o b/objs/lexer/tokenizer.o deleted file mode 100644 index 4d0c655b7cfc8e62805a4c52138ca4b752841d9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2280 zcmb7FPe>F|82`r2oU+^mp^~7jLs+y@5>$k+{i6;ZBs_G9*Sb69;<~G|BTCz0!47q6 zA?OrIbWn({wKt&-20|(k9n~%?6y(hbHv4_^zR}q=l|Fd$d*8p```-6v-hBT3^Uppa zgCP9ah4G#z5e&#-j0>LEQ#Ui>QAf|U-gEtS&xY>Len
  • MDqF7JO_nu}Nt`6=er}hcI+o_9GYr!a;0rL*4;KlV}Rqh|!I~!lm+H-aQ!H z$N!bJ4>VWF*G*Q&s5m}$bakRp zxvg8}t|0f|%htX??xsDt)%;u^@5`%C_<66v;ni@Aid@5SD%|4wEBPyv=w)##q`t0= z(cD6qP^0eUGU6U14m~K9!@6hHeU%=Cq_0&mvC_$UYBoP{|8?9=*$?xUnYW%w%-3eb zN+x1?9lRGU?4J-n*N^w9rF#7UxAY;%Z5rEiPY1Y}AN$t(|JOSe#@ zW}WW2XGeYb5M4iar!{z;+HW5q z`o5S0AH3%B`m}uy77$;_U!L^Or8l1I17DT&U=t9znl@Zw*B4X7yN))TnDxjlwyLe0 z^1I|79N)tK1^yXjL*I>lA6O90IpGK!pe;D`(h&wiV7YNtx zm|#Q@;Mv~+n-Jhj43j2s`~R7@qOYJXmI;iY{}t=-`Tr5rL}Bpx{eB|4-`_L7U)H=K zI>3`Wo`G`cd5wOjM(5aIJYQ}>{YZ^IP@|K&=cshf$yg(#oNT|9QSoF_rBgYF)S#Wc zZ^s9eW!qU>S)(b~bc}5!Q?`|GD6QJ@zZP@qfrTjuVM-1U`rJ&|8&C9;%HhYJw$#vY q*0D$>v%|d`nkG)zR-AnxNyO9XY=Y9xz+i{>JS(fUV*(?$lKukkh|v51 diff --git a/objs/minishell.o b/objs/minishell.o deleted file mode 100644 index 5861a64166e6e5e3069b0971e27473738c7d960d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1232 zcmb7DO=uHQ5S}#sNv+9ND5$xl2aj&iB3KY1QUwncr1Vfw7}s>0E=@LZv(ZQq3h|)e z!GQPHo4t7uOhHiSr8o5=9;tWW=0CROgU!hnyVQar9Ym|e5x_S>14t}HM0c@TY5f#?k(_OM_+ z8EjJ^Fy>svbu2rtHllig&WOst5wVa(C_%4OEE_qOtM)z1USVFi94eSyMW=8&knE1C;0Yv_|Nd2kq~j z&hdVJbFsZKzk_#cyo>Xv+eQU)gQm`1KH-3U02?LJUjgw=^_M{0EByr!v*}NO%Bm9AI+=WBc zZ~>@=`Y(ZpC^-=>xp00l!sU*I^D_~CBf?iBJRRZJBAnQ?@3LEB!*PuJ#Cg+Y%Pv=4 z;<8i9J4TUB$0<2%)-3E9=vsph~Jx?!4YZFN#4Hs-h1DhZ{D)(|NQ>@B#}i}{8)sQ zc$0=wH~-Oygz>ks1ChotgxMApO$g6vcnZJ?k-PUe_ZREkn$b^kqeLe-xkxQt z!(NEO-maT3c;aR4Rk>Ca;^C&5*L|L6tT)?4VOj?mI%#Wg(FVBs~EQ3S){B9529 zi^KcyCHN$43&x9Q#>QNvb${%Rzb2pP%ecAFAGfK~ZJ$5vwZ&mPY6pIj0;1Mei&~G+ z?H$J{MM3E8VBLtvQ+5CWGRJ$#k5K?!XZ$3vML+!2_vdhjn;e^sC(vsYqd~?B^OBQb zo;?8fxgP@;dC7~}Tz7-_!A9WVJ#*n zaWrQ`aW2ntmK8_MRra%vr(;|7#BVIrVe(iD-q(HoK3J!j*XPc;pYF>uoV9Uty^q<= zouQ8z$un@y2>XnMnZhT4Gtip3L<7bItbdc5Ly53fYc%;>uYar4`lwNlcdYA8efkT! zj!R(iXZFuhaoRj0-%ww9H)Q?C_mRi{RQ7}NIrt^uU+9N#IopG0>?wR29wph&=!b3g zHazn$DsPAJrL^*JT(`6he+nDD9w@B!-%?oXeZm+A>Ho1b@QT4t0UJ>6O`Ms@lkn<} zBl5+fsF$CWJOfvq9Y8l}p&nIfaVw_9{+Ic&}ZD Ms@|@9RX(rKA6x)YNdN!< diff --git a/objs/parser/syntax.o b/objs/parser/syntax.o deleted file mode 100644 index b39c00d8b368179d8968bd05cdfdb9b26c478e9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3088 zcmb7GO=uHQ5Ps=jwpQz3)GCTwQS_2xtD%$u3_v+w<{@4r_o z6;UAiYeSo%j)?}^igv^w_1R^A`KT6sVIAQ~Os$nIY`fr07MKCp_RyL0Lw|Yc&9v(t z`D;Np*{Ren61Ax!fskzvj~BeGdxZt{{>0B_j;q9Riaq%b68z=H^6BA%echeNx*6L} zoeqwF=+Io5h0})4?ffdGIOHWR2cXx3rl(&6Wi${ek-P}IwZMFrQe_}Ookb%eO=@J@ z%?JoZi?izE!p)Xv3wPAiT$id=x)N2RJyEShRdo*i`DmgFhmVlPwMz8qw);vQ#(c4t zvpZ)_04o?5eUkfpME$62fo_M^^<|yVizHqc?b^>Y`IS-5%f8R|Fns@48nU&ndW?_YUWIBy#3 zM6OBr+!s+VYPFO6Id-EZP(!SXLAAv?Bm;GUZK+qOsgq{$Tr2$1dX*7ptiB#x(`Ib3 zSN%HtH|JC8~ zCbz;U4~9`b9!7aEoNM_0OW0FHDC1IMx%#Qa%f<)!>)b>3>-^8~5(h*4P{DmbwA`L0 zw;Ie}!o`Yjb^I<6zf@79HN^5H5TE?iX^mD7%U1*O#7P+%t*@Ae{Cof!kiXMtm0A7> zh^I`dq|u78+yKHws!gNy75VsnfOxv3-f6U+u)M_b2P|KQ`jCDbko2iSK)$_;Vm!#P0%O65kDkO1!AC<04~%(PRXWUdLl#H#$On%*%Sxn~26`{d$>~ z^+N6RID#SChSrThQhImJR>LocsU) diff --git a/objs/redirect/heredoc.o b/objs/redirect/heredoc.o deleted file mode 100644 index beea1d45126b1e3eb96f15880d781af29e7cd273..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2504 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 RBVqvY1tVer5zn@2{{lOW!q)%* diff --git a/objs/redirect/redirect.o b/objs/redirect/redirect.o deleted file mode 100644 index 0eb3fcdd052bd8cede091c57dfebf79f512b70ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1560 zcmb7EJ!n%=6h6sonn=_jw6qD>CR;NEv=nrb=TD)7LzRLq_EugZ38qO}Ur``vTy$#_vE%KR{sZ3mm`}cH?QS+>+pa~vs)#q^#rfyAE%wwH~I%D8OL!K&& zI3C8n3&4F~66l96Ls>vAmG>eoZNRyt-=q({g1go$QMpo@?X>*Vt(HW`=P|piZ7+4f zKhgHWchS%G)NUy0p&Q4sE3&TPo1_iS&AHCVT}95j8+u1h?g(5hzu85jI}@5)^929F z6B*6J{T%nC`u^1KPxT6SYM8NnV2ICs!-ZLmS`R+Yx@XLG-Zp3IJZ~Fwx6zYN_n~@T zayva&4ctl4xsw{~DD0@qY(zb@L0?lH7Zo420@UD{S^=|B0dJ+bT4z7RGY)d|UEw~K z^j&d|?;B?mkhyptbLhF4YY*o-@m0iijdKRq^$K@unDP9xs(Y=D=;xb3DG|{V938YIyo7pB7$^1EQB9gPV-=LS7&1y+o%vtk>l@cN`>dzPC zyoxe720fNs#)k2p!FEXwA#fD#b~}J#IE;%pzK%{ufM1%hM&Lg97@Q3u$62=(z8C(# zwzHwUt}ixM>LsNdAzF$k@on~%Qdey=N^8|({FI&Tr3#XQ@)sdxqB+$G?L z5h`;#5~jgwOJmJP zbodsKtqAA5XL-rJbGZucOVj-TKM~-(AO8B=0nRypekQfzwiJU2NddkRW zO>Ke1v}UDDUF40lVc8_?v~KI%&3|rjL^13sVj3q36UYLdj?pH|9X}J`c_H1^@`3{mh NY(E+Z4q#c1{REOY|AGJj diff --git a/objs/utils/env.o b/objs/utils/env.o deleted file mode 100644 index c643d155567adff6d3d932129730afe7631c4d4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2096 zcmb7FO=weD6h5!7ZC>nXR0`E1))`QukfLtv!a}eWx+u&rxDW)dA&nY*P15A~Q@aUd zqbm)#62a(VNCsgxf(Z;LbmLB(#mq3PbXG5dV8KG35aW05y)TKcxbVPz=bry_zjL|o z&8PRDe;_gl#GhfTI&ThPf%ap~NUIdLeLk2<^{@8vgjgI zy_QMks6ieI-p49qJ&^t*Dt@!uo#?Ecsi8*sl_~!2&KamRTHK27@F4N=2|58*5u(ElGQHrQs7s{eXOpO^FSd11HGtr_64!gwtBcm(ZR zD!xkn_$shP-f@W^`!h!9^B-XJ5;oRXfPH6ez6P8WUIVjf;=CL1Z=%l)#P@J8$#YG8 zPGELN*L=A?Ri9vdq^)mv{hnBl9$Ls34U>oKrF>Zj+ff7h5rtzDGUE~j_EqGSy{?P; zSF<&Fwq~t^S@Udp7KD4GXVqwq6&r?8{7cK2S-+=V&%ogX`mm_D*Nsr4H&5IPiCZMz zz}?uxHuT-FjPN!01@4KSE#Cz>C**z?DK?_3$J$({g}t?!Zewnn@?Pn=`Z>e6Z!P46 zUCy+p>GbDXPnanJeQA1>^mStJ-FTM7C}=v%a& zjw2ChoBff}(=!#a&Ay;tmjmC3kK!@HTM^5_ZwL4#aJ=iWC^+7h*q?~QU5M=l-wpl| zb?~mno`Xlgxh`B6tBTKJc7zuzwg|old;uJx@=*kzy`<#PxaNm62V=j{Kfrfkks<^6vRd|W`&r92I1{_FzmMBptz#S0J*?Nln$widLE3Y9zV`Awd(os-QSeT6K-WiC?L2_##UUSJcv?TUW z-gdUvkw`&jps>bnDJ)DhvL@^LeX}#(8Hw@b-n^fA^UXJJ-+lP;`R6qeM<84#q3d+& zP{y zY;A7)L8M-{cQ)EhrBDMQHBW%||C0CRH0wHXwj}#?>76;{-Wg86#l2}#^3sYUUlR9VZcpSP z@N2m%DekLrFM-e8x$C7_cQFRm{!vMN%-<7pBF+#W_U~SPs!BTOt4obFdoYLZs&C+9{4(qfgUQ?@#u(Ot$#J%);alGLo;tQXS;l=U4HH|Q4-k)S w`kl!7ezU1w_`xe1cQ)R%v>*6kxD`kkZEoMw>q2qkFA$*IssI20 diff --git a/objs/utils/list_clear.o b/objs/utils/list_clear.o deleted file mode 100644 index 699c263b40887b100a30dde1373086de8281d448..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 968 zcma)4Jxc>Y5S@$BQ{q>lL_;7V7B+&~Xc;v^3JZ%Ac1uW3BAik5L?Mk33tPd$E-5|m zM+9u_)W$mHH5P(JBAoHf-mVv;g#+{XW@aC|`}pztIZR{_giRD$;$Q{}nTC2Y`rBN} zNupkFqMbFO#)NRJGbh|3L~e5@7v?(3bnWBW@jjw{2BUP&PKywQgZ;yN!4W6r)4g(0 zh^>sq*k{$Av?@Mf8CKCMjN+uJ$&O{%DQGY@f@Ua$o4B4;JZ|6@k;kChP!{gd%J-*^ zX6WD2snWAwF`lSTmx4R_s~Sl=P_TNdGB=Mydz}<^L}OB#o3Yr`o5(RMEo2- zq@l8l!2iONAcZGhxC0Jwp|1Ry@^}kbpMgi~0G#ym@S`YbndKaxLjOaC#$Xz%VN~TR mr6hu`aU!wn2>aM6*jD~XCq>IXC|k&mEQ@Ss|8PlK{*PaICZ5Uw diff --git a/objs/utils/temp.o b/objs/utils/temp.o deleted file mode 100644 index fc3fcb9bc2970c75d5c019253ef0b326a5c13832..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3880 zcmbVPO>9(E6uv|MW`;s3f~AP^Fd>1YC7rfPZF+H#HbQ*FO1i+L$?Mp8(6Q6$IP;V? zby0-{BrIrx%EE*u#-wGVkuKV3qC`!)AQ~4M7Q{4$#SkSCS5z~O-+A}kH*bcH{M_Wu zcfRkQd+z^zcYgf)&cF3S1OyWOR3k5vVIU(lBX_x_F1_#PaGjEFu#e^>Q?B9~mgU$J z4ikW74fGu!C~|F0)F_MMt%GTVgm{&tYB5cqlVuHOolGKil7;ekI?gNHuYT^Qu1~T3 z3Gv3q(y?L3dOLM0k&0WE+3PP~u2pQB#o3@5+oknt&LEeBY=^K7Sv9`_&d5mQMEWA? zJqx@6xgSoTq92*kQ=Dlnb|ULJg!#~^a9aG7p9;+94~dzTI?L(;%=_)^7auS z_M^!y=a7|NEL-L>G;{%Z2KgfSx_*u9*K~P%ZoP_8)T2wmka)|DA1EuUiLTzR5;J=O zV$~n_Xh~eu-|%Sld&=uKs`_)as(pW3UO#Kl&Q|5O)>wD@W0G%kWnY|);=GXW)0KU( z%%#4&D*MuWSIS#;oMyBaP%%b)^Bvk7UCLF3uB5pm)*4Lc`r7yZ)>X%Rn0590K4@M2z7JYgzwaZgt1KU94etqFPybrE^GWkj;VkVf zkHu$k`7vU-drXgs){4*Nbn$NpP$AI@SQVy-T( zU>_D5#FE~Bw;QIHf|H4RI45^=bZ6;vg0bncwa$rKzX9W}5sf*-yHnPFe(LM_Jnl39 z`sAms&CwYNhg(aMld)|how3I=aXV8|(i#?rj`p?~_>6TMyR%_&@Yu^fcC4@W$g#dd z11*MdCewDe(GzClfHr!H60~stk^a6G!=6ZF9R!TK;USlIXnfR88A&*m_r{@;ZX=yY z+k)+k9ZzKJVW-#$-3Q&N9xWWubxvWZ@aJJ^b$Esx@h)Xhx_S(i@iAT>u6tzCwAP^|L@c3C%MKuo?R zvDuLLOIL&$3S$^yrfVbX1y1P5N1@N98y@zyw+e2 zAivrOel{ZO)BBJuzRwKi05_p3t-F`#ualog%eb)Y)H{|lZpAX0*rZ~vX{GV6$q^QPnAlEQ`*2$e z#ZU*I0byk)vyMF`tl<%Rc+{f1nH^3D<-afTg0?&((xoNOi0s#rXGEUYl4nGo(~@UI tI<@2(?HyW*coqz2EZwdP+C3}cSuo%d@mxGBQnXx`HqXVgB5i8Q{{sP$xby%3 diff --git a/objs/utils/tree.o b/objs/utils/tree.o deleted file mode 100644 index 378d586ef8344f26022f0d72b4ff3ac963ab9feb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1416 zcmcIk&ubGw6n^QNq$S!=D8v>aIp$zMz34$o(0UUTso+7FE}M-hq(2B-6mnTe54jcu zkIixOA0#J*T)c@rcuqZSksbuWtgx=%o1G!6u|f|%^5&cO-n=*8&YQ`HA7?)=6Qu~k z!zE~gCnYFk1?tP$--q#B?C;77MB2{6&8osAgk!&QrZt4vc<^jvYU|naL_MB1K!`bE za2d1+VeM}3nU*8=cV2Go)P#7ru49aws*bCizCnZ^b#=WdHM!yz#;efyGp=AU6vAcL z?;&p!2V6*^5q%8XbN#SGhvOUtCwUr{$URPF++!4aJvJ!t zjcPETqOX4TXthgp8(f#)c8Zflpr5Y}PZ2M#(9q9S136E{ImNWXg%~~LaBi<7CSm(t zAA29ZGsLIJNP&aV4`KI=;shLm&jlKKhM35G3rDNC3vyrVH_K&I9N@kzb8VTER%?*= zUgc@Ohx*^6sL(_0lR|YUzcCAbsC$~lcPwEJ>?4jd56a{|@lap#9*IHNzTXGm|HFIX z9NzF>h&RsrpS%-2@1Z9i`l0*VQ0K+Hm42M1k9#5K;Njz}xPS88(C@P-dNam(eF5?r zCHtDZhzGI3SM@hhej3EynfP54WjQbYO~t{RWhVa)9thq>g&T+`RN;rlcnyp3KT+8P z!j-8iEGYy?|5MlW)N!Mw%Jl4t7V&xE#Rq>s3RGpBP_Go+_k9bZ13HaPx# diff --git a/objs/utils/utils.o b/objs/utils/utils.o deleted file mode 100644 index 6dcddd969e96fc0fc0de331b8389161ea3b6e5e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1584 zcmb7EO=wd=5T3M6lNxP^wA2=%6%^_rQj6dZ2&sScP^3r?9)$IozSht*i7&4h?IjS9 z9y~PALvQV|x%H;+Cg@$fNRLr3=|SkR5o7#jcODI|_Ta$mH{Ztu3^;t1CB>+pG4%KksUb6kWQF{Nx(U%nRW)rPzWcne;1SD!0j+<0AtWuC=1u~H42;i_`lNr zNMBm3UA0z)s@s*(!*4Naevgy)BSu~$mhz$@deIo#8rdPbjy(?4W2q+A*uZ)Nh&T7U zsX87a_VMTvufdFbk+*6N)a)~bH!R$to{UNcl{-KA0^))o`wV z_CV)Nne+Mm=*+)VJcSZRB2PrF)GI!~-2x%Ywr6x#f!ByF! zo6g!6qON1xO6&rDmF@ybk!MzVNjbJPpUvcKQkh&~#Z?PPCpB-mmNB#La$%BqysAfY GbN&K$gbMQj diff --git a/srcs/builtin/builtin.c b/srcs/builtin/builtin.c index 5851a4b..50ccdff 100644 --- a/srcs/builtin/builtin.c +++ b/srcs/builtin/builtin.c @@ -6,12 +6,15 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/21 17:42:18 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 20:39:23 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 22:40:20 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" +int check_bulitin_func(char *name); +t_bool exec_bulitin(int bulitnum, t_data *data); + int check_bulitin_func(char *name) { if (!ft_strncmp(name, "cd", 3)) @@ -31,20 +34,27 @@ int check_bulitin_func(char *name) return (0); } -void exec_bulitin(int bulitnum, t_data *data) +t_bool exec_bulitin(int bulitnum, t_data *data) { if (bulitnum == 1) - ft_cd(data, data->root); - else if (bulitnum == 2) + { + if (ft_cd(data) == FALSE) + return (TRUE); + } + if (bulitnum == 2) ft_echo(data->root->left_child->right_child); - else if (bulitnum == 3) - ft_exit(data, data->root); - else if (bulitnum == 4) + if (bulitnum == 3) + ft_exit(data); + if (bulitnum == 4) ft_pwd(); - else if (bulitnum == 5) + if (bulitnum == 5) ft_unset(data, data->root); - else if (bulitnum == 6) - ft_export(data); - else if (bulitnum == 7) + if (bulitnum == 6) + { + if (ft_export(data) == FALSE) + return (TRUE); + } + if (bulitnum == 7) ft_env(data, data->root); + return (FALSE); } diff --git a/srcs/builtin/ft_add_env_front.c b/srcs/builtin/ft_add_env_front.c index 5348efa..d76a494 100644 --- a/srcs/builtin/ft_add_env_front.c +++ b/srcs/builtin/ft_add_env_front.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 20:38:22 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 13:56:10 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 18:01:28 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,7 +28,7 @@ static t_list *create_env_node(char *key, char *value) { t_list *new_node; - new_node = (t_list *)ft_calloc(1, sizeof(t_list)); + new_node = ft_lstnew(); if (!new_node) return (NULL); new_node->token = (t_token *)ft_calloc(1, sizeof(t_token)); diff --git a/srcs/builtin/ft_atolong.c b/srcs/builtin/ft_atolong.c index b9d13e4..2f71491 100644 --- a/srcs/builtin/ft_atolong.c +++ b/srcs/builtin/ft_atolong.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/10 20:31:59 by kichlee #+# #+# */ -/* Updated: 2023/08/14 20:43:13 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 18:45:35 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,7 +32,7 @@ long long ft_atolong(char *str, int *flag) if (check_overflow(result, str[i])) { if ((sign == 1 && check_overflow(result, str[i])) || \ - (sign == -1 && check_underflow(result, str[i]))) + (sign == -1 && check_underflow(result, str[i]))) { *flag = 0; return (0); @@ -60,7 +60,7 @@ static char *pass_blank_sign(char *str, int *sign) static int check_overflow(long long result, char ch) { if (result > LLONG_MAX / 10 || \ - (result == LLONG_MAX / 10 && (ch - '0') > LLONG_MAX % 10)) + (result == LLONG_MAX / 10 && (ch - '0') > LLONG_MAX % 10)) return (1); return (0); } @@ -73,4 +73,3 @@ static int check_underflow(long long result, char ch) return (1); return (0); } - diff --git a/srcs/builtin/ft_cd.c b/srcs/builtin/ft_cd.c index a252945..261c31e 100644 --- a/srcs/builtin/ft_cd.c +++ b/srcs/builtin/ft_cd.c @@ -6,38 +6,46 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:31:18 by kichlee #+# #+# */ -/* Updated: 2023/08/15 00:41:11 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 22:39:21 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void ft_cd(t_data *data, t_leaf *cur_root); +t_bool ft_cd(t_data *data); static int change_directory(t_data *data, char *path); static int change_home(void); -void ft_cd(t_data *data, t_leaf *cur_root) +t_bool ft_cd(t_data *data) { char *option; - char pwd[1024]; + char *pwd; option = NULL; - if (!(cur_root->left_child->right_child->right_child)) + pwd = (char *)ft_calloc(1024, sizeof(char)); + if (!pwd) + program_error_exit("bash"); + if (!(data->root->left_child->right_child->right_child)) + { change_directory(data, "HOME"); + free(pwd); + } else if (change_directory(data, \ - cur_root->left_child->right_child->right_child->token->str) != 0) + data->root->left_child->right_child->right_child->token->str) != 0) { - option = cur_root->left_child->right_child->right_child->token->str; + option = data->root->left_child->right_child->right_child->token->str; printf("bash: %s: No such file or directory\n", option); - data->error_code = 1; + free(pwd); + return (FALSE); } else { getcwd(pwd, 1024); - printf("current directory : %s\n", pwd); - ft_update_env_cd(data, "OLDPWD", env_search(data, "PWD", TRUE)->env); - ft_update_env_cd(data, "PWD", pwd); + ft_update_env_cd(data, ft_strdup("OLDPWD"), \ + ft_strdup(env_search(data, "PWD", TRUE)->env + 4)); + ft_update_env_cd(data, ft_strdup("PWD"), pwd); } + return (TRUE); } static int change_directory(t_data *data, char *path) @@ -56,7 +64,7 @@ static int change_directory(t_data *data, char *path) else buf = ft_strdup(path); if (!buf) - perror("ft_strdup fail!\n"); + program_error_exit("bash"); res = chdir(buf); getcwd(pwd, 1024); free(buf); diff --git a/srcs/builtin/ft_exit.c b/srcs/builtin/ft_exit.c index 52c5935..cca28b5 100644 --- a/srcs/builtin/ft_exit.c +++ b/srcs/builtin/ft_exit.c @@ -6,26 +6,26 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:23:29 by kichlee #+# #+# */ -/* Updated: 2023/08/15 00:33:25 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 19:17:22 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void ft_exit(t_data *data, t_leaf *cur_root); +void ft_exit(t_data *data); static void arg_over_one(t_data *data, int count, char **cmd, int flag); static void arg_over_two(t_data *data, int count, char **cmd, int flag); static void exit_not_num(t_data *data, char *str); static int is_num_str(char *str); -void ft_exit(t_data *data, t_leaf *cur_root) +void ft_exit(t_data *data) { long long status; char **cmd; int count; int flag; - cmd = ft_join_cmd(cur_root->left_child->right_child); + cmd = ft_join_cmd(data->root->left_child->right_child); count = ft_cnt_args(cmd); flag = 1; status = 0; @@ -44,7 +44,7 @@ static void arg_over_one(t_data *data, int count, char **cmd, int flag) if (count == 2) { - if(!ft_strncmp("-9223372036854775808", cmd[1], 20)) + if (!ft_strncmp("-9223372036854775808", cmd[1], 20)) { printf("exit\n"); data->error_code = 0; @@ -57,7 +57,7 @@ static void arg_over_one(t_data *data, int count, char **cmd, int flag) data->error_code = status % 256; exit(status % 256); } - exit_not_num(data, cmd[1]); + exit_not_num(data, cmd[1]); } else arg_over_two(data, count, cmd, flag); diff --git a/srcs/builtin/ft_export.c b/srcs/builtin/ft_export.c index 8e9e6a3..7db8a08 100644 --- a/srcs/builtin/ft_export.c +++ b/srcs/builtin/ft_export.c @@ -6,41 +6,37 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 11:50:55 by kichlee #+# #+# */ -/* Updated: 2023/08/15 13:58:41 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 22:43:47 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void ft_export(t_data *data); -static int cnt_args(t_list *tmp); -static void separated_token(t_data *data, t_list **tmp); -static void combined_token(t_data *data, t_list **tmp); +t_bool ft_export(t_data *data); +static int cnt_args(t_list *tmp); +static t_bool start_export(t_data *data, t_list **cur); +static t_bool separated_token(t_data *data, t_list **tmp); +static t_bool combined_token(t_data *data, t_list **tmp); -void ft_export(t_data *data) +t_bool ft_export(t_data *data) { int args; t_list *cur; args = cnt_args(data->tokens); - if (args == 0) - print_export_order(data); cur = data->tokens->next; - while (args--) + if (args == 0 || !cur) { - if (check_equal(cur->token->str) == TRUE) - { - if (cur->token->str[ft_strlen(cur->token->str) - 1] == '=') - separated_token(data, &cur); - else - combined_token(data, &cur); - } - else - { - check_env(data, ft_strdup(cur->token->str), NULL); - cur = cur->next; - } + print_export_order(data); + return (TRUE); } + while (args--) + if (start_export(data, &cur) == FALSE) + return (FALSE); + data->env_array = env_to_array(data); + if (!data->env_array) + program_error_exit("bash"); + return (TRUE); } static int cnt_args(t_list *tmp) @@ -50,45 +46,66 @@ static int cnt_args(t_list *tmp) args = 0; while (tmp) { - if(tmp->token->blank == 1) + if (tmp->token->blank == 1) ++args; tmp = tmp->next; } return (args); } -static void separated_token(t_data *data, t_list **cur) +static t_bool start_export(t_data *data, t_list **cur) +{ + if (check_equal((*cur)->token->str) == TRUE) + { + if ((*cur)->token->str[ft_strlen((*cur)->token->str) - 1] == '=') + { + if (separated_token(data, cur) == FALSE) + return (FALSE); + } + else + { + if (combined_token(data, cur) == FALSE) + return (FALSE); + } + } + else + { + if (check_env(data, ft_strdup((*cur)->token->str), NULL) == FALSE) + return (FALSE); + *cur = (*cur)->next; + } + return (TRUE); +} + +static t_bool separated_token(t_data *data, t_list **cur) { char *tmp; - + if (!(*cur)->next) - check_env(data, ft_strdup((*cur)->token->str), NULL); + { + if (check_env(data, ft_strdup((*cur)->token->str), NULL) == FALSE) + return (FALSE); + } else { tmp = ft_strdup((*cur)->next->token->str); if (!tmp) program_error_exit("bash"); - check_env(data, ft_strdup((*cur)->token->str), tmp); + if (check_env(data, ft_strdup((*cur)->token->str), tmp) == FALSE) + return (FALSE); *cur = (*cur)->next->next; - } + } + return (TRUE); } -static void combined_token(t_data *data, t_list **cur) +static t_bool combined_token(t_data *data, t_list **cur) { - int equal_len; - int value_len; char *str1; char *str2; - equal_len = 0; - while ((*cur)->token->str[equal_len] != '=') - equal_len++; - equal_len++; - value_len = ft_strlen(&(*cur)->token->str[equal_len]); - str1 = ft_substr((*cur)->token->str, 0, equal_len); - str2 = ft_substr((*cur)->token->str, equal_len, value_len); - if (!str1 || !str2) - program_error_exit("bash"); - check_env(data, str1, str2); + devide_equal((*cur)->token->str, &str1, &str2, TRUE); + if (check_env(data, str1, str2) == FALSE) + return (FALSE); *cur = (*cur)->next; + return (TRUE); } diff --git a/srcs/builtin/ft_export_check.c b/srcs/builtin/ft_export_check.c index 2af759a..894cd1e 100644 --- a/srcs/builtin/ft_export_check.c +++ b/srcs/builtin/ft_export_check.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 21:42:23 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 14:00:54 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 19:22:14 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -63,7 +63,7 @@ int check_name(char *str) if (str[j + 1] != '=') return (0); plus = 0; - while (str[i] && str[i] != '=') + while (str[i] && str[i] != '=') { if (str[i] == '+') ++plus; @@ -84,7 +84,6 @@ int check_underbar(char ch) t_bool check_env(t_data *data, char *key, char *value) { - printf("key %p, value %p\n", key, value); if (!key) program_error_exit("bash"); if (!check_name(key)) @@ -94,7 +93,8 @@ t_bool check_env(t_data *data, char *key, char *value) free(key); if (value) free(value); - return (FALSE); //에러처리중 + return (FALSE); } ft_update_env_export(data, key, value); + return (TRUE); } diff --git a/srcs/builtin/ft_export_print.c b/srcs/builtin/ft_export_print.c index 0d4a2b9..4d54a04 100644 --- a/srcs/builtin/ft_export_print.c +++ b/srcs/builtin/ft_export_print.c @@ -1,111 +1,124 @@ - /* ************************************************************************** */ +/* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* ft_export_three.c :+: :+: :+: */ +/* ft_export_print.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2023/08/14 11:59:34 by kichlee #+# #+# */ -/* Updated: 2023/08/14 15:57:23 by eunwolee ### ########.fr */ +/* Created: 2023/08/15 18:48:19 by eunwolee #+# #+# */ +/* Updated: 2023/08/15 18:51:01 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" void print_export_order(t_data *data); -static char **sort_bubble(char **str, int size); -static char **check_sort(char **res, int sorted); +void devide_equal(char *src, char **str1, char **str2, \ + t_bool key_need_equal); +static char **sort_bubble(char **str); static void print_export_quote(char **order_set); +static void free_d_char_ptr(char **str); void print_export_order(t_data *data) { int i; - int lst_size; char **order_set; char **order_copy; t_list *cur; i = 0; - lst_size = ft_lstsize(data->envs); cur = data->envs; - order_copy = (char **)ft_calloc(lst_size + 1, sizeof(char *)); + order_copy = (char **)ft_calloc(ft_lstsize(data->envs) + 1, sizeof(char *)); while (cur) { order_copy[i] = ft_strdup(cur->env); cur = cur->next; ++i; } - order_set = sort_bubble(order_copy, lst_size); + order_set = sort_bubble(order_copy); print_export_quote(order_set); + free_d_char_ptr(order_set); } -static char **sort_bubble(char **str, int size) +void devide_equal(char *src, char **str1, char **str2, t_bool key_need_equal) { - char **res; - int sorted; - int i; + int equal_len; + int value_len; - sorted = 0; - i = -1; - res = (char **)ft_calloc(sizeof(char *), (size + 1)); - if (!res) - program_error_exit("Memory allocation error!"); - while (str[++i]) - { - res[i] = ft_strdup(str[i]); - if (!res[i]) - program_error_exit("Memory allocation error!"); - } - res[i] = NULL; - res = check_sort(res, sorted); - return (res); + equal_len = 0; + while (src[equal_len] != '=') + equal_len++; + equal_len++; + value_len = ft_strlen(&src[equal_len]); + if (key_need_equal == TRUE) + *str1 = ft_substr(src, 0, equal_len); + else + *str1 = ft_substr(src, 0, equal_len - 1); + *str2 = ft_substr(src, equal_len, value_len); + if (!*str1 || !*str2) + program_error_exit("bash"); } -static char **check_sort(char **res, int sorted) +static char **sort_bubble(char **str) { int i; char *tmp; + int sorted; i = 0; + sorted = 0; while (!sorted) { sorted = 1; i = -1; - while (res[++i + 1]) + while (str[++i + 1]) { - if (ft_strncmp(res[i], res[i + 1], ft_strlen(res[i])) > 0) + if (ft_strncmp(str[i], str[i + 1], ft_strlen(str[i])) > 0) { - tmp = res[i]; - res[i] = res[i + 1]; - res[i + 1] = tmp; + tmp = str[i]; + str[i] = str[i + 1]; + str[i + 1] = tmp; sorted = 0; } } } - return (res); + return (str); } static void print_export_quote(char **order_set) { int i; - char **res_split; + char *str1; + char *str2; + t_bool flag; i = 0; while (order_set[i]) { - t_bool flag = check_equal(order_set[i]); - res_split = ft_split(order_set[i], '='); + flag = check_equal(order_set[i]); + devide_equal(order_set[i], &str1, &str2, FALSE); printf("declare -x "); if (flag == TRUE) { - if (!res_split[1]) - printf("%s=\"\"\n", res_split[0]); + if (!str2) + printf("%s=\"\"\n", str1); else - printf("%s=\"%s\"\n", res_split[0], res_split[1]); + printf("%s=\"%s\"\n", str1, str2); } else - printf("%s\n", res_split[0]); + printf("%s\n", str1); + free(str1); + free(str2); ++i; } } +static void free_d_char_ptr(char **str) +{ + int i; + + i = -1; + while (str[++i]) + free(str[i]); + free(str); +} diff --git a/srcs/builtin/ft_join_cmd.c b/srcs/builtin/ft_join_cmd.c index c3ae148..0fb403f 100644 --- a/srcs/builtin/ft_join_cmd.c +++ b/srcs/builtin/ft_join_cmd.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 22:15:42 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 22:15:46 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 16:09:34 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/builtin/ft_pwd.c b/srcs/builtin/ft_pwd.c index e5ccd51..ea3648a 100644 --- a/srcs/builtin/ft_pwd.c +++ b/srcs/builtin/ft_pwd.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:24:31 by kichlee #+# #+# */ -/* Updated: 2023/08/14 20:22:25 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 19:18:16 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/builtin/ft_unset.c b/srcs/builtin/ft_unset.c index e32f20f..4bd9b25 100644 --- a/srcs/builtin/ft_unset.c +++ b/srcs/builtin/ft_unset.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 22:51:02 by kichlee #+# #+# */ -/* Updated: 2023/08/15 00:33:28 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 18:22:17 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,4 +29,7 @@ void ft_unset(t_data *data, t_leaf *cur_root) ++i; } free(cmd); + data->env_array = env_to_array(data); + if (!data->env_array) + program_error_exit("bash"); } diff --git a/srcs/builtin/ft_update_env.c b/srcs/builtin/ft_update_env.c index 7da4f80..029d2f9 100644 --- a/srcs/builtin/ft_update_env.c +++ b/srcs/builtin/ft_update_env.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* ft_update_env.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/15 00:37:38 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 13:54:37 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 21:44:03 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,24 +14,28 @@ void ft_update_env_cd(t_data *data, char *key, char *value); void ft_update_env_export(t_data *data, char *key, char *value); -static char *get_tmp_key(t_data *data, char *key, t_bool plus, t_list **search_list); -static void is_not_plus(t_data *data, char *key, char *value, t_list *search_list); +static char *get_tmp_key(char *key, t_bool plus); +static void is_not_plus(t_data *data, \ + char *key, char *value, t_list *search_list); static void is_plus(t_data *data, char **tmp, char *value, t_list *search_list); void ft_update_env_cd(t_data *data, char *key, char *value) { t_list *tmp; - char *key_equal; - tmp = env_search(data, key,TRUE); + if (!key || !value) + program_error_exit("bash"); + tmp = env_search(data, key, TRUE); if (!tmp) ft_add_env_front(data, key, value); else { free(tmp->env); - key_equal = ft_strdup(key); - key_equal = ft_strncat(key_equal, "=", 1); - tmp->env = ft_strjoin(key_equal, value); + tmp->env = ft_strdup(key); + tmp->env = ft_strncat(tmp->env, "=", 1); + tmp->env = ft_strncat(tmp->env, value, ft_strlen(value)); + free(key); + free(value); } } @@ -42,19 +46,25 @@ void ft_update_env_export(t_data *data, char *key, char *value) t_list *search_list; plus = check_plus(key); - tmp = get_tmp_key(data, key, plus, &search_list); - if(plus == FALSE) + tmp = get_tmp_key(key, plus); + search_list = env_search(data, tmp, FALSE); + if (plus == FALSE) + { is_not_plus(data, key, value, search_list); + free(tmp); + } else + { is_plus(data, &tmp, value, search_list); - free(tmp); + free(key); + } } -static char *get_tmp_key(t_data *data, char *key, t_bool plus, t_list **search_list) +static char *get_tmp_key(char *key, t_bool plus) { int i; char *tmp; - + tmp = ft_strdup(""); if (plus == TRUE) { @@ -62,32 +72,26 @@ static char *get_tmp_key(t_data *data, char *key, t_bool plus, t_list **search_l while (key[i] != '+') i++; tmp = ft_strncat(tmp, key, i); - *search_list = env_search(data, tmp, FALSE); } - else if(check_equal(key) == TRUE) - { + else if (check_equal(key) == TRUE) tmp = ft_strncat(tmp, key, ft_strlen(key) - 1); - *search_list = env_search(data, tmp, FALSE); - } else - { tmp = ft_strncat(tmp, key, ft_strlen(key)); - *search_list = env_search(data, tmp, FALSE); - } return (tmp); } -static void is_not_plus(t_data *data, char *key, char *value, t_list *search_list) +static void is_not_plus(t_data *data, \ + char *key, char *value, t_list *search_list) { - if(check_equal(key) == FALSE) + if (check_equal(key) == FALSE) { if (search_list) { free(key); free(value); - return ; } - ft_add_env_front(data, key, value); + else + ft_add_env_front(data, key, value); } else { @@ -109,11 +113,17 @@ static void is_not_plus(t_data *data, char *key, char *value, t_list *search_lis static void is_plus(t_data *data, char **tmp, char *value, t_list *search_list) { - if(search_list) - search_list->env = ft_strjoin(search_list->env, value); + if (search_list) + { + search_list->env = \ + ft_strncat(search_list->env, value, ft_strlen(value)); + free(value); + free(*tmp); + } else { *tmp = ft_strncat(*tmp, "=", 1); ft_add_env_front(data, *tmp, value); } -} + +} \ No newline at end of file diff --git a/srcs/execute/child.c b/srcs/execute/child.c index 88b12e8..4dc3183 100644 --- a/srcs/execute/child.c +++ b/srcs/execute/child.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:36:58 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 18:37:20 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 17:00:15 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,7 @@ void do_cmd(t_data *data); void exec_fork(t_data *data); +void check_errortype(char *str, int flag); void do_cmd(t_data *data) { @@ -52,8 +53,65 @@ void exec_fork(t_data *data) base->command = set_path(data, data->root->left_child->right_child); if (!base->command) { - data->error_code = 127; - exit(data->error_code); + error_print(data->root->left_child->right_child->token->str, 0, 0); + exit(127); } execve(base->command, base->cmd_path, data->env_array); } + + + +char *ft_strjoinstr(char *s1, char *s2) +{ + char *tmp; + size_t lena; + size_t lenb; + + if (s1 == 0 || s2 == 0) + return (0); + lena = ft_strlen(s1); + lenb = ft_strlen(s2); + tmp = (char *)malloc(sizeof(char) * (lena + lenb + 1)); + if (!tmp) + return (0); + tmp[0] = '\0'; + ft_strlcat(tmp, s1, lena + 1); + ft_strlcat(tmp, s2, lena + lenb + 1); + tmp[lena + lenb] = '\0'; + return (tmp); +} + +void error_print(char *cmd, char *option, int flag) +{ + char *tmp; + char *str; + + str = ft_strdup (cmd); + tmp = str; + str = ft_strjoinstr ("bash: ", str); + free (tmp); + if (option) + { + tmp = str; + str = ft_strjoin (str, ": "); + free (tmp); + tmp = str; + str = ft_strjoin (str, option); + free (tmp); + } + check_errortype (str, flag); +} + +void check_errortype(char *str, int flag) +{ + char *tmp; + + tmp = str; + if (flag == 0) + str = ft_strjoinstr (str, ": command not found\n"); + else if (flag == 1) + str = ft_strjoinstr (str, ": No such file or directory\n"); + free (tmp); + write (2, str, ft_strlen (str)); + free (str); +} diff --git a/srcs/execute/execve_utils.c b/srcs/execute/execve_utils.c index 973b60c..fbaf4ca 100644 --- a/srcs/execute/execve_utils.c +++ b/srcs/execute/execve_utils.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:39:07 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 20:16:30 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 19:30:51 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,7 +33,7 @@ int check_bulitin(t_data *data) if (bulit != 0) { check_redirect(data->root, data); - exec_bulitin(bulit, data); + data->error_code = exec_bulitin(bulit, data); recover_std(data); return (TRUE); } diff --git a/srcs/execute/file.c b/srcs/execute/file.c index c7f4068..e9a5b61 100644 --- a/srcs/execute/file.c +++ b/srcs/execute/file.c @@ -17,10 +17,13 @@ void close_file(t_data *data); void check_file(int fd, t_data *data) { + char *str; + + str = data->root->left_child->left_child->left_child->token->str; if (fd < 0) { close(fd); - data->error_code = 1; + error_print(str, 0, 1); if (data->info->parent == 1) exit(1); } diff --git a/srcs/execute/parent.c b/srcs/execute/parent.c index 9f93885..5ce2406 100644 --- a/srcs/execute/parent.c +++ b/srcs/execute/parent.c @@ -12,9 +12,6 @@ #include "../../incs/minishell.h" -void wait_child_processes(t_data *data); -static void check_error(int num, t_data *data); - void wait_child_processes(t_data *data) { int i; @@ -29,8 +26,6 @@ void wait_child_processes(t_data *data) data->error_code = WEXITSTATUS(status); if (WIFSIGNALED(status) && !data->info->heredoc_flag) data->error_code = 128 + WTERMSIG(status); - if (WEXITSTATUS(status)) - check_error(WEXITSTATUS(status), data); i++; } if (WTERMSIG (status) == 2) @@ -39,17 +34,3 @@ void wait_child_processes(t_data *data) ft_putendl_fd("Quit: 3", STDOUT_FILENO); close_file(data); } - -static void check_error(int num, t_data *data) -{ - if (num == 127) - { - printf("bash: %s: command not found\n", \ - data->root->left_child->right_child->token->str); - } - if (num == 1) - { - printf("bash: %s: No such file or directory\n", \ - data->root->left_child->right_child->token->str); - } -} diff --git a/srcs/execute/path.c b/srcs/execute/path.c index 87b9ac8..76a84b4 100644 --- a/srcs/execute/path.c +++ b/srcs/execute/path.c @@ -74,8 +74,8 @@ static char *search_path(t_pipe *base, t_data *data) k = 0; if (!base->cmd_abs) { - data->error_code = 127; - exit(data->error_code); + error_print(data->root->left_child->right_child->token->str, 0, 1); + exit (127); } while (base->cmd_abs[k]) { diff --git a/srcs/input/get_input.c b/srcs/input/get_input.c index 6a794ab..9fdf88f 100644 --- a/srcs/input/get_input.c +++ b/srcs/input/get_input.c @@ -6,12 +6,14 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:27:16 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 20:17:02 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 18:49:04 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" +static t_bool check_blank_input(char *str); + t_bool get_input(t_data *data) { data->input = readline("minishell$ "); @@ -20,7 +22,7 @@ t_bool get_input(t_data *data) printf("exit\n"); exit(1); } - if (!data->input[0]) + if (check_blank_input(data->input) == TRUE) { free(data->input); return (FALSE); @@ -39,3 +41,15 @@ t_bool get_input(t_data *data) info_init(&data->info); return (TRUE); } + +static t_bool check_blank_input(char *str) +{ + int i; + + i = 0; + while (str[i] == ' ' || str[i] == '\t') + i++; + if (str[i] == '\0') + return (TRUE); + return (FALSE); +} diff --git a/srcs/lexer/expand.c b/srcs/lexer/expand.c index 7d11bda..c995eb0 100644 --- a/srcs/lexer/expand.c +++ b/srcs/lexer/expand.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:20:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 16:48:09 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 17:51:03 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,7 +32,7 @@ t_bool expand(t_data *data, t_token **token, int *i, t_bool quote) } if (quote == FALSE) { - if (check_end(data->input[*i]) == FALSE) + if (check_end(data->input[*i]) == TRUE) (*token)->blank = FALSE; *i -= 1; } diff --git a/srcs/minishell.c b/srcs/minishell.c index 0263190..f0b901e 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* minishell.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 13:49:47 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 21:42:25 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,15 +16,14 @@ int main(int argc, char **argv, char **envp) { t_data *data; - (void)argc; (void)argv; init(&data, envp); init_base(argc); data->env_array = env_to_array(data); if (!data->env_array) program_error_exit("bash"); - // while (TRUE) - for (int i =0; i<2; i++) + // for (int i =0; i<10; i++) + while (TRUE) { sig(); if (get_input(data) == FALSE) diff --git a/srcs/redirect/redirect.c b/srcs/redirect/redirect.c index 17a7c64..adb6782 100644 --- a/srcs/redirect/redirect.c +++ b/srcs/redirect/redirect.c @@ -1,12 +1,12 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* redirection.c :+: :+: :+: */ +/* redirect.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:16:07 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 18:25:06 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 22:34:38 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/signal/signal.c b/srcs/signal/signal.c index 43c5f18..448e2d5 100644 --- a/srcs/signal/signal.c +++ b/srcs/signal/signal.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/15 18:40:34 by kichlee #+# #+# */ -/* Updated: 2023/08/14 20:17:17 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 22:32:53 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,7 +22,10 @@ void init_base(int ac) struct termios termi; if (ac != 1) + { + printf("Too many arguments\n"); exit(1); + } if (tcgetattr(STDIN_FILENO, &termi) == -1) exit(1); termi.c_lflag &= ~(ECHOCTL); diff --git a/srcs/utils/env.c b/srcs/utils/env.c index 58d73d0..f4941b7 100644 --- a/srcs/utils/env.c +++ b/srcs/utils/env.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 06:38:21 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 17:51:42 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 18:48:51 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,25 +31,28 @@ void env_print(t_data *data) t_list *env_search(t_data *data, char *key, t_bool flag) { - char *tmp; char *env; t_list *cur; int len; - tmp = ft_strdup(key); + env = ft_strdup(key); if (flag == TRUE) - env = ft_strncat(tmp, "=", 1); - else - env = tmp; + env = ft_strncat(env, "=", 1); cur = data->envs; + len = ft_strlen(env); while (cur) { - len = ft_strlen(env); if (!ft_strncmp(cur->env, env, len)) - if (cur->env[len] == '\0' || cur->env[len] == '=') - return (cur); + { + if (flag == FALSE \ + && (cur->env[len] != '\0' && cur->env[len] != '=')) + break ; + free(env); + return (cur); + } cur = cur->next; } + free(env); return (NULL); } @@ -59,7 +62,11 @@ t_bool env_remove(t_data *data, char *key) env = env_search(data, key, TRUE); if (!env) - return (FALSE); + { + env = env_search(data, key, FALSE); + if (!env) + return (FALSE); + } if (!env->pre) data->envs = env->next; else From 008f54810e653dbb74f611429046a778748e8418 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Tue, 15 Aug 2023 23:01:57 +0900 Subject: [PATCH 36/57] fix error n leaks --- Libft/libft.a | Bin 0 -> 37456 bytes Libft/objs/ft_atoi.o | Bin 0 -> 892 bytes Libft/objs/ft_bzero.o | Bin 0 -> 684 bytes Libft/objs/ft_calloc.o | Bin 0 -> 776 bytes Libft/objs/ft_isalnum.o | Bin 0 -> 760 bytes Libft/objs/ft_isalpha.o | Bin 0 -> 680 bytes Libft/objs/ft_isascii.o | Bin 0 -> 664 bytes Libft/objs/ft_isdigit.o | Bin 0 -> 664 bytes Libft/objs/ft_isprint.o | Bin 0 -> 664 bytes Libft/objs/ft_itoa.o | Bin 0 -> 1160 bytes Libft/objs/ft_memchr.o | Bin 0 -> 732 bytes Libft/objs/ft_memcmp.o | Bin 0 -> 756 bytes Libft/objs/ft_memcpy.o | Bin 0 -> 764 bytes Libft/objs/ft_memmove.o | Bin 0 -> 856 bytes Libft/objs/ft_memset.o | Bin 0 -> 700 bytes Libft/objs/ft_putchar_fd.o | Bin 0 -> 696 bytes Libft/objs/ft_putendl_fd.o | Bin 0 -> 876 bytes Libft/objs/ft_putnbr_fd.o | Bin 0 -> 984 bytes Libft/objs/ft_putstr_fd.o | Bin 0 -> 756 bytes Libft/objs/ft_split.o | Bin 0 -> 2048 bytes Libft/objs/ft_strchr.o | Bin 0 -> 732 bytes Libft/objs/ft_strdup.o | Bin 0 -> 828 bytes Libft/objs/ft_striteri.o | Bin 0 -> 696 bytes Libft/objs/ft_strjoin.o | Bin 0 -> 936 bytes Libft/objs/ft_strlcat.o | Bin 0 -> 888 bytes Libft/objs/ft_strlcpy.o | Bin 0 -> 840 bytes Libft/objs/ft_strlen.o | Bin 0 -> 700 bytes Libft/objs/ft_strmapi.o | Bin 0 -> 848 bytes Libft/objs/ft_strncat.o | Bin 0 -> 980 bytes Libft/objs/ft_strncmp.o | Bin 0 -> 824 bytes Libft/objs/ft_strnstr.o | Bin 0 -> 988 bytes Libft/objs/ft_strrchr.o | Bin 0 -> 728 bytes Libft/objs/ft_strtrim.o | Bin 0 -> 1408 bytes Libft/objs/ft_substr.o | Bin 0 -> 1068 bytes Libft/objs/ft_tolower.o | Bin 0 -> 664 bytes Libft/objs/ft_toupper.o | Bin 0 -> 664 bytes Libft/objs/get_next_line.o | Bin 0 -> 2808 bytes Libft/objs/get_next_line_utils.o | Bin 0 -> 884 bytes incs/bulitin.h | 6 +++++- incs/struct.h | 3 ++- libft.a | Bin 0 -> 37456 bytes minishell | Bin 0 -> 90896 bytes objs/builtin/builtin.o | Bin 0 -> 1792 bytes objs/builtin/ft_add_env_front.o | Bin 0 -> 1448 bytes objs/builtin/ft_atolong.o | Bin 0 -> 1716 bytes objs/builtin/ft_cd.o | Bin 0 -> 2448 bytes objs/builtin/ft_cnt_args.o | Bin 0 -> 672 bytes objs/builtin/ft_echo.o | Bin 0 -> 1564 bytes objs/builtin/ft_env.o | Bin 0 -> 2220 bytes objs/builtin/ft_exit.o | Bin 0 -> 2568 bytes objs/builtin/ft_export.o | Bin 0 -> 2492 bytes objs/builtin/ft_export_check.o | Bin 0 -> 2300 bytes objs/builtin/ft_export_print.o | Bin 0 -> 2696 bytes objs/builtin/ft_join_cmd.o | Bin 0 -> 1120 bytes objs/builtin/ft_pwd.o | Bin 0 -> 1112 bytes objs/builtin/ft_unset.o | Bin 0 -> 1284 bytes objs/builtin/ft_update_env.o | Bin 0 -> 2848 bytes objs/execute/child.o | Bin 0 -> 2920 bytes objs/execute/execve.o | Bin 0 -> 2400 bytes objs/execute/execve_utils.o | Bin 0 -> 1776 bytes objs/execute/file.o | Bin 0 -> 1068 bytes objs/execute/parent.o | Bin 0 -> 1168 bytes objs/execute/path.o | Bin 0 -> 2544 bytes objs/execute/pipe.o | Bin 0 -> 1984 bytes objs/init/init.o | Bin 0 -> 1796 bytes objs/input/get_input.o | Bin 0 -> 1680 bytes objs/lexer/expand.o | Bin 0 -> 2228 bytes objs/lexer/expand_check.o | Bin 0 -> 2984 bytes objs/lexer/lexer.o | Bin 0 -> 2644 bytes objs/lexer/lexer_utils.o | Bin 0 -> 1228 bytes objs/lexer/quote.o | Bin 0 -> 2816 bytes objs/lexer/tokenizer.o | Bin 0 -> 2212 bytes objs/minishell.o | Bin 0 -> 1164 bytes objs/parser/parser.o | Bin 0 -> 1660 bytes objs/parser/syntax.o | Bin 0 -> 2800 bytes objs/redirect/heredoc.o | Bin 0 -> 2520 bytes objs/redirect/heredoc_parser.o | Bin 0 -> 3028 bytes objs/redirect/redirect.o | Bin 0 -> 1632 bytes objs/signal/signal.o | Bin 0 -> 1856 bytes objs/utils/env.o | Bin 0 -> 2148 bytes objs/utils/list.o | Bin 0 -> 1344 bytes objs/utils/list_clear.o | Bin 0 -> 1028 bytes objs/utils/temp.o | Bin 0 -> 3008 bytes objs/utils/tree.o | Bin 0 -> 1560 bytes objs/utils/utils.o | Bin 0 -> 1756 bytes srcs/builtin/ft_export.c | 6 ++---- srcs/builtin/ft_unset.c | 11 +++++++++-- srcs/execute/file.c | 3 ++- srcs/lexer/expand_check.c | 3 ++- srcs/redirect/redirect.c | 28 ++++++++++++---------------- 90 files changed, 34 insertions(+), 26 deletions(-) create mode 100644 Libft/libft.a create mode 100644 Libft/objs/ft_atoi.o create mode 100644 Libft/objs/ft_bzero.o create mode 100644 Libft/objs/ft_calloc.o create mode 100644 Libft/objs/ft_isalnum.o create mode 100644 Libft/objs/ft_isalpha.o create mode 100644 Libft/objs/ft_isascii.o create mode 100644 Libft/objs/ft_isdigit.o create mode 100644 Libft/objs/ft_isprint.o create mode 100644 Libft/objs/ft_itoa.o create mode 100644 Libft/objs/ft_memchr.o create mode 100644 Libft/objs/ft_memcmp.o create mode 100644 Libft/objs/ft_memcpy.o create mode 100644 Libft/objs/ft_memmove.o create mode 100644 Libft/objs/ft_memset.o create mode 100644 Libft/objs/ft_putchar_fd.o create mode 100644 Libft/objs/ft_putendl_fd.o create mode 100644 Libft/objs/ft_putnbr_fd.o create mode 100644 Libft/objs/ft_putstr_fd.o create mode 100644 Libft/objs/ft_split.o create mode 100644 Libft/objs/ft_strchr.o create mode 100644 Libft/objs/ft_strdup.o create mode 100644 Libft/objs/ft_striteri.o create mode 100644 Libft/objs/ft_strjoin.o create mode 100644 Libft/objs/ft_strlcat.o create mode 100644 Libft/objs/ft_strlcpy.o create mode 100644 Libft/objs/ft_strlen.o create mode 100644 Libft/objs/ft_strmapi.o create mode 100644 Libft/objs/ft_strncat.o create mode 100644 Libft/objs/ft_strncmp.o create mode 100644 Libft/objs/ft_strnstr.o create mode 100644 Libft/objs/ft_strrchr.o create mode 100644 Libft/objs/ft_strtrim.o create mode 100644 Libft/objs/ft_substr.o create mode 100644 Libft/objs/ft_tolower.o create mode 100644 Libft/objs/ft_toupper.o create mode 100644 Libft/objs/get_next_line.o create mode 100644 Libft/objs/get_next_line_utils.o create mode 100644 libft.a create mode 100755 minishell create mode 100644 objs/builtin/builtin.o create mode 100644 objs/builtin/ft_add_env_front.o create mode 100644 objs/builtin/ft_atolong.o create mode 100644 objs/builtin/ft_cd.o create mode 100644 objs/builtin/ft_cnt_args.o create mode 100644 objs/builtin/ft_echo.o create mode 100644 objs/builtin/ft_env.o create mode 100644 objs/builtin/ft_exit.o create mode 100644 objs/builtin/ft_export.o create mode 100644 objs/builtin/ft_export_check.o create mode 100644 objs/builtin/ft_export_print.o create mode 100644 objs/builtin/ft_join_cmd.o create mode 100644 objs/builtin/ft_pwd.o create mode 100644 objs/builtin/ft_unset.o create mode 100644 objs/builtin/ft_update_env.o create mode 100644 objs/execute/child.o create mode 100644 objs/execute/execve.o create mode 100644 objs/execute/execve_utils.o create mode 100644 objs/execute/file.o create mode 100644 objs/execute/parent.o create mode 100644 objs/execute/path.o create mode 100644 objs/execute/pipe.o create mode 100644 objs/init/init.o create mode 100644 objs/input/get_input.o create mode 100644 objs/lexer/expand.o create mode 100644 objs/lexer/expand_check.o create mode 100644 objs/lexer/lexer.o create mode 100644 objs/lexer/lexer_utils.o create mode 100644 objs/lexer/quote.o create mode 100644 objs/lexer/tokenizer.o create mode 100644 objs/minishell.o create mode 100644 objs/parser/parser.o create mode 100644 objs/parser/syntax.o create mode 100644 objs/redirect/heredoc.o create mode 100644 objs/redirect/heredoc_parser.o create mode 100644 objs/redirect/redirect.o create mode 100644 objs/signal/signal.o create mode 100644 objs/utils/env.o create mode 100644 objs/utils/list.o create mode 100644 objs/utils/list_clear.o create mode 100644 objs/utils/temp.o create mode 100644 objs/utils/tree.o create mode 100644 objs/utils/utils.o diff --git a/Libft/libft.a b/Libft/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..6ae4166bf0b10a7170fde7812964a7d10e361ece GIT binary patch literal 37456 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 literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_atoi.o b/Libft/objs/ft_atoi.o new file mode 100644 index 0000000000000000000000000000000000000000..061a592c6db7f9e146e403ff0530b299e700c793 GIT binary patch literal 892 zcma)4&nrYx6uyr!7(ea^MOn-O8!4>Vjkxs|lr&Q|x+X>>KhhH^MPuX{$--JT%1&8X zNn@dGZ2bckvoPLb7Q@2$&b<4^ouqtq?mg!__k8zzulxM@_EpW8QOU3%e2800LI|K8 zF-Y|v*j2q3wR<%*83pMQq_pB&mYchEL`+3~YA@^1^vFvIKDJxRkw`hay1W*fwdBUi z=Hkknlw+fMKcsX*ip*EIUZ!A3wZQy9%J_nuUym)vT~5k!e_=HgRwHfD@xG0yI>r`M ztGEqdZ9^2tc!2p41iF;?8RcUQdp&B*vk8O_npM~8^uO|`X}_BGPX1Bk==`H_NXblz zJin_+eAM#eR=sYxF%F~e{3NK8A%2zydnDek44$k)E7Pp{W>rzn7WvFop-?F4_VE2O ziC&)U(j`&Tt5_0F!4?jUX-a6Y{(Cbu4v$TV&%Q&E<;P`mL;M_$vPU9Ya@1Xv%LQo6 zw4cnqwCgMik^V%s&v0y!%Ur@_O62&paHb#V9uMlh{rb%<>VUC5$&9U_5v;GSImM|? n@EwSYFDL@udu79o!GnsC2EQka9moA7%yo4+Z^@Xox(NOoU0R&9 literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_bzero.o b/Libft/objs/ft_bzero.o new file mode 100644 index 0000000000000000000000000000000000000000..cfe1fcb38b2a14fd921d7ec79f72985c3db1d65d GIT binary patch literal 684 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%*Z>v30aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7DmfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1- z%29yQ8cYzkbO33nQ-Lf5h>uUrh)*j@%uR)e#mA$%uK=pl0ZMy7&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNPGg+9SeXo50DSk&j52XkO>ALy->G8MTn=2n__UJvq^i`Sdt_Z)8v$I9qsSg51`;uYTqgYo z?q&T^o>3Y-fk?gt&V8rpi(KfESuPE=%3PU{AI)-^0>Fnvn}P!8cHKL$Y@au3$NRNC z&NtT89>t0jhKws{LbF_Bl%vMBavSG!D%?G^JV#VG|2f~e@{w^@`lu?A%g^fc$Uq>#7>XDJis* zEzp{IEuYPdUErw&tj{9LUjpjC!|G)IEVY(P%Rc%hc)T!&5x+x$%Ba)it0!)wG$A4T YO9OX(?m6C(;{*4sYPD|1C0nHM4T&sd0{{R3 literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_isalnum.o b/Libft/objs/ft_isalnum.o new file mode 100644 index 0000000000000000000000000000000000000000..beb024fb43c977a5ff07b8d7ec035a1071eac39f GIT binary patch literal 760 zcmb7CJxjw-6uqg^inb<$gMvZ_hb~>592G4@a1g2BB9G7y6RnmF<;GA^&_iMi!w@$&gaR-6=75QiKQtbJJ!rgz$_4+ zrB6~C;NU|!e=YS--~v4AhciQl!LNju#Rk_Y;0rB26=5w9{?UT83t1GZUBCwTS#Y;C)9C-!H9B z8|SIDTw3b#V0>p$2cxXWX>d9R))S}k|Cq3$PI^*xUpdEBXW#KfTL*5lG1Q)Iaqk~* Cq*RFj literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_isalpha.o b/Libft/objs/ft_isalpha.o new file mode 100644 index 0000000000000000000000000000000000000000..da20b0195bfc3228a1611cc01e4a7ae55c359431 GIT binary patch literal 680 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SOFEk0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7kxfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw$ z%29yPOc1v;0BNXGfh+`wk5A2rPb*5yO@)ZX$D_J01FF;kMnlbmav8W87+^}kLPkJR z0*JwO@pCb-0Wk=GECq>oK;1C|NDBb@K>Z8>K#UAPdZBJb7AA@v>e2bMv-U@G?GH!( z9+1^QRuq4q2!xf$-y;TLRq^-p09nUf|A1_I35qfx8%Q#AyZ(ti3}S!*G+r>A12PZ< z7^{L97%K!A1$fvwCID5b0L5g0xZ*zqz~Ys`kx!tF$(ff8qzMXu%Gp2$^CO!cpH>o| NS)7+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z82Ed{fLeg8dj5VMAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag;K7AI$Bf|LRP DvIs#H literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_isdigit.o b/Libft/objs/ft_isdigit.o new file mode 100644 index 0000000000000000000000000000000000000000..a0e0f40d01b86d5d7227538c36481efb8e07fb54 GIT binary patch literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z4ETG*fLeeoOa6WyAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag<#WTt0=Qwad2 CK0yZn literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_isprint.o b/Libft/objs/ft_isprint.o new file mode 100644 index 0000000000000000000000000000000000000000..8cf5033396fa25d36dbe5e96031092dc2714b779 GIT binary patch literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z6!?3@fLeg8I{tnhAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag;46lLatQwadc C8bMe9 literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_itoa.o b/Libft/objs/ft_itoa.o new file mode 100644 index 0000000000000000000000000000000000000000..6b8424d68378e36d6a5611c4e94625e64d9abff7 GIT binary patch literal 1160 zcmb7D&ubGw7@e)54caCFD^w5+=)p@QcF=6!G8%5v|ISwItR z5o0ejhk7Z^dUc~{+Oko5X4TfDT+WZLztw&exB(;N<(Ae{vbsjfQbm@Z7OSNQk@BoR zeZGn+c(3$y{UyfqQV88ayMPRBBrmdQBn6#?@J09_KNa+8^r&a|krY&;llY+qEu14B z3iqdQ`dPPmBusuJT<#06=^v7W%ljVhJ9~yOzlqO3m~cBG4pLV*%`Qv6oC8g?`GDxX zcW9{K&~SMGf)Bzh5j@^KVA?K3!8}7T8enS*!@KJB7Xl7 zTVJvv*ywuAAm91~;Xs&${y{7ry1~K#*g!a6 zv#a~%+sW%KXfjsb3Gc&g25sIa05$@3iZ&n81@|7Ez}r_ajBW^5C9Faaoud%wBcQgG zK11?wGpA>P?cR43LB!=lj}KS(!5)uT^r#b0n^MSDM4nimS0cvq2h7+^8L8Qs_zqY% zfnP($kICz3r1TlfB~q`Zmgc5a9r5zWK=IT*6Fhnge0v%CRuP#r8f+8FP>*B@G}+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%cmNf@0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8z3?fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1z8@Z zSOF>+!31&34j>J6Dv*T$@$sn{@o7bgxv3Db_;^(JEr2R@fYKFE^PpS?ZU%-77#lmYz0vLaro;C-koUl&^PorL!T&(u(dqlZqxlB|e~U5DXrSB;{%sum z+d{8fUgU4(g$e;R|9B}4;6uKmbb*432yPZA{L*YzU)4VZ#P8m>=2n__UJv+|=CU Hj3NdADT-*# literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_memcmp.o b/Libft/objs/ft_memcmp.o new file mode 100644 index 0000000000000000000000000000000000000000..4ae0e2bb654a43e15e6c99b8ab3cf36fdc659359 GIT binary patch literal 756 zcma)4Jxjw-6n&|+Em}X2Hb#UcobMF?HGi2jn& zwKzDMZW+4>?I1W7DeAe+?H3|=;N+fr-+Skski34re}#q6W&|E!5Nwc$fxrs5N&O$_ z@!aD*!ycZ3NWKK6idMPkYrjvL$H{R&RF5pkkFtyq6gMLcp;YGFE~GO>RmxwU2;wHwm5b(3Os2mk)45h4`%3h>x%bzJVov*=Lx4G8Xk6SS>L~f|5Zh*_+;4Xbm zgg^paN^_5MbWo${ab6sPlc2Mlb#nYKos!O*bgn<7Q|d@3)s|Hg+VoJ-n=WcwI!$@o z{05|xXv@2v&?^UU$C{_tBPgz3H?~@Og%VFs*IQ1a-;MKJ&QebHcSoJueSrCk*~g-& zn*Eb!5(Dse{`GoGysljx39W2sMl>9$Vb>bwt6-es0>l4A>?|7hf!&1=pQD29Au`q{ O-Bq@zY|GBr1@QxK3v*xq literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_memcpy.o b/Libft/objs/ft_memcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..d0b66830935e4bef0eeb8229d790025509088e30 GIT binary patch literal 764 zcma)4Jxc>Y6nv*45ly@+EEFtK*xFcGDtfSmf=B{3vV?dc78iqDFbV<14?Jxw#max7 zrNP3|lvkz^l0ry%Sg7;dz2t%j4oqg=+qbhXB(ERupD7|^l<)y2z(+P&5SRfMx&90K zEQn^bB9oY$%aGD@>Ynnd&e>bJK^?g}Z8(p2=_5hMeGemLanG$5ik_@h4t6U$Qm(DW z&+m1S)mk4>y97|ZBHRE{I%QefFSw5CNjbdVlOA2tdaLtvNfSin$g?hh)8Nlr<~Sum z20zOEw%(%$O{2zr+5qF=yL#7n`(HjU{5Rn@dcv=Dgr9GV(?*ZXbAB4O1Dj#{Vuu{p zEpTydW84m)xMH`UZQ(b?N%IR3{yIWJGSBAKY)hT-f;ekkS(p!odcmdDec-DqIE04V z&zO%v|K7j8=9Hc>jyB1tTZWZRjon~s4*gj$%R2$l|Am$(t&5SBOfr^@@gxVE@pM`8 Lr0clF>LGmt?|yTx literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_memmove.o b/Libft/objs/ft_memmove.o new file mode 100644 index 0000000000000000000000000000000000000000..215dd01afd4aabcfc28b0b90b7a1c2f4460f6e6b GIT binary patch literal 856 zcma)4K}!Nb6dp}fD%(AHFzVo;YY?4;E=euSAt6e^OAKO)9o8bWBoK;9T)Xsdif+=O zI_1%$m%u#)LYJk3_PyO%-H50M-@fm?dGDJyv-A4-J`6GDn_~C?0pOlU9DvOO35tKQ ztX%6#@5az%1kxoFqEe_;9PY$vEt{UiF8h##^k|l`1=#tRg9wp7)Q@ucil~-P56b&O zY;AhiEg8h6@A#crRxpqp6`6?%Q7DPxaZWEdIU&B!7n4ovvSlFkT!k6NN-ihA3d8`r zO_^pvfQ&Y!d_vB_;Z?-wXWM|+s8??5P5+B$xben~`hXkNJ~uKwepw$d<(jqz?Sn>$ zK56zvnGY1)XeigZ@MzIG@Lj&9b(BUDt0q7tJ#Mu5MSBF}MhdzXQ?3@AHMFF9t!UWp z1Z_sc<_ikV-M<8uT>)F14h`{6OSP4}xo%T6??@6Q?!*?Vti4Cdj7`3yAJ-R^6~40_ z=Buebbv6{fMb#4Wi@@`cPBt33?~o+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%H~)KfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1; z%29yQ7EBPg%mC6*rvh0B5FekK5ua9+n41a_i;qWjUjtOB1C)+{ng``Fa5FGuz}O(# z2#6(s7;G0m7Xup*g8;}IX`og2z^@m5N>w|9JFCD)3fxH(Uod-P{5B>)Nk51ng9?d@(_*-OvMt8XarF|cG zbe{5PJOr{GsQp0)6aUHDCpp!TLcjV9*qk2&>_OWOAO1pq6bZ67bOq`A(Rk0cI?lH zu66I)KM)kuT{>iM-1%@j1P#3Jy*E2E->~2F*XMVN$eJM>z$|btA`2kaft>h1;#Tu7 zT4OwBl0fE4Fb94+h;-x&N5#U_8?~oG=E*LNM6?%7*VG6zdl$8a>jfOvTh)4r`S>vY zJ*OtCY-5h>(l+ympr*m>SGe4CYkrht{=HvOOY_P*I!`Sv5LJv8-UZfx$#2QbQxcGn zOC{fh5PgS3Jo@Pbh==qV#Pk2rXU^c&>3!JwerG%gN4?I7GQ&A^zOUf8?u?vaIDU}n zZ!*s5J=y1vqBQg!ChMD=@TwZ?@|3K$ZP|;d^bM*uk>3FN<0#BK(*Cl2l{i>RYTp(Z j<=bMx$uu|18#(YS8ej!|B`_%H;6XZ6-|Wtk3N`S}%r`spy?IZcKHtBhM4=Ia14e;Z7%m0C=7A=E_`@Eh zzQi-IfJ2iQtjDIcWz;M`_jxXx&;9ZsGbCX>p8b#ravAh+)cWwus+P?oDQZ2a7wE`Z z)Cv;mAEK;xa(sGlXldI#FPjCeH#el!3nd{biERk*nX$3wBcxT1ODFU$ZpOIHqHtJo9x5hB=nuc@hUFF(6-NImD$_DW$n3vxW5?GZ6I8r$qDIZ<70QC?4XcD^7kIcntVwX)zH7$mmeYA3;z2 z7@lJ2#XF$aNUPABzYkwB-2aAirn^PYwcAdyEwtJYgv}pVj7-Wi=0HkXnI25F*fwe} z55ej*$0;D1Wh_q7gYGF?!& zaS;0QUWE4bkUkuVenZs+^3Q;i4$g+DcPCzt>R$)mjQDRC`wal)@hbZ@_8;K!-5$~H m(f$m_a1@85@EV9RqCFx0SbK$>WeSX-M;-kGLInkf4#h$JF1=_K9Q??a@4kEQ?p^Zk-d^70M3Di)3mgP5IWRzA8eC%k z2QDQ4AbUcOp2Xz746SXmY4_ru&t!*H8a8hT+8H||6)sdkE-=-D9`PBPN(H|D0wo3E>H7# z`EEz~PFMNauIIig?^bzEyUl0#u)fn)-c?{#>&Do*<^_S=kNm0;r;ehTv6$3lp!m-8A{1q5PD5i8&}83f9QIjC{PLtrw%)hv WyJn4aqh7JiAY(Z;lDbsHcKQT3j9ec8 literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_split.o b/Libft/objs/ft_split.o new file mode 100644 index 0000000000000000000000000000000000000000..34c727b49092ba2f6d31d2490e2121323eb1eec3 GIT binary patch literal 2048 zcmb7FPiP!v6#u5C=~mm!T3d}EGzAYuTusD-#fT9*@PRG{=|T?;({(zrk?l67I~at4 zg-ImSp^$^3C-vBio;}Fg8gb*v2CD4QLnJejvU6D4q13Fu_syGaT(busyzhPQz2Eo# zeY4;GdjHPO0U@+U1QzfRIJXbW7#Q?4c!eATXr2y$PSP1rrX!{xX16fSn!Q*fL`tT4 z#yEQ>(;mvdI1a_5vtJAg@ff*>M4d!NrfFTNEzDKlXG4FyEKXMXk^R}pRC1c05%Dfx znlD>5)2V(mSG{1GZ=dctv5EP>*K8a`JepaI`Z)BzLYk(1(VSfm$|`-MB|Wz#^yR~_$)=GIIGV%a zxtlOk;quyRSJ6azA}F?`uSKuJ-Za?cwq)QSSE((p6+>n8lCHjdj1C8GD{xXH(j^fk ziooz7IV_Ng^nMzjS(|-9KfXjRp&y?T+|L;LNqnc%G-C1)y8epLm*~qRMQ`L@Eq3(f zCs>#JX^1M-^UCBVfzi<$v8u~AwgV%^9DE}VjBObd6KUO&+J^LtN%U2>+l3p|jLod= zo~QJkaHX^b5Lz`_O$1iiLsiP>te_MOVe8aJubQw|O&C=a$_;TRTdJ0cyS{N7^9iL@ zy3M03#xf|iq;*94LmNm16)CNQ(wkhzbsR#Brttt}cB7Nn2Na-)0Ng@I@Ia&fwCEgA z00RcxgZ>e(a({WAFNWmb^loc_&8pETyMDdPVKB1ZGGvfhr!`Gn)B|9DgCpb>9f6Rw6AOW zGW`mo5mh>0SM)7%V zLi_k#p)KaM{GkK6RpfjY_GiG;>KeOUu3v~ZM)IHRd-E`!D@BAm4Ne$WS5_>0;ON_$ z{u}cFaX)+FJ_Rnflj69qJ#pUyH_kZj??1Q?(LZjfaGvE4=q(5R8%R8zg%d2lL@YoG zJ|s+qG9;eB!nxFb>_tfQT%i9kP@#?mxZ(3Gr&x}$gi!tykRt$Q_e}38>Dj$L$9i^; zldNa=2B^?!VKN|hsp73ZeWFjNAINUJFlTG#mHEnCO_=tgoo&hJyoY~6VOmw})uv*X cp_8k&aKV{RT@||u+k$N?k5#TzE?da)55k_hwg3PC literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strchr.o b/Libft/objs/ft_strchr.o new file mode 100644 index 0000000000000000000000000000000000000000..0f0c202426d5830381eab492ee1bd9626e5043fb GIT binary patch literal 732 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%cmNf@0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8zY1fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1z8@Z zSOF>+!31&34j>J6Dv*T$@$sn{@o7bgxv3Db_;^(JEr2R@fYKFE^PpS?ZU%-77#lYqto@rOKTX16=XM1=)=nc z|NsBTr-cKg@VM&_AO$k|N9{=4FHG15rTbY#@XAkxh?JD~T^IDN4>LVgLYE|79!y literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strdup.o b/Libft/objs/ft_strdup.o new file mode 100644 index 0000000000000000000000000000000000000000..d96ab0ed5ffbdd7eee8fec0146c58f826f641262 GIT binary patch literal 828 zcmah{J4?e*6h6_~idq}NLBS!Yn|5(>RJ3ph3q>lp$R(sH719SarBw(BMImHy^k+D_ z`hdFW*fEPxL7`)DP|r#3wNVfceEGif%*nlZe1H2$04Sq?4@3-cO+rJU%_G*y|HHZ> z-W4^{$C*H&xn!K%X3GwB=;t&0`JpdWQwW+zyIhTk88JAOHN>17)pAWYY~H9e4=V-E zcebPXmT)w|IWgw}S*(g`Xq=lRUaae7GmLTmbH7Vbx*@nG_Y(djKuO4e*6=xp2;P;N zfH;DTUP|#N6!d*69?&W>_CpR4HR>hEGmPf`(|gQ)X6;vvxlW&XPQOPD%+2(ehZv)= z?8e7PM`nE1c6>;kB`MX(45;B{ksQzQnb*KE-<|Gl*yUw?=4J<&8L;-fc5p{cfr)zz zK3~R&XN9Aj?1Iu#6?G~xet}iX7+*lJ&(P$50Gre5`N&o>F8Xw2EKjc>O!L?rDaxtmvzgk8USA=scVb? literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_striteri.o b/Libft/objs/ft_striteri.o new file mode 100644 index 0000000000000000000000000000000000000000..b14ffbd07af69e702ca1c6ba0618d99d4bb81546 GIT binary patch literal 696 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%*Z~#40aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj0F<{nFn$U9I!Anz}Y}Xe0*|#Zb4#lNqlKud1hWpe7uhfvU~)T zqX4B1m>_PM0HmQ#1+owzK0Y-gKCLJ*Hx(ilACKz33aC;CC>;Pb56WfWW?;yGu|c#E z5K90t*e-r91~woD0g$C2@flEetN_viKt51ELjVvX1CU;*Takr{VuyNkKJ{pRqu|k5 z`@^HN^uux2Hz0i;-L5}8l6~Ja*l;lLx2QryK6KZ<@#yviN`$`gV7%zjdG7xOpiuL1 z#?IO|FHipe|KFqeh(hdPWQ(EkgyB39s3OLyAO^+?0Y(8Hc8&=^RVqMn86eI8ng#-} ncxG_q6KG>{=4C@N9H^WPWH3Ln>G5eL@x>)YnI)-3nLs%J-wawt literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strjoin.o b/Libft/objs/ft_strjoin.o new file mode 100644 index 0000000000000000000000000000000000000000..0e88db478a65639c179019944de738852d5e1711 GIT binary patch literal 936 zcmaJ<&r2IY6rR-(Lv5NIB3SScO0O2_DF+WqyD$d>K@_}{Y1l?g$q&&D1|blMO2%Az z>fhqg&>y)qIqp?RVFNAXW{_g~z3kg&bEpr#c|YcT-@MtK?)~qF1tE-ifdvQw*AyfH z*mEF7`G4#^?>X%K9GZeax@1b(xvK5OUcO`Q?M!n&`ojU~(JUzlOf*8G?)Q*a$|@HR zvzDzYrIUQ=gHl^>gZq=qppfLEGw11KAjYGjGBu@g2WtN)Tg-VirDo?#GHHV;Bi8d3 z7KJ$QWAd+oWne;!JrQAmj1Hyx9^b18pF|G6$N)hjE@5WSV8bKvuGBwe^vQ_|_-RU8dYtJ2qZjgFyfeQEt@CL)7xk%rwfr!=z59z3UKp)F=76D6r0cD zmve8TVdkyF=t&Z)ZkL7$xa9qeCEM^OZ HvL*fkEIy)# literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strlcat.o b/Libft/objs/ft_strlcat.o new file mode 100644 index 0000000000000000000000000000000000000000..1a44b8f2d409487dbcfa82492673fcda67ba14d7 GIT binary patch literal 888 zcma)5ze^)Q6rS}*6i?k1EEFs(J5G3iWsMT#^B8&F6YER5gF&S)$IKlt{&_q}=FyujrC>G8RPF{_o~1Ga$| zlnjHwAUH|&2bj^le>$2Po{UJo1S#G0o*U+2J;&$g-fELQ>V*7gmr)qBkk-b2QZSG* zwXwdLOu2F=v%8vEl5+Zo=~1leVpzulOlX%$eDtafTiwQf=@q%Wm0VAUij?p7bM#P5 z4+PrJ%zt5Q#pDzxzyYu^W_Pg&NT5qekLlmFh)6Z&*$mhWnl)_JKa(ef`Y*hPm{12* zp>_hH5@q2ZR0A3oiWgA?rYHy>!W1vtzx$}|^MYvQWgM$j{)R#k0*pW(jWHaL(rSvA z#;=4Q5A4f6?}=r3-ahPy?(>q$dAYiZm%JLY|6FGi`4gT$x9p>Kv@6lj6>H_huN*lE z6%S4vxZ{>4t(tWzXZ3oW8h4G=Xp;i12B{{z+t|Vl#troQA;)*1r3lvkEVK3;%jxdu zJjJOIXhUG}8J7U&{jqPo&T-54o(K&AUqKv?(*J=XX^0V!+4RxqL2N4V@Rwb=?QX55 KlJ0As&af9Gnwnhz literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strlcpy.o b/Libft/objs/ft_strlcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..98c68f0743316b5bc1f76fa4c587c67bf9078b5f GIT binary patch literal 840 zcma)4Jxjw-6uqh17QYg~LBXMegNsm|1Q$gEZ?GUz!9^aWRur^~ruYFxr7EUfT*TGU zpWr0*195ZIv5Sy`f@5*8o}0YbI0#-ix%ZrR-?=v-PoM8!5hAUL@Bo^DD=uOHq8Aup z{znX`vlo?p4o_mRFNc&?X4~>=k0;H!WP|(Ftt!}$cVPq9x|#OXk(;DUudS}9(w59+ zx0bUDQcg_<&mR?useBRgc8U6aL{J(bWoAh(ZlqQ-o+jn*{T$UgrgB;NDN1cbOMcCH z80Z1q-St)q0~|b*bpv~F9Yi?-{h5afDZ*gJgKZKogggsjkrM%<5 zhp^2TQOH+FKk9&)D1q8$t-1$NW%r@7C?y>Ix~uR>C+4$$$m{V9O+PO~D4Nfgnts&6 z{iA$TGBM#s9Nh4}!cI6v0~#g=w2u?kDx#&1z`RQJj0?0qG3iNbw+{tiZgxb>DQ{*rY(D|W) XzfXYTM_#n#rnRw>Uf=ntGg(}!*iUF| z3>q9;gXZ8l1dh^>eaCm78WHrtchC2od+xd4%jd^eoXD6W9AFfD6p;pjB`_oY4?OAq ztDXrxc9Kx`3Ya~&<^?+NSv!{<`%pPr$Uez3LX;XK4Z&PEDWB#G9-mh(jw*-D+gp?O zjy7psGm#+69jcBBH3qX=;$k&lc7q=C&wLF%x~^+Z@6(oMiAtfCx(Y6W!@tZKih%<8 zRQmTi#{+5-9`9)voP@m9Str~7()+6Qu3Gh;>e#+KP|bRe%SvQf*R4nwU7>`K=Q;rZ^^!UuH9=jF#27dWeJ^%m! literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strmapi.o b/Libft/objs/ft_strmapi.o new file mode 100644 index 0000000000000000000000000000000000000000..42f0f023a9174375d2eec7f7338b8d8a2a5b0db6 GIT binary patch literal 848 zcmaJ-#ROosO5p6_{|_t*DwcfaoM9)?7$LBRo}fD1ZV z0QLs>K>ZJMOfEE>Xv`FXb7@+8rCl%fW4-KtUVhezcV-;U<1VcM5j+(8q{Or?ZdSGm zMNikNI~&zit(O*)9QoXctl?t};VvDpS@mhGNn^j#x?bBZR7!C~>;C<2OyQj2Q!~#< zc_p%*_~duM1n_j1{Zi5Zjh8acWw=icM;45J`3UqHdx^e9dkg;KuPFbIYW&S9zus1U zt)+r`yTy9-f+N+{Z&7|Tj`(h<8ud`@!x5&MZij`pUvMNqtT)S||<<=3Ly@7-<}{Yd1a>r{rbLgl+1a7Q(M=Dz;m z4T+iW&mH@0%qVN`lUTcskV6YndhjAN5PA~YgQ5d-uprVxFES0=EfLbR#9b^xps-rp zE`|OX9zBW&5h_Mh>>hH+F^32nXd%boq3Qc(XVX>i&=1~zKi~UinK}J)elf|IG0yM- zCV&qV%mc7l;2!1wv0dG3YoF%OWCYSBlhSqe+$2u&RldG@m8a2EMvu-SAfPlR*nT=g zUP^msd$(-6(yP6EUfY!N@uO@%uXW~iF&;~FHXx>3s9c$pPDO6j%iB&;lk)HLl{D$T zrkLrubbgbuiVl@q#CHZzH0uV-0c5n4>J{+m|K7nbz=O}809hk00VCJ8H4*$4{#i)` zjlKxHI9TfnztLybYubb`X4ac&3Y&aD>b;+ogpGbonXp&7!uS^OPRKj{XG7S7Pjr-| z8Spj~+W#sXVxY-eiXZYmG+O)1CRW}dMO`^8mujPL=0zh0x zm5@hEylWlZP53cLk>-Oq?nT1>r9>hn67_y45vT`zfGq>ze4E*2ouh zV!V3FjJ>>(pPDp}F-1qe4ZOdAG%S6e?7^-4!Pvv;oaTLm$9Qoa9(P<^g2%lTsf~J$ u7FzVtHhLR6pM%e|8C^{_XL8GxFWh>~F1u-5b!rIfj-v{8xmw+^N$wK9G^Wh} literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strncmp.o b/Libft/objs/ft_strncmp.o new file mode 100644 index 0000000000000000000000000000000000000000..d5f0590a942ffea99b4136fea66530a1a51a19c5 GIT binary patch literal 824 zcma)4Jxc>Y5Z#L!#jm@{s&93 z5KGZQut?6zlxYN02$m`#@l9?niHP99%e;9zGy67N?(41GDumG_@B=ghH$*}Jq7N9O z`j7C>^4#Os*eM9KmqKehnzTLc)r)dzv0nS^nF;M9FSTeE2Q?0&bz~#Hxe~GUPGWaG zv8wgVbmMuRixB6_fak@6A+`#o9$H6ZdTnbZ9`!V>fBO62)(Oro@8eQ*2odu+du^2e#ly;ZQO^Fma&}&o6E3KX1ebYa)Y2Wf zRhij>avs&;T?J9?Ir}V%v~5} zx&;lzx%#NrY>hveDS9z4WOeAtnJpCuSywIePWI>4Dz_MhwFguq~0 J5s7b7&o}l;ioyT@ literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strnstr.o b/Libft/objs/ft_strnstr.o new file mode 100644 index 0000000000000000000000000000000000000000..10bba56b90c572c309b9a3fe5211716834ae6601 GIT binary patch literal 988 zcmaJ=&r2IY6rS}*47R#Cc&OmPg9qCpR8JN!5j!vk3!*M~DN{)!7EBboK`EpJ7d3GY z_2U2FpWsPEh0RUdQ!a&E3Q1`p$Fv92@6FD%&JPFm-))_Uu?1`mLAQr4gsan!%C)y zqLi7<+}3KwmxcV!+x#0T=U>?MXIf`eFDA842~n52?0zY;>vC;-HJ6Q7rMy4if+nRk zY23`E@dJ#iQx&H0d<0iCx1S~8WV9)*mo@(kaSRxIwg9({xa9W+wHyAEd!q7H1mDx5 zQf!Gzp&=?>T|~S_6cO@9X_~qF12I4YZ#TaY2#R&H9`QCcH$SVUVyi(2owp(^HVmjj zt1f1E)!iFZeJB$Ol(dofh*Fd2lNTaca5!B6I%T$a7) zh)1W6yWdMpq3SqCh;xKqRc#)$&7dKV5AZmasfk{CX_yonp=402`JvP4;2o%Aq0|<^ zb^6s6dM(r6pSm_{nGI>+ykBI_ZpukL>`T(OPIor~KfZ%F%zVFWb})6&H8+sZyf28j u$BEa7piM04h(I_&8@lw+M*p1!8NE*%Gr8u=cm8%B{wL4mwoJZ}&9mP%!lxww literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strrchr.o b/Libft/objs/ft_strrchr.o new file mode 100644 index 0000000000000000000000000000000000000000..5df8815da6375cb5853e5789029454873c59165c GIT binary patch literal 728 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%xB(Tv0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8zI{fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zElV z%29yQ0Zb6LYyi?wrvh0B5FekK5ua9+n41a_i;qWj-wdcy2PjkE*cZr3jzuFpNXU4JxKFz~nN0fj&u{(T($+d`jPUgU4(fC_nZy1oEOd9Z@4 z2l9TrJo^9tfBdRn#2yAJh5=|iVmMy}s(`U7h=H*}fKh;lonrz}l?qT?28ca?_J9B^ o9WXfZ3A8ae^RmGV2GT&~Y#@XAkxh?JD~T^IDJn|NC;}-30DQw^DF6Tf literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strtrim.o b/Libft/objs/ft_strtrim.o new file mode 100644 index 0000000000000000000000000000000000000000..4a891a2cb4a204f63ecbe7a9aa3da2d1bf9add5c GIT binary patch literal 1408 zcmb_cL2DCH5PnWe}=m{WITHzdy!8SG#Xnq>ogawa)>k|0F6Dk`m#RaW@; zd}*1zF8RJnJ_*@5#;VFEdkcCQ8jqo$Whp2L(NKI-?v)>7>>)7fV+#}KP#)FNtVsQ5 zDRTEacYfr#+a7RtxyQZsphqmO(IuaIh`lLx;}~}h1fZ_rdxfsk*MNL(e&L!=F{j;S z`q~9lqtriE>KR>UQ{(0?-}=V5yQla9?z97@znY+;&qheC`_~eN01N|F=qD9kA>eKy zMBk7*JNbp}$_;&LjjEVFHOH9TCyRYT?1NE@*vSYxGnnj7!b>}Z`lo!t=!9sG*Hvvn zJVq~yg{V!>OJh$r-Tx3pk!+h?*j7#dPd`vcr}lGp&3bx6rwhlS)W;lPiWn}tO@m6aAI#`Jwn z;zGUCZHd*p+yvHfuY~^3j=wwsMzAU-Kv?*RrsxjMMvFMakJV|ZmnEb WuH9O)WcJgN`HTsxRI4>iaQ_D40uwU; literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_substr.o b/Libft/objs/ft_substr.o new file mode 100644 index 0000000000000000000000000000000000000000..668a61ca407e94803d103cd34ce28a15a35210ae GIT binary patch literal 1068 zcmaJ=L1+^}6rHVY8Z>ot5L8g8;I&Xah{YZvIxvL>f;Q+yh8R;Sq-jkz7?gmrwq&{o zy$GHK!K1h2R8o~Dda!$vJ?0`9h!AhlL*x6|S=PNG@LjyuAPY42& zGP}0Ap2=FWRCsv5a8Js`>p_jMtouys%@q33EG`yZ8q=jANSRxa%f-xU&fk@CbiP+w zl+dDe-A||N7-K6zOn4D~3O?mTknSqdID(vpu18YcWFP7C!- z*xi&+m7Xefg-W*_-c`H8sq}a0)fImxd2EDTqurcY43)rkgOC_#+FcuP#seZbox49K3aD;_g9^%Q+# zcU}{*$z4iNZ!z=PW7?dH+FQfi zoFM6?FwcH(C|vH7`jXh5pM~5LPRU(Ry@jU@8g5Z>H&LCR?K~e02EhfuNxFOEQ991U z2k8U*!v2`L^8u2u>32+>M(l*nj7K+^QH~q&*ktqtSo8+Yz{LTMg9ZNqyLvpnHFj+( zqIGY8pwE+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAa64fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z9Qk`d76MsO{QZ1DR=4Yq<^u|yu76&#L3luBx9gwS!^j3h;{n5Z5vU@@svri&3IRp| z9(IliKvgP0aTy@)_zwZFcw}(o6KG>{<^@>=13=|$AcOglO^;72i7&~|$uCbW0;vN4 Db)`kr literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_toupper.o b/Libft/objs/ft_toupper.o new file mode 100644 index 0000000000000000000000000000000000000000..137ae034299c5876940f6875451f8bafc47236ea GIT binary patch literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAa64fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z68U>T76MsS{QZ1DR=4Yq<`)W`u76&#L3luBx9gwS!^j3h;{n5Z5vU@@svri&3IRp| z9(IliKvgP0aTy@)_zwZFcw}(o6KG>{<^@>=13=|$AcOglO^;72i7&}7EhtDW0;vN4 DyER5X literal 0 HcmV?d00001 diff --git a/Libft/objs/get_next_line.o b/Libft/objs/get_next_line.o new file mode 100644 index 0000000000000000000000000000000000000000..3fe2879730db3b1523d6228938a97ac898c702c9 GIT binary patch literal 2808 zcmb7GTWDKl9RIS_?pU{;4C-a*SV14Ea&(RggCQi?14l3*(#jafX-!UTHBB^4Seb-H zPAfS*6ec*lqJ8Y}#U~#`)`_L*TlGO&e99n$1dh^&3bB^P-~YQTm!^UreBb|m`!4@; zHuwHGIKf!xIKzV3gQ*?EGKh(B2D3Ck@CSp(`3=kCL#56$q$d+i%UzDgw~9N1~(ACPU=`^ZSEpRHL&b+m5Ga-kXSL z?Of{WbSh!nuZ}2P4j&NIvSbdSIPy3CAY)P_cR(oEwlifMy zNwS9+n^HKz3z&~#^1Ssv){9Alf)c-oJWc^#274J0_UtuG8Wf5q+0yaQx%}TTW_kB4 zHyHHtyKa7$=}Q#MDw%b1R9nO1=XR~7mx!#=VtHoOa`RQDFSMzC4w;|dwftO_>$&xY zK7X1Fd>HrDZrgKz$< z>b1Q5j+YA{*s**nN(Fo#Zv1?pYE|sETE7&r%a$M8vAj?XB$Wx>xiHh`4N3airC1=h zNhVSoSE_y_Oi^oVjYflPh4TDG$nS^uW5_-lZn|#Y@_`OtT(7O#$s4L(FJHI3+|KH= zu<5MrBzPrrABi+-KXN>vE9K?`6!R4@AI5&J{KGTAxv^&kkm7*pvU0rzx`?$j7M?{s z7OeMZgkyW>G_n>^`Hn@wfWV#8aKaCBo4k;#G+q>rxbbZYBCOpyGUAc=a)s}mH1*BE zGxvRSUmUc4t^hM8>pxHDT{0`gdf^T~H~$sQijP(F+ry{bgTA79!j7=?i$hO|@3nR%pZWN^&!+ z!jl!>uztFW%eX13^~`O&g6+ZN%z%yyHS-LDOJ+r1I@g|lusA^byp2kN;(%7$ zgu!9Es=h?Ws&eyV!SPtdivJo}9HxsWOBxFz#o@5JtmLxNJYQaORnprn@9li^y`jIX z(xps`$g)>db;X;0=*U9E*g!3 zs;Em`>Lu(z#Fh0O^7lRJ$9K#48W7($<9!J~#YdRv>wtLw#ya+q^lkxafWD;P1;isW zE&!sB8Gj)kvil4Wu8cDh{*F|zC&q7-6Juw;!$S18oMdM|21F?1y5wJz{4qedHmIk= zl`$mw1wr?YOBj)GP(lFG@BI+49}d)i3w6kT2-JB+C9Uoe{ST153>zA6U=pqF$&;XU z&}zhiw2=JYpp_=Pm8M?bO4BoIrEhl7A9T>np3K^_*-U&YqtJKK(!PRhAzr_u>#C!C~{bp%enCKCcDs}AqaO>y4LL^7GC HtziEGhP9L- literal 0 HcmV?d00001 diff --git a/Libft/objs/get_next_line_utils.o b/Libft/objs/get_next_line_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..d4ef3003edb8ea27560f9b335abdf86315d80376 GIT binary patch literal 884 zcma)4&r1S96rQzE>DO-1!Jxw)x_0R#bWv(y4h0bgb%;@P#UM3gB?*GS43@q0=XmN; zAav>KCD==#P~cHIXy4nN!6k_L;LZ2FH#6UR`{VWNbCO_8n`2lI^N21969KFv(v<&# zjNI!>RyjNw1^E($aO{>7>M+k)C%IX!lrIJO(JUz#5M#L|QV^n8uU;04j%e1d&TAzh z_V?5tu`d%-ayJ&vl7^og6_pu;uq&e6C{*pRCd7~V)bq(Jed(th78$E3O}vdrA%biA z0*fOE)RgKO%t1O2UIXJkJ48f5cU45||Ix?Xedp~Dle;$~?luS9vqs!w+_ij2pYK=$ zy+iLm$l5J~=^Z0XN4ytw80u=<%NX1{fRBdLuxcd-bRtOHUZ{K4m}Kc74ROmZ2F-iR1%b z<|b+z2!De9fDauYyJFnOc9-KaeF5Y6)}!PL$$7~j+KLtd$0l)%@iU0rr literal 0 HcmV?d00001 diff --git a/incs/bulitin.h b/incs/bulitin.h index e04fac9..da59c87 100644 --- a/incs/bulitin.h +++ b/incs/bulitin.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:03:26 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 19:18:52 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 23:00:42 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,7 +28,10 @@ void ft_echo(t_leaf *cmd); void ft_exit(t_data *data); t_bool ft_export(t_data *data); void ft_env(t_data *data, t_leaf *cur_root); + +/*ft_unset*/ void ft_unset(t_data *data, t_leaf *cur_root); +void update_env_double_char(t_data *data); int ft_cnt_args(char **args); char **ft_join_cmd(t_leaf *com_leaf); @@ -37,6 +40,7 @@ void ft_add_env_front(t_data *head, char *key, char *value); void ft_update_env_cd(t_data *data, char *key, char *value); void ft_update_env_export(t_data *data, char *key, char *value); + /*ft_export_print*/ void print_export_order(t_data *data); void devide_equal(char *src, char **str1, char **str2, \ diff --git a/incs/struct.h b/incs/struct.h index 056e6f6..7edc4ef 100644 --- a/incs/struct.h +++ b/incs/struct.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:24:15 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 22:34:44 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 22:54:18 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -85,6 +85,7 @@ typedef struct s_info int pipe_num; int parent; int pipe_index; + int fd; } t_info; typedef struct s_data diff --git a/libft.a b/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..6ae4166bf0b10a7170fde7812964a7d10e361ece GIT binary patch literal 37456 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 literal 0 HcmV?d00001 diff --git a/minishell b/minishell new file mode 100755 index 0000000000000000000000000000000000000000..baf7863f8bcfab4000dd0fa19bad3119963cd10f GIT binary patch literal 90896 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 E0`lqYYXATM literal 0 HcmV?d00001 diff --git a/objs/builtin/builtin.o b/objs/builtin/builtin.o new file mode 100644 index 0000000000000000000000000000000000000000..f7d305b5ac997c03c29b1a340f96f8497dc55a2d GIT binary patch literal 1792 zcma)6&ubG=5T2xI8@0MCTCkursGx!oRD>QBqBgjwhf*piBG0QO~J>D7ba!Ga5lxf!HZzsb(J+r**+^X7eTzWK55P4f1~*Oh*vSPx-= zCZNeUmJ}2+1ij0SHALq?$Xn!B#;4sumn3C#^( zpxWxy+|9!9lax|HaNoZg*@M8Kk^VLEbbh^=Bg-tzkX0!mQ!YXR3ONSB>Noq|BWW}T2WDsH%{Sl7n_c$k=a1tB#$vM! z4`>|vo}4rkavpk%;wkcSMkYE6qhoL~QsN~M!gCs)^kux6yT3V#wf9Q#5FgD_z~dAp z7r$Tmyv2E>>y$M~0MrEnfY#vHNP3im-=19P<%*jI3vkfQ-VMwW#W(DNG zWs8U3cVLx0G_`hbU9J>JX>dC)Le>iGo_@}@uF&3dm#FV~_8#Si^`J$%Vu|YOdn^BDDAGcO**vNjt+LcnrmA!3BT;Pz||aw3A^T4o)gu(l_CznZCmAX H#b$p1z;g$% literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_atolong.o b/objs/builtin/ft_atolong.o new file mode 100644 index 0000000000000000000000000000000000000000..88851a1b652e0fc8b979ec1ffab66a019ef7f093 GIT binary patch literal 1716 zcma)6T}YEr7(O$9W~paVkwK(HP!TgLgMuI|!^8gUUfSGtBk8-#K5-{Gpef^PcB@pYxpeyxZC5U*9(> z7<24nm@rB)W@*uY0XvFuneZ-_r;V_b=GYjTjD}7#DZ{?8Ffo-$*=gMBw9%%2TcXya zN40z@V++yzVBsdxf_Db2-YUjwm(>mii_#9$XOCDmR3)2h*r1be^ z->_%MXXCB)wdjk?sx+&Ej(s-@9bn9_Q3*XPmG05mpir1B^d->tpfU%!- zV33h64cbe!>egcQ|JEhqUxoRtNyMW$5s$2hq>-WBNh3{iNh4K&i3GBbBk2`NiMWvy z2_u(iPnipjcza5Cm-+lvmz6a0j8D8GRw9}qmhiTx_a^f57m&^a=Y{#9se6&vGpk?mXdbnA{BjMuj^yZ&6uWMoy$epFT^t{6G~gc|-&EY?69=Z#f!1r1vg=2``xszNMj ztW(Wddb?O-W(i}xdr|jC>o;Gt?5EN{50aSO5{sQdtVn-uGrPR^L3Cn~xv82RoksUbKcwQ!asMWBjJX`HstV^*sGLOn7{-frdOwANu8*&ZREh8Sj7B=%+@pPR#^625TY$#q2)|Ty{H;u%Y=IOe(>CJ(ItGS=Sqg?kL z?ddr6 literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_cd.o b/objs/builtin/ft_cd.o new file mode 100644 index 0000000000000000000000000000000000000000..4805d8052fbf47acb51af3f0ea9656c6e17f1074 GIT binary patch literal 2448 zcmb7GU1%It6uxPjX4^E`MGaOEGD>ZInIOUn4HQ<*z@^kShQ{V)xm{;xf5>Kcot?EC zA=0wl;xH@(UqtkwFFpxX1fdpFgDFiOgrqML(1%435=bHRDcIQcJ9qBvCZm1ul5@X% z&iT&IoqK0CtA9Ow(#KfOL52x(2ogDfNrPa#0QrO*PZ>E1z<8BnFajMp8HsW;Asnmb z5W^orTr{RG23i+SQX?3Yk7DN!Gj@s$huBquULh$Vp@oEV;v_JHPzQ;WxR=eWLm){m1|#0A*`Ip*r^%I4+!_Su7c)O zK8AfNleF~XQ3fu;*CEFt@+hK5*Ah&u~g$2Zs5;o(@UFuxRHGY?2n-L_Jgm66Nkon3H$*k|N==HNQU8quriOR0A!M*ARI!mJ5 zw?S`Ia9yTZHg=JNZGPrA*1AhOR6C$H2hJi6k6?|vtH`#p#}$7At~>NF;8;|S#Btt> z3@|MR)HQUl$lad<9a(!H(>C3?+g;jZ3)_Z%U(z;_f}uCc?isthes4Uvlo^Q*Und8P z4kwsApKDv=sKz~c*SSZX>~MFX^|;;U?)U2i-hzZ?{5>SQLqu7Do?jye4FpMV#^Xew zihie(5ernev4w1#U+s%HxIe<9-BX3mw%o=VMLp|BQ6qkC-_Gj`cV(`ypNZBnP6?3a53NQpfj;ojs9KmEXM{0L{XL2r&H*ZkT& zdWOj*SuENgJY#kLW4Jr-f~@Y&4{Z$B*mYNMCb8tw`>9Hf@eA)5j8>!CE0t00d`YWR z&779W7c8x0Yw5ggnNG=`J<2Ye8ymkg#z=g=nI6?BTq~9wtztR;J5D`+N++RSf4NfA zP2bL@p5hNaDkpuuVs|qQ8$W5PCddZ)<#2uSwdfOzWq1Et>r zQr%e~zNva1NO_aWKcVbzDf??c%J;JJKd7R%6k3+f{(&<~Ww_hgAT&kG0MCUbQqHLG4_$3yWZI^6e)$$Ip zKwu){2>ct7u9kyk(VW3rz?w3r!I~DCRKCE3Rs2v?tdwo$C||zlWIB~{CH% iwH)(GdVhj!HD$wuQq^)g01Iw6$&NV8v6&aBJ#5U literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_cnt_args.o b/objs/builtin/ft_cnt_args.o new file mode 100644 index 0000000000000000000000000000000000000000..8ed69ebd551cee8a96f9d7712945fb16907dffed GIT binary patch literal 672 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SO68j0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAajHfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw! z%29yQ5=;=cQ~+tHQ-Lf5h>uUrh)*j@%uR)e#mA$%F9E950ZLmy&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW1~+jtM|o0LTaGX9xgdWB}3&bt|$kQS4BU&Zi!owLgx# zegUcX=yv_#(QLuM-y#d-b-R9PKET-N`o*K$_lHO0K@O0LPTwCdum1o4A1E1n7^DXb zpz(p>3=yb2V^t6XV}$^t01rFI1fVJvptuYWHvmln0a$!8IPwX!F*)GD6#vFd2PmeQ$UBL_xEh;TuO_>yVYm2@>*NrVMq)^HjG z4-s|q*r9_EbQHB<>r~LOi{u6l6zpLRtB~98&AhSQRS!M(&HH}e`@P@3_kBD2W&8I| zvk=N5fd{-1t~THig~Lw4=O}T2by6YhBGte`3{62!dSp^&lT+DX9pHX_p#L8ZS6!?_ zdQ>}b82wPPQOr;XO-l1gc49a)#2Zr9>V-Pg1KGW>kpK$*8b;KgIW{^zXlCVP=ILjR*ne0J|S23 zt64f~O+^%K_H0-S2xcq6`5P}W)sm>D`<=LNA#CMJLYrmcSQXLw7`gu;by@4kLqrIz zL-_MyHp8AQ8Fpgx%8K96oW7yuuYm&W^kKfdc3H!t`AY~}lRz`cV zHka6Vu5Y|S=eQH$PUBI~i*yOqe8cQ3YRm1awT+oN4@_pXysy#?hNBm)6~)$z?mG-w zd;WUKQLRH=8jv3~|0 z|AW3@{QW}QY>hl?xOJ?F>xkC_FEfw(*q1i~-pWp(w>w{*-f6sWc-La>i1-};j2gmg zh=dmzzh?Xx5$(ph5Mi-69>7gejtD-cx4spLb=rWPgA)$V2TP&RgY5)j6~rH1Dl3y_ edQ3<&oircG)X3nFkmL9(&89fYk>N}db$hn=@{G03KmyX97;=j84(2uk-&z!FoKp+TJ@m3u9KJS+Rf}be`+cY z2DXu`V@nkA>Orqc4<1B85Gy%&=+$Gu3LA}(gUBkj_4mE^#>{TogCG0e@BO}i?|Xmd z?e)KZzqOyJw2#oCjiXs(=o~c2LuhMkxQkRc0CJpTAUQ`);%3YwL@bwM_Ru24ncB-| za<+@_n>?J4W2+NH53_lkRv2;-!jIyx87vybXudqpX=DE~FT`*&O`Z<*`R%1n-H$~Q zyx9!qg?Rqi|BM)Hnt&CfwC*9|J*!}mCiPHCA!I`=g!Lt<14ipR$H9=VG|-yKXDHoA z)X2w-Poh=O)KS=zG=av#ld^sqbsPj*7SU%w#M3D>7M`kjzV|Ba|Le|rytzw!7&z zYIs72?%3a2-M?n-OOE2ECNIMhFVB91?am800lSVoHXOP7pyDdvN+E!cgBQuU3e~C# z*G+xp;(n@1j@YYfI#36B-2sX{ygS9d-6_26g~7($^gA$aogAGFfjEodojy`<`kJqj z-n6V!!D9aa&lig!Z9R(4Y{ZpaTVYbKd#%j7jW4CJ-#fS;`BhMRuu&VRd^0LvihGmv z3$yoXo47ceD0awO-J%S(tXje4!ZxC*&3mmLHAn^*W}KtZjB~Q>M2X*U7Md;Tv_ogU z8A?BHhZiU5Xf&z)A{oP9xjz?NsJEK)PCZ;qmShmK7guNGbB(+=Lvq!yPc-hapE8;s z?_ziOLxr?7?1_Is>#6kCX(}z3OXUOmt#x?ui9Le0^3QE0raq#%sq(vHCl2CyRKk8Z z2C{ByKU3!&{kVn|<7eu{od33Py)ou=2n6DxsRh``!OKry@{Hb{|RLN8<6w;02~K?3dB?B zeh7rPZ=+-X1jzm`0oi{JXaT2zxM}WF#?E&h@1uJTh$$zk1|5R{rRO(v3J&?bNDa^L z0e_BccQ7dnhGcVRvUvSl}DU5r2nC z5EH9J2miAecEa`|{?LRB!*(d-auYfP`9Uo3F-3~tKe;6X5`IJa=f!z>5g%L5P=%8FSiIhD2Et#OC;Ar%rJbYz literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_exit.o b/objs/builtin/ft_exit.o new file mode 100644 index 0000000000000000000000000000000000000000..9964fd2dcb806b9bddc3db2dc0b16b7b04cb25fe GIT binary patch literal 2568 zcmb7GO>7%Q6dtFgH6e5(NCZegEVW3b)k2!I#7P^JhOV>+tn!moT&lr!?8a5RHujpD zA4{&Bv{_aGBsk<)34xHfN@LsUL36B66^Z5pixu zbG95yeaLuWXiN7-?@%Eiibr!lM39Hcu$L7`c*J=mW2fWRMP=Z;KAsmRru?6(I=%U- zTu()Pkz^tjj@UeFU5;BLoIibL(@6uhkn75Lcpqa_>a?FR6}m1Y=h0CfONSFtIiaz> z>nh&7ig!cBQ!2ZQu~BbKvI~4aSR94c%=UqaC@I-XsG|k4a3{_S67$(JU?NIIOmnGL zI+y=T!>03#SzPWkoqW}F4e&q!>^I$9>mmg+9b?gS^NT`pjD@l>Px;KUu|n=*e!-_r zP&b)V{e#%KVZ@--h}5^Y4S^CoV=lO4p+;ALAaTluQl08pmN`8UIlUuv|P#cG>&?Rhd!^$&@x0*!S!H?MrP0msC* z&Uc#m=apaC#>U2@e_-pX&e`DZ0Oyut{HUrEMo5MLYvZl8`cZ8H9mHH?xmfZ!#`2PfHY1_s!YM!Yz*Km$XtQnp z*-jXGf70G+Z*UaXdbKyHDa*z>o@|K#TaiD&!r`GVagFu!bFs&?j&Z^Kb5XVbx7YS8N_mpfXYPa!TFGj6L_5|H!Sj$z28QGww8>*I12PyB;K`~Js zub6yXhDCO99+f2hA98>g;|Zc;a|Z&xv4XkX;C8M*9K;=nFiO z=?hrdL^K_b1j6Zy7+H289epVqPe(_Z>!5Zr8Ayb!S2l4OdC8zEk6xDpsT}GOYxT9Z?DxNoD2HHs5IpcV_6?-! zXYBNW)~iiV-HmHk5aG}kY+B*eI(Ed30XMTQ_QiOzv*+_a`TJ=dW3H|Pf&^a~9-<1w4liz)^Y%jS4TGmOVG94{@$ ze;na}v?7TVBQH>_8??ng&cC&+SK&-z4uMB**{3}W54;{_wV<< z_q{i7=l5q%pN|NUc}3s>-VHW(;gJJ_-UMGG#}LZDsvXBE2bAi-6vTu_BxT^$13lLI zdHc)r+j=^>OND?4k8)=K@;VuIivFF&e2KTtGAK17GJY_P3VCWr?QhGCT%6I2HozPp~1#V1>@viM* zJl0>s(s`)F2Y9{#R$F226MMi!G%4ASqmBcR9mofe$QS3pL^KsK@m<&`+F7i%R0dg_`(Z^YB_xEGJlx#e>;;YO4JUk%n^?M`>Wvzm zWqX}cPzXVvpkZuxoH(Bi>)DLi+zU%=uZQB3)S7^b2W$BwH-x8jTI+aR+GH{D0+-mLjP^>q;v~xuUIcA%J5F=rjJf6 zO}%Fxy^2U7rgZfS+YQq=e(?S~VOw-5q-NI%~0n|4@F(vG~~{Loo<7ROia(uwFQ5!QHo0_YKyMyVsh79D)2B{USYqG$0>C;>NTdLgIJ$4%-`$Dv$L9Jt6&1 zNXokn2}mn|M2K|`5_g)FgG6tv+o%nv->O5xWPJjOe-4YTP>{8N2Zdf>nP-_}38DNS zK^{b4dQRw#BAuK>O)%-{Ik?Gsy6;Dzn;eUwO6yX^k8C3!(a+#+f2Bvi(xad1(ckIO zzv$70EX;U?i_$A!5^_Fp{Xly4YQ+zPoZ22%{mL}{!=>l@6(0d5xC`Y#y8iUMkX3wt zq_MK%7d>CdTD9l~9>L0Dr8YV1VICKDfZ}_lSgWSPS+9(Vy{hXYz9@srMKa(cWU^H5 W(shwv)!bPji{7PD5!gz@dj11-o)5eL literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_export_check.o b/objs/builtin/ft_export_check.o new file mode 100644 index 0000000000000000000000000000000000000000..91d3ab98941246304b1168bac802981f8c64cc62 GIT binary patch literal 2300 zcmbVNPly{;7=KgOZEV-h3SC@9=vb5%O0*Rz>(W4KJ1~L^QoG>6_3bp7Y=&khaWbik z5L}t0Y&ul;py1J)J?hPa#K;!cn|KuuVRwrOM98t*UAz9id2iAr?t=A^?|tw4JHPLH zUuJ%N@Yln`j44krY@iWP><~5$g!LR~g$xI*$tQ*3G{s;=GIBB^%14WH&sy@tS;$xQ z_pUyYqtgNb!J>Q=n?#Z$q!?k##G=J{s_414vmh0m59W*VoRjv?CC(^b!i_}WOXU{} zX3FCw=Of!mbN=?_o)L$yB(ATevVnZ0S_M9tdLSj|R+eX6bI}q3!}z9TW12GG{HVw$ zMRt_2Y;-368fX#}UWIyuje=;=LrMQVa3F?dV~l+PPUm+({flrC;ZcvhW{uiCqgL*& z>m7`$y1@He_v56vL5nn+o-Bd zr*jP>m_a9ITWbCFXZ(k3Mc-5_&%z=*1bx_#r26I0$(7RPEq(KjqE_h|+Q+a3dMoTo ztNk6iG8Cj%&&W){Ow0dCF;c&&^|5h(J2437cghArNntHLRGl8GjR9296RLznwQ)<| z=%KnPA4%8SyUeGc4D_uK>Q;35k#(Q@M-!hP$a5hkJBe|j$@R-yiuzf9PX}k@4KX7$ zJ(v;0zpKryWnNKFRG?rivr6-lTq*CUb$!Rb&j-f={{L#YCiWJMk&JLySgHZuP)c--6l*5O6z@#_`+8XQsP;af;xPdrkjCg!<(s3Z!m9 z-3)aSNSpqpPrHE?UM`-R)||Yjnc59AXQwqg zZ8@Huu`O4;1CW@#Pn&!_h@;r&rErkFA?d;u1J&jc?;w7~A+VINCEhFL_dOO>(f%P8XqKi~9e8l;^=|6+xjrlo&fNWht^Z zr5xSwCy*&;w65ULFIR_T`seoBuMf#5hh)Z6Su1s&Th0x}Gx*9D(xzvT$i<*DUU2gZ z_+WC&b@MK?wig8za;0K)E;(t-y=J;$7Q1NXoYG=svpy`DIZ9+ZUM5mH^bN+R*rMIz L6jI2VfXDs;q+jl+ literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_export_print.o b/objs/builtin/ft_export_print.o new file mode 100644 index 0000000000000000000000000000000000000000..0a8083363dc4ab87eaac7f728145f64daabd5fea GIT binary patch literal 2696 zcmb7GO=uid9DiG5yY?fqN~0+%S&EfjMj9>HLl#r*$P-*p=}Hl0+{{jz#Z7iIyQ52C zp*o2;9U?iX;4LUZ@RXBYYKbwJ=q1T5hbW7rvP%_eU1h1&_4j}CWKY9Cm|IhdT zc$t}v+rR#EfU(eB3_nCGTo*S z@v@V-q*2iAskhQoDP4d5TvLfnR2H%zg&grH)x|JlvIQL>b={oM$F1a~={t1iw=Cn8 zWxR@vCs}rgv58<$_&C-emKcR{knP7JqC-i(i98hG@;&Go5dQ21EF#L27THp+z9%;S zgA&}m&YfRQako@o(`w|&J+02Y(Fk|7ZGT^kR7l}0hqzI{hK!itVNm8yX`3lCPxyYY zFAn-TFJ9(GqQ>36Ed+sLG)w_KyXJfwa_w4mrO{|`uT%~~RlroFZ?JJzPrdfd_+!e@ z44u!EA+|@pYuYX;ozgB-K3qQCSPUt%)Q;*FexRh*qBI`=ljqAGm+8r`2%DT&-4pl1l9v|7cJzE~mJ!u<9IYYodNS zxXN;(qVDQO&_Z|3ADy!rX}@Ca_Y3pA$=yW7jqk2$Wt0%ykg{^^XxO|e2T#TL?LAm&k8cXIUSjsdqNz06?#b}hB$j6Q! zKPcctUTnG^CZ8e#2*c~7CCMK0H9h)eDf!8_>(MXK!wdAX4?X$_J>Wpsedy62_2n#d z=_M8_MnaLp2g38PdIWNMzeN9{E7EAl{24pjA9;7*Ge?5g2HD}?h%HJxS;wAs8Q9I= z@#D#Q_O$x|b{GEk?POhh+Fhl1(oWXbV|N4fW2EZOK(uP$DiA|eKa)5sF%87X)H^Uj zZR!n)S0uhIu?Rc@{WK7N14+rhBKc<}|CHp1BtIzmdx1Dg{T)5VLsoqeh})%}1=9H+ zqb8WB^FWAH2MAK>lK`(U^$ZZNe)S|U47?14-Tv1lj!KM51PJ}-z$d S$Hp>XC@tY)Br}<;!TtrlhHY^G literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_join_cmd.o b/objs/builtin/ft_join_cmd.o new file mode 100644 index 0000000000000000000000000000000000000000..eb79fe03c56fda452aa0659c460a1758096af2dc GIT binary patch literal 1120 zcma)5OKTHR6uwhq8`O4Y(S?f8EL^y-f-WS>5qse-42rbird+}_A(1?aWN1(Vg-NC3 zY~1)4r2n9ct$J%i$`>ma<2A)&DyIn^nkCNo6m3=`Wu+#o@5;?e>XGu_`SuiF zO%-e_zO4QxV_7J1J;8Y!NXqmZY!)D)UC5uuax_m7`T;cR*(-pAYBEs1YE7a4mNnu2 z5>8|aw>LiK5m5+_kA=&9rB5Co2&d<>T|UtJdK&kI(>0j><#4w&_{0Z$n!a-#k*@O<3{wJn}+-At?ZR!1SGYGLLyo?$JXsJbofPvjF6U zR|ewAz3r@?4k2hbM4_Mc?!w#6$>NBUq7N*&gC?{ zU3yi4%5biTFRHlq{x#FOhGyKF%YO#TefaMI#WVDSD1OGCEf^nXp3l#!I?BW2U}Kf1 z`drG}PxF^QK;xTQEIy;eMvig2cbde5SrYF`w67@6^0lcU!%%RoD9VO_R&`MTjj(n2UF| zjYC#&sHN8anhv7cx}O&m=S!u}il8n1gwiphHDfa_LQg@nyDDWWL0R}x_V1v+#5R_; z0z^ICfldn7vL2mu{-=FUjlQelo~=H)+33K8A4rV{$vbYk%Z=2?P1SIaQswy^)0fMe ze?#Lzs>apGSlggIdarxj5 zH&O4uSr{Yv@d&9wti4*Z+4k(97BsGd^me`@t`yl`7haejgRr95Nq=;S^cV2 zotv3`g)E-^40LxtpUC_-x_+X%HFe`SzXi)1DE95V2I8&ep8`?tM1lbjYjm{4ZvpX? z&N7hemc+l1qXXdj(s^J7hLN){CMaDk@GAvAU*KFjSx>qXwHx@q+K-}kr2T#vvoCDL Y0pVl&KF(NodUev+C>EOWeB0>t2j;_`R{#J2 literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_unset.o b/objs/builtin/ft_unset.o new file mode 100644 index 0000000000000000000000000000000000000000..9d863c68bdc36807500de790256d27016e34cc35 GIT binary patch literal 1284 zcma)5&ubGw6rR+WMy>816e1`M=%EPfK|Co!ie1=)l~Nk;Qittk@v=AFxVN2W!X!D zR5*9qf!}azD!}U$`@@%Zg99Z$zKsu3muxIvZ z*4XUdH4n7yYp{_XqHkb1%Y7@p{aKdA<$m{LCMx%Td>M^KG9B$Dj3`fx?x*7VZuO=% z|5{F~&6k*(N0;-&CU{E)>sVvFjA0iGU>#cBu)wr8b2P{HJvyG0TVLPZu-kP>JzicV zmb#^JnDvzT@PzzDmCw9bWtmXV=yS7qdK1?XzXIJk#8*NTKVyp*^tUtj&!=}nbxY7< zQZ`ci9IN|^8oV!KABa1>^Z|%p$aoLT0z)9SH9X~)fv7WX0P!Y_t3d2&6oIId+Y{0~ zX)sc`qx|%{SK&{jr9J6Cp2{0jer3wnrhLYQyU7EO+rDon+a literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_update_env.o b/objs/builtin/ft_update_env.o new file mode 100644 index 0000000000000000000000000000000000000000..b2c0a9d9c236d1b8b78bee19c0626ab404b8749d GIT binary patch literal 2848 zcmbVOUuauZ7(bbHi*9Q=*k%V~Ex3omxLOrQQ3@?x;G!$2tkRcymL)fBU7ExscSa#B zl1z5JRQ4dg2+}v7eDOsQmEs2L+k!6!K`gAo4X8vM5<4~izH`3Yq_@e#JoMyuzVG{e zzw@0x_uk&w{`KDjLWCX?_(2~)5AVazC_35+^y?Jp)9MfFz!>GA`8G5Kb<(3IWx*;I z^jO;$qVpFzwm+KX1kzK(un=b`I3UVChfvCRzK~l^FS1k0-Fm(b(p9tf^MHZN-El%M zvyzR)3(`)%xtvZ&dH&o^5QBNHYmJ>{=+U0dKOzKg!7fQDttFYv#a1kx5Uj7odYh~_ zip?TDza11}$sZFwjXsR7jw14?*pE()CMACvbqoS8!o3bezIX|p8tGCeF4YR^1GhQT z`Pr=eGHyDhmg(3{)0y+kN~tL#RhkMzPeiUAqT%Y~Ni5EzDNGk^*KU4EWowTU-2{0P z`^ zr7f)b@xZE0ceYcN;xrk^>(yL8Q7PW8J}%NzBwAMY@dl#>GHVIW@SC(M4OEt+wC?Mfa&d)JICAN zM7>5?<(67Xxzd8@bK0Y*O4TXhm}s}TXoC(PVmMN}?(aEiJ-IitrZYEm;clshoQ>`r zq)_d+d$*<*ZgzH{=lM9e5B`=_TG;#v%2v0p`k0<4+O2MF=Tf?zyw??>`+lmc zU!7(>6#RgfjxWA?c5nhXadpl6l!9rn1iF`<#YaYZ-%nb-X~9FD`<^&H~;5Yi6-<&5v_q^|r@EWacsk<)4S^-#UuI$n&}^Fg2Z8pr?a7w5O~ zAN}I=Vnq8?!=Cw%YQG4*{fY<`heAV#4uo%jbsGMY=-xJ-6f~}1i0Q$hclXU4_CGho z!|Ow=-`6}|M^9b~yotXxkJr3rd9WfR-exBo#96!$fzaU1uyFk+Uf$?h~zD34WAn9g- zr28V`=8PDSfpH^cGh-RDs;%toH zVNjmO_&t#HH-J>f8rvTNX`ZV&;Sy@45XM*;hjfPFe(7Xx-BV80Ns z&jxHE7p;OUtYqb7>n$OZ`2Q-Kh!reprLRbJ7H&)JccPNEu>~xZ`iSvQ1j)j RST4Qe}%6tb{F9{LdK&-$Hv@5E$w1uuK& zyXTzme)pU^cW(C9o!|f7!dTw`!vlQ~J<^YdhK{xyeSrf1(Qa&#fqgUwEwG`c*-MT=Hb)RN&XYyg$yzTd2j{(dflgk<2Q~*Y zC8~5gPUzYBLL%vM&pMU0Qk*|~q!YxzP=#Dj&I0r(Rc$L{Y72TKIX5#r?IiN1oDj~h zsq`93FNQi*>B4gtV;L0^upiG6bnz;pLu@lTHCmMX2J*NExBzzpi1}<1y}MDK)T7fi2Lzhg<(|6O%^>%nL`08q*{uIm><90vr?rL0d-hXkw6JluiYgxk3D2#Yr<10 z-v;?!II3mHDBjqbA8*JR)p9VkrX9b!sOm#4o%;5nu2v|67>mx+7Oqr88i5AHdWh9R zOsz7}GW^3a1Y1U>M6-1iI?6GhB@BEu$=F+R+DGkb^BsHo9>^M!H9Ff6FEq45B z^nRxD9~JrgUdx|aH995w@j7PJQBMO~QO9d}9Op&~h*()|N~PSwu01VNRQxjd2VxuZ zJE9;}z19Yb)pEV+tp>S{Qm%855Aq#HzStqJiGx5()3KFjVtzXfugBZOUiplSYPn~H zX0Y6{C~hFWY;2;>!?@gFhJQVXHlWwQ#`oyGDD>iuYeJTG1$&Ggk^=q}Ik{S<2u|fh z-58iyHqKlY`u@{KOh{eT*fRHvpkvaicEDmA>3 zhl)dNI#J9V)QYo~n<#0fe!H%1JC$V@>D$=^4UfCIC?*#5ZyoDg)MPLm0Hjs1{6dnSi>5l?w zy}dwuf%>qr2bH~sy~S|XFF@k`0HpPADgPJ1ZLr@2ZUvqM;uPsQ8Q1p%?}oh_h>KbO z5sM;4{aYaMt^gxIxF=`Se%Q$YN*=!bxm&tnSbfRNsNLgBbVO(8(U zKL$oY49*w53$lYoL$ZVOOY4)}P=rxs2j}-J?5^pI>gl%WoOavKgzR@hHr`ba|5C`N zy1Vs`h3q{cI~B5PA^VMxeL7@+5V9E;w+=7he>xXNDT`+^VX)l*`vsMrwUNFv?7z$F_c4inanl3LS+zjK1>7p8mG}4lG q(q#OUlXU?yA(5#&TYw|&n0Tgap3J8h&nI#@I~mYa3OwyuN%jwp=VMd= literal 0 HcmV?d00001 diff --git a/objs/execute/execve.o b/objs/execute/execve.o new file mode 100644 index 0000000000000000000000000000000000000000..f8605ff1467b328a9267139d48725106f6621bb5 GIT binary patch literal 2400 zcmb7GO>7%Q6rL?^>e4oAej)`_DF$(fgtjtBMJW*EKwV7*mPl0#F4bhSUdO9!>}YLM zQ^``Kbr8$Ss7P?)j^M(bBGE!BLQgH+sDxAwNRDtNAF3++hVSjpI`$e4JZ0va_cL$4 znfEry&EN0-eTXsT0fq@9fss6bDUAVn4C7sL{D;iZ2FNV!fkZlTG8)p&gs7X%Iz@yc z#QEHt=Ob+&vqS_!`DpLb1Y?hrA;C5XA`!x<)g7y{A`S6;QJ#a+Uyc@1mvp0a;Ad3V z)^(#U8kLJyr6|N}rw2|fxa74YjqAuqrVK7AT_Y)lFw3Ik=xb)UA&GIk>xux=F>|d5I0-!$FVYuww;^@lRgaxd4Fmq0}Bj-TsuKacyJ&G?Jc?l;P*TWaTt zfC@cVqw5#?e*Ru?JH)!z6ff7``F3w_4_WR6TfGH5WAv`>_4I|U(g}5@O{X$-W`qy- z8hx+O^YUFk*Q2-R{#%(B&P=PFSA!#o4C6+=$E_Q|+bZAjg9&nZ+W`f4m#H24s^~=C zIVsQ`SJKeGpf(9Yf~S$y$RpojZWNI3hcMswo&wV2X7|*dy7@eExUDW8`XQ`PSZcm7 z>ClZojMI1LQ1%vO^G{-CSE-dHyU;*=O_hi!2esH4UmD`T&E9>^vIep?1%rPTACc%>rB4t8Hqkcy1mPb6KyI;T#BE zA412CNYG}mxS@5-zacHxLLBoGPZH(QIi@sIO6usL`46T3p469sN%$9m_?cS3gjd#Hl=^+#4TaNsK#KbbNO3oSDs&6@Fz^fzqWz2s zer*eQ1o#mU6g4UiWC``wxI>KyPbtW$AR$Uln%Px}JFl#ll#-yRFSBkdjkZKyMV!2^kb*sWe z&04AGHWQ_)v&ux-bj)Ja5G7k*VaRG4jk<|F)kdW*)~$7{ZL6{>mxf)fnQ|TSSk{r- kG4&#%5L>JYW34zyG^*6_?}u%Mwi0;jwp}$sA`uVv4_4yNW&i*H literal 0 HcmV?d00001 diff --git a/objs/execute/execve_utils.o b/objs/execute/execve_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..1c442a71b7681ec5829cf9d6613b9bb2eef7690e GIT binary patch literal 1776 zcmb7ETWb?R6rQxPjhA*KR8Ud64_+TqqEM)yklF^eVnIvAyp(CW*))r35;lo$g+O5& zH3XsH9}s==C+LG9E!a2x0Y2nKXeB}(M2ghL@9fUhByAB7oH_HI%Qt7vZ1U;X_nltG zeBBHS)DI1GVNs!wQ_yD=I6%Tw2)RTx5Q)LbNQsYx^MYX)yuF8~qp|6~Sne(h9^#|g z*dfOHDd=ZQWTbGe=L?pZnHLVu+xaBVfQa9fjR-7`k#y)!&o1QRdVv=+kIYPh^V{RQ zL2M$TU{*L&;G?Urqdzf%HcHNo6i-_51;Z=o?C+(>UJ-ojf=@tpl(CfDlf4Q(33Z=B zIl_9NBt%308u~a4o9kh02^RJ24zyLMPg11(x7^bzUp1$$YL!w$t45&_6&ipBwMw+6 zIi(s?mTBAw*SxSD*r0M+nTec&a5Vfl)+{4FlCU5`vkB2#ErJlGBgsd+CjG^XRE1{ zPa_k=TiWyCi|FeejrT1zD7tPh(W;Z6moTpuTnlQJ&qlaEH^wKy==Iu`JE5G ziss*hlevpGA{!5mXUjC3P2mW-ju~>eZQqP1)TEg<)P#}OEi+fhTErn`)!Wd7+T^o9 zuROaaz9c+v4v5R&x$p55^VvaP@K|qP1vTf8e+C-)jSeB=e8xumgHO7~`s8nc^2VVX zB2V%eLUW?WAh`U7qm3DYw4g2Z#hv{^7Sj2pJ0^IeoOkeJnZG98~sYC4-YkYZU`i_gVf fns_2@X5a)__Mu_%d?C@n$&IaXcygQS7%==nYG;fV$y{w@gQVva-kkYHkrEqb@%k|&=+4_C8%%;As zrzM>v$}P2Z4eMDzT{BP67{I|F<^4_cF$V5}r@^>S_kd#XS%!Ll(KtfBAd;^l{%$AH zKqRfMNFAVJ0}};gI&nI2G$3 zIL|jz2f9*Ljka_2P9jDye30GG34!{4(zbnX+*949J01CN5MV2r$U z6O7rGY%o5n$}(SsHVfTe(K>$*_g1h~UeuF^e12!qC+US@Bb2M5A2cD_KGs%H_k(4U VZoTo?1JyitSuXi?&Uq`#=@+x7s51Zn literal 0 HcmV?d00001 diff --git a/objs/execute/parent.o b/objs/execute/parent.o new file mode 100644 index 0000000000000000000000000000000000000000..484742223947e21d228976bc7266cf2e09f86612 GIT binary patch literal 1168 zcmb7D&ubG=5PqAsX{yy-#YzONIatUg5cN_OA*C*?ppeEEdXZ;HHqAnsgzSa}AvCa! zG%NuR9{g)+{Q(~R@fYYpFsP724#7j?H@k1+Cg8!3%$u1v-+VihY(D({bu!PGG{bPf zW?_*Kju;HM1Usa{Kk!o2;?x89IW!p==@B@$^oHfdUcRYrZ~o2wC?3$G-eU|#IuL4+ z^TBz}v}#6qM_h0|spsn~h@;IVKPG?0EVPN|~~H0R+^bM7adji~)b zy7f`+zCc0iHv29^l;fJSpgCJ$W|CSi6V;5*i$s$?-I3(>c~`3cdKg(5(Jdr9Ypagh zx4-P$!+rVSrblp7CLdgLNh;J*NxL!2#tIIR8HI=pYgq{VRF{LFIc=Tp$Lk%GoWsd7B-i&q&L0cnHA=q`BOQrm2HI2&gWD zTYckevBVWp6P!<6=L1!F?bJQg=Q`DhLldzp13=^m(%U4ZDmJChG^HyfZIAURr0ec3 zZC2<@z#6j%-CaZyA77g~VPlCUQZ}AOeb?PB($-}TioM9a&p=c@l{7U>#m%}Hefj&+ z56$Cmz7JI$W~JdHO!Z1{cuNKY8^}vp*LFJ`*x(z*-SpYI{pS@Vv>(2L(A^4FBPDmM z^3mSjp5zN@mcBJ%n{N{Judll`juRJE>@}x{!vLqzUxU5c1@)RK1hsJG5=~7j2u&(A z&hRbB8g^C`c5R?@P{G9=dF><}+J07e8bvx+lclbo8a+J}y0t;%HB@qIm5(X0;8t>c zjr)hbC9yeaIYWkaa5-4=H^*wA?KHYy02>m5-0)H4IgQM~k3|eW!0P5N{y2I!L!}rP4 zyz|Qg2{RCRiVgG52^k2vo z#PJI;*c1Qo&>P3_tZE{?A&ls*(c?T0)SHD~mi0KF1NAm`2c{_SCOBRc=Vx%*pEcY`fRmgy(J{_%s0rzP4USjG zSpi24oEO2#Zvvd`k1&ofzK2Gc}uF`H^k>sCy^ zjjedO1BV@$`mI&}WCuRefm0n=C_k5*f_M=1alXE09{R6aXPs|nBZ^Le2z_yv`n zC`>Cqb17>S3c1OJ#xmp0HP-LU&t!zkvju#d&ud$uylLON$m_g6k@Kb*OyzuEdnH@t I%}t7b0d1%PcK`qY literal 0 HcmV?d00001 diff --git a/objs/execute/pipe.o b/objs/execute/pipe.o new file mode 100644 index 0000000000000000000000000000000000000000..db42057667a26414acb8eb92bb534f06be99cd7c GIT binary patch literal 1984 zcmbVNOKVe65I(7~4O&eU3lW3{ks6Rnts9|;scrBm2DG%$O*z)vvtY*9)}XHwDl0z2C4*>w(ce94}$&F$Ld(4UrAOwMWwV&SY>J~oMC>`?Fw_e*uflyq zbVEsKQS#Ga(|IQ`+yNrrL_l3=NmBbx>VbclOv%C*seknq@)cRgmSth8Xapt2nb%%weP1k2J8MyR5f98!BHqwjkWkd9p==Pc4ndZp%Gxj?>uqOMZwgZYeQRw^x3qJD+JRaFj*aFKo}C8aTiCv;M3S=89GZuGmcNbSca^=Gz)wh@}}%R(2Y`K5jZ=VI>Q@m2asT10)@GqZJnHXVV7kBb@-1Dew z>=-_4rVwu&y8FxGaUXx=#lXw$TRiUP08iorgxZ5+K(yZ155%W$a192ggAvA2#y-ZU z=-Eke#t|U#os1u`HpQO<$)94p!Ttac)NUUmz_c#|-3Zv{OlLy2eXf4C0jBg}M7S=u z+U#p>HgTKzLM2m)1^h3la4MBZscLgE8h^l3Gs^S%jM8Rf Nv4kenTsAo@egh_!nG*m2 literal 0 HcmV?d00001 diff --git a/objs/init/init.o b/objs/init/init.o new file mode 100644 index 0000000000000000000000000000000000000000..37cd140708df3a135f9d0e3d585be7c18851b0c3 GIT binary patch literal 1796 zcmb7FO=uHA6rS|QrdmzF3K50o;Gq;EDoBe|NVS0hTPRwk7n!7+O&gjfAx&&36arhd zAqavVJb3e>7X?o}S)_$}Q%`!#MNmwk$0FGHz1=tYYkKg(+xP#?w=>zv=Rdm#JwmuT z1s>2YsJjCXKNNBnx=w{7#7BdWL7IW+7?^^T@JN)(n)$5bJMnaAX1X40?;Ed0cr+XA z7UDD&yF`JE7Nv}(Y$l$Zq;+4hKeOb)yZ4!|W5|5vRB}2c{S*OKY`UUva2m#XV_YsxPI zFX@KMRsFu$^4{W@*Cy1Q>&Hvr0A?dg^BAkkJ;$ZfZIUoY?;U%n?&r*nBkF0c^Y?ma zzMt`3E4PI!?{#_mdfZRZbpiSF(86E(IaI66Pl&No-bWobPwL+?^^HR}xQ}_Z?W6Bw z>cGKczHR%Sqc6{W`krZBcMBZ5gb2K2`x>?v@hez-n`a)w;?oSwaQ+VGhdJK~i+2d@ zVlA4ZQ=+*|SU2LgoPWdlXRx?e0~4^2z$hLxHw;U2=U{2QFf2g_+4|YS*m;UQXb8iS z3_&T@=X8x@s*zlUQeB_(EyM_G5{B0p)7{e;liwHzTVlE|8tX#EvMRBZO`6L>r8B8H zT&2p)WKtPr=HpqR%;W8dJ+ULUWA6GkfW5^_|4{RlWy_gz`U7n-n{S4oA-9V?(ZFT z6Dg+%1GEzw?ZBWxA(x@cJn;`nb1r09+5m%-SecJS2+uBfO}~jJjHeSV9C+{KUd+d9 z*D%C*vXd6r1R_Kt@8ukKN(O{D&KK~UmGj^DfNdhnJ&J&Db|z~jJTd1!cif~955|rr z;cUpd;xf1cKBkOCh$PoBN+ImDNad^;EsU3-ei`a% z>VmTHrX1H$M?VL;&@&jUr-zIoye3f2@8#fs%44(q%PiG2vs|p3tD|qhx5E@>WxQ^d z6|-X0&C&>|OIJ9!I=X~}n;U-0XWqMP)MP#qDas0G7DO3k4Timbg3(hyal~NPd6Nn{A`U5uYzHUQ<5}L`(Zx{DTr-p4(LyFP@m|iL0--cyh(qT}MA~ zk5uKGtQfV@hJwCT-!~eK*Y!oN-(ypSClZA&u;U<29cOl8Dan z5#%%SJvnI2IIT9ZM6HYg=_)TCky3~$vEJ_J8nT8EzY6{N2Sq|8KheGZ*vpRleRz(( zaNZd7`(ZOr?sFoqfgG&S_h5Tqf574<^)1*=*pIMik-iSw2m1;ZtB*Bj^&rl_8M?MoS;7!fK}i?*lmNvuc{rd zgs=$VyCKZ=wy%E@!bS)eLUtt=|X6%BUL&VDE*`_>^$$N>6Z2@>W+ZNK#;^*z9 PNaSoQnQ>ejshFj|@QD?g literal 0 HcmV?d00001 diff --git a/objs/lexer/expand.o b/objs/lexer/expand.o new file mode 100644 index 0000000000000000000000000000000000000000..11c42ae8aceda918683a40be3dce811ea8704ff6 GIT binary patch literal 2228 zcmb7FO>7%Q6rL?1b)e1qkfMM$m9C||>kb2;RIB_T?iQ1f?oN5q9S6NF%a(kg_OT+g(GjY60gn06sZ{F{` zH#467_5NRv4l-su#xQ_~z^MZmGGNft;AJxGM-%`$MlnQ6MovboL?%Sdt=Gswk`QNe z@1E6CA4jMV5apxTW5bL+MT#MIfk2ZGPPOJ2y?Lcb=F@o)-lG$btBC?#uGS)7d7)xE zH4%6p7QI;^-a4&qglSdRIi-9B`AF5m0?IUyQV6#o=6rj>l>y26Dk^A2<-4TvDUm(N zSV7MTUj~nZdq-hD!G^&^v?%Gjs3T2?Oq52xZV-{w&+j#AB^jWER{SfX5)M-x1niep-#d5@V(Ut_Yb@zdSLDBtb}&-{n| z5ydk$To-h9lR5%bDxDV5GJmqw)>9kT0L+HAP> z+V7zK6IXe2ePVjeJbHmFYQHku`*m@075m>yhALv-Y{Xdd5GA=dd0Cq}6pO5?hVEbu z?0aK*YSUbLZV#uiRP(;bnqOVZE(e>R=Qb~+VB9Iz$@iQa@nBYNZ1C{fk8~yWscB5t zM2D)*xMOc^ZBf(cH8Z_7cicR>hzyLasD88C{o;PeoetuGRa)r0#mvQT5p_M+reGw* zsbt5wlW&_>sF6u?kv2QZwVPLsFxT$5QOKvhe6 ziFQ!^Eu}_|6H?D^Nl{6Cj|}}GLA@pRh#!+?W_)yp8TGW0K6Eg(f-EmU|17xj5IX`= z>ofNHX!^4Qrw;4)j{Hu8>;FhURmYxwCHQ3@Nk3K3F260*ixPvp+{;|clAgnT3+Q|!)oCMte;9^WP5`hM9LZoODz zVy-6eHT4`DbEn`s=S8_zaD8o<4Jumye&AMX#j>YOC09<1RlDQ`3)-z(ah;-F(&9|X z_RcfmdLM|YYx_=tiFvmsJo-H1E9qkN-Ac)JFp=xK-Yop<6`N41P>?%Yb{P8?-eAlk literal 0 HcmV?d00001 diff --git a/objs/lexer/expand_check.o b/objs/lexer/expand_check.o new file mode 100644 index 0000000000000000000000000000000000000000..1db58f08ebe222d810a1f42c911e4b6a58f5d158 GIT binary patch literal 2984 zcmb7GZ)jUp6u+5W``Wd>bZjtPN25mcOQf4lq$o>WgBP(NbH&M!*Yx#u3Cof!e^@9+ ziZ78qAB73~#o6F+4E3FtmMm1Ta9)U@VZL4Xt$x#mi&^QZjrp8sv}2FmhHQ zC+0#v8##COiL7R$`^Aj>k?p3&*bB7O#pa1AG7K}D%fyoxW#B6BtJ@yi(|WtQ&)fHl_6uhy%0$!zIDk`y|&9ZAk-L{coD& z&hOm*V}v`!P448Y+?lL!H?qmyf>tGO+=;AnySUEu5~U2?I(Nf3IRYLQ{ zlQmTK2g*cPx)X3Wrop7j?SjViazEi0-?|B$ghVQ?X4iaS{_7#1&L@Vs7j5oYDUW7JL;b!l+zTBma*;}Xd@^`SHWZc3VPjaDXC|oy>M39VA z{FOVa$bC(Q1li56IV=B>#16`;lE86!+q;AIijSMO^yN3j>DgPz8l|H!s;gl?<$x(A z{S%VrZgJi7(Kh>VefIh=YgI32;;vo1i;X^&`O0W;82a)d&E5{^rK4?By?U7ol{l5f zlR@OwNfCF@qW>N{DyQnz&|ip`s^Ue7ZZi++%l&@)!Aqh))KMHjJ3NMYl@-Z6ua`eT z#K_pEmtJg4tHt^I^zv9^f~OI9CkY-?3D#gwJ?Zr)z3W)5PWPc34gMTAQA!BB_c|ApYZ@V#i8eapR%|Aw2e zFu9?Z!+;;ZfxC+O_i|U(|FuDTC%6#V&`Sa6+c=@ibZrG*zKCorp|14Kt9>N!B5KuD zUb}GL8h3u_qyn$PhnE62R#&rjVt02}6}{C>BC16z>bZS1(t- zZKI!}4+7|n!0oZWAwM#6ZS;qPIrGh(VZMUj=kM>)t^ymx`Vhv}1EdR*@iR8|wEy#c zrw8P3fQK6gZhl+fWF9SX3E%-Dch(4&Ny@)+{1%=cyK@t(=8~fR*Rg?T>lT5bt_U|^y&o#;Pk5rFm#%#_=WOIpVHph%~CUpV- zY=)J|q%ww8h+_?U{Ani5DCTC&GA|mbT+GTS;d0)}=HjWO0wyd>1umPm%y=}R#OXvd ic@eOTWvL}AIisd2g+<#b$mQ(&>FlhOZ%nm~5PmgzmCR%dcvQ2i$j_L1AfRO;r$U6)zwxlu}$#}dWdSGA-vTF9sELaz?GDQZYupdDQZDCwTeI0jATu{K^2+bG-c2 z0MiLxd0d&0n2*H#nTFog4+8?mc;!`?PTo?*=ng?_OMGz6Qh~I`+uzgqR}*(M;@kkl z=-}+aywa|_SqkN-YrG>0uRm{0vL-!*cVqnA^*Mfgim@T}uY0FLyuvBKPtsVQHz#yQcr8@nMZGMXPMN$> zho4of*8<>ZCoLq|-g!SHwE;ThY8$O@Nz*2u4YQ+HO2h1EnDfKzCwMtN%s$4;(P4J% zw%w2ePFB4)F4#*c;IwH&OH`X4GV^RjTkf+*%-dewY4cj{0WdG~tpV{zjdN(_Efy+9 zLXkrUtqu5&Vg6~1ja_&fZ~AYIXYzfZ z-xc^B`$zkkyzled9AOO26#EMMLlee60>@Nr5j+e&50272_Byx)eH#k-|AoCljMc&M zi_u z!Xc>Rw9$j}J7e_V<2wPJ!#|*pA#|zgqui~3(q~`m)1U3r=@r`@Pja_T`|j3H_UTL( za`SFh+OxAVlU^z?xtPyg#QzNG=JUC{bc<=s%@rj69c3LGvhq)_xOpZsZjo3vmtU|m u(n;A+E@bTNypf%h>-5SQd#RvZf`y&DYZqKBk$3Ub5pH&tVdX^|9P}Sb6Jam_ literal 0 HcmV?d00001 diff --git a/objs/lexer/lexer_utils.o b/objs/lexer/lexer_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..d153d6cefbeb72dc9143be3adb4094b159a5f10d GIT binary patch literal 1228 zcma)6O-vI}5S~RWtpcwHjQ?>D9z4j!69*4V?8Y^b#283=A!AnFhNCxchEt=#h$p>z^kUM6n)KKJq0V&YK^tsz(s^&bnQ!KO`*zds`@fF{0JJlJ z3wl5LHU&C5+GX@H!ac0i7Z-joM`4@^0hf62Z_h0I@NMVAnh(r8RnG7~=|&c{sf@D{ce?faY1@S|jx8 zR%A9Td!jBXBT0W>H$G^_rne`8i%9FPr3~@r3l(3Pd+#){aTXc1VO%1!?tj!mvtE1O zYPGtXKm->~O*$^;0QPiV}hs12H?}grbYe;IL}#yoZL(L zqVdMX7VYmoIw5!Dk8ESzjP((#ixmm^zD#MteG>7d z=dUcJ(m9^bT%FBKa{g*O5MuMGavTnLY-PP>xBaVjcuIYl6epIjaMD6>-dZ`y@fWKq9>`p97 z2bwO71!q*)MpuWyt&_+xwx3xu-9*dFSfAY-E*mv{`3Yf42PAMnw_ZK1*?TOee{wrk z&etkN?Pf$TQDTkfgl6cFWZg|{iv#RkU+J85=ZD@{-rwJsks&SQAkmcIO$JOiQxMB#Y1D#lh2FO|qO zw(YeD@^5@80ztuAMtaGRo>1(9W?swJzM%<_AyPS<395bFv(wr8!rmPW1{HCI1{I@#vbr>=o*P{qMC_uZjh?wc0Ob=QVRhfuE5>?|#yHe5BDh&k3q!hjc~mXwtp;P-x_I=)62~__kXNo% zh#JG)t9fBMyV<8DU9S1@)Fp$I{V)-zX)zfdTQ?r3QE_-AI{IP|9?&U z8AKGm#lf^+PA$$r)&_q_imKiYiu0@F9*}#AQ$0eyqP}WPsdvDBMSV=}9btc3MH6}d zbrvZ^Bhj8y+I4uLmOP1d^FBrapyFq2qBr{Cu?vr=&!fdirK{7jaU!g|C{{oo!9|IGg;vm1@0fRO27I^_K;z25x6pkr8 zpfHe-zXIF~MIs2!V-f8s`b9VR=rq6ZIj4x#8 zr}00DTiNVNVbPD_T^7A>1=X0}ji;OSw^o*5$7td6d@yRx7ivG4` c@Gn!EKpB4z=PaL^oX=lwQC49gm6>GhZ?j>rlK=n! literal 0 HcmV?d00001 diff --git a/objs/lexer/tokenizer.o b/objs/lexer/tokenizer.o new file mode 100644 index 0000000000000000000000000000000000000000..6469f12bd3cec5d3254a929f558b59479433f390 GIT binary patch literal 2212 zcmb7F&ube;6n;t-XOpH~wWN^H6pK=5LfBw(i4RGTsSN{-Nok_ui~!^8zcIZ14*i}iA74c68MGE6%!c7i*Ybq$p~!DZM4R=;xL_Jz$vM6NC4M!Rr`2QjX7o2gZMi65zTZ(L?W7P33vary^*x0!tPDG&J9DdgJe@p)c#vX2FmS?Lst0mOS}GsN&!`& zO^7IqakH%!4{YBaG45--&L>lknG_KSMOicELN5_h({r7%Z+$)@bqxzUCZLi+AmeUH=xt29nVy z;iH6b|B1=h4f#$pljIJfv=v$5!$iYsbGPAh3g?L0{|kl14nXOp>Z^QX=9m zRJT+vT-yfxiGJxUHa(%H4tWxT^=n+9`07q9p0vkrAx>nE>wbjWslT{g8+>D8R$Z{_ z_K`03QaF#zOp5C2;i}cgu=^#PdYqcyT*y_H5beovb&>UT z?gjBOq2u&a2aPvSVZJi=N8}%vd~HOYk2y=?#`lz1O(jwX_gU+hjaS3FlA(D|;d{BC$Z=q? z#LsM43;qG)KSz-BZCK9#iw6#%^Sg=vX5t|%mg@wtSd%kn@)u41EG%x9Gp={uc>yvA zId@_4#dUnxBK8ylMKpNy^_r3^Rif|1SD7d@)i8br04r(UwW$r z#B`1Cc;5~~m=wF_b zBvKuE95`K-HmxB) zAx`PA@?t|&;zp&hvQ&GISr?E$2e+WbX6}txKiPP_aN|T(_q_vRy8RZ2du_i2V$1C( zKy10~0I{$3eP9i^0mRvyUdz$G2!xh>9*7^a0jyW$dL4nWD+mfSi;Mhrsa`MfOC`=v ztk_Q_ezwGKmAD|~Kc%ooP7pZH1+`U3p5Ko`LH(fD#sw!81igS%>>=m*Ja!$=7vy%7 fyG=XF*%mbL+E9v>8-*&LML4-Egccr(!aMl`$b*|@ literal 0 HcmV?d00001 diff --git a/objs/parser/parser.o b/objs/parser/parser.o new file mode 100644 index 0000000000000000000000000000000000000000..09b55135c73b78758a7e6d8dabba74536bae5f55 GIT binary patch literal 1660 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 Z6!Hcbl*mJif;s3DkT5_ literal 0 HcmV?d00001 diff --git a/objs/redirect/heredoc_parser.o b/objs/redirect/heredoc_parser.o new file mode 100644 index 0000000000000000000000000000000000000000..454e9c2c43d6883d969e6157d918383daa95adcb GIT binary patch literal 3028 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 literal 0 HcmV?d00001 diff --git a/objs/utils/env.o b/objs/utils/env.o new file mode 100644 index 0000000000000000000000000000000000000000..662f338b49d334d4f1f7adf5493cf5ea2d3e9cb1 GIT binary patch literal 2148 zcma)7O=w(I6u#5OWLjI_fUU$L8l?4S@oXy87EEA*eQ-qwq$Jpd;dXd=aRQT>Fh4a7 zOo_g<He}2zV8^PKswhnj8S{kPpD{h{*`Gnh8}huA6+146jvN@=0+r542FnK*El@a_wGp@~knFGRfJ;!@VF zh-%@hg~FT=pI+%Ju}D&b0ITxL*f`>msD%wEPr$yALU=hbU&=0eN*T{@UB~-Lso6ap zPqXYrly25U-v^EYmF-UY#wGH{W!^kOecES>-D(*Yif2= z$4et#hX>VmF!O|mwYG8zoQ7X}lCW;m>4UhzH!iLs%t8>B4|I)kPc9vzznQ8*3zCx*ubvAMiojs_lIxw@_LO zDW8YKh2M;cX^7FDfOgB-rKr&-^r02Dg#I#|Pa7^wC*^R0sZ{jxeqoD;$9OOWeXS+K zBOdiWbas*V*zD$Ao$t8JR}OwTr3Zjc*BbYeFppPD;(KP70C9k8A5jA&i zL}?D_uWQMV%ISbUMHd?Iw;~7hr<9x}R<5$daw?HJF_OFstFw^52E4XQ4ej+z9&GBR z)SV+Aoiy(t*P;C`9%xO{YM~{*0zu*aL5x{R1f8FFORq3uu203cu4iP#ih?A}B6^{hpRz z2SteCw5DU4f=D_2TPzqDpg6>vIdRRKev&Ea&78ggKj6;RV>}(;LH!po{;e2KM{Lmk zOpLz}8|Ho9(aXs!My~#r`_)6_jJy%a+_6 p6EeWOG|iVQ<%Jbb=}X>X@dnn24EdawFBXU^c}nJH^ZBC7*#D06zT5x+ literal 0 HcmV?d00001 diff --git a/objs/utils/list.o b/objs/utils/list.o new file mode 100644 index 0000000000000000000000000000000000000000..a67392cbcb7a4f19a4f38df9119f9d735aa6546d GIT binary patch literal 1344 zcmah|&ubGw6rQay4cfXZdZ;2a2SG0t5fAZ}Vi#60AX>po8Q1)v!88qKYeOLrNEMd7 z*<$eZ`RdGCGm%_RBs>*v9=5Y`ES z1)hTMQj&$kF2HkyC)m!EE_~r0gTX1tiI+^upxg>{uJN+_X!##DS(SN+kF<2Ks3TIM zV|pk`SzKRh_{BhO)Hkd3l9YFslJy4jba>N)5Yo~EA3kKPTmvb~tFrRUUn?8@zrG>! z?dr1l$b1aNX(3ikPVokO4z9-RQz8u~qeE%`4Md!z4J>&C%!_;Qq>)Z?J~~-CHh<`a z-@Wb+=N%2dy^5tzGhXNpy>5Fb>=&~H_uZJb2N?npYM~n=#$NY>v$9vYX3uX^UG$hQ z>xJ#u3pa=)7WOvDW(OQn!fifUXb^zJd;wl|AZC7(D>&&{t-@+vgMNpY^_YFrj{(8E;LfpXYgN>%OpB zj^)fuXL^{qjQvaS;cp0ru|6Rd&p0oqZqKH9j{271a|gPQbspJQLtlgYSnrX2uh6%{ zeXRRX-)r3h@Usy6kcQ literal 0 HcmV?d00001 diff --git a/objs/utils/list_clear.o b/objs/utils/list_clear.o new file mode 100644 index 0000000000000000000000000000000000000000..edd371a8801c50b74af9179874ab23aa195c9a18 GIT binary patch literal 1028 zcmah{K}#D^5T3*|hFY_);30xwD7|_q9(qi%fra)^N`!)hM~Ewy#wh8QEJ8rowh)$r zKf$BN9(zx~qXjP>y%Z8q$VCVqOuyMTFG(9p2j+eA&3td(?0b8DcXK~al$awd@D%(9 z2YEPb8UCF4KkP(mmx7j~C$V#1Hm!Xx@J(!Zsrarm;WoOJfcx<*0UA8uT#AkutZ7}{ z-#e&Oef_E4d|%(z`t?g&V;l-82>wi(Sx(RoA)A09T6?>Cr%~DSEdO&pdk4FwObUJM zw{dEL$d+QoGpspyd@asHO2gUsP|kms{a3)J;Mh-Z;M2xhcDdT=(tqPkxBbfvua(NkPp6_F(*rkKSkpe6@G!_hzc?-jxk=6H z!mcWJoK=!}@_)~>G2TsXyEwq81N3}ivI93NWRUK;QEOm(_gL4z7>!2pcbq|r`ND3# z+=)Z8d^0d}b;qKSXP&7qNj-7+mJ)$Vs7LdeW2pFzR^X@iI2b1ViC$#Y*W|`xTK2Jy ze?(|x~TN}SK_uQSC{5*KbopZl) zzkBYv=bW9%cmMoxw^fM99)Sl&Ge)!t4;=$?4C4YV>>^QYCh4F(5QWK1gZz=0rejqc zIhS}ib#~atYW5~?Ab&JHevc4O(PFchC#A$Rb7iMgD2}tiG{gRspXWLD%PnfB)EsWZ z2!GR4b~fjjuNG$t#Zl8dJPB_0F0=*8NNoiH8Ey);PM8kBWGwZZ!6_e$H9AACRdk`9e_T=BUcK7c zq%E|mbr=lSj$-G4zq58Huw3ojvm^hZ0RL);->faHkYTB3zt1t;Ox4z(hX1)Vr1FTJPP>O$PC`Cka%)j*qO4J*u^xC!)~W1lL#h>Pz)>d!xo; zY6C|d_Wh#r8>r+hS;-BM;$Gc3lL2OJImGd+aR(jS=#30qq~oD#{OPZ&YRGef)%YPm z;%X?8UyUmP5?4c!{A#=xAWSjT9ddw%X9xYeI(X1?u%;aJg&g1)@Q92++ttBMWPLI9n{ohp@J0mHja)m9h<^k> zTn$t`vr#)FyF?#Z)!OE1Tev^w>hi~p2DzGAr*+S5F0*b_yRV@`I)Wzm#5EjM_K$K? z>(wtK$W-l{O|KhqPOuvX_`Ic_Q`qDkHL@CuB}3wrEK9db)^usqDuq^(G0~qHNa*-L zbm{HonCKgNHh_jw1L>hu|8PPV&a7>9>D@7&oK%x;-vnE1Fg=(`=vJjrcHnT-a}V>@ zfTky`qCN@I)@U4B>C)|jZ3&*2tkFWr$~k@zDh3r)w=$emduDJ|@cCNGnwugcyUmuy z0rYc|+2Vu@mF_=jWhct|RH0ZX=dH;}s+W?VkYI>>DkC&C63H>N8f4qL`mkrc zUb-X)rP{Xtu(XTF>q8<^iAUo5Tca1jdKmTxFfRU$&VX=yLi8Poztz-#ulkG=4{aih z+mgp|?#QDH_x>w+9Pf_2W$-RAkK^9Pdjt1E49OX2q~=H(8Xv;sDaQ9f<1hIOUYcb8 z8Jc)2j6Y($%y@~h&3KIQi;Pb*evENDAcSvf5P}(#_uq;85bB2 zGEOs2Fm7ku#P~L9gz1sX&~)Ahj4v^!8q)e1#?LWMFm7ku%9uKb__vUI@^=H8@K=mK zXZ$|nON@(*#~GhsoMikmG+ejzvesEcdGSB@Gi_!|rR=Ok-qf`5U#ufcdY!4cX95{-4PlmN%Z@cA%v|2eO_=mk7Lqqc GvHS=A_CXl{ literal 0 HcmV?d00001 diff --git a/objs/utils/tree.o b/objs/utils/tree.o new file mode 100644 index 0000000000000000000000000000000000000000..2d8f9dd2127a596f75e0b7d9d27c9c74c0720776 GIT binary patch literal 1560 zcmbtU&ubGw6n?2S4YhSw@DN4l9z1w35(LGQB-n*HSSZp!FJ%myjVYu*2pfz-AebsF zdnw|^@q4?oX-aKTeDLObzvj(1ZzuWs^T*)?QQ{n7 zfsRAB*f5}wE6{uFpCa?T5wfdlVjn$;Ri#Nv$8I=W8Htn&=Hf!^9btMbvbi5~xp6*1 zIIW{9LO*M5WxZ%QvcCFsd9@_v!`ab%+$Y`?fCzIDaX%t;QnX7-yCTcA;))&n$N9Zg z)mu@T)m(%Qa%sz*Ecd&TozVPO{ZaxhNgjeVa zcakHblTUG#vh|_u&h>?7_C@=%v9zPjv^b&8&+_@gt^00a4+jRMZSYND`Z#+EX2(3> z`X0Z99$RP?h;}1|(o3=H4>^uOZA-w%Ur_AxEI6zbi@5)NC9MA>{irht#& zcB08(O8$pvT)zLFjqvmE{aKzx5I)byjMkQNUPpK$Z>Y#=`E8Y7JZ1l7)j#q45hWUW zLZ6yQZDP-L#IHfcFHnUjenk0;`m3=A)BIau;ksGqJ5{H6{IRZzy7Xbx@2t8vsM}O^ ziuZ|r{FcUvGB1Gm-DkdG593uJK1}8@5UFHNp`j2E#`!60C}?p20yFdtHXsI+^V`b5 zseC{v_pz!}=<^IleUeViwq>zYlC|Y06=%e++U3}_s&=uaQdZ3_I<`clO!()sZLE&8 Kiq-0xMf4lA2tF79 literal 0 HcmV?d00001 diff --git a/objs/utils/utils.o b/objs/utils/utils.o new file mode 100644 index 0000000000000000000000000000000000000000..0afa552c123bfc274fe7c0c6ba2272c0358bec3a GIT binary patch literal 1756 zcmb7F%}W$v7=PE+T>EgBNHD0}Aj8Xs6@ie^iY`sjLWn{KpCD;tjO_~VHu;|IQLt?*vNN4-7m zLPRJT6bl5dNSU59^ju+@15&o~xjgRv-{=B8!s9k0;G3N(s%b-(3iG+bl$4J~n@Jd} zJl6sTx4=h~?=T(QrQGS|bsi_{^)y>Y?(5u4wt zH0&mOu?B7MmX8WweWIbXhiG4O!!A}VL^k3S!ep?S#EDas!{w;AK6;Rd_bXN_orMt7 zZzOj2Ay#6yx)v}KyNZ>>77qsQ3aPIt zipE|7gTNO+Jf5*3U?=c45btt#AIDQbqK-3083A@Y3k;*cJ^%acQ=ViJN_qGG!LNilf6eE2`}})8|CY}evZ&8a<9jGIU7yvZR?ZoS*$#dVPE^Q@A@g%a vI +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 11:50:55 by kichlee #+# #+# */ -/* Updated: 2023/08/15 22:43:47 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 23:01:22 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,9 +33,7 @@ t_bool ft_export(t_data *data) while (args--) if (start_export(data, &cur) == FALSE) return (FALSE); - data->env_array = env_to_array(data); - if (!data->env_array) - program_error_exit("bash"); + update_env_double_char(data); return (TRUE); } diff --git a/srcs/builtin/ft_unset.c b/srcs/builtin/ft_unset.c index 4bd9b25..e7a3e82 100644 --- a/srcs/builtin/ft_unset.c +++ b/srcs/builtin/ft_unset.c @@ -6,13 +6,14 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 22:51:02 by kichlee #+# #+# */ -/* Updated: 2023/08/15 18:22:17 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 23:01:36 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" void ft_unset(t_data *data, t_leaf *cur_root); +void update_env_double_char(t_data *data); void ft_unset(t_data *data, t_leaf *cur_root) { @@ -29,7 +30,13 @@ void ft_unset(t_data *data, t_leaf *cur_root) ++i; } free(cmd); + update_env_double_char(data); +} + +void update_env_double_char(t_data *data) +{ + free(data->env_array); data->env_array = env_to_array(data); if (!data->env_array) program_error_exit("bash"); -} +} \ No newline at end of file diff --git a/srcs/execute/file.c b/srcs/execute/file.c index e9a5b61..713544a 100644 --- a/srcs/execute/file.c +++ b/srcs/execute/file.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:53:28 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 18:53:45 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 22:50:59 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,6 +23,7 @@ void check_file(int fd, t_data *data) if (fd < 0) { close(fd); + data->error_code = 1; error_print(str, 0, 1); if (data->info->parent == 1) exit(1); diff --git a/srcs/lexer/expand_check.c b/srcs/lexer/expand_check.c index ccfe5c8..c7569a7 100644 --- a/srcs/lexer/expand_check.c +++ b/srcs/lexer/expand_check.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:23:58 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 09:34:28 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 22:49:08 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -47,6 +47,7 @@ t_bool check_question(t_data *data, t_token *token, int *i) if (check_end(data->input[*i + 1]) == FALSE) token->blank = FALSE; *i += 1; + free(tmp); return (TRUE); } return (FALSE); diff --git a/srcs/redirect/redirect.c b/srcs/redirect/redirect.c index adb6782..6d20a1f 100644 --- a/srcs/redirect/redirect.c +++ b/srcs/redirect/redirect.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:16:07 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 22:34:38 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 22:55:06 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,47 +31,43 @@ void check_redirect(t_leaf *leaf, t_data *data) do_output_redirect(temp, data); temp = temp->left_child; } + if (leaf->left_child->left_child != NULL) + { + check_file (data->info->fd, data); + dup2 (data->info->fd, STDIN_FILENO); + close (data->info->fd); + } } static void do_input_redirect(t_leaf *leaf, t_data *data) { - int fd; t_leaf *temp; - fd = 0; temp = leaf; if (temp->token->redirect_type == T_HEREDOC) { - fd = open (data->info->heredoc_file[data->info->index - 1], \ + data->info->fd = open (data->info->heredoc_file[data->info->index - 1], \ O_RDONLY); - dup2 (fd, STDIN_FILENO); + dup2 (data->info->fd, STDIN_FILENO); return ; } else if (temp->token->redirect_type == T_INPUT) - fd = open (temp->left_child->token->str, O_RDONLY); - check_file (fd, data); - dup2 (fd, STDIN_FILENO); - close (fd); + data->info->fd = open (temp->left_child->token->str, O_RDONLY); } static void do_output_redirect(t_leaf *leaf, t_data *data) { - int fd; t_leaf *temp; - fd = 0; temp = leaf; if (temp->token->redirect_type == T_APPEND) { - fd = open (temp->left_child->token->str, \ + data->info->fd = open (temp->left_child->token->str, \ O_WRONLY | O_APPEND | O_CREAT, 0644); } else if (temp->token->redirect_type == T_OUTPUT) { - fd = open (temp->left_child->token->str, \ + data->info->fd = open (temp->left_child->token->str, \ O_WRONLY | O_TRUNC | O_CREAT, 0644); } - check_file (fd, data); - dup2 (fd, STDOUT_FILENO); - close (fd); } From daf4a21fb75cf82fb2528087b4519c3e811786be Mon Sep 17 00:00:00 2001 From: eunwoo Date: Tue, 15 Aug 2023 23:29:59 +0900 Subject: [PATCH 37/57] fix norm --- .DS_Store | Bin 6148 -> 0 bytes Libft/libft.a | Bin 37456 -> 37456 bytes Makefile | 3 +- incs/bulitin.h | 3 +- libft.a | Bin 37456 -> 37456 bytes minishell | Bin 90896 -> 90952 bytes objs/builtin/ft_cd.o | Bin 2448 -> 2776 bytes srcs/builtin/ft_cd.c | 42 +++++++----- srcs/builtin/ft_unset.c | 4 +- srcs/builtin/ft_update_env_cd.c | 35 ++++++++++ ...ft_update_env.c => ft_update_env_export.c} | 64 +++++++----------- srcs/execute/child.c | 4 +- srcs/minishell.c | 5 +- srcs/signal/signal.c | 4 +- srcs/utils/tree.c | 3 +- 15 files changed, 95 insertions(+), 72 deletions(-) delete mode 100644 .DS_Store create mode 100644 srcs/builtin/ft_update_env_cd.c rename srcs/builtin/{ft_update_env.c => ft_update_env_export.c} (73%) diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index ae64fe527eb241ffe1a2a484fde9693a0033f0c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKyH3ME5S%rRutk%S(k%@Ve_%zSKq3`CfE|J`7%Y*{`!DzndOi+j?~W+Gm=;B7 zSK6I>%-(s&lFtV~W^Z>Fz!X46S4?t-5z~3~JxjufPKvH^)ppCe?P~UQL9@eGK;K=8 z1}|7*9lgH==gO~OY)^1aW{rDnBIakrJVyJt-VTh1bOh6O4-Va1gjX09Usd&JN2 z?4G#68V}5B(GD|`NtBVI<8wcbR`{_~VagR>N0iX|c6m8A+;`1bkX^AAKeN`jo58M` zDPRhi0tcf2&uq2q#G^%1z!WeAwhHL?p`a_40eg?`)4|}b0K}BT&e(Rp{=`BDh-JXu zBS&cBQ;9xR!WBcp%|U!R=gYwFJ^FNr+nMWxoh95*BwReCaCAuN(V{6}3JeuE^4+PP z|Chht|A$G|GX+e6f2Dw=^PBmMC55wfuQ)wx3;HcxO?kb?Z3-LiC?;2r;#0aaju+Y> VmH~T@9HH5dfRn+3De$KXd;=;efs_CM diff --git a/Libft/libft.a b/Libft/libft.a index 6ae4166bf0b10a7170fde7812964a7d10e361ece..96c8757e14bfa37f69e74a59432153a8da25314c 100644 GIT binary patch delta 422 zcmcbxgz3T(rU`P)mWJk&6(uA#TFNrBSQ?sHZjNI9!USeb&f-_!T*ky! z7GKE&6VKv*0#$D%3REuy6SoqDi*u@Oc9)Qcnx7@j17%go=|EYl6n&tqUn)zWtVJ3j zFfr{vP&fS2gX!fmngUa2dIZYKvQ%LKy4>7ga+RFw=IyrZAaQep&4(ORpsZKUIuI3` zr966|VynDcAgsx=`jj?@_^*PBGX>W`)i#BHfr?c{pJ9cV>6Pfi0b$L`yaH8Mls5-z yl2obcX7i%^AXfwJmnvm}id%s~q5>QeK=G{VJy3JC>Y*;*9MtT>4K=rK8#4d}dUkyP delta 472 zcmcbxgz3T(rU`N^=Eeqw8YS)3J~=>CaC4>5UKoFKfap0WTVk`Ngf25goy6uw>8~*H$t!L7HqV!1 zhszyQG=;LoHw&ot!NqrK*uvR@I!|HxHw)^+%o5+MU{nX!yTf!HoZVo_#{#o^rL8F3 zoSP23Fg2T8#Gp#VHye1A!Gt#-@Xmv=CvWKE*&O1(3dY|o5u66sGb8*STzo?GHdbhm zY)(itoynR-e4Fh{@5A_;Eh}KbCce3$dKugfhkBTo T#5ZR&>v4mk%xv?lzHQ6^G6sbm diff --git a/Makefile b/Makefile index 9d8545d..e08f6dc 100644 --- a/Makefile +++ b/Makefile @@ -35,7 +35,8 @@ SRCS = minishell.c \ builtin/builtin.c \ builtin/ft_join_cmd.c \ builtin/ft_cnt_args.c \ - builtin/ft_update_env.c \ + builtin/ft_update_env_cd.c \ + builtin/ft_update_env_export.c \ builtin/ft_add_env_front.c \ builtin/ft_cd.c \ builtin/ft_echo.c \ diff --git a/incs/bulitin.h b/incs/bulitin.h index da59c87..0047f0e 100644 --- a/incs/bulitin.h +++ b/incs/bulitin.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:03:26 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 23:00:42 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 23:02:17 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -40,7 +40,6 @@ void ft_add_env_front(t_data *head, char *key, char *value); void ft_update_env_cd(t_data *data, char *key, char *value); void ft_update_env_export(t_data *data, char *key, char *value); - /*ft_export_print*/ void print_export_order(t_data *data); void devide_equal(char *src, char **str1, char **str2, \ diff --git a/libft.a b/libft.a index 6ae4166bf0b10a7170fde7812964a7d10e361ece..96c8757e14bfa37f69e74a59432153a8da25314c 100644 GIT binary patch delta 422 zcmcbxgz3T(rU`P)mWJk&6(uA#TFNrBSQ?sHZjNI9!USeb&f-_!T*ky! z7GKE&6VKv*0#$D%3REuy6SoqDi*u@Oc9)Qcnx7@j17%go=|EYl6n&tqUn)zWtVJ3j zFfr{vP&fS2gX!fmngUa2dIZYKvQ%LKy4>7ga+RFw=IyrZAaQep&4(ORpsZKUIuI3` zr966|VynDcAgsx=`jj?@_^*PBGX>W`)i#BHfr?c{pJ9cV>6Pfi0b$L`yaH8Mls5-z yl2obcX7i%^AXfwJmnvm}id%s~q5>QeK=G{VJy3JC>Y*;*9MtT>4K=rK8#4d}dUkyP delta 472 zcmcbxgz3T(rU`N^=Eeqw8YS)3J~=>CaC4>5UKoFKfap0WTVk`Ngf25goy6uw>8~*H$t!L7HqV!1 zhszyQG=;LoHw&ot!NqrK*uvR@I!|HxHw)^+%o5+MU{nX!yTf!HoZVo_#{#o^rL8F3 zoSP23Fg2T8#Gp#VHye1A!Gt#-@Xmv=CvWKE*&O1(3dY|o5u66sGb8*STzo?GHdbhm zY)(itoynR-e4Fh{@5A_;Eh}KbCce3$dKugfhkBTo T#5ZR&>v4mk%xv?lzHQ6^G6sbm diff --git a/minishell b/minishell index baf7863f8bcfab4000dd0fa19bad3119963cd10f..3c40b5057569bad664e5e18fef07a2110537ba1d 100755 GIT binary patch delta 6190 zcmZXY30PD|w#RQ3pdiYk#tno+%R+t4T_3@NTh9v=uz)P zjln@<6ouBCX!HrT8jX_|6%*q!YF;N{CYOw3T4OSP(S&#ER<(KW8@{iL`#a}fr>aiX zt*Y+o%U)M5dsR0FroS#pM3STn8?eB?^yA<7dk_OW_L$!PIy1~6lA(hn`QoFIG5*Di zj|u-b;713Ky@I^FXA^1Mw$v_A;~5!HcY4tMH`m9`D0L*6FMW412JU#q5}gw0l@hHu zUSB{+gAx)u$b%HZl+mS>tcTFpUds2QzoIl?t|7;Dt+(3R+6*@R zGlTV0^*THmUrz_Ef~Il3l(Q3L((`VCB-x6e8meN*8c90CMq{w*o$7g5kq}2#!qJ3? zsC|W!q-GDmSm>4191Ch}#ZI*|m89}#l7EF4np<16cF=4Cs-H=F7Q!68nH+-8^yA1< z@JU=wegjKlO4u>1u391`DY{MlGLMByerB-wSjPvPW38*_pe1qO>x-G{7I(W0R)QmN z8Omd^u^Y_GAljiGLy1<;s(+}OL7$}SH4jan>R+HtYTe1itg0a&+ZJ(Fdv0J*BGBx0TAazqNy3Pa+7*|IT@4IS)17c7cK=GDzTj_(AzZJZxcGzNGx#1XHAAQ(?l9F84j3Y0>7X1 zvYANM%x(C=G;+YZXl=dXen)KaQP>M_=HB>+Jc_XelFcLOs7X+1j`3-oqBW_T1eeXx z-uF5E1KP}y-e)+RgrO^gryk(2-N2e=>wJ=~yvWnbzoH9Y5nH)G5B;r0+KBK)wZ-eo zS9`X5Daz-fWCOgjGT3Jpr$_@dA&ueWVSs<(=!z3>wjBynqF5{C8TEwy1vFiA&X zbe_@YD2HiDup=+bO_52^lou4agZn(OE_NB;oJj%yugh<7e+!WO-h-EMIG2bGrSSe^ zjraiUfBTpHe}jv5!<78q-ccM1z??rYq8*0`Sl!*0!M4&H=k!<1KEBe}{6d}(oCLwn^eo;hr(W6BXRkn4(B-Bt@{~ztQt;SO7bcfp~EIXTu~Ao z6%Um~A>?;BRFvA`N*o&yZWHH#uIWc=VZfSXIw=l{)`ZcBIM}-;f?R@&YZg-9?hwBA z2umcqLh?Etojw*!>uPkz$1nlkBM;(p>#&y-8H?va zVeQajLbgHF`ssA+XsB4ffkc6K$zVEq42&r0-=kq1W@-~3h106PucnN`7;_|8T@s#{ zigtEHZ0sq9X|NSI4Yrx8D&uBv)xT){zYg_VG`6CW?ceM$u<2hI%0G#MKtosGvWG@b z)={s8@nA0v8}kUqb%vch>f`@vYtzo5rAP)_qw_g#zEv?-nSe!6>%t50E0SH3+hY4 zO7`O{;8L8XRWEi~^(|^2e2#WtGIR?rF7^*ikffOg>)#FK4{>iQ#7DB_O^5EqSn(P^#oa|~LPR<~_X{lRbYGo!F2q!8>`}wo%yQAg7 z^U49FJ49ILksR1y?L%UfgZNB30LFuGPqGNsZV92a^{{8l zZ=E+jzy;(WhRkP8-Z&5H)5CD2sux)em#Q9io_82qvK8OKG~oCysLzio7vJti$uRg^ zbr3yN2mh`P>9MJfiEy`MH{WqypI=>!P|zAGG+d@PK5qctK@7q5Hb=zgj!Mo zvv=gs))u(5BbK&(18qBchJA8ZYf4q8e1{83-%?)OLi{VV4IG222XDa0o!dzue7@64 zPwj_UyC(M--Ha>rRqQlt7Q5);E8YU9cNKg7a=on$!eV>CG748_M>*-3aLlhu@t`e86*G5pBB; zCHp4P53ehq?b8!_>?Q=(q|zf_K~~LE+VT#}-9H)gcW{3g`4fD)Kf}Ler#4@hMV$TH zJ7L6M=Dd1zmo{7{b{khk@*RUma{Ca2v{qJiq>;nTmza5G{D5dANL)!Gfb zkPv7)+)9Q+>ydpV1}f_!NUqXQH;Y8KvuWLUIl=G0Ew&SU%UN1oYRhKPQP!o~n_=S3Ra%Me7)KScfeKoT_ZfVn*;a1r70Y! z_!t!@Dq-F6P)yC<<9A3b6rA`cy}wCWq|EQoEi-GB&XAI<*X5cly8LWQ2We48{!+Nn z6b26(eNQyq#Q9ggIybRA(78hLknC?_;bMg&SMEQN1koCkoH&t;d7~O{$<$mVZS%;m zNV_~xWo9b8XHzsB@_5rM9Y?F(!mNd?ScOGR5i8b_d`q76xgS2R$4#+XzBZBc@V0Lv z2sM@RqlrXE9acFYfy}2ho8{aD(mT>=V_y3fO;d&Ifo8AH&XXFvmgVN8nU|Tfr80j{ zskvHK5=a=W*)88nAbtIs_iFlmtaQF7`{>C~>a3AR>B-1$rSG#S=8W7dsiJ*$ru5X; zQ*zbGRz2A{sPu%^n!*$-GIDdIGu{O&mRXkNO5dQ${*e~%Br6@K<;jU8BGGY{X*2RI zX^XT9l|I=SInq5;S2t?0nlv?jFTq}3VWsn`X1}J{n_20)A)ibnuj^c2YPOqN`4uZ` zZn4s-m9E=z$0Rbeuk()9yKMYg)Z8I&*^;Fe=~f36-DT3!ds?;oa(WU8A*FIj5(%5; ze87y=Uuyy?0Y0p4U7 z4;LIijq?P-5`NcVexqRBEY5QU2h8T2DY!YEvsrL;2ICS*Di(%x{Cda&ZWgS=ua%7V z2sUPOKIZ1doErtR@BU2xSGRu+=UZ-G%lSJuuS3T6rH8^`F6M&Y+=BI-{qTrnQ&f#& z)__j1tCaH~!NxMqv4W)yob`eO$~mXH{dfr~VF4Eig9{Cea|B1d#d(!rr{D^~@te3G z1gCH2{H|cT;5v7G8~2|T?An6)XAOQX47#_u;I81Pt(^bm_E&TMU2yeI&K>dY&oUIX zi*u-8N#;CQaLu1Nj}x5!j!5ZLVQ{>|1!;oqdpPF{c7DLQM6mfV=PiPDb)5GIE68uGqW#FnX#M?Q4Ex6_c=N|D1VPKmD*?8U@G8sVO97yflZK-xKC){H24* zjtj04)fxpyZRh^K3Qm{5Ng<(q>>|t)VK#omWfWtv-ZoNX8CoJu=k9Xh zjuNfx5Uj(mq4+4_v7}XZiud%e;P|E7kH?JWk6OZ+U4vM2F5$l}xHOmhakplEd1xvL zBmwgHR1z2F5}QyY{xHYt+HvUkPkLRjB=1ipp*iaW0V@qJocyNX0T< zp{rn>sGt)ZFUB=cuze!ej}jbE$$5fcT^#2(1jmo&JWFFNbaM1`5?T^JlH1n{of*H2 zvBYc^93Xh7;3&K}GXH+T4iWd5;2K=W%>S|AX3?(;g6*rh|0d@ylD&u3D z4er(|v9W4>#m4%q*7|DdbL*bA+Fn|1W1s&|`Pa6-Gj}HK|Nki;GP&P#esgB-nYlBQ zd-=Tp8~(e)U85w4NRm|eJQn!pI`LJQAJM==znT61h3uI_q#?nQ)DExpOn`q0;!}>_ z$MB!qhk0xekctFO`Ep76h z`J?6&lHoiT_lzIu0zbr?X`>0=iR9V?x=2|Wp!>NHL8qaDo8Nm9$LCr_T} ztSPNJ%O#~8woE)uuP%q&gznCqNiykHQ!PnW(<9x+k&QKybe7$a&XVF$3ZQ-R1QHI@ zl4FJ>ESDsuq(8<&ucWjyqQ+|SC>^LI)wfDv4FPCwxvRE=<^ixbc{Y8k8vZxgK+<4I zN&*RlBPmPBtI#PmBRU~Jnj>qy8bsMTeJj54Txg(auI^S16TrTLXOUG*sG@{}cg}oL3)AQJZ9A5^3p>N68J(fqj!@V$ zcPCj6W3zSClnWE*MSwlKvi+$%F=mS9OL&+W$rSU>w7;3_GY|ekHE)B+oC#zZ|78DW%8fL*)DzQU*!$-=#-$oNaTX{pjAg(7#|1JuugqT`-&w1H4o? z3^Q`Ra3K9G3%rHp^n)xYC>l&JWx*Ewx{w7I@XM72kBWxU1J6497Jo+rug{Vshopo- zmxWVFJrpi{nY4k&3uEY)dS|ai4TQ{b9$8Fj`0R9b6mS|OYS>7mz}uw}A^m(-wDfS^ zEnPwB{wa`Kme#du3TCZ?I<(bZoC^a`iR~$qEUSktckI#nde}A`I!FW(b{s^_mEfsR+PNbcCH-=ci%V zP~OrWZkht0R_KGKarikEMpQ=o=yEFLRz}2*;J*E-YM1fRnXLJLU5?@Ywa{4EV_*=6 zJQTNN@cv_sL=E=8?VtU>kD0_C$HNbmJp$bvI)kQaK+Hi7U#I-lmd;uch-10~J@`yx zwTmfGP!-XqmP;G|E}g4N6_jG1sv`TOab^DBm0eZkT~sE)*HwK2gSoN`gc*y1$}m~z zIhqW$#%J0r#}QGs!!ctF$%Y%oeq=cOfn_MfR`;VVX)v=omR?8$Q*|ua0|%@7kyYTX zmV1@7!!^;=>KE1!q-Mk9RknnvCV#$8D!pL+^6s53hpR>$<6b`9HaN3<1hF|EEcX)n z?}_l`iZuGk1cjK+_LFHC*lL9LelXB>pBvTHNPF#%sBQ}DWF z_@4tg8aIY6`>w4bWGJ{zGwJ8?&}a4YL=T5o52T-th1;w9bctTgjXZ}g-}dEFa=v4Z#ICvkjDS@xDcM}=)>*4v zlXRAMm9wqBx&ie(>=~vTuIgrcFf8(W3ZSe7W3bNQy-3!S-*ol=)PrY2=XPuE>oL5} z8ZdnV*z2OleSyh4%Qi!0B1TcS#zjavYqRGuHnwqOGZU~VitSr8s0t0khZ6i=_tZ%1 zpZ;9tS8ssDV;##mixx|R8zZ%-i-)!O4qhwCFxeb2eitT5x$uBhYGxAUL>yMz*zCn? zOT$$xc`~msGnZg67gs`~`6)Ug0nVCZyAMM_Si7*Owb-mA&DL4&>FV!m@PYi;+5Y)8 zH0;{XtQ)wqv57eB5$sxPA-_OOgOOZ!?ri8t$vJ3xu|D!jlPYV)4UnA>#0D6FXC~z* zn7*!vSmBLzV?)b-{6EpI!{c@R$#W26nMXc==Pgf@mz@Xjnk)rkT}L}Qz-rw>>Y(R_ ziFAAu6l~~5-i6u?J*i(4?A-8shr6F+(p^MX)Os!u`>xD-4PM*Wo!o(o8}E1c#}Sqr z(;XatoIdX=^Nu+$ywrsffKO}@wC(Hgi>+tZ?~XE2x>r4Lm|CsX9$nGw&lEQd+&qYU z<;>X}Lg>u>&eAP9LSBKBu#en>Ia^EVu8$yH9XncExPw7YEz1G^czfm%H4X? zT@u!yF2hz+s}gV>#%$X{D&Xoi3w>%YWNn|)b*CFgwKsMeyNH`awU^J58}Qb4lmD~m zg!6G-VTQbf>i0O$$xW1Og0da`$$sZ6JL(B>L62RtqCdEfLAv{bY#h0%C(bsO`M1<5 zH|@G}%dRej7~#mP*<>;J@2;VFZm8QmnRaqJuk21CG~_0P+cRnKEhx4>qRBfTyKxHU z??7WTIR%#*3&N7OtK)@P#L(-oSZR#vn)aSGX zPVU`9yKQsM-iIA%gr)m?lU2^m`xE@=KpT8?s4q>v1iv1NqXVwN@WVP94PZKKrcnS- z4o9*v>Tx8Jd;{@E{z+EDlOru;E3~|}n{0!1M`Or`&ZeVTWat8`+KoR4xXmW<2*&e_ zc$H+X@TgsivqIdlQt~V8J7%YoH$ckqXxe5yEIM9H?C`JSQ5v)5uXs3LHp6enyVDpK zbZttd2^%24sev4VZ<|)p{->eX(TDo22dg8BY=NVWo|=6xs+HMla~Uh2g!PVywvoX& zDU;5@V}~J}aDfX2XHd|=0;^6$VPNkF%IH($!GBtivVQ zD}R_ox(3?T5d^bE{xOMYseQeyNhUeeY?aHBNsn092IjSGR5dT*WS}K0N-CwMfW>8{ zd4|P?5@}7CzvS2~JCjK?HSd&fC6hj(j#pLv9#*>Sa!?AvLuI2JpF+lT@f>7P3P;IRD02bb?{dOs$Hyfyw6J4hpPRWYX69p?(6cYR5D8I zzM0MRSqQ?53 zN%Iy|mla7rwv#NOcsJk6Kc|siq2BvU;Q5i2?uT+O9qB*F_On{`5vx>OoL5q|Ja0i| zd6`jq*xp#aw7hJgt9?&T9?avmYrK7;cl!TGZ}>jj&$IA;qs%;8)lct``M8$zH$Gm4`Db^0Ul`mb&cFKvt2u|_{>X;N zZsx2NEaAHhR)3&iO+Du^K0lrcm_J3ZSMW^1L+W1Of;?gH2wo;Q@kQ>h6`a4GbAw=q zVDQzqa{qq8-VK~j3f8{F`Mlt|A)C12rcYqw{H2a;6xI^+r2io}?$aBwudSlfiZQGr7B7xNZ1WiM6^_uo-_MGTtpX zaUtg;g6)eqzbV)z{OoYUn$s`le%upO_LOnPWtg#?kx9adK`zK76QcFca$hXIHDh%h zcm;o(1o??nhya}gn}uI1*e*IWK(Hp62aNae zI?j`P^(Szi=Bq!JbC$|jnB~lwB&yDiKYUmsRtue52=zxM@5lj$rnXre8Z3w!wU1Zl-w>m}HAn)?R{ zHsDKP)^NOFhg>m>L=~8mxp{`qT+BIJaH43YM6h8a_t*HilJg5by=Z2KV4M7K7MW1z z!snH>{*f?i^ErPk*qp(+#TQ2Ce-Z4M&i!ri=PH}s=5)>-1Sc-z94*)*cqr$mC9`;R z#tVT~46;Zm1pTE0K%_Y%+r^ghKF#2DZ Cezqq7 diff --git a/objs/builtin/ft_cd.o b/objs/builtin/ft_cd.o index 4805d8052fbf47acb51af3f0ea9656c6e17f1074..a82628ee71f13412b81d9852b6523d090f0cda15 100644 GIT binary patch literal 2776 zcmb7GU1%It6uzlVx=owxN-d-yWCCg{Wh5#=3>0F`=zU0SEDc5_+^n;+KP1_Wv$HlT zD=FJ84#Pqb@kJ={LGVfHLm!l;Ehd;+gw}^b9(-8PLIM%?!H1wR@jG|!?9U{9@W7q# zo^!r)?z#7#o!NVT|G9mDv9`w;9vJ&EBKz>rFd)Y;J|)K^WW3#XoS+y;pd%-vLHS68 zaI87UpZofGWBhzW4`!FC5D4X?*m)#*mJIvZJV78rn0d#}WK+r@L~Fhv&pGA)R@E8A zt8xPs^_jVu*|_P5LiR!?n-F4TxbDPcRn@f+7&{mv)13%oDs@XrA*{4W+VL674+z&c zrw*p7@-3)*N@a%_O9ykp7chD-Uf+CFs}j-&qhgy&{8xgmTEnW z@qcBEyAOG3qo2FQ8ecKiDE<~@y-8W6%3Y(%OT{XSmT3iEIdujn^^EG3_d_Ff_fi}o_P--{cg*dh1i1#^#Khnw78tp2mJ!`A%0Ln~@dFX-^_0`lK#=sxfI)=DVNu29SipD78_2f)bxXvN)(CH?hqu!T++C52 zaJPJ)qK^1cR7kU(mlnz0xDL81pWsQ4Kd&s-z;esK;CYj7w3&h>ZU z-PWi#hW+(n3AMlPcOd9s_YU?Jn^<};o=-D=_Kd-3HmI42L5)-`n{%|h<#a0h)A>Q| zjhvP*m}xDUnYOf?ttB$HWjZoXN%O7Htu_N`A6vm1bN4Y zUH)sz|J5V>lk^gWJmbTz_$PcjYy0RNYnzL;#SR~cTmkDT*q_8mqu)qW{fxcR9lN~m z)h@hFr4WyH*}vuU)IRp)O@o*I*XODI?8*BayamNm``VLt1H2R4em=FoT|686$FD`7 z0^+ESz7E8XN`DE6ces91*)?U4Df>3a5%_CBihGC$@gFGtF0dQ=Rp3G3XFyuVQ~uLH zyi4>RAkOO44$hQ#8$gPC0K}(P{~3t4l)elE_2@T1T8Hj{@Dm`_;VA#RK$NJDDEnz; zKMBNFLGM%gHqM6Dy$eKM{W=gX{YxN3e;*I3$C4`3CxNv7Adu=APVE~H-x>2w~= z`Cbd@Z-(^mLi!gW{o{~M--_n^Oql6-Hf4$W>w$?`JD0*g7h&0U&KA~O#$h6p7kHbP zRz6P=AWKs+o|!IKm?s^9zhjBQY%tB5Gnfll~wk s=^Xwn;XjjwXUcNS3yIbQsY2X_2}>1b6LH6qxlG>@Kzw>SXJU)&KV7^-b^rhX delta 1111 zcmZ{jO=uHA6vtjRmzHg4R??Q50!}_E4js z!cq!Jry$}7xp)$)cq$$wD45(DFD0Od=*b95)2k8v&+deV1&5vYoBw-n-pYyt-z!eClmR4Y~MW3zQmmcCn3yLc7s$C zhI*RHeY%sKlx~z-sTFKU@v_0{2l0hZBfXzjQ=AC(x5pK#U6Xx)c#5fj*Ze#5F>HNqJ|tzC3b< zt~x_>(;2#Od3r8A98Ap&2ldmZwBU`Knc&=&Oov&GnH9Ed>r~A_%M>g>nfgzh(0i_! zM{fQ#+X`*C_PWL}`R*V3!__aW(`k1g+l#NtNaYV{C42EhM#Mz9z0`bY!r{FH| z0f?)jE`VKN2E?OG!FZtKoM8|bP(29ZQM@o%r`m*J{%sJhtnwKH>{b0_Ig~Y!y?6n{ z +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:31:18 by kichlee #+# #+# */ -/* Updated: 2023/08/15 22:39:21 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 23:19:44 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -t_bool ft_cd(t_data *data); -static int change_directory(t_data *data, char *path); -static int change_home(void); +t_bool ft_cd(t_data *data); +static int change_directory(t_data *data, char *path); +static int change_home(void); +static t_bool is_failuer(t_data *data, char *pwd, char *option); +static void is_success(t_data *data, char *pwd); t_bool ft_cd(t_data *data) { @@ -31,20 +33,10 @@ t_bool ft_cd(t_data *data) free(pwd); } else if (change_directory(data, \ - data->root->left_child->right_child->right_child->token->str) != 0) - { - option = data->root->left_child->right_child->right_child->token->str; - printf("bash: %s: No such file or directory\n", option); - free(pwd); - return (FALSE); - } + data->root->left_child->right_child->right_child->token->str) != 0) + return (is_failuer(data, pwd, option)); else - { - getcwd(pwd, 1024); - ft_update_env_cd(data, ft_strdup("OLDPWD"), \ - ft_strdup(env_search(data, "PWD", TRUE)->env + 4)); - ft_update_env_cd(data, ft_strdup("PWD"), pwd); - } + is_success(data, pwd); return (TRUE); } @@ -76,3 +68,19 @@ static int change_home(void) printf("bash: cd: HOME not set\n"); return (-1); } + +static t_bool is_failuer(t_data *data, char *pwd, char *option) +{ + option = data->root->left_child->right_child->right_child->token->str; + printf("bash: %s: No such file or directory\n", option); + free(pwd); + return (FALSE); +} + +static void is_success(t_data *data, char *pwd) +{ + getcwd(pwd, 1024); + ft_update_env_cd(data, ft_strdup("OLDPWD"), \ + ft_strdup(env_search(data, "PWD", TRUE)->env + 4)); + ft_update_env_cd(data, ft_strdup("PWD"), pwd); +} diff --git a/srcs/builtin/ft_unset.c b/srcs/builtin/ft_unset.c index e7a3e82..11a0d94 100644 --- a/srcs/builtin/ft_unset.c +++ b/srcs/builtin/ft_unset.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 22:51:02 by kichlee #+# #+# */ -/* Updated: 2023/08/15 23:01:36 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 23:02:38 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -39,4 +39,4 @@ void update_env_double_char(t_data *data) data->env_array = env_to_array(data); if (!data->env_array) program_error_exit("bash"); -} \ No newline at end of file +} diff --git a/srcs/builtin/ft_update_env_cd.c b/srcs/builtin/ft_update_env_cd.c new file mode 100644 index 0000000..458bd22 --- /dev/null +++ b/srcs/builtin/ft_update_env_cd.c @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_update_env_cd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/15 23:24:39 by eunwolee #+# #+# */ +/* Updated: 2023/08/15 23:25:02 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../incs/minishell.h" + +void ft_update_env_cd(t_data *data, char *key, char *value); + +void ft_update_env_cd(t_data *data, char *key, char *value) +{ + t_list *tmp; + + if (!key || !value) + program_error_exit("bash"); + tmp = env_search(data, key, TRUE); + if (!tmp) + ft_add_env_front(data, key, value); + else + { + free(tmp->env); + tmp->env = ft_strdup(key); + tmp->env = ft_strncat(tmp->env, "=", 1); + tmp->env = ft_strncat(tmp->env, value, ft_strlen(value)); + free(key); + free(value); + } +} diff --git a/srcs/builtin/ft_update_env.c b/srcs/builtin/ft_update_env_export.c similarity index 73% rename from srcs/builtin/ft_update_env.c rename to srcs/builtin/ft_update_env_export.c index 029d2f9..2739a71 100644 --- a/srcs/builtin/ft_update_env.c +++ b/srcs/builtin/ft_update_env_export.c @@ -1,43 +1,24 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* ft_update_env.c :+: :+: :+: */ +/* ft_update_env_export.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/15 00:37:38 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 21:44:03 by kichlee ### ########.fr */ +/* Updated: 2023/08/15 23:27:47 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../incs/minishell.h" -void ft_update_env_cd(t_data *data, char *key, char *value); void ft_update_env_export(t_data *data, char *key, char *value); static char *get_tmp_key(char *key, t_bool plus); static void is_not_plus(t_data *data, \ char *key, char *value, t_list *search_list); static void is_plus(t_data *data, char **tmp, char *value, t_list *search_list); - -void ft_update_env_cd(t_data *data, char *key, char *value) -{ - t_list *tmp; - - if (!key || !value) - program_error_exit("bash"); - tmp = env_search(data, key, TRUE); - if (!tmp) - ft_add_env_front(data, key, value); - else - { - free(tmp->env); - tmp->env = ft_strdup(key); - tmp->env = ft_strncat(tmp->env, "=", 1); - tmp->env = ft_strncat(tmp->env, value, ft_strlen(value)); - free(key); - free(value); - } -} +static void is_not_equal(t_data *data, \ + char *key, char *value, t_list *search_list); void ft_update_env_export(t_data *data, char *key, char *value) { @@ -94,21 +75,7 @@ static void is_not_plus(t_data *data, \ ft_add_env_front(data, key, value); } else - { - if (search_list) - { - free(search_list->env); - if (value) - { - search_list->env = ft_strncat(key, value, ft_strlen(value)); - free(value); - } - else - search_list->env = key; - } - else - ft_add_env_front(data, key, value); - } + is_not_equal(data, key, value, search_list); } static void is_plus(t_data *data, char **tmp, char *value, t_list *search_list) @@ -125,5 +92,22 @@ static void is_plus(t_data *data, char **tmp, char *value, t_list *search_list) *tmp = ft_strncat(*tmp, "=", 1); ft_add_env_front(data, *tmp, value); } +} -} \ No newline at end of file +static void is_not_equal(t_data *data, \ + char *key, char *value, t_list *search_list) +{ + if (search_list) + { + free(search_list->env); + if (value) + { + search_list->env = ft_strncat(key, value, ft_strlen(value)); + free(value); + } + else + search_list->env = key; + } + else + ft_add_env_front(data, key, value); +} diff --git a/srcs/execute/child.c b/srcs/execute/child.c index 4dc3183..08048d7 100644 --- a/srcs/execute/child.c +++ b/srcs/execute/child.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:36:58 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 17:00:15 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 23:02:57 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -59,8 +59,6 @@ void exec_fork(t_data *data) execve(base->command, base->cmd_path, data->env_array); } - - char *ft_strjoinstr(char *s1, char *s2) { char *tmp; diff --git a/srcs/minishell.c b/srcs/minishell.c index f0b901e..23e8100 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* minishell.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 21:42:25 by kichlee ### ########.fr */ +/* Updated: 2023/08/15 23:02:24 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,7 +22,6 @@ int main(int argc, char **argv, char **envp) data->env_array = env_to_array(data); if (!data->env_array) program_error_exit("bash"); - // for (int i =0; i<10; i++) while (TRUE) { sig(); diff --git a/srcs/signal/signal.c b/srcs/signal/signal.c index 448e2d5..db2db95 100644 --- a/srcs/signal/signal.c +++ b/srcs/signal/signal.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/15 18:40:34 by kichlee #+# #+# */ -/* Updated: 2023/08/15 22:32:53 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 23:28:25 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,7 +38,7 @@ void handle_sigint(int sig) { printf("\n"); rl_on_new_line(); - // rl_replace_line("", 0); + rl_replace_line("", 0); rl_redisplay(); (void)sig; } diff --git a/srcs/utils/tree.c b/srcs/utils/tree.c index 957ccd5..fac5d4a 100644 --- a/srcs/utils/tree.c +++ b/srcs/utils/tree.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:48:39 by eunwolee #+# #+# */ -/* Updated: 2023/08/08 18:27:14 by eunwolee ### ########.fr */ +/* Updated: 2023/08/15 23:06:39 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -59,7 +59,6 @@ t_bool tree_add_right(t_leaf *parent, t_token *new_token, int leaf_type) return (TRUE); } -//토큰은 환경변수 리스트에서 삭제하기 때문에 트리의 큰 틀만 삭제 void tree_clear(t_leaf *leaf) { t_leaf *left; From c0bf5f42058afe95dff6f7f34c673fd9958b82bb Mon Sep 17 00:00:00 2001 From: eunwoo Date: Wed, 16 Aug 2023 20:53:17 +0900 Subject: [PATCH 38/57] . --- Libft/libft.a | Bin 37456 -> 0 bytes Libft/objs/ft_atoi.o | Bin 892 -> 0 bytes Libft/objs/ft_bzero.o | Bin 684 -> 0 bytes Libft/objs/ft_calloc.o | Bin 776 -> 0 bytes Libft/objs/ft_isalnum.o | Bin 760 -> 0 bytes Libft/objs/ft_isalpha.o | Bin 680 -> 0 bytes Libft/objs/ft_isascii.o | Bin 664 -> 0 bytes Libft/objs/ft_isdigit.o | Bin 664 -> 0 bytes Libft/objs/ft_isprint.o | Bin 664 -> 0 bytes Libft/objs/ft_itoa.o | Bin 1160 -> 0 bytes Libft/objs/ft_memchr.o | Bin 732 -> 0 bytes Libft/objs/ft_memcmp.o | Bin 756 -> 0 bytes Libft/objs/ft_memcpy.o | Bin 764 -> 0 bytes Libft/objs/ft_memmove.o | Bin 856 -> 0 bytes Libft/objs/ft_memset.o | Bin 700 -> 0 bytes Libft/objs/ft_putchar_fd.o | Bin 696 -> 0 bytes Libft/objs/ft_putendl_fd.o | Bin 876 -> 0 bytes Libft/objs/ft_putnbr_fd.o | Bin 984 -> 0 bytes Libft/objs/ft_putstr_fd.o | Bin 756 -> 0 bytes Libft/objs/ft_split.o | Bin 2048 -> 0 bytes Libft/objs/ft_strchr.o | Bin 732 -> 0 bytes Libft/objs/ft_strdup.o | Bin 828 -> 0 bytes Libft/objs/ft_striteri.o | Bin 696 -> 0 bytes Libft/objs/ft_strjoin.o | Bin 936 -> 0 bytes Libft/objs/ft_strlcat.o | Bin 888 -> 0 bytes Libft/objs/ft_strlcpy.o | Bin 840 -> 0 bytes Libft/objs/ft_strlen.o | Bin 700 -> 0 bytes Libft/objs/ft_strmapi.o | Bin 848 -> 0 bytes Libft/objs/ft_strncat.o | Bin 980 -> 0 bytes Libft/objs/ft_strncmp.o | Bin 824 -> 0 bytes Libft/objs/ft_strnstr.o | Bin 988 -> 0 bytes Libft/objs/ft_strrchr.o | Bin 728 -> 0 bytes Libft/objs/ft_strtrim.o | Bin 1408 -> 0 bytes Libft/objs/ft_substr.o | Bin 1068 -> 0 bytes Libft/objs/ft_tolower.o | Bin 664 -> 0 bytes Libft/objs/ft_toupper.o | Bin 664 -> 0 bytes Libft/objs/get_next_line.o | Bin 2808 -> 0 bytes Libft/objs/get_next_line_utils.o | Bin 884 -> 0 bytes incs/{bulitin.h => builtin.h} | 20 +++--- incs/execute.h | 4 +- incs/minishell.h | 4 +- incs/struct.h | 15 +++-- libft.a | Bin 37456 -> 0 bytes minishell | Bin 90952 -> 0 bytes objs/builtin/builtin.o | Bin 1792 -> 0 bytes objs/builtin/ft_add_env_front.o | Bin 1448 -> 0 bytes objs/builtin/ft_atolong.o | Bin 1716 -> 0 bytes objs/builtin/ft_cd.o | Bin 2776 -> 0 bytes objs/builtin/ft_cnt_args.o | Bin 672 -> 0 bytes objs/builtin/ft_echo.o | Bin 1564 -> 0 bytes objs/builtin/ft_env.o | Bin 2220 -> 0 bytes objs/builtin/ft_exit.o | Bin 2568 -> 0 bytes objs/builtin/ft_export.o | Bin 2492 -> 0 bytes objs/builtin/ft_export_check.o | Bin 2300 -> 0 bytes objs/builtin/ft_export_print.o | Bin 2696 -> 0 bytes objs/builtin/ft_join_cmd.o | Bin 1120 -> 0 bytes objs/builtin/ft_pwd.o | Bin 1112 -> 0 bytes objs/builtin/ft_unset.o | Bin 1284 -> 0 bytes objs/builtin/ft_update_env.o | Bin 2848 -> 0 bytes objs/execute/child.o | Bin 2920 -> 0 bytes objs/execute/execve.o | Bin 2400 -> 0 bytes objs/execute/execve_utils.o | Bin 1776 -> 0 bytes objs/execute/file.o | Bin 1068 -> 0 bytes objs/execute/parent.o | Bin 1168 -> 0 bytes objs/execute/path.o | Bin 2544 -> 0 bytes objs/execute/pipe.o | Bin 1984 -> 0 bytes objs/init/init.o | Bin 1796 -> 0 bytes objs/input/get_input.o | Bin 1680 -> 0 bytes objs/lexer/expand.o | Bin 2228 -> 0 bytes objs/lexer/expand_check.o | Bin 2984 -> 0 bytes objs/lexer/lexer.o | Bin 2644 -> 0 bytes objs/lexer/lexer_utils.o | Bin 1228 -> 0 bytes objs/lexer/quote.o | Bin 2816 -> 0 bytes objs/lexer/tokenizer.o | Bin 2212 -> 0 bytes objs/minishell.o | Bin 1164 -> 0 bytes objs/parser/parser.o | Bin 1660 -> 0 bytes objs/parser/syntax.o | Bin 2800 -> 0 bytes objs/redirect/heredoc.o | Bin 2520 -> 0 bytes objs/redirect/heredoc_parser.o | Bin 3028 -> 0 bytes objs/redirect/redirect.o | Bin 1632 -> 0 bytes objs/signal/signal.o | Bin 1856 -> 0 bytes objs/utils/env.o | Bin 2148 -> 0 bytes objs/utils/list.o | Bin 1344 -> 0 bytes objs/utils/list_clear.o | Bin 1028 -> 0 bytes objs/utils/temp.o | Bin 3008 -> 0 bytes objs/utils/tree.o | Bin 1560 -> 0 bytes objs/utils/utils.o | Bin 1756 -> 0 bytes srcs/builtin/builtin.c | 37 ++++++----- srcs/builtin/ft_cd.c | 12 ++-- srcs/builtin/ft_echo.c | 41 ++++++------ srcs/builtin/ft_env.c | 73 ++++----------------- srcs/builtin/ft_exit.c | 5 +- srcs/builtin/ft_export.c | 49 +++++++------- srcs/builtin/ft_export_check.c | 4 +- srcs/builtin/ft_export_print.c | 4 +- srcs/builtin/ft_join_cmd.c | 98 ++++++++++++++++++++-------- srcs/builtin/ft_pwd.c | 4 +- srcs/builtin/ft_unset.c | 4 +- srcs/builtin/ft_update_env_cd.c | 4 +- srcs/builtin/ft_update_env_export.c | 4 +- srcs/execute/child.c | 8 +-- srcs/execute/execve.c | 4 +- srcs/execute/execve_utils.c | 14 ++-- srcs/execute/file.c | 2 +- srcs/execute/path.c | 10 +-- srcs/init/init.c | 4 +- srcs/input/get_input.c | 4 +- srcs/lexer/expand.c | 4 +- srcs/lexer/quote.c | 13 ++-- srcs/minishell.c | 4 +- srcs/signal/signal.c | 6 +- srcs/utils/env.c | 5 +- srcs/utils/temp.c | 2 +- srcs/utils/tree.c | 4 +- 114 files changed, 231 insertions(+), 235 deletions(-) delete mode 100644 Libft/libft.a delete mode 100644 Libft/objs/ft_atoi.o delete mode 100644 Libft/objs/ft_bzero.o delete mode 100644 Libft/objs/ft_calloc.o delete mode 100644 Libft/objs/ft_isalnum.o delete mode 100644 Libft/objs/ft_isalpha.o delete mode 100644 Libft/objs/ft_isascii.o delete mode 100644 Libft/objs/ft_isdigit.o delete mode 100644 Libft/objs/ft_isprint.o delete mode 100644 Libft/objs/ft_itoa.o delete mode 100644 Libft/objs/ft_memchr.o delete mode 100644 Libft/objs/ft_memcmp.o delete mode 100644 Libft/objs/ft_memcpy.o delete mode 100644 Libft/objs/ft_memmove.o delete mode 100644 Libft/objs/ft_memset.o delete mode 100644 Libft/objs/ft_putchar_fd.o delete mode 100644 Libft/objs/ft_putendl_fd.o delete mode 100644 Libft/objs/ft_putnbr_fd.o delete mode 100644 Libft/objs/ft_putstr_fd.o delete mode 100644 Libft/objs/ft_split.o delete mode 100644 Libft/objs/ft_strchr.o delete mode 100644 Libft/objs/ft_strdup.o delete mode 100644 Libft/objs/ft_striteri.o delete mode 100644 Libft/objs/ft_strjoin.o delete mode 100644 Libft/objs/ft_strlcat.o delete mode 100644 Libft/objs/ft_strlcpy.o delete mode 100644 Libft/objs/ft_strlen.o delete mode 100644 Libft/objs/ft_strmapi.o delete mode 100644 Libft/objs/ft_strncat.o delete mode 100644 Libft/objs/ft_strncmp.o delete mode 100644 Libft/objs/ft_strnstr.o delete mode 100644 Libft/objs/ft_strrchr.o delete mode 100644 Libft/objs/ft_strtrim.o delete mode 100644 Libft/objs/ft_substr.o delete mode 100644 Libft/objs/ft_tolower.o delete mode 100644 Libft/objs/ft_toupper.o delete mode 100644 Libft/objs/get_next_line.o delete mode 100644 Libft/objs/get_next_line_utils.o rename incs/{bulitin.h => builtin.h} (80%) delete mode 100644 libft.a delete mode 100755 minishell delete mode 100644 objs/builtin/builtin.o delete mode 100644 objs/builtin/ft_add_env_front.o delete mode 100644 objs/builtin/ft_atolong.o delete mode 100644 objs/builtin/ft_cd.o delete mode 100644 objs/builtin/ft_cnt_args.o delete mode 100644 objs/builtin/ft_echo.o delete mode 100644 objs/builtin/ft_env.o delete mode 100644 objs/builtin/ft_exit.o delete mode 100644 objs/builtin/ft_export.o delete mode 100644 objs/builtin/ft_export_check.o delete mode 100644 objs/builtin/ft_export_print.o delete mode 100644 objs/builtin/ft_join_cmd.o delete mode 100644 objs/builtin/ft_pwd.o delete mode 100644 objs/builtin/ft_unset.o delete mode 100644 objs/builtin/ft_update_env.o delete mode 100644 objs/execute/child.o delete mode 100644 objs/execute/execve.o delete mode 100644 objs/execute/execve_utils.o delete mode 100644 objs/execute/file.o delete mode 100644 objs/execute/parent.o delete mode 100644 objs/execute/path.o delete mode 100644 objs/execute/pipe.o delete mode 100644 objs/init/init.o delete mode 100644 objs/input/get_input.o delete mode 100644 objs/lexer/expand.o delete mode 100644 objs/lexer/expand_check.o delete mode 100644 objs/lexer/lexer.o delete mode 100644 objs/lexer/lexer_utils.o delete mode 100644 objs/lexer/quote.o delete mode 100644 objs/lexer/tokenizer.o delete mode 100644 objs/minishell.o delete mode 100644 objs/parser/parser.o delete mode 100644 objs/parser/syntax.o delete mode 100644 objs/redirect/heredoc.o delete mode 100644 objs/redirect/heredoc_parser.o delete mode 100644 objs/redirect/redirect.o delete mode 100644 objs/signal/signal.o delete mode 100644 objs/utils/env.o delete mode 100644 objs/utils/list.o delete mode 100644 objs/utils/list_clear.o delete mode 100644 objs/utils/temp.o delete mode 100644 objs/utils/tree.o delete mode 100644 objs/utils/utils.o diff --git a/Libft/libft.a b/Libft/libft.a deleted file mode 100644 index 96c8757e14bfa37f69e74a59432153a8da25314c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37456 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 z 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 diff --git a/Libft/objs/ft_bzero.o b/Libft/objs/ft_bzero.o deleted file mode 100644 index cfe1fcb38b2a14fd921d7ec79f72985c3db1d65d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 684 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%*Z>v30aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7DmfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1- z%29yQ8cYzkbO33nQ-Lf5h>uUrh)*j@%uR)e#mA$%uK=pl0ZMy7&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNPGg+9SeXo50DSk&j52XkO>ALy->G8MTn=2n__UJvq^i`Sdt_Z)8v$I9qsSg51`;uYTqgYo z?q&T^o>3Y-fk?gt&V8rpi(KfESuPE=%3PU{AI)-^0>Fnvn}P!8cHKL$Y@au3$NRNC z&NtT89>t0jhKws{LbF_Bl%vMBavSG!D%?G^JV#VG|2f~e@{w^@`lu?A%g^fc$Uq>#7>XDJis* zEzp{IEuYPdUErw&tj{9LUjpjC!|G)IEVY(P%Rc%hc)T!&5x+x$%Ba)it0!)wG$A4T YO9OX(?m6C(;{*4sYPD|1C0nHM4T&sd0{{R3 diff --git a/Libft/objs/ft_isalnum.o b/Libft/objs/ft_isalnum.o deleted file mode 100644 index beb024fb43c977a5ff07b8d7ec035a1071eac39f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 760 zcmb7CJxjw-6uqg^inb<$gMvZ_hb~>592G4@a1g2BB9G7y6RnmF<;GA^&_iMi!w@$&gaR-6=75QiKQtbJJ!rgz$_4+ zrB6~C;NU|!e=YS--~v4AhciQl!LNju#Rk_Y;0rB26=5w9{?UT83t1GZUBCwTS#Y;C)9C-!H9B z8|SIDTw3b#V0>p$2cxXWX>d9R))S}k|Cq3$PI^*xUpdEBXW#KfTL*5lG1Q)Iaqk~* Cq*RFj diff --git a/Libft/objs/ft_isalpha.o b/Libft/objs/ft_isalpha.o deleted file mode 100644 index da20b0195bfc3228a1611cc01e4a7ae55c359431..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SOFEk0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7kxfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw$ z%29yPOc1v;0BNXGfh+`wk5A2rPb*5yO@)ZX$D_J01FF;kMnlbmav8W87+^}kLPkJR z0*JwO@pCb-0Wk=GECq>oK;1C|NDBb@K>Z8>K#UAPdZBJb7AA@v>e2bMv-U@G?GH!( z9+1^QRuq4q2!xf$-y;TLRq^-p09nUf|A1_I35qfx8%Q#AyZ(ti3}S!*G+r>A12PZ< z7^{L97%K!A1$fvwCID5b0L5g0xZ*zqz~Ys`kx!tF$(ff8qzMXu%Gp2$^CO!cpH>o| NS)7+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z82Ed{fLeg8dj5VMAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag;K7AI$Bf|LRP DvIs#H diff --git a/Libft/objs/ft_isdigit.o b/Libft/objs/ft_isdigit.o deleted file mode 100644 index a0e0f40d01b86d5d7227538c36481efb8e07fb54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z4ETG*fLeeoOa6WyAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag<#WTt0=Qwad2 CK0yZn diff --git a/Libft/objs/ft_isprint.o b/Libft/objs/ft_isprint.o deleted file mode 100644 index 8cf5033396fa25d36dbe5e96031092dc2714b779..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z6!?3@fLeg8I{tnhAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag;46lLatQwadc C8bMe9 diff --git a/Libft/objs/ft_itoa.o b/Libft/objs/ft_itoa.o deleted file mode 100644 index 6b8424d68378e36d6a5611c4e94625e64d9abff7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1160 zcmb7D&ubGw7@e)54caCFD^w5+=)p@QcF=6!G8%5v|ISwItR z5o0ejhk7Z^dUc~{+Oko5X4TfDT+WZLztw&exB(;N<(Ae{vbsjfQbm@Z7OSNQk@BoR zeZGn+c(3$y{UyfqQV88ayMPRBBrmdQBn6#?@J09_KNa+8^r&a|krY&;llY+qEu14B z3iqdQ`dPPmBusuJT<#06=^v7W%ljVhJ9~yOzlqO3m~cBG4pLV*%`Qv6oC8g?`GDxX zcW9{K&~SMGf)Bzh5j@^KVA?K3!8}7T8enS*!@KJB7Xl7 zTVJvv*ywuAAm91~;Xs&${y{7ry1~K#*g!a6 zv#a~%+sW%KXfjsb3Gc&g25sIa05$@3iZ&n81@|7Ez}r_ajBW^5C9Faaoud%wBcQgG zK11?wGpA>P?cR43LB!=lj}KS(!5)uT^r#b0n^MSDM4nimS0cvq2h7+^8L8Qs_zqY% zfnP($kICz3r1TlfB~q`Zmgc5a9r5zWK=IT*6Fhnge0v%CRuP#r8f+8FP>*B@G}+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%cmNf@0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8z3?fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1z8@Z zSOF>+!31&34j>J6Dv*T$@$sn{@o7bgxv3Db_;^(JEr2R@fYKFE^PpS?ZU%-77#lmYz0vLaro;C-koUl&^PorL!T&(u(dqlZqxlB|e~U5DXrSB;{%sum z+d{8fUgU4(g$e;R|9B}4;6uKmbb*432yPZA{L*YzU)4VZ#P8m>=2n__UJv+|=CU Hj3NdADT-*# diff --git a/Libft/objs/ft_memcmp.o b/Libft/objs/ft_memcmp.o deleted file mode 100644 index 4ae0e2bb654a43e15e6c99b8ab3cf36fdc659359..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 756 zcma)4Jxjw-6n&|+Em}X2Hb#UcobMF?HGi2jn& zwKzDMZW+4>?I1W7DeAe+?H3|=;N+fr-+Skski34re}#q6W&|E!5Nwc$fxrs5N&O$_ z@!aD*!ycZ3NWKK6idMPkYrjvL$H{R&RF5pkkFtyq6gMLcp;YGFE~GO>RmxwU2;wHwm5b(3Os2mk)45h4`%3h>x%bzJVov*=Lx4G8Xk6SS>L~f|5Zh*_+;4Xbm zgg^paN^_5MbWo${ab6sPlc2Mlb#nYKos!O*bgn<7Q|d@3)s|Hg+VoJ-n=WcwI!$@o z{05|xXv@2v&?^UU$C{_tBPgz3H?~@Og%VFs*IQ1a-;MKJ&QebHcSoJueSrCk*~g-& zn*Eb!5(Dse{`GoGysljx39W2sMl>9$Vb>bwt6-es0>l4A>?|7hf!&1=pQD29Au`q{ O-Bq@zY|GBr1@QxK3v*xq diff --git a/Libft/objs/ft_memcpy.o b/Libft/objs/ft_memcpy.o deleted file mode 100644 index d0b66830935e4bef0eeb8229d790025509088e30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 764 zcma)4Jxc>Y6nv*45ly@+EEFtK*xFcGDtfSmf=B{3vV?dc78iqDFbV<14?Jxw#max7 zrNP3|lvkz^l0ry%Sg7;dz2t%j4oqg=+qbhXB(ERupD7|^l<)y2z(+P&5SRfMx&90K zEQn^bB9oY$%aGD@>Ynnd&e>bJK^?g}Z8(p2=_5hMeGemLanG$5ik_@h4t6U$Qm(DW z&+m1S)mk4>y97|ZBHRE{I%QefFSw5CNjbdVlOA2tdaLtvNfSin$g?hh)8Nlr<~Sum z20zOEw%(%$O{2zr+5qF=yL#7n`(HjU{5Rn@dcv=Dgr9GV(?*ZXbAB4O1Dj#{Vuu{p zEpTydW84m)xMH`UZQ(b?N%IR3{yIWJGSBAKY)hT-f;ekkS(p!odcmdDec-DqIE04V z&zO%v|K7j8=9Hc>jyB1tTZWZRjon~s4*gj$%R2$l|Am$(t&5SBOfr^@@gxVE@pM`8 Lr0clF>LGmt?|yTx diff --git a/Libft/objs/ft_memmove.o b/Libft/objs/ft_memmove.o deleted file mode 100644 index 215dd01afd4aabcfc28b0b90b7a1c2f4460f6e6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 856 zcma)4K}!Nb6dp}fD%(AHFzVo;YY?4;E=euSAt6e^OAKO)9o8bWBoK;9T)Xsdif+=O zI_1%$m%u#)LYJk3_PyO%-H50M-@fm?dGDJyv-A4-J`6GDn_~C?0pOlU9DvOO35tKQ ztX%6#@5az%1kxoFqEe_;9PY$vEt{UiF8h##^k|l`1=#tRg9wp7)Q@ucil~-P56b&O zY;AhiEg8h6@A#crRxpqp6`6?%Q7DPxaZWEdIU&B!7n4ovvSlFkT!k6NN-ihA3d8`r zO_^pvfQ&Y!d_vB_;Z?-wXWM|+s8??5P5+B$xben~`hXkNJ~uKwepw$d<(jqz?Sn>$ zK56zvnGY1)XeigZ@MzIG@Lj&9b(BUDt0q7tJ#Mu5MSBF}MhdzXQ?3@AHMFF9t!UWp z1Z_sc<_ikV-M<8uT>)F14h`{6OSP4}xo%T6??@6Q?!*?Vti4Cdj7`3yAJ-R^6~40_ z=Buebbv6{fMb#4Wi@@`cPBt33?~o+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%H~)KfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1; z%29yQ7EBPg%mC6*rvh0B5FekK5ua9+n41a_i;qWjUjtOB1C)+{ng``Fa5FGuz}O(# z2#6(s7;G0m7Xup*g8;}IX`og2z^@m5N>w|9JFCD)3fxH(Uod-P{5B>)Nk51ng9?d@(_*-OvMt8XarF|cG zbe{5PJOr{GsQp0)6aUHDCpp!TLcjV9*qk2&>_OWOAO1pq6bZ67bOq`A(Rk0cI?lH zu66I)KM)kuT{>iM-1%@j1P#3Jy*E2E->~2F*XMVN$eJM>z$|btA`2kaft>h1;#Tu7 zT4OwBl0fE4Fb94+h;-x&N5#U_8?~oG=E*LNM6?%7*VG6zdl$8a>jfOvTh)4r`S>vY zJ*OtCY-5h>(l+ympr*m>SGe4CYkrht{=HvOOY_P*I!`Sv5LJv8-UZfx$#2QbQxcGn zOC{fh5PgS3Jo@Pbh==qV#Pk2rXU^c&>3!JwerG%gN4?I7GQ&A^zOUf8?u?vaIDU}n zZ!*s5J=y1vqBQg!ChMD=@TwZ?@|3K$ZP|;d^bM*uk>3FN<0#BK(*Cl2l{i>RYTp(Z j<=bMx$uu|18#(YS8ej!|B`_%H;6XZ6-|Wtk3N`S}%r`spy?IZcKHtBhM4=Ia14e;Z7%m0C=7A=E_`@Eh zzQi-IfJ2iQtjDIcWz;M`_jxXx&;9ZsGbCX>p8b#ravAh+)cWwus+P?oDQZ2a7wE`Z z)Cv;mAEK;xa(sGlXldI#FPjCeH#el!3nd{biERk*nX$3wBcxT1ODFU$ZpOIHqHtJo9x5hB=nuc@hUFF(6-NImD$_DW$n3vxW5?GZ6I8r$qDIZ<70QC?4XcD^7kIcntVwX)zH7$mmeYA3;z2 z7@lJ2#XF$aNUPABzYkwB-2aAirn^PYwcAdyEwtJYgv}pVj7-Wi=0HkXnI25F*fwe} z55ej*$0;D1Wh_q7gYGF?!& zaS;0QUWE4bkUkuVenZs+^3Q;i4$g+DcPCzt>R$)mjQDRC`wal)@hbZ@_8;K!-5$~H m(f$m_a1@85@EV9RqCFx0SbK$>WeSX-M;-kGLInkf4#h$JF1=_K9Q??a@4kEQ?p^Zk-d^70M3Di)3mgP5IWRzA8eC%k z2QDQ4AbUcOp2Xz746SXmY4_ru&t!*H8a8hT+8H||6)sdkE-=-D9`PBPN(H|D0wo3E>H7# z`EEz~PFMNauIIig?^bzEyUl0#u)fn)-c?{#>&Do*<^_S=kNm0;r;ehTv6$3lp!m-8A{1q5PD5i8&}83f9QIjC{PLtrw%)hv WyJn4aqh7JiAY(Z;lDbsHcKQT3j9ec8 diff --git a/Libft/objs/ft_split.o b/Libft/objs/ft_split.o deleted file mode 100644 index 34c727b49092ba2f6d31d2490e2121323eb1eec3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmb7FPiP!v6#u5C=~mm!T3d}EGzAYuTusD-#fT9*@PRG{=|T?;({(zrk?l67I~at4 zg-ImSp^$^3C-vBio;}Fg8gb*v2CD4QLnJejvU6D4q13Fu_syGaT(busyzhPQz2Eo# zeY4;GdjHPO0U@+U1QzfRIJXbW7#Q?4c!eATXr2y$PSP1rrX!{xX16fSn!Q*fL`tT4 z#yEQ>(;mvdI1a_5vtJAg@ff*>M4d!NrfFTNEzDKlXG4FyEKXMXk^R}pRC1c05%Dfx znlD>5)2V(mSG{1GZ=dctv5EP>*K8a`JepaI`Z)BzLYk(1(VSfm$|`-MB|Wz#^yR~_$)=GIIGV%a zxtlOk;quyRSJ6azA}F?`uSKuJ-Za?cwq)QSSE((p6+>n8lCHjdj1C8GD{xXH(j^fk ziooz7IV_Ng^nMzjS(|-9KfXjRp&y?T+|L;LNqnc%G-C1)y8epLm*~qRMQ`L@Eq3(f zCs>#JX^1M-^UCBVfzi<$v8u~AwgV%^9DE}VjBObd6KUO&+J^LtN%U2>+l3p|jLod= zo~QJkaHX^b5Lz`_O$1iiLsiP>te_MOVe8aJubQw|O&C=a$_;TRTdJ0cyS{N7^9iL@ zy3M03#xf|iq;*94LmNm16)CNQ(wkhzbsR#Brttt}cB7Nn2Na-)0Ng@I@Ia&fwCEgA z00RcxgZ>e(a({WAFNWmb^loc_&8pETyMDdPVKB1ZGGvfhr!`Gn)B|9DgCpb>9f6Rw6AOW zGW`mo5mh>0SM)7%V zLi_k#p)KaM{GkK6RpfjY_GiG;>KeOUu3v~ZM)IHRd-E`!D@BAm4Ne$WS5_>0;ON_$ z{u}cFaX)+FJ_Rnflj69qJ#pUyH_kZj??1Q?(LZjfaGvE4=q(5R8%R8zg%d2lL@YoG zJ|s+qG9;eB!nxFb>_tfQT%i9kP@#?mxZ(3Gr&x}$gi!tykRt$Q_e}38>Dj$L$9i^; zldNa=2B^?!VKN|hsp73ZeWFjNAINUJFlTG#mHEnCO_=tgoo&hJyoY~6VOmw})uv*X cp_8k&aKV{RT@||u+k$N?k5#TzE?da)55k_hwg3PC diff --git a/Libft/objs/ft_strchr.o b/Libft/objs/ft_strchr.o deleted file mode 100644 index 0f0c202426d5830381eab492ee1bd9626e5043fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 732 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%cmNf@0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8zY1fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1z8@Z zSOF>+!31&34j>J6Dv*T$@$sn{@o7bgxv3Db_;^(JEr2R@fYKFE^PpS?ZU%-77#lYqto@rOKTX16=XM1=)=nc z|NsBTr-cKg@VM&_AO$k|N9{=4FHG15rTbY#@XAkxh?JD~T^IDN4>LVgLYE|79!y diff --git a/Libft/objs/ft_strdup.o b/Libft/objs/ft_strdup.o deleted file mode 100644 index d96ab0ed5ffbdd7eee8fec0146c58f826f641262..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 828 zcmah{J4?e*6h6_~idq}NLBS!Yn|5(>RJ3ph3q>lp$R(sH719SarBw(BMImHy^k+D_ z`hdFW*fEPxL7`)DP|r#3wNVfceEGif%*nlZe1H2$04Sq?4@3-cO+rJU%_G*y|HHZ> z-W4^{$C*H&xn!K%X3GwB=;t&0`JpdWQwW+zyIhTk88JAOHN>17)pAWYY~H9e4=V-E zcebPXmT)w|IWgw}S*(g`Xq=lRUaae7GmLTmbH7Vbx*@nG_Y(djKuO4e*6=xp2;P;N zfH;DTUP|#N6!d*69?&W>_CpR4HR>hEGmPf`(|gQ)X6;vvxlW&XPQOPD%+2(ehZv)= z?8e7PM`nE1c6>;kB`MX(45;B{ksQzQnb*KE-<|Gl*yUw?=4J<&8L;-fc5p{cfr)zz zK3~R&XN9Aj?1Iu#6?G~xet}iX7+*lJ&(P$50Gre5`N&o>F8Xw2EKjc>O!L?rDaxtmvzgk8USA=scVb? diff --git a/Libft/objs/ft_striteri.o b/Libft/objs/ft_striteri.o deleted file mode 100644 index b14ffbd07af69e702ca1c6ba0618d99d4bb81546..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%*Z~#40aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj0F<{nFn$U9I!Anz}Y}Xe0*|#Zb4#lNqlKud1hWpe7uhfvU~)T zqX4B1m>_PM0HmQ#1+owzK0Y-gKCLJ*Hx(ilACKz33aC;CC>;Pb56WfWW?;yGu|c#E z5K90t*e-r91~woD0g$C2@flEetN_viKt51ELjVvX1CU;*Takr{VuyNkKJ{pRqu|k5 z`@^HN^uux2Hz0i;-L5}8l6~Ja*l;lLx2QryK6KZ<@#yviN`$`gV7%zjdG7xOpiuL1 z#?IO|FHipe|KFqeh(hdPWQ(EkgyB39s3OLyAO^+?0Y(8Hc8&=^RVqMn86eI8ng#-} ncxG_q6KG>{=4C@N9H^WPWH3Ln>G5eL@x>)YnI)-3nLs%J-wawt diff --git a/Libft/objs/ft_strjoin.o b/Libft/objs/ft_strjoin.o deleted file mode 100644 index 0e88db478a65639c179019944de738852d5e1711..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 936 zcmaJ<&r2IY6rR-(Lv5NIB3SScO0O2_DF+WqyD$d>K@_}{Y1l?g$q&&D1|blMO2%Az z>fhqg&>y)qIqp?RVFNAXW{_g~z3kg&bEpr#c|YcT-@MtK?)~qF1tE-ifdvQw*AyfH z*mEF7`G4#^?>X%K9GZeax@1b(xvK5OUcO`Q?M!n&`ojU~(JUzlOf*8G?)Q*a$|@HR zvzDzYrIUQ=gHl^>gZq=qppfLEGw11KAjYGjGBu@g2WtN)Tg-VirDo?#GHHV;Bi8d3 z7KJ$QWAd+oWne;!JrQAmj1Hyx9^b18pF|G6$N)hjE@5WSV8bKvuGBwe^vQ_|_-RU8dYtJ2qZjgFyfeQEt@CL)7xk%rwfr!=z59z3UKp)F=76D6r0cD zmve8TVdkyF=t&Z)ZkL7$xa9qeCEM^OZ HvL*fkEIy)# diff --git a/Libft/objs/ft_strlcat.o b/Libft/objs/ft_strlcat.o deleted file mode 100644 index 1a44b8f2d409487dbcfa82492673fcda67ba14d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 888 zcma)5ze^)Q6rS}*6i?k1EEFs(J5G3iWsMT#^B8&F6YER5gF&S)$IKlt{&_q}=FyujrC>G8RPF{_o~1Ga$| zlnjHwAUH|&2bj^le>$2Po{UJo1S#G0o*U+2J;&$g-fELQ>V*7gmr)qBkk-b2QZSG* zwXwdLOu2F=v%8vEl5+Zo=~1leVpzulOlX%$eDtafTiwQf=@q%Wm0VAUij?p7bM#P5 z4+PrJ%zt5Q#pDzxzyYu^W_Pg&NT5qekLlmFh)6Z&*$mhWnl)_JKa(ef`Y*hPm{12* zp>_hH5@q2ZR0A3oiWgA?rYHy>!W1vtzx$}|^MYvQWgM$j{)R#k0*pW(jWHaL(rSvA z#;=4Q5A4f6?}=r3-ahPy?(>q$dAYiZm%JLY|6FGi`4gT$x9p>Kv@6lj6>H_huN*lE z6%S4vxZ{>4t(tWzXZ3oW8h4G=Xp;i12B{{z+t|Vl#troQA;)*1r3lvkEVK3;%jxdu zJjJOIXhUG}8J7U&{jqPo&T-54o(K&AUqKv?(*J=XX^0V!+4RxqL2N4V@Rwb=?QX55 KlJ0As&af9Gnwnhz diff --git a/Libft/objs/ft_strlcpy.o b/Libft/objs/ft_strlcpy.o deleted file mode 100644 index 98c68f0743316b5bc1f76fa4c587c67bf9078b5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 840 zcma)4Jxjw-6uqh17QYg~LBXMegNsm|1Q$gEZ?GUz!9^aWRur^~ruYFxr7EUfT*TGU zpWr0*195ZIv5Sy`f@5*8o}0YbI0#-ix%ZrR-?=v-PoM8!5hAUL@Bo^DD=uOHq8Aup z{znX`vlo?p4o_mRFNc&?X4~>=k0;H!WP|(Ftt!}$cVPq9x|#OXk(;DUudS}9(w59+ zx0bUDQcg_<&mR?useBRgc8U6aL{J(bWoAh(ZlqQ-o+jn*{T$UgrgB;NDN1cbOMcCH z80Z1q-St)q0~|b*bpv~F9Yi?-{h5afDZ*gJgKZKogggsjkrM%<5 zhp^2TQOH+FKk9&)D1q8$t-1$NW%r@7C?y>Ix~uR>C+4$$$m{V9O+PO~D4Nfgnts&6 z{iA$TGBM#s9Nh4}!cI6v0~#g=w2u?kDx#&1z`RQJj0?0qG3iNbw+{tiZgxb>DQ{*rY(D|W) XzfXYTM_#n#rnRw>Uf=ntGg(}!*iUF| z3>q9;gXZ8l1dh^>eaCm78WHrtchC2od+xd4%jd^eoXD6W9AFfD6p;pjB`_oY4?OAq ztDXrxc9Kx`3Ya~&<^?+NSv!{<`%pPr$Uez3LX;XK4Z&PEDWB#G9-mh(jw*-D+gp?O zjy7psGm#+69jcBBH3qX=;$k&lc7q=C&wLF%x~^+Z@6(oMiAtfCx(Y6W!@tZKih%<8 zRQmTi#{+5-9`9)voP@m9Str~7()+6Qu3Gh;>e#+KP|bRe%SvQf*R4nwU7>`K=Q;rZ^^!UuH9=jF#27dWeJ^%m! diff --git a/Libft/objs/ft_strmapi.o b/Libft/objs/ft_strmapi.o deleted file mode 100644 index 42f0f023a9174375d2eec7f7338b8d8a2a5b0db6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 848 zcmaJ-#ROosO5p6_{|_t*DwcfaoM9)?7$LBRo}fD1ZV z0QLs>K>ZJMOfEE>Xv`FXb7@+8rCl%fW4-KtUVhezcV-;U<1VcM5j+(8q{Or?ZdSGm zMNikNI~&zit(O*)9QoXctl?t};VvDpS@mhGNn^j#x?bBZR7!C~>;C<2OyQj2Q!~#< zc_p%*_~duM1n_j1{Zi5Zjh8acWw=icM;45J`3UqHdx^e9dkg;KuPFbIYW&S9zus1U zt)+r`yTy9-f+N+{Z&7|Tj`(h<8ud`@!x5&MZij`pUvMNqtT)S||<<=3Ly@7-<}{Yd1a>r{rbLgl+1a7Q(M=Dz;m z4T+iW&mH@0%qVN`lUTcskV6YndhjAN5PA~YgQ5d-uprVxFES0=EfLbR#9b^xps-rp zE`|OX9zBW&5h_Mh>>hH+F^32nXd%boq3Qc(XVX>i&=1~zKi~UinK}J)elf|IG0yM- zCV&qV%mc7l;2!1wv0dG3YoF%OWCYSBlhSqe+$2u&RldG@m8a2EMvu-SAfPlR*nT=g zUP^msd$(-6(yP6EUfY!N@uO@%uXW~iF&;~FHXx>3s9c$pPDO6j%iB&;lk)HLl{D$T zrkLrubbgbuiVl@q#CHZzH0uV-0c5n4>J{+m|K7nbz=O}809hk00VCJ8H4*$4{#i)` zjlKxHI9TfnztLybYubb`X4ac&3Y&aD>b;+ogpGbonXp&7!uS^OPRKj{XG7S7Pjr-| z8Spj~+W#sXVxY-eiXZYmG+O)1CRW}dMO`^8mujPL=0zh0x zm5@hEylWlZP53cLk>-Oq?nT1>r9>hn67_y45vT`zfGq>ze4E*2ouh zV!V3FjJ>>(pPDp}F-1qe4ZOdAG%S6e?7^-4!Pvv;oaTLm$9Qoa9(P<^g2%lTsf~J$ u7FzVtHhLR6pM%e|8C^{_XL8GxFWh>~F1u-5b!rIfj-v{8xmw+^N$wK9G^Wh} diff --git a/Libft/objs/ft_strncmp.o b/Libft/objs/ft_strncmp.o deleted file mode 100644 index d5f0590a942ffea99b4136fea66530a1a51a19c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 824 zcma)4Jxc>Y5Z#L!#jm@{s&93 z5KGZQut?6zlxYN02$m`#@l9?niHP99%e;9zGy67N?(41GDumG_@B=ghH$*}Jq7N9O z`j7C>^4#Os*eM9KmqKehnzTLc)r)dzv0nS^nF;M9FSTeE2Q?0&bz~#Hxe~GUPGWaG zv8wgVbmMuRixB6_fak@6A+`#o9$H6ZdTnbZ9`!V>fBO62)(Oro@8eQ*2odu+du^2e#ly;ZQO^Fma&}&o6E3KX1ebYa)Y2Wf zRhij>avs&;T?J9?Ir}V%v~5} zx&;lzx%#NrY>hveDS9z4WOeAtnJpCuSywIePWI>4Dz_MhwFguq~0 J5s7b7&o}l;ioyT@ diff --git a/Libft/objs/ft_strnstr.o b/Libft/objs/ft_strnstr.o deleted file mode 100644 index 10bba56b90c572c309b9a3fe5211716834ae6601..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 988 zcmaJ=&r2IY6rS}*47R#Cc&OmPg9qCpR8JN!5j!vk3!*M~DN{)!7EBboK`EpJ7d3GY z_2U2FpWsPEh0RUdQ!a&E3Q1`p$Fv92@6FD%&JPFm-))_Uu?1`mLAQr4gsan!%C)y zqLi7<+}3KwmxcV!+x#0T=U>?MXIf`eFDA842~n52?0zY;>vC;-HJ6Q7rMy4if+nRk zY23`E@dJ#iQx&H0d<0iCx1S~8WV9)*mo@(kaSRxIwg9({xa9W+wHyAEd!q7H1mDx5 zQf!Gzp&=?>T|~S_6cO@9X_~qF12I4YZ#TaY2#R&H9`QCcH$SVUVyi(2owp(^HVmjj zt1f1E)!iFZeJB$Ol(dofh*Fd2lNTaca5!B6I%T$a7) zh)1W6yWdMpq3SqCh;xKqRc#)$&7dKV5AZmasfk{CX_yonp=402`JvP4;2o%Aq0|<^ zb^6s6dM(r6pSm_{nGI>+ykBI_ZpukL>`T(OPIor~KfZ%F%zVFWb})6&H8+sZyf28j u$BEa7piM04h(I_&8@lw+M*p1!8NE*%Gr8u=cm8%B{wL4mwoJZ}&9mP%!lxww diff --git a/Libft/objs/ft_strrchr.o b/Libft/objs/ft_strrchr.o deleted file mode 100644 index 5df8815da6375cb5853e5789029454873c59165c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 728 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%xB(Tv0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8zI{fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zElV z%29yQ0Zb6LYyi?wrvh0B5FekK5ua9+n41a_i;qWj-wdcy2PjkE*cZr3jzuFpNXU4JxKFz~nN0fj&u{(T($+d`jPUgU4(fC_nZy1oEOd9Z@4 z2l9TrJo^9tfBdRn#2yAJh5=|iVmMy}s(`U7h=H*}fKh;lonrz}l?qT?28ca?_J9B^ o9WXfZ3A8ae^RmGV2GT&~Y#@XAkxh?JD~T^IDJn|NC;}-30DQw^DF6Tf diff --git a/Libft/objs/ft_strtrim.o b/Libft/objs/ft_strtrim.o deleted file mode 100644 index 4a891a2cb4a204f63ecbe7a9aa3da2d1bf9add5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1408 zcmb_cL2DCH5PnWe}=m{WITHzdy!8SG#Xnq>ogawa)>k|0F6Dk`m#RaW@; zd}*1zF8RJnJ_*@5#;VFEdkcCQ8jqo$Whp2L(NKI-?v)>7>>)7fV+#}KP#)FNtVsQ5 zDRTEacYfr#+a7RtxyQZsphqmO(IuaIh`lLx;}~}h1fZ_rdxfsk*MNL(e&L!=F{j;S z`q~9lqtriE>KR>UQ{(0?-}=V5yQla9?z97@znY+;&qheC`_~eN01N|F=qD9kA>eKy zMBk7*JNbp}$_;&LjjEVFHOH9TCyRYT?1NE@*vSYxGnnj7!b>}Z`lo!t=!9sG*Hvvn zJVq~yg{V!>OJh$r-Tx3pk!+h?*j7#dPd`vcr}lGp&3bx6rwhlS)W;lPiWn}tO@m6aAI#`Jwn z;zGUCZHd*p+yvHfuY~^3j=wwsMzAU-Kv?*RrsxjMMvFMakJV|ZmnEb WuH9O)WcJgN`HTsxRI4>iaQ_D40uwU; diff --git a/Libft/objs/ft_substr.o b/Libft/objs/ft_substr.o deleted file mode 100644 index 668a61ca407e94803d103cd34ce28a15a35210ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1068 zcmaJ=L1+^}6rHVY8Z>ot5L8g8;I&Xah{YZvIxvL>f;Q+yh8R;Sq-jkz7?gmrwq&{o zy$GHK!K1h2R8o~Dda!$vJ?0`9h!AhlL*x6|S=PNG@LjyuAPY42& zGP}0Ap2=FWRCsv5a8Js`>p_jMtouys%@q33EG`yZ8q=jANSRxa%f-xU&fk@CbiP+w zl+dDe-A||N7-K6zOn4D~3O?mTknSqdID(vpu18YcWFP7C!- z*xi&+m7Xefg-W*_-c`H8sq}a0)fImxd2EDTqurcY43)rkgOC_#+FcuP#seZbox49K3aD;_g9^%Q+# zcU}{*$z4iNZ!z=PW7?dH+FQfi zoFM6?FwcH(C|vH7`jXh5pM~5LPRU(Ry@jU@8g5Z>H&LCR?K~e02EhfuNxFOEQ991U z2k8U*!v2`L^8u2u>32+>M(l*nj7K+^QH~q&*ktqtSo8+Yz{LTMg9ZNqyLvpnHFj+( zqIGY8pwE+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAa64fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z9Qk`d76MsO{QZ1DR=4Yq<^u|yu76&#L3luBx9gwS!^j3h;{n5Z5vU@@svri&3IRp| z9(IliKvgP0aTy@)_zwZFcw}(o6KG>{<^@>=13=|$AcOglO^;72i7&~|$uCbW0;vN4 Db)`kr diff --git a/Libft/objs/ft_toupper.o b/Libft/objs/ft_toupper.o deleted file mode 100644 index 137ae034299c5876940f6875451f8bafc47236ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAa64fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z68U>T76MsS{QZ1DR=4Yq<`)W`u76&#L3luBx9gwS!^j3h;{n5Z5vU@@svri&3IRp| z9(IliKvgP0aTy@)_zwZFcw}(o6KG>{<^@>=13=|$AcOglO^;72i7&}7EhtDW0;vN4 DyER5X diff --git a/Libft/objs/get_next_line.o b/Libft/objs/get_next_line.o deleted file mode 100644 index 3fe2879730db3b1523d6228938a97ac898c702c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2808 zcmb7GTWDKl9RIS_?pU{;4C-a*SV14Ea&(RggCQi?14l3*(#jafX-!UTHBB^4Seb-H zPAfS*6ec*lqJ8Y}#U~#`)`_L*TlGO&e99n$1dh^&3bB^P-~YQTm!^UreBb|m`!4@; zHuwHGIKf!xIKzV3gQ*?EGKh(B2D3Ck@CSp(`3=kCL#56$q$d+i%UzDgw~9N1~(ACPU=`^ZSEpRHL&b+m5Ga-kXSL z?Of{WbSh!nuZ}2P4j&NIvSbdSIPy3CAY)P_cR(oEwlifMy zNwS9+n^HKz3z&~#^1Ssv){9Alf)c-oJWc^#274J0_UtuG8Wf5q+0yaQx%}TTW_kB4 zHyHHtyKa7$=}Q#MDw%b1R9nO1=XR~7mx!#=VtHoOa`RQDFSMzC4w;|dwftO_>$&xY zK7X1Fd>HrDZrgKz$< z>b1Q5j+YA{*s**nN(Fo#Zv1?pYE|sETE7&r%a$M8vAj?XB$Wx>xiHh`4N3airC1=h zNhVSoSE_y_Oi^oVjYflPh4TDG$nS^uW5_-lZn|#Y@_`OtT(7O#$s4L(FJHI3+|KH= zu<5MrBzPrrABi+-KXN>vE9K?`6!R4@AI5&J{KGTAxv^&kkm7*pvU0rzx`?$j7M?{s z7OeMZgkyW>G_n>^`Hn@wfWV#8aKaCBo4k;#G+q>rxbbZYBCOpyGUAc=a)s}mH1*BE zGxvRSUmUc4t^hM8>pxHDT{0`gdf^T~H~$sQijP(F+ry{bgTA79!j7=?i$hO|@3nR%pZWN^&!+ z!jl!>uztFW%eX13^~`O&g6+ZN%z%yyHS-LDOJ+r1I@g|lusA^byp2kN;(%7$ zgu!9Es=h?Ws&eyV!SPtdivJo}9HxsWOBxFz#o@5JtmLxNJYQaORnprn@9li^y`jIX z(xps`$g)>db;X;0=*U9E*g!3 zs;Em`>Lu(z#Fh0O^7lRJ$9K#48W7($<9!J~#YdRv>wtLw#ya+q^lkxafWD;P1;isW zE&!sB8Gj)kvil4Wu8cDh{*F|zC&q7-6Juw;!$S18oMdM|21F?1y5wJz{4qedHmIk= zl`$mw1wr?YOBj)GP(lFG@BI+49}d)i3w6kT2-JB+C9Uoe{ST153>zA6U=pqF$&;XU z&}zhiw2=JYpp_=Pm8M?bO4BoIrEhl7A9T>np3K^_*-U&YqtJKK(!PRhAzr_u>#C!C~{bp%enCKCcDs}AqaO>y4LL^7GC HtziEGhP9L- diff --git a/Libft/objs/get_next_line_utils.o b/Libft/objs/get_next_line_utils.o deleted file mode 100644 index d4ef3003edb8ea27560f9b335abdf86315d80376..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 884 zcma)4&r1S96rQzE>DO-1!Jxw)x_0R#bWv(y4h0bgb%;@P#UM3gB?*GS43@q0=XmN; zAav>KCD==#P~cHIXy4nN!6k_L;LZ2FH#6UR`{VWNbCO_8n`2lI^N21969KFv(v<&# zjNI!>RyjNw1^E($aO{>7>M+k)C%IX!lrIJO(JUz#5M#L|QV^n8uU;04j%e1d&TAzh z_V?5tu`d%-ayJ&vl7^og6_pu;uq&e6C{*pRCd7~V)bq(Jed(th78$E3O}vdrA%biA z0*fOE)RgKO%t1O2UIXJkJ48f5cU45||Ix?Xedp~Dle;$~?luS9vqs!w+_ij2pYK=$ zy+iLm$l5J~=^Z0XN4ytw80u=<%NX1{fRBdLuxcd-bRtOHUZ{K4m}Kc74ROmZ2F-iR1%b z<|b+z2!De9fDauYyJFnOc9-KaeF5Y6)}!PL$$7~j+KLtd$0l)%@iU0rr diff --git a/incs/bulitin.h b/incs/builtin.h similarity index 80% rename from incs/bulitin.h rename to incs/builtin.h index 0047f0e..a817d2c 100644 --- a/incs/bulitin.h +++ b/incs/builtin.h @@ -1,17 +1,17 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* bulitin.h :+: :+: :+: */ +/* builtin.h :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:03:26 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 23:02:17 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 19:11:32 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#ifndef BULITIN_H -# define BULITIN_H +#ifndef builtin_H +# define builtin_H # include "struct.h" @@ -19,22 +19,22 @@ # define LLONG_MIN -9223372036854775808ULL /*builtin*/ -int check_bulitin_func(char *name); -t_bool exec_bulitin(int bulitnum, t_data *data); +int check_builtin_func(char *name); +int exec_builtin(int builtnum, t_data *data); void ft_pwd(void); t_bool ft_cd(t_data *data); -void ft_echo(t_leaf *cmd); +void ft_echo(t_leaf *arg); void ft_exit(t_data *data); -t_bool ft_export(t_data *data); -void ft_env(t_data *data, t_leaf *cur_root); +t_bool ft_export(t_data *data, t_leaf *cmd); +t_bool ft_env(t_data *data); /*ft_unset*/ void ft_unset(t_data *data, t_leaf *cur_root); void update_env_double_char(t_data *data); int ft_cnt_args(char **args); -char **ft_join_cmd(t_leaf *com_leaf); +char **ft_join_cmd(t_leaf *leaf); long long ft_atolong(char *str, int *flag); void ft_add_env_front(t_data *head, char *key, char *value); void ft_update_env_cd(t_data *data, char *key, char *value); diff --git a/incs/execute.h b/incs/execute.h index f549a03..71901c5 100644 --- a/incs/execute.h +++ b/incs/execute.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/08 17:49:19 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 00:54:21 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 19:15:52 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,7 +21,7 @@ void execute(t_data *data); void execute_cmd(t_data *data, int flag); /*execve utils*/ -int check_bulitin(t_data *data); +int check_builtin(t_data *data); void recover_std(t_data *data); void heredoc_flag(t_leaf *leaf, t_data *data); void error_print(char *cmd, char *option, int flag); diff --git a/incs/minishell.h b/incs/minishell.h index b26e324..0b0240c 100644 --- a/incs/minishell.h +++ b/incs/minishell.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:05:33 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 00:47:03 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 15:49:18 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,7 +25,7 @@ # include "struct.h" # include "init.h" # include "parse.h" -# include "bulitin.h" +# include "builtin.h" # include "execute.h" # include "utils.h" # include "message.h" diff --git a/incs/struct.h b/incs/struct.h index 7edc4ef..8bcc81e 100644 --- a/incs/struct.h +++ b/incs/struct.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:24:15 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 22:54:18 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 18:16:48 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,6 +32,8 @@ typedef enum e_type T_OUTPUT, T_HEREDOC, T_APPEND, + T_SINGLE, + T_DOUBLE }t_type; typedef struct s_token @@ -40,7 +42,8 @@ typedef struct s_token int redirect_type; char *str; t_bool blank; -} t_token; + int quote; +}t_token; typedef struct s_list { @@ -65,7 +68,7 @@ typedef struct s_pid { pid_t pid; int fd[2]; -} t_pid; +}t_pid; typedef struct s_pipe { @@ -73,7 +76,7 @@ typedef struct s_pipe char **cmd_path; char *command; char **cmd_abs; -} t_pipe; +}t_pipe; typedef struct s_info { @@ -86,7 +89,7 @@ typedef struct s_info int parent; int pipe_index; int fd; -} t_info; +}t_info; typedef struct s_data { @@ -99,6 +102,6 @@ typedef struct s_data t_info *info; int error_code; char *abs_home; -} t_data; +}t_data; #endif \ No newline at end of file diff --git a/libft.a b/libft.a deleted file mode 100644 index 96c8757e14bfa37f69e74a59432153a8da25314c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37456 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 z 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 I$)5Lr0GnVeO#lD@ diff --git a/objs/builtin/builtin.o b/objs/builtin/builtin.o deleted file mode 100644 index f7d305b5ac997c03c29b1a340f96f8497dc55a2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1792 zcma)6&ubG=5T2xI8@0MCTCkursGx!oRD>QBqBgjwhf*piBG0QO~J>D7ba!Ga5lxf!HZzsb(J+r**+^X7eTzWK55P4f1~*Oh*vSPx-= zCZNeUmJ}2+1ij0SHALq?$Xn!B#;4sumn3C#^( zpxWxy+|9!9lax|HaNoZg*@M8Kk^VLEbbh^=Bg-tzkX0!mQ!YXR3ONSB>Noq|BWW}T2WDsH%{Sl7n_c$k=a1tB#$vM! z4`>|vo}4rkavpk%;wkcSMkYE6qhoL~QsN~M!gCs)^kux6yT3V#wf9Q#5FgD_z~dAp z7r$Tmyv2E>>y$M~0MrEnfY#vHNP3im-=19P<%*jI3vkfQ-VMwW#W(DNG zWs8U3cVLx0G_`hbU9J>JX>dC)Le>iGo_@}@uF&3dm#FV~_8#Si^`J$%Vu|YOdn^BDDAGcO**vNjt+LcnrmA!3BT;Pz||aw3A^T4o)gu(l_CznZCmAX H#b$p1z;g$% diff --git a/objs/builtin/ft_atolong.o b/objs/builtin/ft_atolong.o deleted file mode 100644 index 88851a1b652e0fc8b979ec1ffab66a019ef7f093..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1716 zcma)6T}YEr7(O$9W~paVkwK(HP!TgLgMuI|!^8gUUfSGtBk8-#K5-{Gpef^PcB@pYxpeyxZC5U*9(> z7<24nm@rB)W@*uY0XvFuneZ-_r;V_b=GYjTjD}7#DZ{?8Ffo-$*=gMBw9%%2TcXya zN40z@V++yzVBsdxf_Db2-YUjwm(>mii_#9$XOCDmR3)2h*r1be^ z->_%MXXCB)wdjk?sx+&Ej(s-@9bn9_Q3*XPmG05mpir1B^d->tpfU%!- zV33h64cbe!>egcQ|JEhqUxoRtNyMW$5s$2hq>-WBNh3{iNh4K&i3GBbBk2`NiMWvy z2_u(iPnipjcza5Cm-+lvmz6a0j8D8GRw9}qmhiTx_a^f57m&^a=Y{#9se6&vGpk?mXdbnA{BjMuj^yZ&6uWMoy$epFT^t{6G~gc|-&EY?69=Z#f!1r1vg=2``xszNMj ztW(Wddb?O-W(i}xdr|jC>o;Gt?5EN{50aSO5{sQdtVn-uGrPR^L3Cn~xv82RoksUbKcwQ!asMWBjJX`HstV^*sGLOn7{-frdOwANu8*&ZREh8Sj7B=%+@pPR#^625TY$#q2)|Ty{H;u%Y=IOe(>CJ(ItGS=Sqg?kL z?ddr6 diff --git a/objs/builtin/ft_cd.o b/objs/builtin/ft_cd.o deleted file mode 100644 index a82628ee71f13412b81d9852b6523d090f0cda15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2776 zcmb7GU1%It6uzlVx=owxN-d-yWCCg{Wh5#=3>0F`=zU0SEDc5_+^n;+KP1_Wv$HlT zD=FJ84#Pqb@kJ={LGVfHLm!l;Ehd;+gw}^b9(-8PLIM%?!H1wR@jG|!?9U{9@W7q# zo^!r)?z#7#o!NVT|G9mDv9`w;9vJ&EBKz>rFd)Y;J|)K^WW3#XoS+y;pd%-vLHS68 zaI87UpZofGWBhzW4`!FC5D4X?*m)#*mJIvZJV78rn0d#}WK+r@L~Fhv&pGA)R@E8A zt8xPs^_jVu*|_P5LiR!?n-F4TxbDPcRn@f+7&{mv)13%oDs@XrA*{4W+VL674+z&c zrw*p7@-3)*N@a%_O9ykp7chD-Uf+CFs}j-&qhgy&{8xgmTEnW z@qcBEyAOG3qo2FQ8ecKiDE<~@y-8W6%3Y(%OT{XSmT3iEIdujn^^EG3_d_Ff_fi}o_P--{cg*dh1i1#^#Khnw78tp2mJ!`A%0Ln~@dFX-^_0`lK#=sxfI)=DVNu29SipD78_2f)bxXvN)(CH?hqu!T++C52 zaJPJ)qK^1cR7kU(mlnz0xDL81pWsQ4Kd&s-z;esK;CYj7w3&h>ZU z-PWi#hW+(n3AMlPcOd9s_YU?Jn^<};o=-D=_Kd-3HmI42L5)-`n{%|h<#a0h)A>Q| zjhvP*m}xDUnYOf?ttB$HWjZoXN%O7Htu_N`A6vm1bN4Y zUH)sz|J5V>lk^gWJmbTz_$PcjYy0RNYnzL;#SR~cTmkDT*q_8mqu)qW{fxcR9lN~m z)h@hFr4WyH*}vuU)IRp)O@o*I*XODI?8*BayamNm``VLt1H2R4em=FoT|686$FD`7 z0^+ESz7E8XN`DE6ces91*)?U4Df>3a5%_CBihGC$@gFGtF0dQ=Rp3G3XFyuVQ~uLH zyi4>RAkOO44$hQ#8$gPC0K}(P{~3t4l)elE_2@T1T8Hj{@Dm`_;VA#RK$NJDDEnz; zKMBNFLGM%gHqM6Dy$eKM{W=gX{YxN3e;*I3$C4`3CxNv7Adu=APVE~H-x>2w~= z`Cbd@Z-(^mLi!gW{o{~M--_n^Oql6-Hf4$W>w$?`JD0*g7h&0U&KA~O#$h6p7kHbP zRz6P=AWKs+o|!IKm?s^9zhjBQY%tB5Gnfll~wk s=^Xwn;XjjwXUcNS3yIbQsY2X_2}>1b6LH6qxlG>@Kzw>SXJU)&KV7^-b^rhX diff --git a/objs/builtin/ft_cnt_args.o b/objs/builtin/ft_cnt_args.o deleted file mode 100644 index 8ed69ebd551cee8a96f9d7712945fb16907dffed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 672 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SO68j0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAajHfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw! z%29yQ5=;=cQ~+tHQ-Lf5h>uUrh)*j@%uR)e#mA$%F9E950ZLmy&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW1~+jtM|o0LTaGX9xgdWB}3&bt|$kQS4BU&Zi!owLgx# zegUcX=yv_#(QLuM-y#d-b-R9PKET-N`o*K$_lHO0K@O0LPTwCdum1o4A1E1n7^DXb zpz(p>3=yb2V^t6XV}$^t01rFI1fVJvptuYWHvmln0a$!8IPwX!F*)GD6#vFd2PmeQ$UBL_xEh;TuO_>yVYm2@>*NrVMq)^HjG z4-s|q*r9_EbQHB<>r~LOi{u6l6zpLRtB~98&AhSQRS!M(&HH}e`@P@3_kBD2W&8I| zvk=N5fd{-1t~THig~Lw4=O}T2by6YhBGte`3{62!dSp^&lT+DX9pHX_p#L8ZS6!?_ zdQ>}b82wPPQOr;XO-l1gc49a)#2Zr9>V-Pg1KGW>kpK$*8b;KgIW{^zXlCVP=ILjR*ne0J|S23 zt64f~O+^%K_H0-S2xcq6`5P}W)sm>D`<=LNA#CMJLYrmcSQXLw7`gu;by@4kLqrIz zL-_MyHp8AQ8Fpgx%8K96oW7yuuYm&W^kKfdc3H!t`AY~}lRz`cV zHka6Vu5Y|S=eQH$PUBI~i*yOqe8cQ3YRm1awT+oN4@_pXysy#?hNBm)6~)$z?mG-w zd;WUKQLRH=8jv3~|0 z|AW3@{QW}QY>hl?xOJ?F>xkC_FEfw(*q1i~-pWp(w>w{*-f6sWc-La>i1-};j2gmg zh=dmzzh?Xx5$(ph5Mi-69>7gejtD-cx4spLb=rWPgA)$V2TP&RgY5)j6~rH1Dl3y_ edQ3<&oircG)X3nFkmL9(&89fYk>N}db$hn=@{G03KmyX97;=j84(2uk-&z!FoKp+TJ@m3u9KJS+Rf}be`+cY z2DXu`V@nkA>Orqc4<1B85Gy%&=+$Gu3LA}(gUBkj_4mE^#>{TogCG0e@BO}i?|Xmd z?e)KZzqOyJw2#oCjiXs(=o~c2LuhMkxQkRc0CJpTAUQ`);%3YwL@bwM_Ru24ncB-| za<+@_n>?J4W2+NH53_lkRv2;-!jIyx87vybXudqpX=DE~FT`*&O`Z<*`R%1n-H$~Q zyx9!qg?Rqi|BM)Hnt&CfwC*9|J*!}mCiPHCA!I`=g!Lt<14ipR$H9=VG|-yKXDHoA z)X2w-Poh=O)KS=zG=av#ld^sqbsPj*7SU%w#M3D>7M`kjzV|Ba|Le|rytzw!7&z zYIs72?%3a2-M?n-OOE2ECNIMhFVB91?am800lSVoHXOP7pyDdvN+E!cgBQuU3e~C# z*G+xp;(n@1j@YYfI#36B-2sX{ygS9d-6_26g~7($^gA$aogAGFfjEodojy`<`kJqj z-n6V!!D9aa&lig!Z9R(4Y{ZpaTVYbKd#%j7jW4CJ-#fS;`BhMRuu&VRd^0LvihGmv z3$yoXo47ceD0awO-J%S(tXje4!ZxC*&3mmLHAn^*W}KtZjB~Q>M2X*U7Md;Tv_ogU z8A?BHhZiU5Xf&z)A{oP9xjz?NsJEK)PCZ;qmShmK7guNGbB(+=Lvq!yPc-hapE8;s z?_ziOLxr?7?1_Is>#6kCX(}z3OXUOmt#x?ui9Le0^3QE0raq#%sq(vHCl2CyRKk8Z z2C{ByKU3!&{kVn|<7eu{od33Py)ou=2n6DxsRh``!OKry@{Hb{|RLN8<6w;02~K?3dB?B zeh7rPZ=+-X1jzm`0oi{JXaT2zxM}WF#?E&h@1uJTh$$zk1|5R{rRO(v3J&?bNDa^L z0e_BccQ7dnhGcVRvUvSl}DU5r2nC z5EH9J2miAecEa`|{?LRB!*(d-auYfP`9Uo3F-3~tKe;6X5`IJa=f!z>5g%L5P=%8FSiIhD2Et#OC;Ar%rJbYz diff --git a/objs/builtin/ft_exit.o b/objs/builtin/ft_exit.o deleted file mode 100644 index 9964fd2dcb806b9bddc3db2dc0b16b7b04cb25fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2568 zcmb7GO>7%Q6dtFgH6e5(NCZegEVW3b)k2!I#7P^JhOV>+tn!moT&lr!?8a5RHujpD zA4{&Bv{_aGBsk<)34xHfN@LsUL36B66^Z5pixu zbG95yeaLuWXiN7-?@%Eiibr!lM39Hcu$L7`c*J=mW2fWRMP=Z;KAsmRru?6(I=%U- zTu()Pkz^tjj@UeFU5;BLoIibL(@6uhkn75Lcpqa_>a?FR6}m1Y=h0CfONSFtIiaz> z>nh&7ig!cBQ!2ZQu~BbKvI~4aSR94c%=UqaC@I-XsG|k4a3{_S67$(JU?NIIOmnGL zI+y=T!>03#SzPWkoqW}F4e&q!>^I$9>mmg+9b?gS^NT`pjD@l>Px;KUu|n=*e!-_r zP&b)V{e#%KVZ@--h}5^Y4S^CoV=lO4p+;ALAaTluQl08pmN`8UIlUuv|P#cG>&?Rhd!^$&@x0*!S!H?MrP0msC* z&Uc#m=apaC#>U2@e_-pX&e`DZ0Oyut{HUrEMo5MLYvZl8`cZ8H9mHH?xmfZ!#`2PfHY1_s!YM!Yz*Km$XtQnp z*-jXGf70G+Z*UaXdbKyHDa*z>o@|K#TaiD&!r`GVagFu!bFs&?j&Z^Kb5XVbx7YS8N_mpfXYPa!TFGj6L_5|H!Sj$z28QGww8>*I12PyB;K`~Js zub6yXhDCO99+f2hA98>g;|Zc;a|Z&xv4XkX;C8M*9K;=nFiO z=?hrdL^K_b1j6Zy7+H289epVqPe(_Z>!5Zr8Ayb!S2l4OdC8zEk6xDpsT}GOYxT9Z?DxNoD2HHs5IpcV_6?-! zXYBNW)~iiV-HmHk5aG}kY+B*eI(Ed30XMTQ_QiOzv*+_a`TJ=dW3H|Pf&^a~9-<1w4liz)^Y%jS4TGmOVG94{@$ ze;na}v?7TVBQH>_8??ng&cC&+SK&-z4uMB**{3}W54;{_wV<< z_q{i7=l5q%pN|NUc}3s>-VHW(;gJJ_-UMGG#}LZDsvXBE2bAi-6vTu_BxT^$13lLI zdHc)r+j=^>OND?4k8)=K@;VuIivFF&e2KTtGAK17GJY_P3VCWr?QhGCT%6I2HozPp~1#V1>@viM* zJl0>s(s`)F2Y9{#R$F226MMi!G%4ASqmBcR9mofe$QS3pL^KsK@m<&`+F7i%R0dg_`(Z^YB_xEGJlx#e>;;YO4JUk%n^?M`>Wvzm zWqX}cPzXVvpkZuxoH(Bi>)DLi+zU%=uZQB3)S7^b2W$BwH-x8jTI+aR+GH{D0+-mLjP^>q;v~xuUIcA%J5F=rjJf6 zO}%Fxy^2U7rgZfS+YQq=e(?S~VOw-5q-NI%~0n|4@F(vG~~{Loo<7ROia(uwFQ5!QHo0_YKyMyVsh79D)2B{USYqG$0>C;>NTdLgIJ$4%-`$Dv$L9Jt6&1 zNXokn2}mn|M2K|`5_g)FgG6tv+o%nv->O5xWPJjOe-4YTP>{8N2Zdf>nP-_}38DNS zK^{b4dQRw#BAuK>O)%-{Ik?Gsy6;Dzn;eUwO6yX^k8C3!(a+#+f2Bvi(xad1(ckIO zzv$70EX;U?i_$A!5^_Fp{Xly4YQ+zPoZ22%{mL}{!=>l@6(0d5xC`Y#y8iUMkX3wt zq_MK%7d>CdTD9l~9>L0Dr8YV1VICKDfZ}_lSgWSPS+9(Vy{hXYz9@srMKa(cWU^H5 W(shwv)!bPji{7PD5!gz@dj11-o)5eL diff --git a/objs/builtin/ft_export_check.o b/objs/builtin/ft_export_check.o deleted file mode 100644 index 91d3ab98941246304b1168bac802981f8c64cc62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2300 zcmbVNPly{;7=KgOZEV-h3SC@9=vb5%O0*Rz>(W4KJ1~L^QoG>6_3bp7Y=&khaWbik z5L}t0Y&ul;py1J)J?hPa#K;!cn|KuuVRwrOM98t*UAz9id2iAr?t=A^?|tw4JHPLH zUuJ%N@Yln`j44krY@iWP><~5$g!LR~g$xI*$tQ*3G{s;=GIBB^%14WH&sy@tS;$xQ z_pUyYqtgNb!J>Q=n?#Z$q!?k##G=J{s_414vmh0m59W*VoRjv?CC(^b!i_}WOXU{} zX3FCw=Of!mbN=?_o)L$yB(ATevVnZ0S_M9tdLSj|R+eX6bI}q3!}z9TW12GG{HVw$ zMRt_2Y;-368fX#}UWIyuje=;=LrMQVa3F?dV~l+PPUm+({flrC;ZcvhW{uiCqgL*& z>m7`$y1@He_v56vL5nn+o-Bd zr*jP>m_a9ITWbCFXZ(k3Mc-5_&%z=*1bx_#r26I0$(7RPEq(KjqE_h|+Q+a3dMoTo ztNk6iG8Cj%&&W){Ow0dCF;c&&^|5h(J2437cghArNntHLRGl8GjR9296RLznwQ)<| z=%KnPA4%8SyUeGc4D_uK>Q;35k#(Q@M-!hP$a5hkJBe|j$@R-yiuzf9PX}k@4KX7$ zJ(v;0zpKryWnNKFRG?rivr6-lTq*CUb$!Rb&j-f={{L#YCiWJMk&JLySgHZuP)c--6l*5O6z@#_`+8XQsP;af;xPdrkjCg!<(s3Z!m9 z-3)aSNSpqpPrHE?UM`-R)||Yjnc59AXQwqg zZ8@Huu`O4;1CW@#Pn&!_h@;r&rErkFA?d;u1J&jc?;w7~A+VINCEhFL_dOO>(f%P8XqKi~9e8l;^=|6+xjrlo&fNWht^Z zr5xSwCy*&;w65ULFIR_T`seoBuMf#5hh)Z6Su1s&Th0x}Gx*9D(xzvT$i<*DUU2gZ z_+WC&b@MK?wig8za;0K)E;(t-y=J;$7Q1NXoYG=svpy`DIZ9+ZUM5mH^bN+R*rMIz L6jI2VfXDs;q+jl+ diff --git a/objs/builtin/ft_export_print.o b/objs/builtin/ft_export_print.o deleted file mode 100644 index 0a8083363dc4ab87eaac7f728145f64daabd5fea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2696 zcmb7GO=uid9DiG5yY?fqN~0+%S&EfjMj9>HLl#r*$P-*p=}Hl0+{{jz#Z7iIyQ52C zp*o2;9U?iX;4LUZ@RXBYYKbwJ=q1T5hbW7rvP%_eU1h1&_4j}CWKY9Cm|IhdT zc$t}v+rR#EfU(eB3_nCGTo*S z@v@V-q*2iAskhQoDP4d5TvLfnR2H%zg&grH)x|JlvIQL>b={oM$F1a~={t1iw=Cn8 zWxR@vCs}rgv58<$_&C-emKcR{knP7JqC-i(i98hG@;&Go5dQ21EF#L27THp+z9%;S zgA&}m&YfRQako@o(`w|&J+02Y(Fk|7ZGT^kR7l}0hqzI{hK!itVNm8yX`3lCPxyYY zFAn-TFJ9(GqQ>36Ed+sLG)w_KyXJfwa_w4mrO{|`uT%~~RlroFZ?JJzPrdfd_+!e@ z44u!EA+|@pYuYX;ozgB-K3qQCSPUt%)Q;*FexRh*qBI`=ljqAGm+8r`2%DT&-4pl1l9v|7cJzE~mJ!u<9IYYodNS zxXN;(qVDQO&_Z|3ADy!rX}@Ca_Y3pA$=yW7jqk2$Wt0%ykg{^^XxO|e2T#TL?LAm&k8cXIUSjsdqNz06?#b}hB$j6Q! zKPcctUTnG^CZ8e#2*c~7CCMK0H9h)eDf!8_>(MXK!wdAX4?X$_J>Wpsedy62_2n#d z=_M8_MnaLp2g38PdIWNMzeN9{E7EAl{24pjA9;7*Ge?5g2HD}?h%HJxS;wAs8Q9I= z@#D#Q_O$x|b{GEk?POhh+Fhl1(oWXbV|N4fW2EZOK(uP$DiA|eKa)5sF%87X)H^Uj zZR!n)S0uhIu?Rc@{WK7N14+rhBKc<}|CHp1BtIzmdx1Dg{T)5VLsoqeh})%}1=9H+ zqb8WB^FWAH2MAK>lK`(U^$ZZNe)S|U47?14-Tv1lj!KM51PJ}-z$d S$Hp>XC@tY)Br}<;!TtrlhHY^G diff --git a/objs/builtin/ft_join_cmd.o b/objs/builtin/ft_join_cmd.o deleted file mode 100644 index eb79fe03c56fda452aa0659c460a1758096af2dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1120 zcma)5OKTHR6uwhq8`O4Y(S?f8EL^y-f-WS>5qse-42rbird+}_A(1?aWN1(Vg-NC3 zY~1)4r2n9ct$J%i$`>ma<2A)&DyIn^nkCNo6m3=`Wu+#o@5;?e>XGu_`SuiF zO%-e_zO4QxV_7J1J;8Y!NXqmZY!)D)UC5uuax_m7`T;cR*(-pAYBEs1YE7a4mNnu2 z5>8|aw>LiK5m5+_kA=&9rB5Co2&d<>T|UtJdK&kI(>0j><#4w&_{0Z$n!a-#k*@O<3{wJn}+-At?ZR!1SGYGLLyo?$JXsJbofPvjF6U zR|ewAz3r@?4k2hbM4_Mc?!w#6$>NBUq7N*&gC?{ zU3yi4%5biTFRHlq{x#FOhGyKF%YO#TefaMI#WVDSD1OGCEf^nXp3l#!I?BW2U}Kf1 z`drG}PxF^QK;xTQEIy;eMvig2cbde5SrYF`w67@6^0lcU!%%RoD9VO_R&`MTjj(n2UF| zjYC#&sHN8anhv7cx}O&m=S!u}il8n1gwiphHDfa_LQg@nyDDWWL0R}x_V1v+#5R_; z0z^ICfldn7vL2mu{-=FUjlQelo~=H)+33K8A4rV{$vbYk%Z=2?P1SIaQswy^)0fMe ze?#Lzs>apGSlggIdarxj5 zH&O4uSr{Yv@d&9wti4*Z+4k(97BsGd^me`@t`yl`7haejgRr95Nq=;S^cV2 zotv3`g)E-^40LxtpUC_-x_+X%HFe`SzXi)1DE95V2I8&ep8`?tM1lbjYjm{4ZvpX? z&N7hemc+l1qXXdj(s^J7hLN){CMaDk@GAvAU*KFjSx>qXwHx@q+K-}kr2T#vvoCDL Y0pVl&KF(NodUev+C>EOWeB0>t2j;_`R{#J2 diff --git a/objs/builtin/ft_unset.o b/objs/builtin/ft_unset.o deleted file mode 100644 index 9d863c68bdc36807500de790256d27016e34cc35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1284 zcma)5&ubGw6rR+WMy>816e1`M=%EPfK|Co!ie1=)l~Nk;Qittk@v=AFxVN2W!X!D zR5*9qf!}azD!}U$`@@%Zg99Z$zKsu3muxIvZ z*4XUdH4n7yYp{_XqHkb1%Y7@p{aKdA<$m{LCMx%Td>M^KG9B$Dj3`fx?x*7VZuO=% z|5{F~&6k*(N0;-&CU{E)>sVvFjA0iGU>#cBu)wr8b2P{HJvyG0TVLPZu-kP>JzicV zmb#^JnDvzT@PzzDmCw9bWtmXV=yS7qdK1?XzXIJk#8*NTKVyp*^tUtj&!=}nbxY7< zQZ`ci9IN|^8oV!KABa1>^Z|%p$aoLT0z)9SH9X~)fv7WX0P!Y_t3d2&6oIId+Y{0~ zX)sc`qx|%{SK&{jr9J6Cp2{0jer3wnrhLYQyU7EO+rDon+a diff --git a/objs/builtin/ft_update_env.o b/objs/builtin/ft_update_env.o deleted file mode 100644 index b2c0a9d9c236d1b8b78bee19c0626ab404b8749d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2848 zcmbVOUuauZ7(bbHi*9Q=*k%V~Ex3omxLOrQQ3@?x;G!$2tkRcymL)fBU7ExscSa#B zl1z5JRQ4dg2+}v7eDOsQmEs2L+k!6!K`gAo4X8vM5<4~izH`3Yq_@e#JoMyuzVG{e zzw@0x_uk&w{`KDjLWCX?_(2~)5AVazC_35+^y?Jp)9MfFz!>GA`8G5Kb<(3IWx*;I z^jO;$qVpFzwm+KX1kzK(un=b`I3UVChfvCRzK~l^FS1k0-Fm(b(p9tf^MHZN-El%M zvyzR)3(`)%xtvZ&dH&o^5QBNHYmJ>{=+U0dKOzKg!7fQDttFYv#a1kx5Uj7odYh~_ zip?TDza11}$sZFwjXsR7jw14?*pE()CMACvbqoS8!o3bezIX|p8tGCeF4YR^1GhQT z`Pr=eGHyDhmg(3{)0y+kN~tL#RhkMzPeiUAqT%Y~Ni5EzDNGk^*KU4EWowTU-2{0P z`^ zr7f)b@xZE0ceYcN;xrk^>(yL8Q7PW8J}%NzBwAMY@dl#>GHVIW@SC(M4OEt+wC?Mfa&d)JICAN zM7>5?<(67Xxzd8@bK0Y*O4TXhm}s}TXoC(PVmMN}?(aEiJ-IitrZYEm;clshoQ>`r zq)_d+d$*<*ZgzH{=lM9e5B`=_TG;#v%2v0p`k0<4+O2MF=Tf?zyw??>`+lmc zU!7(>6#RgfjxWA?c5nhXadpl6l!9rn1iF`<#YaYZ-%nb-X~9FD`<^&H~;5Yi6-<&5v_q^|r@EWacsk<)4S^-#UuI$n&}^Fg2Z8pr?a7w5O~ zAN}I=Vnq8?!=Cw%YQG4*{fY<`heAV#4uo%jbsGMY=-xJ-6f~}1i0Q$hclXU4_CGho z!|Ow=-`6}|M^9b~yotXxkJr3rd9WfR-exBo#96!$fzaU1uyFk+Uf$?h~zD34WAn9g- zr28V`=8PDSfpH^cGh-RDs;%toH zVNjmO_&t#HH-J>f8rvTNX`ZV&;Sy@45XM*;hjfPFe(7Xx-BV80Ns z&jxHE7p;OUtYqb7>n$OZ`2Q-Kh!reprLRbJ7H&)JccPNEu>~xZ`iSvQ1j)j RST4Qe}%6tb{F9{LdK&-$Hv@5E$w1uuK& zyXTzme)pU^cW(C9o!|f7!dTw`!vlQ~J<^YdhK{xyeSrf1(Qa&#fqgUwEwG`c*-MT=Hb)RN&XYyg$yzTd2j{(dflgk<2Q~*Y zC8~5gPUzYBLL%vM&pMU0Qk*|~q!YxzP=#Dj&I0r(Rc$L{Y72TKIX5#r?IiN1oDj~h zsq`93FNQi*>B4gtV;L0^upiG6bnz;pLu@lTHCmMX2J*NExBzzpi1}<1y}MDK)T7fi2Lzhg<(|6O%^>%nL`08q*{uIm><90vr?rL0d-hXkw6JluiYgxk3D2#Yr<10 z-v;?!II3mHDBjqbA8*JR)p9VkrX9b!sOm#4o%;5nu2v|67>mx+7Oqr88i5AHdWh9R zOsz7}GW^3a1Y1U>M6-1iI?6GhB@BEu$=F+R+DGkb^BsHo9>^M!H9Ff6FEq45B z^nRxD9~JrgUdx|aH995w@j7PJQBMO~QO9d}9Op&~h*()|N~PSwu01VNRQxjd2VxuZ zJE9;}z19Yb)pEV+tp>S{Qm%855Aq#HzStqJiGx5()3KFjVtzXfugBZOUiplSYPn~H zX0Y6{C~hFWY;2;>!?@gFhJQVXHlWwQ#`oyGDD>iuYeJTG1$&Ggk^=q}Ik{S<2u|fh z-58iyHqKlY`u@{KOh{eT*fRHvpkvaicEDmA>3 zhl)dNI#J9V)QYo~n<#0fe!H%1JC$V@>D$=^4UfCIC?*#5ZyoDg)MPLm0Hjs1{6dnSi>5l?w zy}dwuf%>qr2bH~sy~S|XFF@k`0HpPADgPJ1ZLr@2ZUvqM;uPsQ8Q1p%?}oh_h>KbO z5sM;4{aYaMt^gxIxF=`Se%Q$YN*=!bxm&tnSbfRNsNLgBbVO(8(U zKL$oY49*w53$lYoL$ZVOOY4)}P=rxs2j}-J?5^pI>gl%WoOavKgzR@hHr`ba|5C`N zy1Vs`h3q{cI~B5PA^VMxeL7@+5V9E;w+=7he>xXNDT`+^VX)l*`vsMrwUNFv?7z$F_c4inanl3LS+zjK1>7p8mG}4lG q(q#OUlXU?yA(5#&TYw|&n0Tgap3J8h&nI#@I~mYa3OwyuN%jwp=VMd= diff --git a/objs/execute/execve.o b/objs/execute/execve.o deleted file mode 100644 index f8605ff1467b328a9267139d48725106f6621bb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2400 zcmb7GO>7%Q6rL?^>e4oAej)`_DF$(fgtjtBMJW*EKwV7*mPl0#F4bhSUdO9!>}YLM zQ^``Kbr8$Ss7P?)j^M(bBGE!BLQgH+sDxAwNRDtNAF3++hVSjpI`$e4JZ0va_cL$4 znfEry&EN0-eTXsT0fq@9fss6bDUAVn4C7sL{D;iZ2FNV!fkZlTG8)p&gs7X%Iz@yc z#QEHt=Ob+&vqS_!`DpLb1Y?hrA;C5XA`!x<)g7y{A`S6;QJ#a+Uyc@1mvp0a;Ad3V z)^(#U8kLJyr6|N}rw2|fxa74YjqAuqrVK7AT_Y)lFw3Ik=xb)UA&GIk>xux=F>|d5I0-!$FVYuww;^@lRgaxd4Fmq0}Bj-TsuKacyJ&G?Jc?l;P*TWaTt zfC@cVqw5#?e*Ru?JH)!z6ff7``F3w_4_WR6TfGH5WAv`>_4I|U(g}5@O{X$-W`qy- z8hx+O^YUFk*Q2-R{#%(B&P=PFSA!#o4C6+=$E_Q|+bZAjg9&nZ+W`f4m#H24s^~=C zIVsQ`SJKeGpf(9Yf~S$y$RpojZWNI3hcMswo&wV2X7|*dy7@eExUDW8`XQ`PSZcm7 z>ClZojMI1LQ1%vO^G{-CSE-dHyU;*=O_hi!2esH4UmD`T&E9>^vIep?1%rPTACc%>rB4t8Hqkcy1mPb6KyI;T#BE zA412CNYG}mxS@5-zacHxLLBoGPZH(QIi@sIO6usL`46T3p469sN%$9m_?cS3gjd#Hl=^+#4TaNsK#KbbNO3oSDs&6@Fz^fzqWz2s zer*eQ1o#mU6g4UiWC``wxI>KyPbtW$AR$Uln%Px}JFl#ll#-yRFSBkdjkZKyMV!2^kb*sWe z&04AGHWQ_)v&ux-bj)Ja5G7k*VaRG4jk<|F)kdW*)~$7{ZL6{>mxf)fnQ|TSSk{r- kG4&#%5L>JYW34zyG^*6_?}u%Mwi0;jwp}$sA`uVv4_4yNW&i*H diff --git a/objs/execute/execve_utils.o b/objs/execute/execve_utils.o deleted file mode 100644 index 1c442a71b7681ec5829cf9d6613b9bb2eef7690e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1776 zcmb7ETWb?R6rQxPjhA*KR8Ud64_+TqqEM)yklF^eVnIvAyp(CW*))r35;lo$g+O5& zH3XsH9}s==C+LG9E!a2x0Y2nKXeB}(M2ghL@9fUhByAB7oH_HI%Qt7vZ1U;X_nltG zeBBHS)DI1GVNs!wQ_yD=I6%Tw2)RTx5Q)LbNQsYx^MYX)yuF8~qp|6~Sne(h9^#|g z*dfOHDd=ZQWTbGe=L?pZnHLVu+xaBVfQa9fjR-7`k#y)!&o1QRdVv=+kIYPh^V{RQ zL2M$TU{*L&;G?Urqdzf%HcHNo6i-_51;Z=o?C+(>UJ-ojf=@tpl(CfDlf4Q(33Z=B zIl_9NBt%308u~a4o9kh02^RJ24zyLMPg11(x7^bzUp1$$YL!w$t45&_6&ipBwMw+6 zIi(s?mTBAw*SxSD*r0M+nTec&a5Vfl)+{4FlCU5`vkB2#ErJlGBgsd+CjG^XRE1{ zPa_k=TiWyCi|FeejrT1zD7tPh(W;Z6moTpuTnlQJ&qlaEH^wKy==Iu`JE5G ziss*hlevpGA{!5mXUjC3P2mW-ju~>eZQqP1)TEg<)P#}OEi+fhTErn`)!Wd7+T^o9 zuROaaz9c+v4v5R&x$p55^VvaP@K|qP1vTf8e+C-)jSeB=e8xumgHO7~`s8nc^2VVX zB2V%eLUW?WAh`U7qm3DYw4g2Z#hv{^7Sj2pJ0^IeoOkeJnZG98~sYC4-YkYZU`i_gVf fns_2@X5a)__Mu_%d?C@n$&IaXcygQS7%==nYG;fV$y{w@gQVva-kkYHkrEqb@%k|&=+4_C8%%;As zrzM>v$}P2Z4eMDzT{BP67{I|F<^4_cF$V5}r@^>S_kd#XS%!Ll(KtfBAd;^l{%$AH zKqRfMNFAVJ0}};gI&nI2G$3 zIL|jz2f9*Ljka_2P9jDye30GG34!{4(zbnX+*949J01CN5MV2r$U z6O7rGY%o5n$}(SsHVfTe(K>$*_g1h~UeuF^e12!qC+US@Bb2M5A2cD_KGs%H_k(4U VZoTo?1JyitSuXi?&Uq`#=@+x7s51Zn diff --git a/objs/execute/parent.o b/objs/execute/parent.o deleted file mode 100644 index 484742223947e21d228976bc7266cf2e09f86612..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1168 zcmb7D&ubG=5PqAsX{yy-#YzONIatUg5cN_OA*C*?ppeEEdXZ;HHqAnsgzSa}AvCa! zG%NuR9{g)+{Q(~R@fYYpFsP724#7j?H@k1+Cg8!3%$u1v-+VihY(D({bu!PGG{bPf zW?_*Kju;HM1Usa{Kk!o2;?x89IW!p==@B@$^oHfdUcRYrZ~o2wC?3$G-eU|#IuL4+ z^TBz}v}#6qM_h0|spsn~h@;IVKPG?0EVPN|~~H0R+^bM7adji~)b zy7f`+zCc0iHv29^l;fJSpgCJ$W|CSi6V;5*i$s$?-I3(>c~`3cdKg(5(Jdr9Ypagh zx4-P$!+rVSrblp7CLdgLNh;J*NxL!2#tIIR8HI=pYgq{VRF{LFIc=Tp$Lk%GoWsd7B-i&q&L0cnHA=q`BOQrm2HI2&gWD zTYckevBVWp6P!<6=L1!F?bJQg=Q`DhLldzp13=^m(%U4ZDmJChG^HyfZIAURr0ec3 zZC2<@z#6j%-CaZyA77g~VPlCUQZ}AOeb?PB($-}TioM9a&p=c@l{7U>#m%}Hefj&+ z56$Cmz7JI$W~JdHO!Z1{cuNKY8^}vp*LFJ`*x(z*-SpYI{pS@Vv>(2L(A^4FBPDmM z^3mSjp5zN@mcBJ%n{N{Judll`juRJE>@}x{!vLqzUxU5c1@)RK1hsJG5=~7j2u&(A z&hRbB8g^C`c5R?@P{G9=dF><}+J07e8bvx+lclbo8a+J}y0t;%HB@qIm5(X0;8t>c zjr)hbC9yeaIYWkaa5-4=H^*wA?KHYy02>m5-0)H4IgQM~k3|eW!0P5N{y2I!L!}rP4 zyz|Qg2{RCRiVgG52^k2vo z#PJI;*c1Qo&>P3_tZE{?A&ls*(c?T0)SHD~mi0KF1NAm`2c{_SCOBRc=Vx%*pEcY`fRmgy(J{_%s0rzP4USjG zSpi24oEO2#Zvvd`k1&ofzK2Gc}uF`H^k>sCy^ zjjedO1BV@$`mI&}WCuRefm0n=C_k5*f_M=1alXE09{R6aXPs|nBZ^Le2z_yv`n zC`>Cqb17>S3c1OJ#xmp0HP-LU&t!zkvju#d&ud$uylLON$m_g6k@Kb*OyzuEdnH@t I%}t7b0d1%PcK`qY diff --git a/objs/execute/pipe.o b/objs/execute/pipe.o deleted file mode 100644 index db42057667a26414acb8eb92bb534f06be99cd7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1984 zcmbVNOKVe65I(7~4O&eU3lW3{ks6Rnts9|;scrBm2DG%$O*z)vvtY*9)}XHwDl0z2C4*>w(ce94}$&F$Ld(4UrAOwMWwV&SY>J~oMC>`?Fw_e*uflyq zbVEsKQS#Ga(|IQ`+yNrrL_l3=NmBbx>VbclOv%C*seknq@)cRgmSth8Xapt2nb%%weP1k2J8MyR5f98!BHqwjkWkd9p==Pc4ndZp%Gxj?>uqOMZwgZYeQRw^x3qJD+JRaFj*aFKo}C8aTiCv;M3S=89GZuGmcNbSca^=Gz)wh@}}%R(2Y`K5jZ=VI>Q@m2asT10)@GqZJnHXVV7kBb@-1Dew z>=-_4rVwu&y8FxGaUXx=#lXw$TRiUP08iorgxZ5+K(yZ155%W$a192ggAvA2#y-ZU z=-Eke#t|U#os1u`HpQO<$)94p!Ttac)NUUmz_c#|-3Zv{OlLy2eXf4C0jBg}M7S=u z+U#p>HgTKzLM2m)1^h3la4MBZscLgE8h^l3Gs^S%jM8Rf Nv4kenTsAo@egh_!nG*m2 diff --git a/objs/init/init.o b/objs/init/init.o deleted file mode 100644 index 37cd140708df3a135f9d0e3d585be7c18851b0c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1796 zcmb7FO=uHA6rS|QrdmzF3K50o;Gq;EDoBe|NVS0hTPRwk7n!7+O&gjfAx&&36arhd zAqavVJb3e>7X?o}S)_$}Q%`!#MNmwk$0FGHz1=tYYkKg(+xP#?w=>zv=Rdm#JwmuT z1s>2YsJjCXKNNBnx=w{7#7BdWL7IW+7?^^T@JN)(n)$5bJMnaAX1X40?;Ed0cr+XA z7UDD&yF`JE7Nv}(Y$l$Zq;+4hKeOb)yZ4!|W5|5vRB}2c{S*OKY`UUva2m#XV_YsxPI zFX@KMRsFu$^4{W@*Cy1Q>&Hvr0A?dg^BAkkJ;$ZfZIUoY?;U%n?&r*nBkF0c^Y?ma zzMt`3E4PI!?{#_mdfZRZbpiSF(86E(IaI66Pl&No-bWobPwL+?^^HR}xQ}_Z?W6Bw z>cGKczHR%Sqc6{W`krZBcMBZ5gb2K2`x>?v@hez-n`a)w;?oSwaQ+VGhdJK~i+2d@ zVlA4ZQ=+*|SU2LgoPWdlXRx?e0~4^2z$hLxHw;U2=U{2QFf2g_+4|YS*m;UQXb8iS z3_&T@=X8x@s*zlUQeB_(EyM_G5{B0p)7{e;liwHzTVlE|8tX#EvMRBZO`6L>r8B8H zT&2p)WKtPr=HpqR%;W8dJ+ULUWA6GkfW5^_|4{RlWy_gz`U7n-n{S4oA-9V?(ZFT z6Dg+%1GEzw?ZBWxA(x@cJn;`nb1r09+5m%-SecJS2+uBfO}~jJjHeSV9C+{KUd+d9 z*D%C*vXd6r1R_Kt@8ukKN(O{D&KK~UmGj^DfNdhnJ&J&Db|z~jJTd1!cif~955|rr z;cUpd;xf1cKBkOCh$PoBN+ImDNad^;EsU3-ei`a% z>VmTHrX1H$M?VL;&@&jUr-zIoye3f2@8#fs%44(q%PiG2vs|p3tD|qhx5E@>WxQ^d z6|-X0&C&>|OIJ9!I=X~}n;U-0XWqMP)MP#qDas0G7DO3k4Timbg3(hyal~NPd6Nn{A`U5uYzHUQ<5}L`(Zx{DTr-p4(LyFP@m|iL0--cyh(qT}MA~ zk5uKGtQfV@hJwCT-!~eK*Y!oN-(ypSClZA&u;U<29cOl8Dan z5#%%SJvnI2IIT9ZM6HYg=_)TCky3~$vEJ_J8nT8EzY6{N2Sq|8KheGZ*vpRleRz(( zaNZd7`(ZOr?sFoqfgG&S_h5Tqf574<^)1*=*pIMik-iSw2m1;ZtB*Bj^&rl_8M?MoS;7!fK}i?*lmNvuc{rd zgs=$VyCKZ=wy%E@!bS)eLUtt=|X6%BUL&VDE*`_>^$$N>6Z2@>W+ZNK#;^*z9 PNaSoQnQ>ejshFj|@QD?g diff --git a/objs/lexer/expand.o b/objs/lexer/expand.o deleted file mode 100644 index 11c42ae8aceda918683a40be3dce811ea8704ff6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2228 zcmb7FO>7%Q6rL?1b)e1qkfMM$m9C||>kb2;RIB_T?iQ1f?oN5q9S6NF%a(kg_OT+g(GjY60gn06sZ{F{` zH#467_5NRv4l-su#xQ_~z^MZmGGNft;AJxGM-%`$MlnQ6MovboL?%Sdt=Gswk`QNe z@1E6CA4jMV5apxTW5bL+MT#MIfk2ZGPPOJ2y?Lcb=F@o)-lG$btBC?#uGS)7d7)xE zH4%6p7QI;^-a4&qglSdRIi-9B`AF5m0?IUyQV6#o=6rj>l>y26Dk^A2<-4TvDUm(N zSV7MTUj~nZdq-hD!G^&^v?%Gjs3T2?Oq52xZV-{w&+j#AB^jWER{SfX5)M-x1niep-#d5@V(Ut_Yb@zdSLDBtb}&-{n| z5ydk$To-h9lR5%bDxDV5GJmqw)>9kT0L+HAP> z+V7zK6IXe2ePVjeJbHmFYQHku`*m@075m>yhALv-Y{Xdd5GA=dd0Cq}6pO5?hVEbu z?0aK*YSUbLZV#uiRP(;bnqOVZE(e>R=Qb~+VB9Iz$@iQa@nBYNZ1C{fk8~yWscB5t zM2D)*xMOc^ZBf(cH8Z_7cicR>hzyLasD88C{o;PeoetuGRa)r0#mvQT5p_M+reGw* zsbt5wlW&_>sF6u?kv2QZwVPLsFxT$5QOKvhe6 ziFQ!^Eu}_|6H?D^Nl{6Cj|}}GLA@pRh#!+?W_)yp8TGW0K6Eg(f-EmU|17xj5IX`= z>ofNHX!^4Qrw;4)j{Hu8>;FhURmYxwCHQ3@Nk3K3F260*ixPvp+{;|clAgnT3+Q|!)oCMte;9^WP5`hM9LZoODz zVy-6eHT4`DbEn`s=S8_zaD8o<4Jumye&AMX#j>YOC09<1RlDQ`3)-z(ah;-F(&9|X z_RcfmdLM|YYx_=tiFvmsJo-H1E9qkN-Ac)JFp=xK-Yop<6`N41P>?%Yb{P8?-eAlk diff --git a/objs/lexer/expand_check.o b/objs/lexer/expand_check.o deleted file mode 100644 index 1db58f08ebe222d810a1f42c911e4b6a58f5d158..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2984 zcmb7GZ)jUp6u+5W``Wd>bZjtPN25mcOQf4lq$o>WgBP(NbH&M!*Yx#u3Cof!e^@9+ ziZ78qAB73~#o6F+4E3FtmMm1Ta9)U@VZL4Xt$x#mi&^QZjrp8sv}2FmhHQ zC+0#v8##COiL7R$`^Aj>k?p3&*bB7O#pa1AG7K}D%fyoxW#B6BtJ@yi(|WtQ&)fHl_6uhy%0$!zIDk`y|&9ZAk-L{coD& z&hOm*V}v`!P448Y+?lL!H?qmyf>tGO+=;AnySUEu5~U2?I(Nf3IRYLQ{ zlQmTK2g*cPx)X3Wrop7j?SjViazEi0-?|B$ghVQ?X4iaS{_7#1&L@Vs7j5oYDUW7JL;b!l+zTBma*;}Xd@^`SHWZc3VPjaDXC|oy>M39VA z{FOVa$bC(Q1li56IV=B>#16`;lE86!+q;AIijSMO^yN3j>DgPz8l|H!s;gl?<$x(A z{S%VrZgJi7(Kh>VefIh=YgI32;;vo1i;X^&`O0W;82a)d&E5{^rK4?By?U7ol{l5f zlR@OwNfCF@qW>N{DyQnz&|ip`s^Ue7ZZi++%l&@)!Aqh))KMHjJ3NMYl@-Z6ua`eT z#K_pEmtJg4tHt^I^zv9^f~OI9CkY-?3D#gwJ?Zr)z3W)5PWPc34gMTAQA!BB_c|ApYZ@V#i8eapR%|Aw2e zFu9?Z!+;;ZfxC+O_i|U(|FuDTC%6#V&`Sa6+c=@ibZrG*zKCorp|14Kt9>N!B5KuD zUb}GL8h3u_qyn$PhnE62R#&rjVt02}6}{C>BC16z>bZS1(t- zZKI!}4+7|n!0oZWAwM#6ZS;qPIrGh(VZMUj=kM>)t^ymx`Vhv}1EdR*@iR8|wEy#c zrw8P3fQK6gZhl+fWF9SX3E%-Dch(4&Ny@)+{1%=cyK@t(=8~fR*Rg?T>lT5bt_U|^y&o#;Pk5rFm#%#_=WOIpVHph%~CUpV- zY=)J|q%ww8h+_?U{Ani5DCTC&GA|mbT+GTS;d0)}=HjWO0wyd>1umPm%y=}R#OXvd ic@eOTWvL}AIisd2g+<#b$mQ(&>FlhOZ%nm~5PmgzmCR%dcvQ2i$j_L1AfRO;r$U6)zwxlu}$#}dWdSGA-vTF9sELaz?GDQZYupdDQZDCwTeI0jATu{K^2+bG-c2 z0MiLxd0d&0n2*H#nTFog4+8?mc;!`?PTo?*=ng?_OMGz6Qh~I`+uzgqR}*(M;@kkl z=-}+aywa|_SqkN-YrG>0uRm{0vL-!*cVqnA^*Mfgim@T}uY0FLyuvBKPtsVQHz#yQcr8@nMZGMXPMN$> zho4of*8<>ZCoLq|-g!SHwE;ThY8$O@Nz*2u4YQ+HO2h1EnDfKzCwMtN%s$4;(P4J% zw%w2ePFB4)F4#*c;IwH&OH`X4GV^RjTkf+*%-dewY4cj{0WdG~tpV{zjdN(_Efy+9 zLXkrUtqu5&Vg6~1ja_&fZ~AYIXYzfZ z-xc^B`$zkkyzled9AOO26#EMMLlee60>@Nr5j+e&50272_Byx)eH#k-|AoCljMc&M zi_u z!Xc>Rw9$j}J7e_V<2wPJ!#|*pA#|zgqui~3(q~`m)1U3r=@r`@Pja_T`|j3H_UTL( za`SFh+OxAVlU^z?xtPyg#QzNG=JUC{bc<=s%@rj69c3LGvhq)_xOpZsZjo3vmtU|m u(n;A+E@bTNypf%h>-5SQd#RvZf`y&DYZqKBk$3Ub5pH&tVdX^|9P}Sb6Jam_ diff --git a/objs/lexer/lexer_utils.o b/objs/lexer/lexer_utils.o deleted file mode 100644 index d153d6cefbeb72dc9143be3adb4094b159a5f10d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1228 zcma)6O-vI}5S~RWtpcwHjQ?>D9z4j!69*4V?8Y^b#283=A!AnFhNCxchEt=#h$p>z^kUM6n)KKJq0V&YK^tsz(s^&bnQ!KO`*zds`@fF{0JJlJ z3wl5LHU&C5+GX@H!ac0i7Z-joM`4@^0hf62Z_h0I@NMVAnh(r8RnG7~=|&c{sf@D{ce?faY1@S|jx8 zR%A9Td!jBXBT0W>H$G^_rne`8i%9FPr3~@r3l(3Pd+#){aTXc1VO%1!?tj!mvtE1O zYPGtXKm->~O*$^;0QPiV}hs12H?}grbYe;IL}#yoZL(L zqVdMX7VYmoIw5!Dk8ESzjP((#ixmm^zD#MteG>7d z=dUcJ(m9^bT%FBKa{g*O5MuMGavTnLY-PP>xBaVjcuIYl6epIjaMD6>-dZ`y@fWKq9>`p97 z2bwO71!q*)MpuWyt&_+xwx3xu-9*dFSfAY-E*mv{`3Yf42PAMnw_ZK1*?TOee{wrk z&etkN?Pf$TQDTkfgl6cFWZg|{iv#RkU+J85=ZD@{-rwJsks&SQAkmcIO$JOiQxMB#Y1D#lh2FO|qO zw(YeD@^5@80ztuAMtaGRo>1(9W?swJzM%<_AyPS<395bFv(wr8!rmPW1{HCI1{I@#vbr>=o*P{qMC_uZjh?wc0Ob=QVRhfuE5>?|#yHe5BDh&k3q!hjc~mXwtp;P-x_I=)62~__kXNo% zh#JG)t9fBMyV<8DU9S1@)Fp$I{V)-zX)zfdTQ?r3QE_-AI{IP|9?&U z8AKGm#lf^+PA$$r)&_q_imKiYiu0@F9*}#AQ$0eyqP}WPsdvDBMSV=}9btc3MH6}d zbrvZ^Bhj8y+I4uLmOP1d^FBrapyFq2qBr{Cu?vr=&!fdirK{7jaU!g|C{{oo!9|IGg;vm1@0fRO27I^_K;z25x6pkr8 zpfHe-zXIF~MIs2!V-f8s`b9VR=rq6ZIj4x#8 zr}00DTiNVNVbPD_T^7A>1=X0}ji;OSw^o*5$7td6d@yRx7ivG4` c@Gn!EKpB4z=PaL^oX=lwQC49gm6>GhZ?j>rlK=n! diff --git a/objs/lexer/tokenizer.o b/objs/lexer/tokenizer.o deleted file mode 100644 index 6469f12bd3cec5d3254a929f558b59479433f390..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2212 zcmb7F&ube;6n;t-XOpH~wWN^H6pK=5LfBw(i4RGTsSN{-Nok_ui~!^8zcIZ14*i}iA74c68MGE6%!c7i*Ybq$p~!DZM4R=;xL_Jz$vM6NC4M!Rr`2QjX7o2gZMi65zTZ(L?W7P33vary^*x0!tPDG&J9DdgJe@p)c#vX2FmS?Lst0mOS}GsN&!`& zO^7IqakH%!4{YBaG45--&L>lknG_KSMOicELN5_h({r7%Z+$)@bqxzUCZLi+AmeUH=xt29nVy z;iH6b|B1=h4f#$pljIJfv=v$5!$iYsbGPAh3g?L0{|kl14nXOp>Z^QX=9m zRJT+vT-yfxiGJxUHa(%H4tWxT^=n+9`07q9p0vkrAx>nE>wbjWslT{g8+>D8R$Z{_ z_K`03QaF#zOp5C2;i}cgu=^#PdYqcyT*y_H5beovb&>UT z?gjBOq2u&a2aPvSVZJi=N8}%vd~HOYk2y=?#`lz1O(jwX_gU+hjaS3FlA(D|;d{BC$Z=q? z#LsM43;qG)KSz-BZCK9#iw6#%^Sg=vX5t|%mg@wtSd%kn@)u41EG%x9Gp={uc>yvA zId@_4#dUnxBK8ylMKpNy^_r3^Rif|1SD7d@)i8br04r(UwW$r z#B`1Cc;5~~m=wF_b zBvKuE95`K-HmxB) zAx`PA@?t|&;zp&hvQ&GISr?E$2e+WbX6}txKiPP_aN|T(_q_vRy8RZ2du_i2V$1C( zKy10~0I{$3eP9i^0mRvyUdz$G2!xh>9*7^a0jyW$dL4nWD+mfSi;Mhrsa`MfOC`=v ztk_Q_ezwGKmAD|~Kc%ooP7pZH1+`U3p5Ko`LH(fD#sw!81igS%>>=m*Ja!$=7vy%7 fyG=XF*%mbL+E9v>8-*&LML4-Egccr(!aMl`$b*|@ diff --git a/objs/parser/parser.o b/objs/parser/parser.o deleted file mode 100644 index 09b55135c73b78758a7e6d8dabba74536bae5f55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1660 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 Z6!Hcbl*mJif;s3DkT5_ diff --git a/objs/redirect/heredoc_parser.o b/objs/redirect/heredoc_parser.o deleted file mode 100644 index 454e9c2c43d6883d969e6157d918383daa95adcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3028 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 diff --git a/objs/utils/env.o b/objs/utils/env.o deleted file mode 100644 index 662f338b49d334d4f1f7adf5493cf5ea2d3e9cb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2148 zcma)7O=w(I6u#5OWLjI_fUU$L8l?4S@oXy87EEA*eQ-qwq$Jpd;dXd=aRQT>Fh4a7 zOo_g<He}2zV8^PKswhnj8S{kPpD{h{*`Gnh8}huA6+146jvN@=0+r542FnK*El@a_wGp@~knFGRfJ;!@VF zh-%@hg~FT=pI+%Ju}D&b0ITxL*f`>msD%wEPr$yALU=hbU&=0eN*T{@UB~-Lso6ap zPqXYrly25U-v^EYmF-UY#wGH{W!^kOecES>-D(*Yif2= z$4et#hX>VmF!O|mwYG8zoQ7X}lCW;m>4UhzH!iLs%t8>B4|I)kPc9vzznQ8*3zCx*ubvAMiojs_lIxw@_LO zDW8YKh2M;cX^7FDfOgB-rKr&-^r02Dg#I#|Pa7^wC*^R0sZ{jxeqoD;$9OOWeXS+K zBOdiWbas*V*zD$Ao$t8JR}OwTr3Zjc*BbYeFppPD;(KP70C9k8A5jA&i zL}?D_uWQMV%ISbUMHd?Iw;~7hr<9x}R<5$daw?HJF_OFstFw^52E4XQ4ej+z9&GBR z)SV+Aoiy(t*P;C`9%xO{YM~{*0zu*aL5x{R1f8FFORq3uu203cu4iP#ih?A}B6^{hpRz z2SteCw5DU4f=D_2TPzqDpg6>vIdRRKev&Ea&78ggKj6;RV>}(;LH!po{;e2KM{Lmk zOpLz}8|Ho9(aXs!My~#r`_)6_jJy%a+_6 p6EeWOG|iVQ<%Jbb=}X>X@dnn24EdawFBXU^c}nJH^ZBC7*#D06zT5x+ diff --git a/objs/utils/list.o b/objs/utils/list.o deleted file mode 100644 index a67392cbcb7a4f19a4f38df9119f9d735aa6546d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1344 zcmah|&ubGw6rQay4cfXZdZ;2a2SG0t5fAZ}Vi#60AX>po8Q1)v!88qKYeOLrNEMd7 z*<$eZ`RdGCGm%_RBs>*v9=5Y`ES z1)hTMQj&$kF2HkyC)m!EE_~r0gTX1tiI+^upxg>{uJN+_X!##DS(SN+kF<2Ks3TIM zV|pk`SzKRh_{BhO)Hkd3l9YFslJy4jba>N)5Yo~EA3kKPTmvb~tFrRUUn?8@zrG>! z?dr1l$b1aNX(3ikPVokO4z9-RQz8u~qeE%`4Md!z4J>&C%!_;Qq>)Z?J~~-CHh<`a z-@Wb+=N%2dy^5tzGhXNpy>5Fb>=&~H_uZJb2N?npYM~n=#$NY>v$9vYX3uX^UG$hQ z>xJ#u3pa=)7WOvDW(OQn!fifUXb^zJd;wl|AZC7(D>&&{t-@+vgMNpY^_YFrj{(8E;LfpXYgN>%OpB zj^)fuXL^{qjQvaS;cp0ru|6Rd&p0oqZqKH9j{271a|gPQbspJQLtlgYSnrX2uh6%{ zeXRRX-)r3h@Usy6kcQ diff --git a/objs/utils/list_clear.o b/objs/utils/list_clear.o deleted file mode 100644 index edd371a8801c50b74af9179874ab23aa195c9a18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1028 zcmah{K}#D^5T3*|hFY_);30xwD7|_q9(qi%fra)^N`!)hM~Ewy#wh8QEJ8rowh)$r zKf$BN9(zx~qXjP>y%Z8q$VCVqOuyMTFG(9p2j+eA&3td(?0b8DcXK~al$awd@D%(9 z2YEPb8UCF4KkP(mmx7j~C$V#1Hm!Xx@J(!Zsrarm;WoOJfcx<*0UA8uT#AkutZ7}{ z-#e&Oef_E4d|%(z`t?g&V;l-82>wi(Sx(RoA)A09T6?>Cr%~DSEdO&pdk4FwObUJM zw{dEL$d+QoGpspyd@asHO2gUsP|kms{a3)J;Mh-Z;M2xhcDdT=(tqPkxBbfvua(NkPp6_F(*rkKSkpe6@G!_hzc?-jxk=6H z!mcWJoK=!}@_)~>G2TsXyEwq81N3}ivI93NWRUK;QEOm(_gL4z7>!2pcbq|r`ND3# z+=)Z8d^0d}b;qKSXP&7qNj-7+mJ)$Vs7LdeW2pFzR^X@iI2b1ViC$#Y*W|`xTK2Jy ze?(|x~TN}SK_uQSC{5*KbopZl) zzkBYv=bW9%cmMoxw^fM99)Sl&Ge)!t4;=$?4C4YV>>^QYCh4F(5QWK1gZz=0rejqc zIhS}ib#~atYW5~?Ab&JHevc4O(PFchC#A$Rb7iMgD2}tiG{gRspXWLD%PnfB)EsWZ z2!GR4b~fjjuNG$t#Zl8dJPB_0F0=*8NNoiH8Ey);PM8kBWGwZZ!6_e$H9AACRdk`9e_T=BUcK7c zq%E|mbr=lSj$-G4zq58Huw3ojvm^hZ0RL);->faHkYTB3zt1t;Ox4z(hX1)Vr1FTJPP>O$PC`Cka%)j*qO4J*u^xC!)~W1lL#h>Pz)>d!xo; zY6C|d_Wh#r8>r+hS;-BM;$Gc3lL2OJImGd+aR(jS=#30qq~oD#{OPZ&YRGef)%YPm z;%X?8UyUmP5?4c!{A#=xAWSjT9ddw%X9xYeI(X1?u%;aJg&g1)@Q92++ttBMWPLI9n{ohp@J0mHja)m9h<^k> zTn$t`vr#)FyF?#Z)!OE1Tev^w>hi~p2DzGAr*+S5F0*b_yRV@`I)Wzm#5EjM_K$K? z>(wtK$W-l{O|KhqPOuvX_`Ic_Q`qDkHL@CuB}3wrEK9db)^usqDuq^(G0~qHNa*-L zbm{HonCKgNHh_jw1L>hu|8PPV&a7>9>D@7&oK%x;-vnE1Fg=(`=vJjrcHnT-a}V>@ zfTky`qCN@I)@U4B>C)|jZ3&*2tkFWr$~k@zDh3r)w=$emduDJ|@cCNGnwugcyUmuy z0rYc|+2Vu@mF_=jWhct|RH0ZX=dH;}s+W?VkYI>>DkC&C63H>N8f4qL`mkrc zUb-X)rP{Xtu(XTF>q8<^iAUo5Tca1jdKmTxFfRU$&VX=yLi8Poztz-#ulkG=4{aih z+mgp|?#QDH_x>w+9Pf_2W$-RAkK^9Pdjt1E49OX2q~=H(8Xv;sDaQ9f<1hIOUYcb8 z8Jc)2j6Y($%y@~h&3KIQi;Pb*evENDAcSvf5P}(#_uq;85bB2 zGEOs2Fm7ku#P~L9gz1sX&~)Ahj4v^!8q)e1#?LWMFm7ku%9uKb__vUI@^=H8@K=mK zXZ$|nON@(*#~GhsoMikmG+ejzvesEcdGSB@Gi_!|rR=Ok-qf`5U#ufcdY!4cX95{-4PlmN%Z@cA%v|2eO_=mk7Lqqc GvHS=A_CXl{ diff --git a/objs/utils/tree.o b/objs/utils/tree.o deleted file mode 100644 index 2d8f9dd2127a596f75e0b7d9d27c9c74c0720776..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1560 zcmbtU&ubGw6n?2S4YhSw@DN4l9z1w35(LGQB-n*HSSZp!FJ%myjVYu*2pfz-AebsF zdnw|^@q4?oX-aKTeDLObzvj(1ZzuWs^T*)?QQ{n7 zfsRAB*f5}wE6{uFpCa?T5wfdlVjn$;Ri#Nv$8I=W8Htn&=Hf!^9btMbvbi5~xp6*1 zIIW{9LO*M5WxZ%QvcCFsd9@_v!`ab%+$Y`?fCzIDaX%t;QnX7-yCTcA;))&n$N9Zg z)mu@T)m(%Qa%sz*Ecd&TozVPO{ZaxhNgjeVa zcakHblTUG#vh|_u&h>?7_C@=%v9zPjv^b&8&+_@gt^00a4+jRMZSYND`Z#+EX2(3> z`X0Z99$RP?h;}1|(o3=H4>^uOZA-w%Ur_AxEI6zbi@5)NC9MA>{irht#& zcB08(O8$pvT)zLFjqvmE{aKzx5I)byjMkQNUPpK$Z>Y#=`E8Y7JZ1l7)j#q45hWUW zLZ6yQZDP-L#IHfcFHnUjenk0;`m3=A)BIau;ksGqJ5{H6{IRZzy7Xbx@2t8vsM}O^ ziuZ|r{FcUvGB1Gm-DkdG593uJK1}8@5UFHNp`j2E#`!60C}?p20yFdtHXsI+^V`b5 zseC{v_pz!}=<^IleUeViwq>zYlC|Y06=%e++U3}_s&=uaQdZ3_I<`clO!()sZLE&8 Kiq-0xMf4lA2tF79 diff --git a/objs/utils/utils.o b/objs/utils/utils.o deleted file mode 100644 index 0afa552c123bfc274fe7c0c6ba2272c0358bec3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1756 zcmb7F%}W$v7=PE+T>EgBNHD0}Aj8Xs6@ie^iY`sjLWn{KpCD;tjO_~VHu;|IQLt?*vNN4-7m zLPRJT6bl5dNSU59^ju+@15&o~xjgRv-{=B8!s9k0;G3N(s%b-(3iG+bl$4J~n@Jd} zJl6sTx4=h~?=T(QrQGS|bsi_{^)y>Y?(5u4wt zH0&mOu?B7MmX8WweWIbXhiG4O!!A}VL^k3S!ep?S#EDas!{w;AK6;Rd_bXN_orMt7 zZzOj2Ay#6yx)v}KyNZ>>77qsQ3aPIt zipE|7gTNO+Jf5*3U?=c45btt#AIDQbqK-3083A@Y3k;*cJ^%acQ=ViJN_qGG!LNilf6eE2`}})8|CY}evZ&8a<9jGIU7yvZR?ZoS*$#dVPE^Q@A@g%a vI +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/21 17:42:18 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 22:40:20 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 18:09:12 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -int check_bulitin_func(char *name); -t_bool exec_bulitin(int bulitnum, t_data *data); +int check_builtin_func(char *name); +int exec_builtin(int builtnum, t_data *data); -int check_bulitin_func(char *name) +int check_builtin_func(char *name) { if (!ft_strncmp(name, "cd", 3)) return (1); @@ -34,27 +34,30 @@ int check_bulitin_func(char *name) return (0); } -t_bool exec_bulitin(int bulitnum, t_data *data) +int exec_builtin(int builtnum, t_data *data) { - if (bulitnum == 1) + if (builtnum == 1) { if (ft_cd(data) == FALSE) - return (TRUE); + return (1); } - if (bulitnum == 2) - ft_echo(data->root->left_child->right_child); - if (bulitnum == 3) + if (builtnum == 2) + ft_echo(data->root->left_child->right_child->right_child); + if (builtnum == 3) ft_exit(data); - if (bulitnum == 4) + if (builtnum == 4) ft_pwd(); - if (bulitnum == 5) + if (builtnum == 5) ft_unset(data, data->root); - if (bulitnum == 6) + if (builtnum == 6) { - if (ft_export(data) == FALSE) - return (TRUE); + if (ft_export(data, data->root->left_child->right_child) == FALSE) + return (1); + } + if (builtnum == 7) + { + if (ft_env(data) == FALSE) + return (127); } - if (bulitnum == 7) - ft_env(data, data->root); return (FALSE); } diff --git a/srcs/builtin/ft_cd.c b/srcs/builtin/ft_cd.c index 608876e..6321139 100644 --- a/srcs/builtin/ft_cd.c +++ b/srcs/builtin/ft_cd.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:31:18 by kichlee #+# #+# */ -/* Updated: 2023/08/15 23:19:44 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 15:54:01 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../incs/minishell.h" +#include "../../incs/minishell.h" t_bool ft_cd(t_data *data); static int change_directory(t_data *data, char *path); @@ -24,7 +24,7 @@ t_bool ft_cd(t_data *data) char *pwd; option = NULL; - pwd = (char *)ft_calloc(1024, sizeof(char)); + pwd = (char *)ft_calloc(BUF_SIZE, sizeof(char)); if (!pwd) program_error_exit("bash"); if (!(data->root->left_child->right_child->right_child)) @@ -44,7 +44,7 @@ static int change_directory(t_data *data, char *path) { char *buf; int res; - char pwd[1024]; + char pwd[BUF_SIZE]; if (!ft_strncmp(path, "HOME", 5)) { @@ -58,7 +58,7 @@ static int change_directory(t_data *data, char *path) if (!buf) program_error_exit("bash"); res = chdir(buf); - getcwd(pwd, 1024); + getcwd(pwd, BUF_SIZE); free(buf); return (res); } @@ -79,7 +79,7 @@ static t_bool is_failuer(t_data *data, char *pwd, char *option) static void is_success(t_data *data, char *pwd) { - getcwd(pwd, 1024); + getcwd(pwd, BUF_SIZE); ft_update_env_cd(data, ft_strdup("OLDPWD"), \ ft_strdup(env_search(data, "PWD", TRUE)->env + 4)); ft_update_env_cd(data, ft_strdup("PWD"), pwd); diff --git a/srcs/builtin/ft_echo.c b/srcs/builtin/ft_echo.c index 721b2b1..30a3412 100644 --- a/srcs/builtin/ft_echo.c +++ b/srcs/builtin/ft_echo.c @@ -6,65 +6,64 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:30:59 by kichan #+# #+# */ -/* Updated: 2023/08/14 20:26:38 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 18:06:21 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../incs/minishell.h" +#include "../../incs/minishell.h" -void ft_echo(t_leaf *cmd); -static void check_flag(t_leaf *cmd, int *cnt, int *flag); -static void print_line(t_leaf *cmd); +void ft_echo(t_leaf *arg); +static void check_flag(t_leaf *arg, int *cnt, int *flag); +static void print_line(t_leaf *arg); -void ft_echo(t_leaf *cmd) +void ft_echo(t_leaf *arg) { int cnt; int flag; cnt = 0; flag = FALSE; - cmd = cmd->right_child; - check_flag(cmd, &cnt, &flag); + check_flag(arg, &cnt, &flag); while (cnt--) - cmd = cmd->right_child; - while (cmd) + arg = arg->right_child; + while (arg) { - print_line(cmd); - if (cmd->token->blank == TRUE && cmd->right_child) + print_line(arg); + if (arg->token->blank == TRUE && arg->right_child) printf(" "); - cmd = cmd->right_child; + arg = arg->right_child; } if (flag == FALSE) printf("\n"); } -static void check_flag(t_leaf *cmd, int *cnt, int *flag) +static void check_flag(t_leaf *arg, int *cnt, int *flag) { int i; - while (cmd && cmd->token->str[0] == '-' && cmd->token->str[1] == 'n') + while (arg && arg->token->str[0] == '-' && arg->token->str[1] == 'n') { i = 1; - while (cmd->token->str[i] != '\0') + while (arg->token->str[i] != '\0') { - if (cmd->token->str[i] != 'n') + if (arg->token->str[i] != 'n') return ; i++; } - cmd = cmd->right_child; + arg = arg->right_child; *cnt += 1; *flag = TRUE; } } -static void print_line(t_leaf *cmd) +static void print_line(t_leaf *arg) { int i; i = 0; - while (cmd->token->str[i]) + while (arg->token->str[i]) { - printf("%c", cmd->token->str[i]); + printf("%c", arg->token->str[i]); i++; } } diff --git a/srcs/builtin/ft_env.c b/srcs/builtin/ft_env.c index 051c71b..5dbb299 100644 --- a/srcs/builtin/ft_env.c +++ b/srcs/builtin/ft_env.c @@ -10,77 +10,26 @@ /* */ /* ************************************************************************** */ -#include "../incs/minishell.h" +#include "../../incs/minishell.h" -void ft_env(t_data *data, t_leaf *cur_root); -static void ft_env_count(t_data *data, char *str); -static void ft_env_count_else(t_data *data, char *str); -static char *check_keyval(t_data *data, char *str); +t_bool ft_env(t_data *data); -void ft_env(t_data *data, t_leaf *cur_root) +t_bool ft_env(t_data *data) { char **cmd; int arg_cnt; - cmd = ft_join_cmd(cur_root->left_child->right_child); + cmd = ft_join_cmd(data->root->left_child->right_child); if (!cmd) program_error_exit("bash"); arg_cnt = ft_cnt_args(cmd); - if (arg_cnt == 1) - env_print(data); - else if (arg_cnt != 2) - printf("env: %s: No such file or directory\n", cmd[1]); - else - ft_env_count(data, cmd[1]); - free(cmd); -} - -static void ft_env_count(t_data *data, char *str) -{ - int flag; - - flag = check_equal(str); - if (flag == 1 && str[0] != '=') - { - env_print(data); - printf("%s\n", str); - } - else if (flag == 1 && str[0] == '=') - printf("env: setenv %s: Invalid argument\n", str); - else - ft_env_count_else(data, str); -} - -static void ft_env_count_else(t_data *data, char *str) -{ - if (str[0] == '$') - { - if (ft_strlen(str) == 1) - { - printf("env: %s: No such file or directory\n", str); - data->error_code = 127; - } - else if (check_keyval(data, str) == NULL) - env_print(data); - else - printf("%s", env_search(data, str, TRUE)->env); - } - else + if (arg_cnt != 1) { - printf("env: %s: No such file or directory\n", str); - data->error_code = 127; + printf("env: %s: No such file or directory\n", cmd[1]); + free(cmd); + return (FALSE); } -} - -static char *check_keyval(t_data *data, char *str) -{ - t_list *tmp; - - if (!str) - return (NULL); - tmp = env_search(data, str, TRUE); - if (tmp == NULL) - return (NULL); - else - return (tmp->env); + free(cmd); + env_print(data); + return (TRUE); } diff --git a/srcs/builtin/ft_exit.c b/srcs/builtin/ft_exit.c index cca28b5..0704087 100644 --- a/srcs/builtin/ft_exit.c +++ b/srcs/builtin/ft_exit.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:23:29 by kichlee #+# #+# */ -/* Updated: 2023/08/15 19:17:22 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 20:49:04 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../incs/minishell.h" +#include "../../incs/minishell.h" void ft_exit(t_data *data); static void arg_over_one(t_data *data, int count, char **cmd, int flag); @@ -36,6 +36,7 @@ void ft_exit(t_data *data) } else arg_over_one(data, count, cmd, flag); + free(cmd); } static void arg_over_one(t_data *data, int count, char **cmd, int flag) diff --git a/srcs/builtin/ft_export.c b/srcs/builtin/ft_export.c index d16174e..f7df631 100644 --- a/srcs/builtin/ft_export.c +++ b/srcs/builtin/ft_export.c @@ -6,38 +6,37 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 11:50:55 by kichlee #+# #+# */ -/* Updated: 2023/08/15 23:01:22 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 18:09:55 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../incs/minishell.h" +#include "../../incs/minishell.h" -t_bool ft_export(t_data *data); -static int cnt_args(t_list *tmp); -static t_bool start_export(t_data *data, t_list **cur); -static t_bool separated_token(t_data *data, t_list **tmp); -static t_bool combined_token(t_data *data, t_list **tmp); +t_bool ft_export(t_data *data, t_leaf *arg); +static int cnt_args(t_leaf *tmp); +static t_bool start_export(t_data *data, t_leaf **cur); +static t_bool separated_token(t_data *data, t_leaf **tmp); +static t_bool combined_token(t_data *data, t_leaf **tmp); -t_bool ft_export(t_data *data) +t_bool ft_export(t_data *data, t_leaf *cmd) { - int args; - t_list *cur; + int args_cnt; - args = cnt_args(data->tokens); - cur = data->tokens->next; - if (args == 0 || !cur) + args_cnt = cnt_args(cmd); + if (!cmd || args_cnt == 0) { print_export_order(data); return (TRUE); } - while (args--) - if (start_export(data, &cur) == FALSE) + cmd = cmd->right_child; + while (args_cnt--) + if (start_export(data, &cmd) == FALSE) return (FALSE); update_env_double_char(data); return (TRUE); } -static int cnt_args(t_list *tmp) +static int cnt_args(t_leaf *tmp) { int args; @@ -46,12 +45,12 @@ static int cnt_args(t_list *tmp) { if (tmp->token->blank == 1) ++args; - tmp = tmp->next; + tmp = tmp->right_child; } return (args); } -static t_bool start_export(t_data *data, t_list **cur) +static t_bool start_export(t_data *data, t_leaf **cur) { if (check_equal((*cur)->token->str) == TRUE) { @@ -70,33 +69,33 @@ static t_bool start_export(t_data *data, t_list **cur) { if (check_env(data, ft_strdup((*cur)->token->str), NULL) == FALSE) return (FALSE); - *cur = (*cur)->next; + *cur = (*cur)->right_child; } return (TRUE); } -static t_bool separated_token(t_data *data, t_list **cur) +static t_bool separated_token(t_data *data, t_leaf **cur) { char *tmp; - if (!(*cur)->next) + if (!(*cur)->right_child) { if (check_env(data, ft_strdup((*cur)->token->str), NULL) == FALSE) return (FALSE); } else { - tmp = ft_strdup((*cur)->next->token->str); + tmp = ft_strdup((*cur)->right_child->token->str); if (!tmp) program_error_exit("bash"); if (check_env(data, ft_strdup((*cur)->token->str), tmp) == FALSE) return (FALSE); - *cur = (*cur)->next->next; + *cur = (*cur)->right_child->right_child; } return (TRUE); } -static t_bool combined_token(t_data *data, t_list **cur) +static t_bool combined_token(t_data *data, t_leaf **cur) { char *str1; char *str2; @@ -104,6 +103,6 @@ static t_bool combined_token(t_data *data, t_list **cur) devide_equal((*cur)->token->str, &str1, &str2, TRUE); if (check_env(data, str1, str2) == FALSE) return (FALSE); - *cur = (*cur)->next; + *cur = (*cur)->right_child; return (TRUE); } diff --git a/srcs/builtin/ft_export_check.c b/srcs/builtin/ft_export_check.c index 894cd1e..ff2ec1f 100644 --- a/srcs/builtin/ft_export_check.c +++ b/srcs/builtin/ft_export_check.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 21:42:23 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 19:22:14 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 15:54:23 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../incs/minishell.h" +#include "../../incs/minishell.h" int check_plus(char *str); int check_equal(char *str); diff --git a/srcs/builtin/ft_export_print.c b/srcs/builtin/ft_export_print.c index 4d54a04..a96b7fb 100644 --- a/srcs/builtin/ft_export_print.c +++ b/srcs/builtin/ft_export_print.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/15 18:48:19 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 18:51:01 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 15:54:27 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../incs/minishell.h" +#include "../../incs/minishell.h" void print_export_order(t_data *data); void devide_equal(char *src, char **str1, char **str2, \ diff --git a/srcs/builtin/ft_join_cmd.c b/srcs/builtin/ft_join_cmd.c index 0fb403f..5bfd7a7 100644 --- a/srcs/builtin/ft_join_cmd.c +++ b/srcs/builtin/ft_join_cmd.c @@ -6,57 +6,97 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 22:15:42 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 16:09:34 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 20:47:47 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../incs/minishell.h" +#include "../../incs/minishell.h" -char **ft_join_cmd(t_leaf *com_leaf); -static char **input_leaf(t_leaf *com_leaf, char **input); +char **ft_join_cmd(t_leaf *leaf); +static int get_str_cnt(t_leaf *leaf); +static int get_blank_in_str(char *str); +static char **input_leaf(t_leaf *leaf, char **input); +static void devide_str(char **str, char *tmp, int *i); -char **ft_join_cmd(t_leaf *com_leaf) +char **ft_join_cmd(t_leaf *leaf) { - int i; + int cnt_str; char **str; - t_leaf *temp; - t_leaf *leaf; - i = 1; - temp = com_leaf; - leaf = com_leaf; - while (temp && temp->right_child) - { - temp = temp->right_child; - i++; - } - str = (char **)ft_calloc(i + 1, sizeof(char *)); + cnt_str = get_str_cnt(leaf); + str = (char **)ft_calloc(cnt_str + 1, sizeof(char *)); if (!str) return (NULL); - str[0] = leaf->token->str; str = input_leaf(leaf, str); return (str); } -static char **input_leaf(t_leaf *com_leaf, char **input) +static int get_str_cnt(t_leaf *leaf) +{ + int cnt; + + cnt = 0; + while (leaf) + { + if (!leaf->token->quote) + cnt += get_blank_in_str(leaf->token->str); + cnt++; + leaf = leaf->right_child; + } + return (cnt); +} + +static int get_blank_in_str(char *str) +{ + int i; + int cnt; + + i = 0; + cnt = 0; + while (str[i]) + { + if (str[i] == ' ' || str[i] == '\t') + cnt++; + i++; + } + return (cnt); +} + +static char **input_leaf(t_leaf *leaf, char **str) { - t_leaf *leaf; int i; - char **str; + char *tmp; - i = 1; - leaf = com_leaf; - str = input; + i = 0; while (leaf) { - if (leaf->right_child) + tmp = ft_strdup(leaf->token->str); + while (leaf->token->blank == FALSE && leaf->right_child) { - str[i] = leaf->right_child->token->str; leaf = leaf->right_child; - i++; + tmp = ft_strncat(tmp, leaf->token->str, ft_strlen(leaf->token->str)); } - else - break ; + devide_str(str, tmp, &i); + leaf = leaf->right_child; } return (str); } + +static void devide_str(char **str, char *tmp, int *i) +{ + int pre_blank; + int next_blank; + int cnt; + + cnt = get_blank_in_str(tmp) + 1; + pre_blank = 0; + next_blank = 0; + while (cnt--) + { + while (check_end(tmp[next_blank]) == FALSE) + next_blank++; + str[*i] = ft_substr(tmp, pre_blank, next_blank - pre_blank); + *i += 1; + pre_blank = next_blank + 1; + } +} \ No newline at end of file diff --git a/srcs/builtin/ft_pwd.c b/srcs/builtin/ft_pwd.c index ea3648a..8291805 100644 --- a/srcs/builtin/ft_pwd.c +++ b/srcs/builtin/ft_pwd.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:24:31 by kichlee #+# #+# */ -/* Updated: 2023/08/15 19:18:16 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 15:54:41 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../incs/minishell.h" +#include "../../incs/minishell.h" void ft_pwd(void); diff --git a/srcs/builtin/ft_unset.c b/srcs/builtin/ft_unset.c index 11a0d94..9417aba 100644 --- a/srcs/builtin/ft_unset.c +++ b/srcs/builtin/ft_unset.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 22:51:02 by kichlee #+# #+# */ -/* Updated: 2023/08/15 23:02:38 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 15:54:44 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../incs/minishell.h" +#include "../../incs/minishell.h" void ft_unset(t_data *data, t_leaf *cur_root); void update_env_double_char(t_data *data); diff --git a/srcs/builtin/ft_update_env_cd.c b/srcs/builtin/ft_update_env_cd.c index 458bd22..a3f920a 100644 --- a/srcs/builtin/ft_update_env_cd.c +++ b/srcs/builtin/ft_update_env_cd.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/15 23:24:39 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 23:25:02 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 15:54:47 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../incs/minishell.h" +#include "../../incs/minishell.h" void ft_update_env_cd(t_data *data, char *key, char *value); diff --git a/srcs/builtin/ft_update_env_export.c b/srcs/builtin/ft_update_env_export.c index 2739a71..74d9a4f 100644 --- a/srcs/builtin/ft_update_env_export.c +++ b/srcs/builtin/ft_update_env_export.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/15 00:37:38 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 23:27:47 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 15:54:50 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../incs/minishell.h" +#include "../../incs/minishell.h" void ft_update_env_export(t_data *data, char *key, char *value); static char *get_tmp_key(char *key, t_bool plus); diff --git a/srcs/execute/child.c b/srcs/execute/child.c index 08048d7..29157f8 100644 --- a/srcs/execute/child.c +++ b/srcs/execute/child.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:36:58 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 23:02:57 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 16:37:33 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,14 +28,14 @@ void do_cmd(t_data *data) exit(258); } if (temp != NULL) - builtnum = check_bulitin_func(temp->token->str); + builtnum = check_builtin_func(temp->token->str); if (data->root->left_child->left_child != NULL) check_redirect (data->root, data); if (temp == NULL) exit(0); if (builtnum != 0) { - exec_bulitin(builtnum, data); + exec_builtin(builtnum, data); exit(0); } else @@ -53,7 +53,7 @@ void exec_fork(t_data *data) base->command = set_path(data, data->root->left_child->right_child); if (!base->command) { - error_print(data->root->left_child->right_child->token->str, 0, 0); + error_print(base->cmd_path[0], 0, 0); exit(127); } execve(base->command, base->cmd_path, data->env_array); diff --git a/srcs/execute/execve.c b/srcs/execute/execve.c index 0994151..ca0fd00 100644 --- a/srcs/execute/execve.c +++ b/srcs/execute/execve.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:31:21 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 18:52:10 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 15:48:02 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,7 +25,7 @@ void execute(t_data *data) if (!data->info->heredoc_file) program_error_exit("bash"); if (!data->info->pipe_num && !data->info->heredoc_flag) - if (check_bulitin(data) == TRUE) + if (check_builtin(data) == TRUE) return ; if (data->info->heredoc_flag) { diff --git a/srcs/execute/execve_utils.c b/srcs/execute/execve_utils.c index fbaf4ca..ee9752a 100644 --- a/srcs/execute/execve_utils.c +++ b/srcs/execute/execve_utils.c @@ -6,34 +6,34 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:39:07 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 19:30:51 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 15:48:15 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -int check_bulitin(t_data *data); +int check_builtin(t_data *data); void recover_std(t_data *data); void heredoc_flag(t_leaf *leaf, t_data *data); -int check_bulitin(t_data *data) +int check_builtin(t_data *data) { - int bulit; + int built; t_leaf *temp; temp = data->root->left_child->right_child; if (temp != NULL) - bulit = check_bulitin_func(temp->token->str); + built = check_builtin_func(temp->token->str); if (temp == NULL) { check_redirect(data->root, data); recover_std(data); return (TRUE); } - if (bulit != 0) + if (built != 0) { check_redirect(data->root, data); - data->error_code = exec_bulitin(bulit, data); + data->error_code = exec_builtin(built, data); recover_std(data); return (TRUE); } diff --git a/srcs/execute/file.c b/srcs/execute/file.c index 713544a..8fa2d13 100644 --- a/srcs/execute/file.c +++ b/srcs/execute/file.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:53:28 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 22:50:59 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 16:38:20 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/execute/path.c b/srcs/execute/path.c index 76a84b4..07c5ecb 100644 --- a/srcs/execute/path.c +++ b/srcs/execute/path.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:43:04 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 20:47:42 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 16:39:04 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,7 @@ char *set_path(t_data *data, t_leaf *leaf); void abs_path(t_data *data); static int check_path(char *str); -static char *search_path(t_pipe *base, t_data *data); +static char *search_path(t_pipe *base); static char **get_path_envp(char **env); char *set_path(t_data *data, t_leaf *leaf) @@ -36,7 +36,7 @@ char *set_path(t_data *data, t_leaf *leaf) return (NULL); } else - return (search_path(base, data)); + return (search_path(base)); } void abs_path(t_data *data) @@ -66,7 +66,7 @@ static int check_path(char *str) return (0); } -static char *search_path(t_pipe *base, t_data *data) +static char *search_path(t_pipe *base) { char *tmp; int k; @@ -74,7 +74,7 @@ static char *search_path(t_pipe *base, t_data *data) k = 0; if (!base->cmd_abs) { - error_print(data->root->left_child->right_child->token->str, 0, 1); + error_print(base->cmd_path[0], 0, 1); exit (127); } while (base->cmd_abs[k]) diff --git a/srcs/init/init.c b/srcs/init/init.c index 6e83a39..af53aaa 100644 --- a/srcs/init/init.c +++ b/srcs/init/init.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:52 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 18:29:56 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 15:55:23 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../incs/minishell.h" +#include "../../incs/minishell.h" void init(t_data **data, char **envp); void env_init(t_data *data, char **envp); diff --git a/srcs/input/get_input.c b/srcs/input/get_input.c index 9fdf88f..4a7675e 100644 --- a/srcs/input/get_input.c +++ b/srcs/input/get_input.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:27:16 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 18:49:04 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 19:15:48 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../incs/minishell.h" +#include "../../incs/minishell.h" static t_bool check_blank_input(char *str); diff --git a/srcs/lexer/expand.c b/srcs/lexer/expand.c index c995eb0..b006907 100644 --- a/srcs/lexer/expand.c +++ b/srcs/lexer/expand.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:20:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 17:51:03 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 19:44:36 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,7 +33,7 @@ t_bool expand(t_data *data, t_token **token, int *i, t_bool quote) if (quote == FALSE) { if (check_end(data->input[*i]) == TRUE) - (*token)->blank = FALSE; + (*token)->blank = TRUE; *i -= 1; } return (FALSE); diff --git a/srcs/lexer/quote.c b/srcs/lexer/quote.c index f6c47c1..f88b1ee 100644 --- a/srcs/lexer/quote.c +++ b/srcs/lexer/quote.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 07:46:30 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 17:02:36 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 18:17:36 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,6 +29,8 @@ void single_quote(char *input, t_token **token, int *i) if (input[*i] == '\'') (*token)->blank = FALSE; next_quote = find_next_quote(input, (*token), *i, '\''); + if (next_quote == TRUE) + (*token)->quote = T_SINGLE; while (input[*i] != '\'' && input[*i] != '\0') { if (s_check_char(input, *token, i, next_quote) == TRUE) @@ -46,6 +48,8 @@ void double_quote(t_data *data, char *input, t_token **token, int *i) if (input[*i] == '\"') (*token)->blank = FALSE; next_quote = find_next_quote(input, *token, *i, '\"'); + if (next_quote == TRUE) + (*token)->quote = T_DOUBLE; while (input[*i] != '\"' && input[*i] != '\0') { if (input[*i] == '$' && input[*i + 1] == '\"') @@ -55,11 +59,8 @@ void double_quote(t_data *data, char *input, t_token **token, int *i) continue ; } while (input[*i] == '$' && input[*i + 1] != '\'') - { - if (next_quote == TRUE) - if (expand(data, token, i, TRUE) == TRUE) - break ; - } + if (expand(data, token, i, TRUE) == TRUE) + break ; if (d_check_char(input, *token, i, next_quote) == TRUE) break ; *i += 1; diff --git a/srcs/minishell.c b/srcs/minishell.c index 23e8100..5750422 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 23:02:24 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 19:45:03 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,7 +29,7 @@ int main(int argc, char **argv, char **envp) continue ; execute(data); input_free(data); - check_leak(); + // check_leak(); } data_free(data); return (0); diff --git a/srcs/signal/signal.c b/srcs/signal/signal.c index db2db95..79d8f15 100644 --- a/srcs/signal/signal.c +++ b/srcs/signal/signal.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/15 18:40:34 by kichlee #+# #+# */ -/* Updated: 2023/08/15 23:28:25 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 15:55:55 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../incs/minishell.h" +#include "../../incs/minishell.h" void init_base(int ac); void handle_sigint(int sig); @@ -38,7 +38,7 @@ void handle_sigint(int sig) { printf("\n"); rl_on_new_line(); - rl_replace_line("", 0); + // rl_replace_line("", 0); rl_redisplay(); (void)sig; } diff --git a/srcs/utils/env.c b/srcs/utils/env.c index f4941b7..34b17ba 100644 --- a/srcs/utils/env.c +++ b/srcs/utils/env.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 06:38:21 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 18:48:51 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 20:50:03 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,7 +24,8 @@ void env_print(t_data *data) cur = data->envs; while (cur) { - printf("%s\n", cur->env); + if(check_equal(cur->env) == TRUE) + printf("%s\n", cur->env); cur = cur->next; } } diff --git a/srcs/utils/temp.c b/srcs/utils/temp.c index 9b69d9b..5503c22 100644 --- a/srcs/utils/temp.c +++ b/srcs/utils/temp.c @@ -80,7 +80,7 @@ void print_token(t_data *data) printf("token: arg, "); printf("str: %s", tmp->token->str); } - printf(" blank: %d\n", tmp->token->blank); + printf(" blank: %d quote: %d\n", tmp->token->blank, tmp->token->quote); tmp = tmp->next; } } diff --git a/srcs/utils/tree.c b/srcs/utils/tree.c index fac5d4a..ba346f0 100644 --- a/srcs/utils/tree.c +++ b/srcs/utils/tree.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:48:39 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 23:06:39 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 15:56:04 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../incs/minishell.h" +#include "../../incs/minishell.h" t_leaf *tree_create_leaf(t_leaf *parent, int leaf_type); t_bool tree_add_left(t_leaf *parent, t_token *new_token, int leaf_type); From b58a7de39e747f591966023a344a5bff3f0e6053 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Wed, 16 Aug 2023 22:30:37 +0900 Subject: [PATCH 39/57] . --- incs/builtin.h | 13 ++++++++----- incs/struct.h | 3 +-- srcs/builtin/ft_env.c | 2 +- srcs/builtin/ft_exit.c | 12 +++++------- srcs/builtin/ft_export.c | 2 +- srcs/builtin/ft_export_check.c | 2 +- srcs/builtin/ft_export_print.c | 24 ++++++++++++------------ srcs/builtin/ft_join_cmd.c | 8 +++++--- srcs/builtin/ft_unset.c | 4 ++-- srcs/builtin/ft_update_env_export.c | 22 +++++++++++++--------- srcs/lexer/expand.c | 5 ++--- srcs/lexer/expand_check.c | 5 ++--- srcs/minishell.c | 4 ++-- srcs/redirect/redirect.c | 28 ++++++++++++++++------------ srcs/utils/env.c | 4 ++-- 15 files changed, 73 insertions(+), 65 deletions(-) diff --git a/incs/builtin.h b/incs/builtin.h index a817d2c..9271fd8 100644 --- a/incs/builtin.h +++ b/incs/builtin.h @@ -5,13 +5,13 @@ /* +:+ +:+ +:+ */ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2023/08/14 18:03:26 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 19:11:32 by eunwolee ### ########.fr */ +/* Created: 2023/08/16 21:22:15 by eunwolee #+# #+# */ +/* Updated: 2023/08/16 22:09:43 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#ifndef builtin_H -# define builtin_H +#ifndef BUILTIN_H +# define BUILTIN_H # include "struct.h" @@ -26,9 +26,12 @@ void ft_pwd(void); t_bool ft_cd(t_data *data); void ft_echo(t_leaf *arg); void ft_exit(t_data *data); -t_bool ft_export(t_data *data, t_leaf *cmd); t_bool ft_env(t_data *data); +/*ft_export*/ +t_bool ft_export(t_data *data, t_leaf *cmd); +void free_d_char_ptr(char **str); + /*ft_unset*/ void ft_unset(t_data *data, t_leaf *cur_root); void update_env_double_char(t_data *data); diff --git a/incs/struct.h b/incs/struct.h index 8bcc81e..fc57ab4 100644 --- a/incs/struct.h +++ b/incs/struct.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:24:15 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 18:16:48 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 21:54:25 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -88,7 +88,6 @@ typedef struct s_info int pipe_num; int parent; int pipe_index; - int fd; }t_info; typedef struct s_data diff --git a/srcs/builtin/ft_env.c b/srcs/builtin/ft_env.c index 5dbb299..5df365f 100644 --- a/srcs/builtin/ft_env.c +++ b/srcs/builtin/ft_env.c @@ -29,7 +29,7 @@ t_bool ft_env(t_data *data) free(cmd); return (FALSE); } - free(cmd); + free_d_char_ptr(cmd); env_print(data); return (TRUE); } diff --git a/srcs/builtin/ft_exit.c b/srcs/builtin/ft_exit.c index 0704087..48055cf 100644 --- a/srcs/builtin/ft_exit.c +++ b/srcs/builtin/ft_exit.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:23:29 by kichlee #+# #+# */ -/* Updated: 2023/08/16 20:49:04 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 22:23:26 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -36,7 +36,7 @@ void ft_exit(t_data *data) } else arg_over_one(data, count, cmd, flag); - free(cmd); + free_d_char_ptr(cmd); } static void arg_over_one(t_data *data, int count, char **cmd, int flag) @@ -66,12 +66,11 @@ static void arg_over_one(t_data *data, int count, char **cmd, int flag) static void arg_over_two(t_data *data, int count, char **cmd, int flag) { - int status; - int i; + int i; i = 1; - status = ft_atolong(cmd[1], &flag); - (void)status; + // status = ft_atolong(cmd[1], &flag); + ft_atolong(cmd[1], &flag); while (i < count) { if (flag && is_num_str(cmd[i]) && ft_strlen(cmd[i]) <= 20) @@ -88,7 +87,6 @@ static void arg_over_two(t_data *data, int count, char **cmd, int flag) static void exit_not_num(t_data *data, char *str) { - (void)data; printf("exit\n"); printf("bash: exit: %s: numeric argument required\n", str); data->error_code = 255; diff --git a/srcs/builtin/ft_export.c b/srcs/builtin/ft_export.c index f7df631..62bdbc4 100644 --- a/srcs/builtin/ft_export.c +++ b/srcs/builtin/ft_export.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 11:50:55 by kichlee #+# #+# */ -/* Updated: 2023/08/16 18:09:55 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 21:00:56 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/builtin/ft_export_check.c b/srcs/builtin/ft_export_check.c index ff2ec1f..0ebf8cf 100644 --- a/srcs/builtin/ft_export_check.c +++ b/srcs/builtin/ft_export_check.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 21:42:23 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 15:54:23 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 21:03:17 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/builtin/ft_export_print.c b/srcs/builtin/ft_export_print.c index a96b7fb..adc4794 100644 --- a/srcs/builtin/ft_export_print.c +++ b/srcs/builtin/ft_export_print.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/15 18:48:19 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 15:54:27 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 22:09:17 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,9 +15,9 @@ void print_export_order(t_data *data); void devide_equal(char *src, char **str1, char **str2, \ t_bool key_need_equal); +void free_d_char_ptr(char **str); static char **sort_bubble(char **str); static void print_export_quote(char **order_set); -static void free_d_char_ptr(char **str); void print_export_order(t_data *data) { @@ -59,6 +59,16 @@ void devide_equal(char *src, char **str1, char **str2, t_bool key_need_equal) program_error_exit("bash"); } +void free_d_char_ptr(char **str) +{ + int i; + + i = -1; + while (str[++i]) + free(str[i]); + free(str); +} + static char **sort_bubble(char **str) { int i; @@ -112,13 +122,3 @@ static void print_export_quote(char **order_set) ++i; } } - -static void free_d_char_ptr(char **str) -{ - int i; - - i = -1; - while (str[++i]) - free(str[i]); - free(str); -} diff --git a/srcs/builtin/ft_join_cmd.c b/srcs/builtin/ft_join_cmd.c index 5bfd7a7..87fcf8d 100644 --- a/srcs/builtin/ft_join_cmd.c +++ b/srcs/builtin/ft_join_cmd.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 22:15:42 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 20:47:47 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 22:26:50 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -74,10 +74,12 @@ static char **input_leaf(t_leaf *leaf, char **str) while (leaf->token->blank == FALSE && leaf->right_child) { leaf = leaf->right_child; - tmp = ft_strncat(tmp, leaf->token->str, ft_strlen(leaf->token->str)); + tmp = ft_strncat(tmp, leaf->token->str, \ + ft_strlen(leaf->token->str)); } devide_str(str, tmp, &i); leaf = leaf->right_child; + free(tmp); } return (str); } @@ -99,4 +101,4 @@ static void devide_str(char **str, char *tmp, int *i) *i += 1; pre_blank = next_blank + 1; } -} \ No newline at end of file +} diff --git a/srcs/builtin/ft_unset.c b/srcs/builtin/ft_unset.c index 9417aba..3e35c3e 100644 --- a/srcs/builtin/ft_unset.c +++ b/srcs/builtin/ft_unset.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 22:51:02 by kichlee #+# #+# */ -/* Updated: 2023/08/16 15:54:44 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 22:09:56 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,7 +29,7 @@ void ft_unset(t_data *data, t_leaf *cur_root) env_remove(data, cmd[i]); ++i; } - free(cmd); + free_d_char_ptr(cmd); update_env_double_char(data); } diff --git a/srcs/builtin/ft_update_env_export.c b/srcs/builtin/ft_update_env_export.c index 74d9a4f..eb8d6b5 100644 --- a/srcs/builtin/ft_update_env_export.c +++ b/srcs/builtin/ft_update_env_export.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/15 00:37:38 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 15:54:50 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 21:21:50 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,7 +17,7 @@ static char *get_tmp_key(char *key, t_bool plus); static void is_not_plus(t_data *data, \ char *key, char *value, t_list *search_list); static void is_plus(t_data *data, char **tmp, char *value, t_list *search_list); -static void is_not_equal(t_data *data, \ +static void is_equal(t_data *data, \ char *key, char *value, t_list *search_list); void ft_update_env_export(t_data *data, char *key, char *value) @@ -75,26 +75,30 @@ static void is_not_plus(t_data *data, \ ft_add_env_front(data, key, value); } else - is_not_equal(data, key, value, search_list); + is_equal(data, key, value, search_list); } static void is_plus(t_data *data, char **tmp, char *value, t_list *search_list) { if (search_list) { - search_list->env = \ - ft_strncat(search_list->env, value, ft_strlen(value)); + if (check_equal(search_list->env) == TRUE) + search_list->env = \ + ft_strncat(search_list->env, value, ft_strlen(value)); + else + { + search_list->env = ft_strncat(search_list->env, "=", 1); + search_list->env = \ + ft_strncat(search_list->env, value, ft_strlen(value)); + } free(value); free(*tmp); } else - { - *tmp = ft_strncat(*tmp, "=", 1); ft_add_env_front(data, *tmp, value); - } } -static void is_not_equal(t_data *data, \ +static void is_equal(t_data *data, \ char *key, char *value, t_list *search_list) { if (search_list) diff --git a/srcs/lexer/expand.c b/srcs/lexer/expand.c index b006907..c6d6814 100644 --- a/srcs/lexer/expand.c +++ b/srcs/lexer/expand.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:20:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 19:44:36 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 22:03:49 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,8 +32,7 @@ t_bool expand(t_data *data, t_token **token, int *i, t_bool quote) } if (quote == FALSE) { - if (check_end(data->input[*i]) == TRUE) - (*token)->blank = TRUE; + (*token)->blank = check_end(data->input[*i]); *i -= 1; } return (FALSE); diff --git a/srcs/lexer/expand_check.c b/srcs/lexer/expand_check.c index c7569a7..d71a5f9 100644 --- a/srcs/lexer/expand_check.c +++ b/srcs/lexer/expand_check.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:23:58 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 22:49:08 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 22:04:13 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -44,8 +44,7 @@ t_bool check_question(t_data *data, t_token *token, int *i) token->str = ft_strncat(token->str, tmp, ft_strlen(tmp)); if (!token->str) program_error_exit("bash"); - if (check_end(data->input[*i + 1]) == FALSE) - token->blank = FALSE; + token->blank = check_end(data->input[*i + 1]); *i += 1; free(tmp); return (TRUE); diff --git a/srcs/minishell.c b/srcs/minishell.c index 5750422..e0cf018 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 19:45:03 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 21:58:52 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,7 +29,7 @@ int main(int argc, char **argv, char **envp) continue ; execute(data); input_free(data); - // check_leak(); + check_leak(); } data_free(data); return (0); diff --git a/srcs/redirect/redirect.c b/srcs/redirect/redirect.c index 6d20a1f..c832387 100644 --- a/srcs/redirect/redirect.c +++ b/srcs/redirect/redirect.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:16:07 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 22:55:06 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 21:54:47 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,43 +31,47 @@ void check_redirect(t_leaf *leaf, t_data *data) do_output_redirect(temp, data); temp = temp->left_child; } - if (leaf->left_child->left_child != NULL) - { - check_file (data->info->fd, data); - dup2 (data->info->fd, STDIN_FILENO); - close (data->info->fd); - } } static void do_input_redirect(t_leaf *leaf, t_data *data) { + int fd; t_leaf *temp; + fd = 0; temp = leaf; if (temp->token->redirect_type == T_HEREDOC) { - data->info->fd = open (data->info->heredoc_file[data->info->index - 1], \ + fd = open (data->info->heredoc_file[data->info->index - 1], \ O_RDONLY); - dup2 (data->info->fd, STDIN_FILENO); + dup2 (fd, STDIN_FILENO); return ; } else if (temp->token->redirect_type == T_INPUT) - data->info->fd = open (temp->left_child->token->str, O_RDONLY); + fd = open (temp->left_child->token->str, O_RDONLY); + check_file (fd, data); + dup2 (fd, STDIN_FILENO); + close (fd); } static void do_output_redirect(t_leaf *leaf, t_data *data) { + int fd; t_leaf *temp; + fd = 0; temp = leaf; if (temp->token->redirect_type == T_APPEND) { - data->info->fd = open (temp->left_child->token->str, \ + fd = open (temp->left_child->token->str, \ O_WRONLY | O_APPEND | O_CREAT, 0644); } else if (temp->token->redirect_type == T_OUTPUT) { - data->info->fd = open (temp->left_child->token->str, \ + fd = open (temp->left_child->token->str, \ O_WRONLY | O_TRUNC | O_CREAT, 0644); } + check_file (fd, data); + dup2 (fd, STDOUT_FILENO); + close (fd); } diff --git a/srcs/utils/env.c b/srcs/utils/env.c index 34b17ba..1440925 100644 --- a/srcs/utils/env.c +++ b/srcs/utils/env.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 06:38:21 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 20:50:03 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 21:21:35 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,7 +24,7 @@ void env_print(t_data *data) cur = data->envs; while (cur) { - if(check_equal(cur->env) == TRUE) + if (check_equal(cur->env) == TRUE) printf("%s\n", cur->env); cur = cur->next; } From 31477bf7735ff07bac531e4a0088d1dcb065cbbf Mon Sep 17 00:00:00 2001 From: eunwoo Date: Wed, 16 Aug 2023 22:51:49 +0900 Subject: [PATCH 40/57] . --- srcs/utils/env.c | 2 +- srcs/utils/utils.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/srcs/utils/env.c b/srcs/utils/env.c index 1440925..356e064 100644 --- a/srcs/utils/env.c +++ b/srcs/utils/env.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 06:38:21 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 21:21:35 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 22:51:31 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/utils/utils.c b/srcs/utils/utils.c index 4f2e92f..ff958bc 100644 --- a/srcs/utils/utils.c +++ b/srcs/utils/utils.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/12 19:40:44 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 13:45:19 by eunwolee ### ########.fr */ +/* Updated: 2023/08/16 22:51:25 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -54,6 +54,7 @@ void input_free(t_data *data) void data_free(t_data *data) { + free(data->env_array); ft_lstclear(&data->envs); free(data); } From 66704071d2cfa8122ef3d215c85483e84c65bed7 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Thu, 17 Aug 2023 01:46:12 +0900 Subject: [PATCH 41/57] last test --- Makefile | 5 +- srcs/builtin/ft_add_env_front.c | 3 +- srcs/builtin/ft_env.c | 2 +- srcs/builtin/ft_export.c | 5 +- srcs/builtin/ft_join_cmd.c | 11 ++- srcs/builtin/ft_unset.c | 2 +- srcs/execute/child.c | 24 +++---- srcs/execute/path.c | 2 +- srcs/minishell.c | 3 +- srcs/utils/env.c | 2 +- test case/something.txt | 120 -------------------------------- test case/unset.txt | 3 - 12 files changed, 32 insertions(+), 150 deletions(-) delete mode 100644 test case/something.txt delete mode 100644 test case/unset.txt diff --git a/Makefile b/Makefile index e08f6dc..94abfbe 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,6 @@ SRCS_DIR = srcs OBJS_DIR = objs CC = cc -# CC = cc -g3 CFLAGS = -Wall -Wextra -Werror -I ~/.brew/opt/readline/include RLFLAGS = -lreadline -ltermcap @@ -83,8 +82,8 @@ ${OBJS_DIR}: $(NAME): $(L_NAME) $(OBJS) @echo "MINISHELL DONE" - @$(CC) $(RLFLAGS) $^ -o $@ -I $(INCS_DIR) -L ~/.brew/opt/readline/lib - # $(CC) $^ -o $@ -I $(INCS_DIR) -fsanitize=address + # @$(CC) $(RLFLAGS) $^ -o $@ -I $(INCS_DIR) -L ~/.brew/opt/readline/lib + @$(CC) $(RLFLAGS) $^ -o $@ -I $(INCS_DIR) -L ~/.brew/opt/readline/lib -fsanitize=address -g3 $(L_NAME): @$(MAKE) -C $(L_DIR) diff --git a/srcs/builtin/ft_add_env_front.c b/srcs/builtin/ft_add_env_front.c index d76a494..599cf3a 100644 --- a/srcs/builtin/ft_add_env_front.c +++ b/srcs/builtin/ft_add_env_front.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 20:38:22 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 18:01:28 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 01:04:01 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -52,5 +52,6 @@ static void ft_lstadd_front(t_list **lst, t_list *new) if (!lst || !new) return ; new->next = *lst; + (*lst)->pre = new; *lst = new; } diff --git a/srcs/builtin/ft_env.c b/srcs/builtin/ft_env.c index 5df365f..c0be0a2 100644 --- a/srcs/builtin/ft_env.c +++ b/srcs/builtin/ft_env.c @@ -26,7 +26,7 @@ t_bool ft_env(t_data *data) if (arg_cnt != 1) { printf("env: %s: No such file or directory\n", cmd[1]); - free(cmd); + free_d_char_ptr(cmd); return (FALSE); } free_d_char_ptr(cmd); diff --git a/srcs/builtin/ft_export.c b/srcs/builtin/ft_export.c index 62bdbc4..26cd44d 100644 --- a/srcs/builtin/ft_export.c +++ b/srcs/builtin/ft_export.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 11:50:55 by kichlee #+# #+# */ -/* Updated: 2023/08/16 21:00:56 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 00:41:03 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -78,10 +78,11 @@ static t_bool separated_token(t_data *data, t_leaf **cur) { char *tmp; - if (!(*cur)->right_child) + if (!(*cur)->right_child || (*cur)->token->blank == TRUE) { if (check_env(data, ft_strdup((*cur)->token->str), NULL) == FALSE) return (FALSE); + *cur = (*cur)->right_child; } else { diff --git a/srcs/builtin/ft_join_cmd.c b/srcs/builtin/ft_join_cmd.c index 87fcf8d..8dd39a0 100644 --- a/srcs/builtin/ft_join_cmd.c +++ b/srcs/builtin/ft_join_cmd.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 22:15:42 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 22:26:50 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 01:32:42 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -77,9 +77,14 @@ static char **input_leaf(t_leaf *leaf, char **str) tmp = ft_strncat(tmp, leaf->token->str, \ ft_strlen(leaf->token->str)); } - devide_str(str, tmp, &i); + if (!leaf->token->quote) + { + devide_str(str, tmp, &i); + free(tmp); + } + else + str[i++] = tmp; leaf = leaf->right_child; - free(tmp); } return (str); } diff --git a/srcs/builtin/ft_unset.c b/srcs/builtin/ft_unset.c index 3e35c3e..2813fe2 100644 --- a/srcs/builtin/ft_unset.c +++ b/srcs/builtin/ft_unset.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 22:51:02 by kichlee #+# #+# */ -/* Updated: 2023/08/16 22:09:56 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 00:57:02 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/execute/child.c b/srcs/execute/child.c index 29157f8..18c3dde 100644 --- a/srcs/execute/child.c +++ b/srcs/execute/child.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:36:58 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 16:37:33 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 01:24:10 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -87,17 +87,17 @@ void error_print(char *cmd, char *option, int flag) str = ft_strdup (cmd); tmp = str; str = ft_strjoinstr ("bash: ", str); - free (tmp); + free(tmp); if (option) { tmp = str; - str = ft_strjoin (str, ": "); - free (tmp); + str = ft_strjoin(str, ": "); + free(tmp); tmp = str; - str = ft_strjoin (str, option); - free (tmp); + str = ft_strjoin(str, option); + free(tmp); } - check_errortype (str, flag); + check_errortype(str, flag); } void check_errortype(char *str, int flag) @@ -106,10 +106,10 @@ void check_errortype(char *str, int flag) tmp = str; if (flag == 0) - str = ft_strjoinstr (str, ": command not found\n"); + str = ft_strjoinstr(str, ": command not found\n"); else if (flag == 1) - str = ft_strjoinstr (str, ": No such file or directory\n"); - free (tmp); - write (2, str, ft_strlen (str)); - free (str); + str = ft_strjoinstr(str, ": No such file or directory\n"); + free(tmp); + write(2, str, ft_strlen (str)); + free(str); } diff --git a/srcs/execute/path.c b/srcs/execute/path.c index 07c5ecb..d8a4a81 100644 --- a/srcs/execute/path.c +++ b/srcs/execute/path.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:43:04 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 16:39:04 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 01:32:53 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/minishell.c b/srcs/minishell.c index e0cf018..ad108b1 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 21:58:52 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 01:43:10 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,7 +29,6 @@ int main(int argc, char **argv, char **envp) continue ; execute(data); input_free(data); - check_leak(); } data_free(data); return (0); diff --git a/srcs/utils/env.c b/srcs/utils/env.c index 356e064..4c0c071 100644 --- a/srcs/utils/env.c +++ b/srcs/utils/env.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 06:38:21 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 22:51:31 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 01:03:09 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/test case/something.txt b/test case/something.txt deleted file mode 100644 index f78d3e1..0000000 --- a/test case/something.txt +++ /dev/null @@ -1,120 +0,0 @@ -/bin/ls -/bin/pwd -ls -la -pwd -/bin/chmod -/bin/ls -la -/bin/ls -/bin/ls doesnotexist -ctrl-C -ctrl-D -ctrl-\ -asdf ctrl-C -asdf ctrl-D -cat ctrl-C -asdf ctrl-\ -cat ctrl-D -hoi -" -hallo$ -unset a ; env ; unset test ; unset test1 ; env -unset PATH -ls -wc -awk -cd .. -pwd -/bin/ls -cd .. -pwd -/bin/ls -cd notworking -cd . -cd .. ;pwd;/bin/ls;cd .. ; pwd ;/bin/ls; cd notworking; cd . -cd ~ -cd $IETSONBESTAANDS -cd $GEK .. -cd $NOTHING $MORENOTHING .. -pwd -pwd . -pwd .. -cd ../Desktop -ls -la -awk '{ print }' /etc/passwd -cat < test4 -< test4 cat -> newfile ; > working.txt -< working.txt -< notworking.txt -cat | cat -e | cat -cd -cd ~/ -hallo -hallo -cd $IETSONBESTAANDS -cd $IETSONBESTAANDS -cd $POEP $MEERPOEP .. -cd poep -ls -"ls" -test -/bin/ls -/binn/ls -hallo ma\"ran siemons -Multiple line error -hallo ma\ran siemons Hij ziet de \ niet als escape, print gewoon \ -ma\ -hallo$USER -hallo\$USER -\$? -$USER -\$USER -"\$USER" -\poep -poep -poep" -poep\' -hallo"\poep -hallo -maran -'$USER' -$USER -123"456 -\poep -123\'456 -hallo$ -" -$USERmaran -$USERmaran$USER/maran -hallo1234maranmaran/$USER/maranpoeppoep2maranellendeEND -maran/$USER -poeppoep2maranellendeEND -poep2maranellende -123hallo$456 -echt bash -cat x1 | grep Makefile -ls > x1 ; cat x1 | grep main -hallo$abc -hallo$\abc -halloUSER -halloPOEP -halloUSER -"hallo$USER" -hallo$abc -“$rewtwet” -$" -$' -\hallo -\hallo -hallo\hoi -\maran -123"456 -123$456 -123`456 -123\456 -123\!456 -mkdir test; cd test; rm -rf ../test; -pwd; cd .. -$TEST$TEST$TEST$TEST -cp minishell test; chmod u-x test; -./test; echo $? diff --git a/test case/unset.txt b/test case/unset.txt deleted file mode 100644 index b696660..0000000 --- a/test case/unset.txt +++ /dev/null @@ -1,3 +0,0 @@ -unset a ; env ; unset test ; unset test1 ; env -unset PATH -unset po1 1op 2 po2; echo $? $po1 $po2 From 7da20bd40610a6238b5f5a8fc098e8584c0722ee Mon Sep 17 00:00:00 2001 From: eunwoo Date: Thu, 17 Aug 2023 09:53:56 +0900 Subject: [PATCH 42/57] parsing test done --- Libft/libft.a | Bin 0 -> 37456 bytes Libft/objs/ft_atoi.o | Bin 0 -> 892 bytes Libft/objs/ft_bzero.o | Bin 0 -> 684 bytes Libft/objs/ft_calloc.o | Bin 0 -> 776 bytes Libft/objs/ft_isalnum.o | Bin 0 -> 760 bytes Libft/objs/ft_isalpha.o | Bin 0 -> 680 bytes Libft/objs/ft_isascii.o | Bin 0 -> 664 bytes Libft/objs/ft_isdigit.o | Bin 0 -> 664 bytes Libft/objs/ft_isprint.o | Bin 0 -> 664 bytes Libft/objs/ft_itoa.o | Bin 0 -> 1160 bytes Libft/objs/ft_memchr.o | Bin 0 -> 732 bytes Libft/objs/ft_memcmp.o | Bin 0 -> 756 bytes Libft/objs/ft_memcpy.o | Bin 0 -> 764 bytes Libft/objs/ft_memmove.o | Bin 0 -> 856 bytes Libft/objs/ft_memset.o | Bin 0 -> 700 bytes Libft/objs/ft_putchar_fd.o | Bin 0 -> 696 bytes Libft/objs/ft_putendl_fd.o | Bin 0 -> 876 bytes Libft/objs/ft_putnbr_fd.o | Bin 0 -> 984 bytes Libft/objs/ft_putstr_fd.o | Bin 0 -> 756 bytes Libft/objs/ft_split.o | Bin 0 -> 2048 bytes Libft/objs/ft_strchr.o | Bin 0 -> 732 bytes Libft/objs/ft_strdup.o | Bin 0 -> 828 bytes Libft/objs/ft_striteri.o | Bin 0 -> 696 bytes Libft/objs/ft_strjoin.o | Bin 0 -> 936 bytes Libft/objs/ft_strlcat.o | Bin 0 -> 888 bytes Libft/objs/ft_strlcpy.o | Bin 0 -> 840 bytes Libft/objs/ft_strlen.o | Bin 0 -> 700 bytes Libft/objs/ft_strmapi.o | Bin 0 -> 848 bytes Libft/objs/ft_strncat.o | Bin 0 -> 980 bytes Libft/objs/ft_strncmp.o | Bin 0 -> 824 bytes Libft/objs/ft_strnstr.o | Bin 0 -> 988 bytes Libft/objs/ft_strrchr.o | Bin 0 -> 728 bytes Libft/objs/ft_strtrim.o | Bin 0 -> 1408 bytes Libft/objs/ft_substr.o | Bin 0 -> 1068 bytes Libft/objs/ft_tolower.o | Bin 0 -> 664 bytes Libft/objs/ft_toupper.o | Bin 0 -> 664 bytes Libft/objs/get_next_line.o | Bin 0 -> 2808 bytes Libft/objs/get_next_line_utils.o | Bin 0 -> 884 bytes Makefile | 11 +- incs/parse.h | 4 +- libft.a | Bin 0 -> 37456 bytes minishell | Bin 0 -> 91000 bytes objs/builtin/builtin.o | Bin 0 -> 1824 bytes objs/builtin/ft_add_env_front.o | Bin 0 -> 1464 bytes objs/builtin/ft_atolong.o | Bin 0 -> 1716 bytes objs/builtin/ft_cd.o | Bin 0 -> 2776 bytes objs/builtin/ft_cnt_args.o | Bin 0 -> 672 bytes objs/builtin/ft_echo.o | Bin 0 -> 1548 bytes objs/builtin/ft_env.o | Bin 0 -> 1140 bytes objs/builtin/ft_exit.o | Bin 0 -> 2616 bytes objs/builtin/ft_export.o | Bin 0 -> 2524 bytes objs/builtin/ft_export_check.o | Bin 0 -> 2300 bytes objs/builtin/ft_export_print.o | Bin 0 -> 2696 bytes objs/builtin/ft_join_cmd.o | Bin 0 -> 2152 bytes objs/builtin/ft_pwd.o | Bin 0 -> 1112 bytes objs/builtin/ft_unset.o | Bin 0 -> 1300 bytes objs/builtin/ft_update_env_cd.o | Bin 0 -> 1256 bytes objs/builtin/ft_update_env_export.o | Bin 0 -> 2612 bytes objs/execute/child.o | Bin 0 -> 2904 bytes objs/execute/execve.o | Bin 0 -> 2400 bytes objs/execute/execve_utils.o | Bin 0 -> 1776 bytes objs/execute/file.o | Bin 0 -> 1068 bytes objs/execute/parent.o | Bin 0 -> 1168 bytes objs/execute/path.o | Bin 0 -> 2528 bytes objs/execute/pipe.o | Bin 0 -> 1984 bytes objs/init/init.o | Bin 0 -> 1796 bytes objs/input/get_input.o | Bin 0 -> 1680 bytes objs/lexer/expand.o | Bin 0 -> 2216 bytes objs/lexer/expand_check.o | Bin 0 -> 3096 bytes objs/lexer/lexer.o | Bin 0 -> 2644 bytes objs/lexer/lexer_utils.o | Bin 0 -> 1228 bytes objs/lexer/quote.o | Bin 0 -> 2864 bytes objs/lexer/tokenizer.o | Bin 0 -> 2212 bytes objs/minishell.o | Bin 0 -> 1164 bytes objs/parser/parser.o | Bin 0 -> 1660 bytes objs/parser/syntax.o | Bin 0 -> 2800 bytes objs/redirect/heredoc.o | Bin 0 -> 2520 bytes objs/redirect/heredoc_parser.o | Bin 0 -> 3028 bytes objs/redirect/redirect.o | Bin 0 -> 1616 bytes objs/signal/signal.o | Bin 0 -> 1856 bytes objs/utils/env.o | Bin 0 -> 2216 bytes objs/utils/list.o | Bin 0 -> 1344 bytes objs/utils/list_clear.o | Bin 0 -> 1028 bytes objs/utils/temp.o | Bin 0 -> 3032 bytes objs/utils/tree.o | Bin 0 -> 1560 bytes objs/utils/utils.o | Bin 0 -> 1780 bytes srcs/builtin/ft_join_cmd.c | 4 +- srcs/lexer/expand.c | 4 +- srcs/lexer/expand_check.c | 39 +- srcs/lexer/quote.c | 2 +- srcs/minishell.c | 3 +- test case/echo.txt | 460 -------------------- test case/export.txt | 76 ---- test case/test_cmds.txt | 629 ---------------------------- 94 files changed, 37 insertions(+), 1195 deletions(-) create mode 100644 Libft/libft.a create mode 100644 Libft/objs/ft_atoi.o create mode 100644 Libft/objs/ft_bzero.o create mode 100644 Libft/objs/ft_calloc.o create mode 100644 Libft/objs/ft_isalnum.o create mode 100644 Libft/objs/ft_isalpha.o create mode 100644 Libft/objs/ft_isascii.o create mode 100644 Libft/objs/ft_isdigit.o create mode 100644 Libft/objs/ft_isprint.o create mode 100644 Libft/objs/ft_itoa.o create mode 100644 Libft/objs/ft_memchr.o create mode 100644 Libft/objs/ft_memcmp.o create mode 100644 Libft/objs/ft_memcpy.o create mode 100644 Libft/objs/ft_memmove.o create mode 100644 Libft/objs/ft_memset.o create mode 100644 Libft/objs/ft_putchar_fd.o create mode 100644 Libft/objs/ft_putendl_fd.o create mode 100644 Libft/objs/ft_putnbr_fd.o create mode 100644 Libft/objs/ft_putstr_fd.o create mode 100644 Libft/objs/ft_split.o create mode 100644 Libft/objs/ft_strchr.o create mode 100644 Libft/objs/ft_strdup.o create mode 100644 Libft/objs/ft_striteri.o create mode 100644 Libft/objs/ft_strjoin.o create mode 100644 Libft/objs/ft_strlcat.o create mode 100644 Libft/objs/ft_strlcpy.o create mode 100644 Libft/objs/ft_strlen.o create mode 100644 Libft/objs/ft_strmapi.o create mode 100644 Libft/objs/ft_strncat.o create mode 100644 Libft/objs/ft_strncmp.o create mode 100644 Libft/objs/ft_strnstr.o create mode 100644 Libft/objs/ft_strrchr.o create mode 100644 Libft/objs/ft_strtrim.o create mode 100644 Libft/objs/ft_substr.o create mode 100644 Libft/objs/ft_tolower.o create mode 100644 Libft/objs/ft_toupper.o create mode 100644 Libft/objs/get_next_line.o create mode 100644 Libft/objs/get_next_line_utils.o create mode 100644 libft.a create mode 100755 minishell create mode 100644 objs/builtin/builtin.o create mode 100644 objs/builtin/ft_add_env_front.o create mode 100644 objs/builtin/ft_atolong.o create mode 100644 objs/builtin/ft_cd.o create mode 100644 objs/builtin/ft_cnt_args.o create mode 100644 objs/builtin/ft_echo.o create mode 100644 objs/builtin/ft_env.o create mode 100644 objs/builtin/ft_exit.o create mode 100644 objs/builtin/ft_export.o create mode 100644 objs/builtin/ft_export_check.o create mode 100644 objs/builtin/ft_export_print.o create mode 100644 objs/builtin/ft_join_cmd.o create mode 100644 objs/builtin/ft_pwd.o create mode 100644 objs/builtin/ft_unset.o create mode 100644 objs/builtin/ft_update_env_cd.o create mode 100644 objs/builtin/ft_update_env_export.o create mode 100644 objs/execute/child.o create mode 100644 objs/execute/execve.o create mode 100644 objs/execute/execve_utils.o create mode 100644 objs/execute/file.o create mode 100644 objs/execute/parent.o create mode 100644 objs/execute/path.o create mode 100644 objs/execute/pipe.o create mode 100644 objs/init/init.o create mode 100644 objs/input/get_input.o create mode 100644 objs/lexer/expand.o create mode 100644 objs/lexer/expand_check.o create mode 100644 objs/lexer/lexer.o create mode 100644 objs/lexer/lexer_utils.o create mode 100644 objs/lexer/quote.o create mode 100644 objs/lexer/tokenizer.o create mode 100644 objs/minishell.o create mode 100644 objs/parser/parser.o create mode 100644 objs/parser/syntax.o create mode 100644 objs/redirect/heredoc.o create mode 100644 objs/redirect/heredoc_parser.o create mode 100644 objs/redirect/redirect.o create mode 100644 objs/signal/signal.o create mode 100644 objs/utils/env.o create mode 100644 objs/utils/list.o create mode 100644 objs/utils/list_clear.o create mode 100644 objs/utils/temp.o create mode 100644 objs/utils/tree.o create mode 100644 objs/utils/utils.o delete mode 100644 test case/echo.txt delete mode 100644 test case/export.txt delete mode 100644 test case/test_cmds.txt diff --git a/Libft/libft.a b/Libft/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..6c17ebc57b7385ce6f04b44f93ae283797fc9a44 GIT binary patch literal 37456 zcmeHQe{ft!eSc~kqqs>QhmmwNFBq}DroD^A(L~Kd1 zrACAiQ8=64`Ql(^NMk4iZl}zcLaECiiJR#d*`$%6o#fmJL{ngTolz$`5Xp6LiISSA zpU>|1`|iEFlTPo>W-={1(tY2)xBK0FZ};>4e)qfk_Fa2R@4mi)KUjBN+k4tu-BM`V z(%Ig=Y18ISn_PEO=hpTPcXNAtyX&^Kwr<(H*>$&W!H)?&>ypVE@Az=n_W1kUJ3jEi zJLB6OgpEy(^L6}BKH@m*K-Yi3aUR3@{0)xtFlc%s&Vjm@;RhjhiQ{Yl9k|?a@aJ@_ zb(~hv9T8k3pFzj@IO09;aGX0qn~`}8^vJci2AW6aBZT9VdrmntH?^sL0X>>DNB9q`>+3Xs#)iXJzs=cGb_7?Y# z-R(>I@!>(Q^wE8T_KEBt*`v>Cbl5&TWZBz0A{>x#w11zCjEs%;4fO6y?%rieM-)kY zvHqc5dwkKMyY0n$`bU#P{o|v_J%dAdJiGe$^pEx@hlY1K&T_bE-?|KLS`}qI>qI8A_qgKpuh!9V+l^nR#LE5FFI%LSu^uPz5rty}hmdoGJd<3aB;N08r zKfYvxwyU%4%9hXk#;sRC+&)qMea4l@V-_lXi7pC7E@pj?*{ZXmC_Ir)< z0rEd=zu)BJ*GRwb5I(NZ7U`!W(%*0zN2O4!-|v*9F`=!(PdS9`_v2Cz_Wz69?_0e- z-nq&?&U=z}@b^S>tF`)hTKc)RW5|APl`l#P+t0UlRLFOz?hDt?Pnf%R9PQ^CueYDy z=HthH&VGPD3j0YC4YlOE%1T!Zul=gl7ua znwEs_|0B}>wSCL`zYD&&&nV1mwojDBfUdm))GzmGZ}jMV_!Y zs?Zm`G3bO*T23ny%XKM@qTWGbieNBc$5J# z{D0Rja=m{3sn>r$w+@HK`?41aW2P|BBVm~^OM3SCiIB#lW1r^=B(6X9+X4PmBzVRMi^?wxtWP# zA~QCh$aLou**K2lv!IB_bD;S|=5*qr(;R>%GF|xu$H50M{o~-;Y~=A~kX+>Pmd>-0 z1M4f!UVk>zb-ut6I#VYuVLHo%Msd_5d|aU&((mi_7flMEn9!XK;)wnt zcA^s(7e|Ykv2%dYJUaU#x_Lg^buQiY?}!0RJ`l}Y5Yd5uD2~fORpxt%ht61Zbm!Ae zg&D#PT*^F1(q5tQ&?9)z_6~~&&NSAAhnu!|^U9bfAhHJbT|hkKrGF?MG+r+r9`NyN zWS(GB__#u~|DKe7h|@SKg<9j`W0Eu`bR4;L4uq$|`cJ2%9@KLeQ?F#k7W`@@+qIDH zdLI3{s#2lT4cDktB9C`J4~=q={!5+$m=+6f)rhA?3V%F2@#5KGsfi+{8;n7fnwZC-L4x%3LN9I$-F;Q28s`F#HfJ>u zkpMF;cc{g}idsp|&8AxlPgu1>#*5YPB<;-{fl$jHa|KV@Uqa&vYg+2TQ^(eF{lg_O zB|tSguGuM1Lh+>Wdhzsgd8&=#$p}R7a)lq|Jo|quex%AcQwp{4v|cjBBnxrS2%b8m z9tqGE@Vw~bnw9bNB&tvaPqT@eF}C^4He4<6#*w6|;u6J#(Nb6b(A69fVF1;YPhZ_! z_%1qr;f`7iLSs~`vm8*RA4#jR?l#oI>C9^usM-(1;?yiSLs6l}O`QRp+U05`m^SQx zn34NeoNByYobLAVqn&sRcrbtpInO>Id|aV1!PN=SdT^RnK08phQL)Sp3drSW=kb-QKPuszB4U~tVZ)`&WI|i80bZ`C*gz`D*_;NM$jn%Soz!#MeBz69o&Qgk-5gF0|RmX zY3RJ~q1XG-<2cejfiBBuP)o1q`W0>8a{Q17m{wn>Xjd%PW&f4=p?wt5&M4;z5%Nfto;`lL~#vq$&Si)%}?Ia4A=IXaN58@y$th(9|8v!A?2f@ z9wbJPM`|Pdt%V2m$MtBIFza@0FRlv@9a{qH8OaID{!4&p6c2n)ghBD3@p|>a8OyGu z4`kdBc0J>a@NtE*{}G$b$}gmU!E`F*j|smi;V041cxXXAz`~5rIOt!=&Z_8aTIdQ? z?5tML&N6d76Y~}vobd74Sn6-XJ2n;|ZBrP|%tuaLm3q}l$DfZJVD*@zDe~A9P8^Cq zf4nJj@KUC~nU_3=H|t7mV%!a)edJs*O&3HyaVbqJnt5gx2&alrJs`&C2f7Fwt~IEI z9On%9B2+wzTDV)3@r~qn%Jq<}kM!&}7T~wvC_n;*avi;($k=Xz&9LL2&Y+!UIQIG` zjvB?~4ym-_QsedF@@IVd2&$(xO8*Uu%c5oDxI$+HN9rHIX~Mz_we(br+-FR3%nLtd zfQ~z$$E3C1BZzPfT&F@p^H5xsM<1P5R^T7y5kx#huH%2#P!6Mv4f9 z<5tNOGu*76HuaKtSR4-^Gw<&>=(v@shDzqVE~QBxji93jb^o zzk;Tg{w1x+LTspo^Amz|?Vsg1r^6OZqdP&-v7)p(&~B7hJYO-6r0n)r0AJ3Y*FO6F@Uawx|UIq+};$_^jaa^H0q<_*C%-u`UEt{x1Y{RymGIQ#R6JPEZwHC``H zxTgk#;)HgZk>4TpirR~=;a0L2C&8>9oa~THG2ypS>m~89I7v(Xlb|%uR>DaD&{AG4 zBKBu+9622~Vhre*CscGXmDMLd0ZYHrN0*lTE6;m&saXOX9D(LB0-cF`ny-9-GsmMd zkreGGRW*grB4Qk?X3UAHaI7o7p?fCLc{UxNj{F(r1aeZ-rCzBr=uDXFSd*N^n&fQv zj4^`E+qb3^nz~eoVx`*uSMDE*hR6R6VNl zLgV$yi~IQi5ma7K4+2u5?a*=NL2%74_689?)ML^aa8wGvYQ366=^U@pFMJWltFG}o z`OwZu!g9muHiqAj`dj6KD-0CZ?Eg~bPfXCJ=5`LBL~>ofj+LA#;I>LrMsVr926~!S93fq`^=&E zGsti#{;cQVy}#IMjH(IDDIrAN7V8LgLUBKCUoW6x{5r6NfS37ZZNO5&pao7Kc4j zj}g#|=$~1fj-O*4r{hK50If%3tzH&+7#seT;#UxCFGU^^u-QazuNJjI`6 z?eK3wj{!JVn#Z4rq-eW(^@yChyamQUEb{2nvGmvzhvH9o(BI-umpapw!OeX)^Gxi} zEv?9o;rdwawoLK1ho;!px5EPvOW)F3_$)+$-T=~c<(^*C%;Nl$KRbd#0@ORvER z3AN-zLga+vpj=LT6@0)nIu43{5&e+RYlVXFdWBu^+x9#!n?M~BsGM2P5!j{FPWy}| zbqQ`=c712Xd=EE2EeW7TQbrn%iwqi^Ale8YIZ9^?NFeP$8`(wErxCLy8|966d zd6d=}DY=7I;GYuSUkS=ge_Y4({;i4qgZi-Jh_=nxYCABV=SIgD4);d|J&Jpc*NgkV zmWQFZAAw#budw6!5Y z_rr7{$1q%gvrjfTFoNg3mM`xCqlZ>|PsU+yR)pGO;eXc!)r&|tpKZo{W||9+%Q(os zsiTEnnDW4yD@!ZOD|;)*aZcM7mR@Tk{LRVXfTb1JV{&HKGS_R#x7lB^j!R2Ye#Ls! z4d9E%?@WpulzLQ6w+HF;{XMBqMY_GHFZy)!mq<(cbPyuXTljm^kI>mAIhKiR*9}*XQyc#Qpx(@_7yB#8#>2aKmTICPJkDBqu5`DoSO zNM!qh6yu$#wZCvtG8~f}>%ot*wut%(>j2AIcHt3bM#!6A?6EKWBpO;jtj7bt44IFE z?gaJg2R=vs^I5R2JPsTD`T^s!m#7mWr^a3~vJ*N&#q;8+X0SGAA;_vO0~|yGqao~W z0f*mv2v5%D$aX=hHx>R6DfB%U5&w}>-7h5$ciHv-sl}zpLF?C=fTicX6tGwzywynb z5A@0uL@b~mum=wOX2?m?)GpGvQzCGp-Q0C9a(baaHxfP(DjlRrm_TCY7d<<^JbMA9}j`1tfx|i_cE8Caj9Javzfj*NdF$HtR*C zHs0)2e7-K9a)29oK*FBr)dt)NA<}3<86h-!3mPp-# zar!}yE#VBOcsDy>Wyzom4CEFt*VZ+gZQ}hk6+VhoCC@o-D)5Mp$o;iY|Kj=LA<4S! zbJVj3__YB(Y^>Nkm&o2?r_2jK08evPX7Sp-o0$RUmXCeM@&hmQy_co2tP2shhmN@U zs>rE{mpfle$6tyZ;FwvMg5cnL(@3IQJ{7X*0CRrn^#My%W+a0ZDGRE*ddepP== z+A|f`bv?%Sm$}|5(t`6D2o?D!<@(2$xn4_8?=a1{v?TSf(5oB3cRT(UCEcVgr)oO( ztsSEG<$kKB`#jP$i{6*}s+#T}k*-zJ$^BKNyASsdSrzRO`fWU+X2ky%ly<cS~H` zk>fgE*LK5Uz>bI`&T|^xj{|=kpZ5vG2@wBvYb4lD&Ge7=Cre+Q(NEO$4Vf2voMhjg z{$9_hFmt`UWW7Qai-ALr58Lzu1NQqd_~eb>oM?ESDTc;m(D9+h(WYixCu(!m_QdDp zA?o;WJ(Qm*qSBsN@%u4Hg-?u?Lr_2RM&%cBe5m&~VA(k*aASIJJca(ImrROUexVN3 zgZT$QU7O$YOS9_w&wH0!!O`l2>Z{DexkO(ad&bevJdrnw#i+f7)er0b2E{@>rsk<9 zWl0xx4`lZ2(@tyQIv$(X`woky!|7;ZFrJ5uwr}3C;#SX_bO&y=+4G4n{KGmPzWfSy zr)xDQ$7W%wY|AWeOHD0pM}fEZJ^M%LtFOeE5BBTtc*8Ud77~M9MSCAzMZE>Sci{#SQ8}0H1=TKm zADK86P-T;1&tri$6ICfz`sARp8O9~)SqC5W0h-_{%-61Ih}`V+gnpsbv*MC zu=lyPAwTBqYfb8(&ccU{IXPIWbF@^K;1Q$Q-949Ha~1s5=G~+@eK~^iXBGZwX@6;= z(hb(aa|=Zeg7%+s|Mc&H6`o^-Uz+&y<58cvmb{!_S|_70Sht_V6Rd{C=hoo*7LNV- zRXq=&jpFm9+=${+6II*HdLUD1A^;kkBX&j>^MP9B8~= z9NgsNM;weuf2rcnThadR5I(NZ7U{R+%CAiP*TTV0;S&?uD*PlG8V8fek3X}o+IrBH za8S|Nw9pl(`cq=*iKWaKzvJjc4qu841x~ZT4V5@Nw)7-98>M9V&{hr7zOb z&$S)P`}qwh15Ca7%Vxw^(i2YdeoAfwgHq?M0|z<`wf36#B~?`jjp9J%~Er zw1wJhw6oY>!s0+}A6NKo1QY55mBTnRY~^xIdu>D##)Kw>pXNtD4mA!vCi!!q92=~J zgFr>Kz#7!A58zi!O`KC4T#uYtj83y-oIYDL`}0lHwQ2ytw)ku zivmY0e_vQZ;!6G_U_e~9;78gqz_ONpN(-Nu&=bN>qM`MZu47K1J{!Q~SBJ}OC~eia zWWvKYQ7IW+M#s!NZ`m4dbnQrx_6tCSmul%V-4|2azZ|a|%;8Z-iD%F^Uwr)PH^1w{ zZ`uAWz_0yi_)2;(41QzsgsEp3G+r-$&ssJ{9uT(!=#Rz;6cWG6hm$xAuSorDtV{{w zWG(#WC8H~}8TG=Sa}+=I;8!!ngx^NtC(+ROJ%;?e#VOE>X)Hf}nPMC&4luVJG2 z`P3Aa|G#YQ*OyC43tR1F>jHiG6)1IhVLk+76nXSy>P&08yE3n}eWUGdo40Q6*tBJH zhqX?@5JCD)Xt|LW|EBi4a=9@L-e4Nd3hfa}FEHf@pB}Gok~j$CYnwq=vIENOWeaZP z3F|*;?p&(YUay>Z)hKn#kB7(cpg6Bv zX)oWse?QMlNG7*$yK|ey&|{?@e9jsGAupf}0-=_iFbgP<Tv}!?}V;A2I|-IEQ;OP%W9;@I$Hl^3=0fR3|Gdm2Et`SE z1B?qwtXrzF=IaxsE#R;dx85)P!+alu^DrP6Pn*@hFGDICXkx4Q1fUe{{S zJz>%y^C=c$bDOm$rX=%omw9$FYw69US=%yl%_Oqvx}a9Jw>b69Iulguwr2Isq1bU$rC7GW!He1tq2mne~ zTdisp?N`7PO@tyje`qHm&9-S&!M-vUN?Wfj@JkTSB12`q`N&~5tLDQyM3-PIxW2Qo zLz~(0tDjFy$0!(he`S(@XG@`I56jhuBj=qLm${yo9Iq^QUF_IN zo34U?kLX1jUkDY~YmI+mud*L3EonW=?U)T&PZ!qwtqDFQIb(7PpeQQ( zpqzg|&Ub@?b(At4tfCv`{G^Sq?GYLi>Iwy6`n3;%UI_+jw@^ZIUR>L2o5b@t$G~+V zyq-rM2HKm9Yd^UTald`phqz?Lk)2ER$9e3Jm;0dzGynBR%i^Cbi|c%cZ=G|+t11C| z)JZbBYj~*Nn5QFciCg+viVEa?tnR` zJ6>2jS{6u~w_e(|bhfu|+GO5>skTnQ|DJuI-pR4i!9DwR*xmR#D0#^0e~w90O6vtm1|e0(&GGrj!8^gqC=g@c>CP6| z+usyXi0Eb7VaCAW`!ldi$D6GNV?-AnsMh*0GL;NR=44T7G3Q}PSo`qDklU7Vjkxs|lr&Q|x+X>>KhhH^MPuX{$--JT%1&8X zNn@dGZ2bckvoPLb7Q@2$&b<4^ouqtq?mg!__k8zzulxM@_EpW8QOU3%e2800LI|K8 zF-Y|v*j2q3wR<%*83pMQq_pB&mYchEL`+3~YA@^1^vFvIKDJxRkw`hay1W*fwdBUi z=Hkknlw+fMKcsX*ip*EIUZ!A3wZQy9%J_nuUym)vT~5k!e_=HgRwHfD@xG0yI>r`M ztGEqdZ9^2tc!2p41iF;?8RcUQdp&B*vk8O_npM~8^uO|`X}_BGPX1Bk==`H_NXblz zJin_+eAM#eR=sYxF%F~e{3NK8A%2zydnDek44$k)E7Pp{W>rzn7WvFop-?F4_VE2O ziC&)U(j`&Tt5_0F!4?jUX-a6Y{(Cbu4v$TV&%Q&E<;P`mL;M_$vPU9Ya@1Xv%LQo6 zw4cnqwCgMik^V%s&v0y!%Ur@_O62&paHb#V9uMlh{rb%<>VUC5$&9U_5v;GSImM|? n@EwSYFDL@udu79o!GnsC2EQka9moA7%yo4+Z^@Xox(NOoU0R&9 literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_bzero.o b/Libft/objs/ft_bzero.o new file mode 100644 index 0000000000000000000000000000000000000000..cfe1fcb38b2a14fd921d7ec79f72985c3db1d65d GIT binary patch literal 684 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%*Z>v30aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7DmfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1- z%29yQ8cYzkbO33nQ-Lf5h>uUrh)*j@%uR)e#mA$%uK=pl0ZMy7&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNPGg+9SeXo50DSk&j52XkO>ALy->G8MTn=2n__UJvq^i`Sdt_Z)8v$I9qsSg51`;uYTqgYo z?q&T^o>3Y-fk?gt&V8rpi(KfESuPE=%3PU{AI)-^0>Fnvn}P!8cHKL$Y@au3$NRNC z&NtT89>t0jhKws{LbF_Bl%vMBavSG!D%?G^JV#VG|2f~e@{w^@`lu?A%g^fc$Uq>#7>XDJis* zEzp{IEuYPdUErw&tj{9LUjpjC!|G)IEVY(P%Rc%hc)T!&5x+x$%Ba)it0!)wG$A4T YO9OX(?m6C(;{*4sYPD|1C0nHM4T&sd0{{R3 literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_isalnum.o b/Libft/objs/ft_isalnum.o new file mode 100644 index 0000000000000000000000000000000000000000..beb024fb43c977a5ff07b8d7ec035a1071eac39f GIT binary patch literal 760 zcmb7CJxjw-6uqg^inb<$gMvZ_hb~>592G4@a1g2BB9G7y6RnmF<;GA^&_iMi!w@$&gaR-6=75QiKQtbJJ!rgz$_4+ zrB6~C;NU|!e=YS--~v4AhciQl!LNju#Rk_Y;0rB26=5w9{?UT83t1GZUBCwTS#Y;C)9C-!H9B z8|SIDTw3b#V0>p$2cxXWX>d9R))S}k|Cq3$PI^*xUpdEBXW#KfTL*5lG1Q)Iaqk~* Cq*RFj literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_isalpha.o b/Libft/objs/ft_isalpha.o new file mode 100644 index 0000000000000000000000000000000000000000..da20b0195bfc3228a1611cc01e4a7ae55c359431 GIT binary patch literal 680 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SOFEk0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7kxfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw$ z%29yPOc1v;0BNXGfh+`wk5A2rPb*5yO@)ZX$D_J01FF;kMnlbmav8W87+^}kLPkJR z0*JwO@pCb-0Wk=GECq>oK;1C|NDBb@K>Z8>K#UAPdZBJb7AA@v>e2bMv-U@G?GH!( z9+1^QRuq4q2!xf$-y;TLRq^-p09nUf|A1_I35qfx8%Q#AyZ(ti3}S!*G+r>A12PZ< z7^{L97%K!A1$fvwCID5b0L5g0xZ*zqz~Ys`kx!tF$(ff8qzMXu%Gp2$^CO!cpH>o| NS)7+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z82Ed{fLeg8dj5VMAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag;K7AI$Bf|LRP DvIs#H literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_isdigit.o b/Libft/objs/ft_isdigit.o new file mode 100644 index 0000000000000000000000000000000000000000..a0e0f40d01b86d5d7227538c36481efb8e07fb54 GIT binary patch literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z4ETG*fLeeoOa6WyAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag<#WTt0=Qwad2 CK0yZn literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_isprint.o b/Libft/objs/ft_isprint.o new file mode 100644 index 0000000000000000000000000000000000000000..8cf5033396fa25d36dbe5e96031092dc2714b779 GIT binary patch literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z6!?3@fLeg8I{tnhAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag;46lLatQwadc C8bMe9 literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_itoa.o b/Libft/objs/ft_itoa.o new file mode 100644 index 0000000000000000000000000000000000000000..6b8424d68378e36d6a5611c4e94625e64d9abff7 GIT binary patch literal 1160 zcmb7D&ubGw7@e)54caCFD^w5+=)p@QcF=6!G8%5v|ISwItR z5o0ejhk7Z^dUc~{+Oko5X4TfDT+WZLztw&exB(;N<(Ae{vbsjfQbm@Z7OSNQk@BoR zeZGn+c(3$y{UyfqQV88ayMPRBBrmdQBn6#?@J09_KNa+8^r&a|krY&;llY+qEu14B z3iqdQ`dPPmBusuJT<#06=^v7W%ljVhJ9~yOzlqO3m~cBG4pLV*%`Qv6oC8g?`GDxX zcW9{K&~SMGf)Bzh5j@^KVA?K3!8}7T8enS*!@KJB7Xl7 zTVJvv*ywuAAm91~;Xs&${y{7ry1~K#*g!a6 zv#a~%+sW%KXfjsb3Gc&g25sIa05$@3iZ&n81@|7Ez}r_ajBW^5C9Faaoud%wBcQgG zK11?wGpA>P?cR43LB!=lj}KS(!5)uT^r#b0n^MSDM4nimS0cvq2h7+^8L8Qs_zqY% zfnP($kICz3r1TlfB~q`Zmgc5a9r5zWK=IT*6Fhnge0v%CRuP#r8f+8FP>*B@G}+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%cmNf@0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8z3?fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1z8@Z zSOF>+!31&34j>J6Dv*T$@$sn{@o7bgxv3Db_;^(JEr2R@fYKFE^PpS?ZU%-77#lmYz0vLaro;C-koUl&^PorL!T&(u(dqlZqxlB|e~U5DXrSB;{%sum z+d{8fUgU4(g$e;R|9B}4;6uKmbb*432yPZA{L*YzU)4VZ#P8m>=2n__UJv+|=CU Hj3NdADT-*# literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_memcmp.o b/Libft/objs/ft_memcmp.o new file mode 100644 index 0000000000000000000000000000000000000000..4ae0e2bb654a43e15e6c99b8ab3cf36fdc659359 GIT binary patch literal 756 zcma)4Jxjw-6n&|+Em}X2Hb#UcobMF?HGi2jn& zwKzDMZW+4>?I1W7DeAe+?H3|=;N+fr-+Skski34re}#q6W&|E!5Nwc$fxrs5N&O$_ z@!aD*!ycZ3NWKK6idMPkYrjvL$H{R&RF5pkkFtyq6gMLcp;YGFE~GO>RmxwU2;wHwm5b(3Os2mk)45h4`%3h>x%bzJVov*=Lx4G8Xk6SS>L~f|5Zh*_+;4Xbm zgg^paN^_5MbWo${ab6sPlc2Mlb#nYKos!O*bgn<7Q|d@3)s|Hg+VoJ-n=WcwI!$@o z{05|xXv@2v&?^UU$C{_tBPgz3H?~@Og%VFs*IQ1a-;MKJ&QebHcSoJueSrCk*~g-& zn*Eb!5(Dse{`GoGysljx39W2sMl>9$Vb>bwt6-es0>l4A>?|7hf!&1=pQD29Au`q{ O-Bq@zY|GBr1@QxK3v*xq literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_memcpy.o b/Libft/objs/ft_memcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..d0b66830935e4bef0eeb8229d790025509088e30 GIT binary patch literal 764 zcma)4Jxc>Y6nv*45ly@+EEFtK*xFcGDtfSmf=B{3vV?dc78iqDFbV<14?Jxw#max7 zrNP3|lvkz^l0ry%Sg7;dz2t%j4oqg=+qbhXB(ERupD7|^l<)y2z(+P&5SRfMx&90K zEQn^bB9oY$%aGD@>Ynnd&e>bJK^?g}Z8(p2=_5hMeGemLanG$5ik_@h4t6U$Qm(DW z&+m1S)mk4>y97|ZBHRE{I%QefFSw5CNjbdVlOA2tdaLtvNfSin$g?hh)8Nlr<~Sum z20zOEw%(%$O{2zr+5qF=yL#7n`(HjU{5Rn@dcv=Dgr9GV(?*ZXbAB4O1Dj#{Vuu{p zEpTydW84m)xMH`UZQ(b?N%IR3{yIWJGSBAKY)hT-f;ekkS(p!odcmdDec-DqIE04V z&zO%v|K7j8=9Hc>jyB1tTZWZRjon~s4*gj$%R2$l|Am$(t&5SBOfr^@@gxVE@pM`8 Lr0clF>LGmt?|yTx literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_memmove.o b/Libft/objs/ft_memmove.o new file mode 100644 index 0000000000000000000000000000000000000000..215dd01afd4aabcfc28b0b90b7a1c2f4460f6e6b GIT binary patch literal 856 zcma)4K}!Nb6dp}fD%(AHFzVo;YY?4;E=euSAt6e^OAKO)9o8bWBoK;9T)Xsdif+=O zI_1%$m%u#)LYJk3_PyO%-H50M-@fm?dGDJyv-A4-J`6GDn_~C?0pOlU9DvOO35tKQ ztX%6#@5az%1kxoFqEe_;9PY$vEt{UiF8h##^k|l`1=#tRg9wp7)Q@ucil~-P56b&O zY;AhiEg8h6@A#crRxpqp6`6?%Q7DPxaZWEdIU&B!7n4ovvSlFkT!k6NN-ihA3d8`r zO_^pvfQ&Y!d_vB_;Z?-wXWM|+s8??5P5+B$xben~`hXkNJ~uKwepw$d<(jqz?Sn>$ zK56zvnGY1)XeigZ@MzIG@Lj&9b(BUDt0q7tJ#Mu5MSBF}MhdzXQ?3@AHMFF9t!UWp z1Z_sc<_ikV-M<8uT>)F14h`{6OSP4}xo%T6??@6Q?!*?Vti4Cdj7`3yAJ-R^6~40_ z=Buebbv6{fMb#4Wi@@`cPBt33?~o+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%H~)KfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1; z%29yQ7EBPg%mC6*rvh0B5FekK5ua9+n41a_i;qWjUjtOB1C)+{ng``Fa5FGuz}O(# z2#6(s7;G0m7Xup*g8;}IX`og2z^@m5N>w|9JFCD)3fxH(Uod-P{5B>)Nk51ng9?d@(_*-OvMt8XarF|cG zbe{5PJOr{GsQp0)6aUHDCpp!TLcjV9*qk2&>_OWOAO1pq6bZ67bOq`A(Rk0cI?lH zu66I)KM)kuT{>iM-1%@j1P#3Jy*E2E->~2F*XMVN$eJM>z$|btA`2kaft>h1;#Tu7 zT4OwBl0fE4Fb94+h;-x&N5#U_8?~oG=E*LNM6?%7*VG6zdl$8a>jfOvTh)4r`S>vY zJ*OtCY-5h>(l+ympr*m>SGe4CYkrht{=HvOOY_P*I!`Sv5LJv8-UZfx$#2QbQxcGn zOC{fh5PgS3Jo@Pbh==qV#Pk2rXU^c&>3!JwerG%gN4?I7GQ&A^zOUf8?u?vaIDU}n zZ!*s5J=y1vqBQg!ChMD=@TwZ?@|3K$ZP|;d^bM*uk>3FN<0#BK(*Cl2l{i>RYTp(Z j<=bMx$uu|18#(YS8ej!|B`_%H;6XZ6-|Wtk3N`S}%r`spy?IZcKHtBhM4=Ia14e;Z7%m0C=7A=E_`@Eh zzQi-IfJ2iQtjDIcWz;M`_jxXx&;9ZsGbCX>p8b#ravAh+)cWwus+P?oDQZ2a7wE`Z z)Cv;mAEK;xa(sGlXldI#FPjCeH#el!3nd{biERk*nX$3wBcxT1ODFU$ZpOIHqHtJo9x5hB=nuc@hUFF(6-NImD$_DW$n3vxW5?GZ6I8r$qDIZ<70QC?4XcD^7kIcntVwX)zH7$mmeYA3;z2 z7@lJ2#XF$aNUPABzYkwB-2aAirn^PYwcAdyEwtJYgv}pVj7-Wi=0HkXnI25F*fwe} z55ej*$0;D1Wh_q7gYGF?!& zaS;0QUWE4bkUkuVenZs+^3Q;i4$g+DcPCzt>R$)mjQDRC`wal)@hbZ@_8;K!-5$~H m(f$m_a1@85@EV9RqCFx0SbK$>WeSX-M;-kGLInkf4#h$JF1=_K9Q??a@4kEQ?p^Zk-d^70M3Di)3mgP5IWRzA8eC%k z2QDQ4AbUcOp2Xz746SXmY4_ru&t!*H8a8hT+8H||6)sdkE-=-D9`PBPN(H|D0wo3E>H7# z`EEz~PFMNauIIig?^bzEyUl0#u)fn)-c?{#>&Do*<^_S=kNm0;r;ehTv6$3lp!m-8A{1q5PD5i8&}83f9QIjC{PLtrw%)hv WyJn4aqh7JiAY(Z;lDbsHcKQT3j9ec8 literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_split.o b/Libft/objs/ft_split.o new file mode 100644 index 0000000000000000000000000000000000000000..34c727b49092ba2f6d31d2490e2121323eb1eec3 GIT binary patch literal 2048 zcmb7FPiP!v6#u5C=~mm!T3d}EGzAYuTusD-#fT9*@PRG{=|T?;({(zrk?l67I~at4 zg-ImSp^$^3C-vBio;}Fg8gb*v2CD4QLnJejvU6D4q13Fu_syGaT(busyzhPQz2Eo# zeY4;GdjHPO0U@+U1QzfRIJXbW7#Q?4c!eATXr2y$PSP1rrX!{xX16fSn!Q*fL`tT4 z#yEQ>(;mvdI1a_5vtJAg@ff*>M4d!NrfFTNEzDKlXG4FyEKXMXk^R}pRC1c05%Dfx znlD>5)2V(mSG{1GZ=dctv5EP>*K8a`JepaI`Z)BzLYk(1(VSfm$|`-MB|Wz#^yR~_$)=GIIGV%a zxtlOk;quyRSJ6azA}F?`uSKuJ-Za?cwq)QSSE((p6+>n8lCHjdj1C8GD{xXH(j^fk ziooz7IV_Ng^nMzjS(|-9KfXjRp&y?T+|L;LNqnc%G-C1)y8epLm*~qRMQ`L@Eq3(f zCs>#JX^1M-^UCBVfzi<$v8u~AwgV%^9DE}VjBObd6KUO&+J^LtN%U2>+l3p|jLod= zo~QJkaHX^b5Lz`_O$1iiLsiP>te_MOVe8aJubQw|O&C=a$_;TRTdJ0cyS{N7^9iL@ zy3M03#xf|iq;*94LmNm16)CNQ(wkhzbsR#Brttt}cB7Nn2Na-)0Ng@I@Ia&fwCEgA z00RcxgZ>e(a({WAFNWmb^loc_&8pETyMDdPVKB1ZGGvfhr!`Gn)B|9DgCpb>9f6Rw6AOW zGW`mo5mh>0SM)7%V zLi_k#p)KaM{GkK6RpfjY_GiG;>KeOUu3v~ZM)IHRd-E`!D@BAm4Ne$WS5_>0;ON_$ z{u}cFaX)+FJ_Rnflj69qJ#pUyH_kZj??1Q?(LZjfaGvE4=q(5R8%R8zg%d2lL@YoG zJ|s+qG9;eB!nxFb>_tfQT%i9kP@#?mxZ(3Gr&x}$gi!tykRt$Q_e}38>Dj$L$9i^; zldNa=2B^?!VKN|hsp73ZeWFjNAINUJFlTG#mHEnCO_=tgoo&hJyoY~6VOmw})uv*X cp_8k&aKV{RT@||u+k$N?k5#TzE?da)55k_hwg3PC literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strchr.o b/Libft/objs/ft_strchr.o new file mode 100644 index 0000000000000000000000000000000000000000..0f0c202426d5830381eab492ee1bd9626e5043fb GIT binary patch literal 732 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%cmNf@0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8zY1fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1z8@Z zSOF>+!31&34j>J6Dv*T$@$sn{@o7bgxv3Db_;^(JEr2R@fYKFE^PpS?ZU%-77#lYqto@rOKTX16=XM1=)=nc z|NsBTr-cKg@VM&_AO$k|N9{=4FHG15rTbY#@XAkxh?JD~T^IDN4>LVgLYE|79!y literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strdup.o b/Libft/objs/ft_strdup.o new file mode 100644 index 0000000000000000000000000000000000000000..d96ab0ed5ffbdd7eee8fec0146c58f826f641262 GIT binary patch literal 828 zcmah{J4?e*6h6_~idq}NLBS!Yn|5(>RJ3ph3q>lp$R(sH719SarBw(BMImHy^k+D_ z`hdFW*fEPxL7`)DP|r#3wNVfceEGif%*nlZe1H2$04Sq?4@3-cO+rJU%_G*y|HHZ> z-W4^{$C*H&xn!K%X3GwB=;t&0`JpdWQwW+zyIhTk88JAOHN>17)pAWYY~H9e4=V-E zcebPXmT)w|IWgw}S*(g`Xq=lRUaae7GmLTmbH7Vbx*@nG_Y(djKuO4e*6=xp2;P;N zfH;DTUP|#N6!d*69?&W>_CpR4HR>hEGmPf`(|gQ)X6;vvxlW&XPQOPD%+2(ehZv)= z?8e7PM`nE1c6>;kB`MX(45;B{ksQzQnb*KE-<|Gl*yUw?=4J<&8L;-fc5p{cfr)zz zK3~R&XN9Aj?1Iu#6?G~xet}iX7+*lJ&(P$50Gre5`N&o>F8Xw2EKjc>O!L?rDaxtmvzgk8USA=scVb? literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_striteri.o b/Libft/objs/ft_striteri.o new file mode 100644 index 0000000000000000000000000000000000000000..b14ffbd07af69e702ca1c6ba0618d99d4bb81546 GIT binary patch literal 696 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%*Z~#40aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj0F<{nFn$U9I!Anz}Y}Xe0*|#Zb4#lNqlKud1hWpe7uhfvU~)T zqX4B1m>_PM0HmQ#1+owzK0Y-gKCLJ*Hx(ilACKz33aC;CC>;Pb56WfWW?;yGu|c#E z5K90t*e-r91~woD0g$C2@flEetN_viKt51ELjVvX1CU;*Takr{VuyNkKJ{pRqu|k5 z`@^HN^uux2Hz0i;-L5}8l6~Ja*l;lLx2QryK6KZ<@#yviN`$`gV7%zjdG7xOpiuL1 z#?IO|FHipe|KFqeh(hdPWQ(EkgyB39s3OLyAO^+?0Y(8Hc8&=^RVqMn86eI8ng#-} ncxG_q6KG>{=4C@N9H^WPWH3Ln>G5eL@x>)YnI)-3nLs%J-wawt literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strjoin.o b/Libft/objs/ft_strjoin.o new file mode 100644 index 0000000000000000000000000000000000000000..0e88db478a65639c179019944de738852d5e1711 GIT binary patch literal 936 zcmaJ<&r2IY6rR-(Lv5NIB3SScO0O2_DF+WqyD$d>K@_}{Y1l?g$q&&D1|blMO2%Az z>fhqg&>y)qIqp?RVFNAXW{_g~z3kg&bEpr#c|YcT-@MtK?)~qF1tE-ifdvQw*AyfH z*mEF7`G4#^?>X%K9GZeax@1b(xvK5OUcO`Q?M!n&`ojU~(JUzlOf*8G?)Q*a$|@HR zvzDzYrIUQ=gHl^>gZq=qppfLEGw11KAjYGjGBu@g2WtN)Tg-VirDo?#GHHV;Bi8d3 z7KJ$QWAd+oWne;!JrQAmj1Hyx9^b18pF|G6$N)hjE@5WSV8bKvuGBwe^vQ_|_-RU8dYtJ2qZjgFyfeQEt@CL)7xk%rwfr!=z59z3UKp)F=76D6r0cD zmve8TVdkyF=t&Z)ZkL7$xa9qeCEM^OZ HvL*fkEIy)# literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strlcat.o b/Libft/objs/ft_strlcat.o new file mode 100644 index 0000000000000000000000000000000000000000..1a44b8f2d409487dbcfa82492673fcda67ba14d7 GIT binary patch literal 888 zcma)5ze^)Q6rS}*6i?k1EEFs(J5G3iWsMT#^B8&F6YER5gF&S)$IKlt{&_q}=FyujrC>G8RPF{_o~1Ga$| zlnjHwAUH|&2bj^le>$2Po{UJo1S#G0o*U+2J;&$g-fELQ>V*7gmr)qBkk-b2QZSG* zwXwdLOu2F=v%8vEl5+Zo=~1leVpzulOlX%$eDtafTiwQf=@q%Wm0VAUij?p7bM#P5 z4+PrJ%zt5Q#pDzxzyYu^W_Pg&NT5qekLlmFh)6Z&*$mhWnl)_JKa(ef`Y*hPm{12* zp>_hH5@q2ZR0A3oiWgA?rYHy>!W1vtzx$}|^MYvQWgM$j{)R#k0*pW(jWHaL(rSvA z#;=4Q5A4f6?}=r3-ahPy?(>q$dAYiZm%JLY|6FGi`4gT$x9p>Kv@6lj6>H_huN*lE z6%S4vxZ{>4t(tWzXZ3oW8h4G=Xp;i12B{{z+t|Vl#troQA;)*1r3lvkEVK3;%jxdu zJjJOIXhUG}8J7U&{jqPo&T-54o(K&AUqKv?(*J=XX^0V!+4RxqL2N4V@Rwb=?QX55 KlJ0As&af9Gnwnhz literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strlcpy.o b/Libft/objs/ft_strlcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..98c68f0743316b5bc1f76fa4c587c67bf9078b5f GIT binary patch literal 840 zcma)4Jxjw-6uqh17QYg~LBXMegNsm|1Q$gEZ?GUz!9^aWRur^~ruYFxr7EUfT*TGU zpWr0*195ZIv5Sy`f@5*8o}0YbI0#-ix%ZrR-?=v-PoM8!5hAUL@Bo^DD=uOHq8Aup z{znX`vlo?p4o_mRFNc&?X4~>=k0;H!WP|(Ftt!}$cVPq9x|#OXk(;DUudS}9(w59+ zx0bUDQcg_<&mR?useBRgc8U6aL{J(bWoAh(ZlqQ-o+jn*{T$UgrgB;NDN1cbOMcCH z80Z1q-St)q0~|b*bpv~F9Yi?-{h5afDZ*gJgKZKogggsjkrM%<5 zhp^2TQOH+FKk9&)D1q8$t-1$NW%r@7C?y>Ix~uR>C+4$$$m{V9O+PO~D4Nfgnts&6 z{iA$TGBM#s9Nh4}!cI6v0~#g=w2u?kDx#&1z`RQJj0?0qG3iNbw+{tiZgxb>DQ{*rY(D|W) XzfXYTM_#n#rnRw>Uf=ntGg(}!*iUF| z3>q9;gXZ8l1dh^>eaCm78WHrtchC2od+xd4%jd^eoXD6W9AFfD6p;pjB`_oY4?OAq ztDXrxc9Kx`3Ya~&<^?+NSv!{<`%pPr$Uez3LX;XK4Z&PEDWB#G9-mh(jw*-D+gp?O zjy7psGm#+69jcBBH3qX=;$k&lc7q=C&wLF%x~^+Z@6(oMiAtfCx(Y6W!@tZKih%<8 zRQmTi#{+5-9`9)voP@m9Str~7()+6Qu3Gh;>e#+KP|bRe%SvQf*R4nwU7>`K=Q;rZ^^!UuH9=jF#27dWeJ^%m! literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strmapi.o b/Libft/objs/ft_strmapi.o new file mode 100644 index 0000000000000000000000000000000000000000..42f0f023a9174375d2eec7f7338b8d8a2a5b0db6 GIT binary patch literal 848 zcmaJ-#ROosO5p6_{|_t*DwcfaoM9)?7$LBRo}fD1ZV z0QLs>K>ZJMOfEE>Xv`FXb7@+8rCl%fW4-KtUVhezcV-;U<1VcM5j+(8q{Or?ZdSGm zMNikNI~&zit(O*)9QoXctl?t};VvDpS@mhGNn^j#x?bBZR7!C~>;C<2OyQj2Q!~#< zc_p%*_~duM1n_j1{Zi5Zjh8acWw=icM;45J`3UqHdx^e9dkg;KuPFbIYW&S9zus1U zt)+r`yTy9-f+N+{Z&7|Tj`(h<8ud`@!x5&MZij`pUvMNqtT)S||<<=3Ly@7-<}{Yd1a>r{rbLgl+1a7Q(M=Dz;m z4T+iW&mH@0%qVN`lUTcskV6YndhjAN5PA~YgQ5d-uprVxFES0=EfLbR#9b^xps-rp zE`|OX9zBW&5h_Mh>>hH+F^32nXd%boq3Qc(XVX>i&=1~zKi~UinK}J)elf|IG0yM- zCV&qV%mc7l;2!1wv0dG3YoF%OWCYSBlhSqe+$2u&RldG@m8a2EMvu-SAfPlR*nT=g zUP^msd$(-6(yP6EUfY!N@uO@%uXW~iF&;~FHXx>3s9c$pPDO6j%iB&;lk)HLl{D$T zrkLrubbgbuiVl@q#CHZzH0uV-0c5n4>J{+m|K7nbz=O}809hk00VCJ8H4*$4{#i)` zjlKxHI9TfnztLybYubb`X4ac&3Y&aD>b;+ogpGbonXp&7!uS^OPRKj{XG7S7Pjr-| z8Spj~+W#sXVxY-eiXZYmG+O)1CRW}dMO`^8mujPL=0zh0x zm5@hEylWlZP53cLk>-Oq?nT1>r9>hn67_y45vT`zfGq>ze4E*2ouh zV!V3FjJ>>(pPDp}F-1qe4ZOdAG%S6e?7^-4!Pvv;oaTLm$9Qoa9(P<^g2%lTsf~J$ u7FzVtHhLR6pM%e|8C^{_XL8GxFWh>~F1u-5b!rIfj-v{8xmw+^N$wK9G^Wh} literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strncmp.o b/Libft/objs/ft_strncmp.o new file mode 100644 index 0000000000000000000000000000000000000000..d5f0590a942ffea99b4136fea66530a1a51a19c5 GIT binary patch literal 824 zcma)4Jxc>Y5Z#L!#jm@{s&93 z5KGZQut?6zlxYN02$m`#@l9?niHP99%e;9zGy67N?(41GDumG_@B=ghH$*}Jq7N9O z`j7C>^4#Os*eM9KmqKehnzTLc)r)dzv0nS^nF;M9FSTeE2Q?0&bz~#Hxe~GUPGWaG zv8wgVbmMuRixB6_fak@6A+`#o9$H6ZdTnbZ9`!V>fBO62)(Oro@8eQ*2odu+du^2e#ly;ZQO^Fma&}&o6E3KX1ebYa)Y2Wf zRhij>avs&;T?J9?Ir}V%v~5} zx&;lzx%#NrY>hveDS9z4WOeAtnJpCuSywIePWI>4Dz_MhwFguq~0 J5s7b7&o}l;ioyT@ literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strnstr.o b/Libft/objs/ft_strnstr.o new file mode 100644 index 0000000000000000000000000000000000000000..10bba56b90c572c309b9a3fe5211716834ae6601 GIT binary patch literal 988 zcmaJ=&r2IY6rS}*47R#Cc&OmPg9qCpR8JN!5j!vk3!*M~DN{)!7EBboK`EpJ7d3GY z_2U2FpWsPEh0RUdQ!a&E3Q1`p$Fv92@6FD%&JPFm-))_Uu?1`mLAQr4gsan!%C)y zqLi7<+}3KwmxcV!+x#0T=U>?MXIf`eFDA842~n52?0zY;>vC;-HJ6Q7rMy4if+nRk zY23`E@dJ#iQx&H0d<0iCx1S~8WV9)*mo@(kaSRxIwg9({xa9W+wHyAEd!q7H1mDx5 zQf!Gzp&=?>T|~S_6cO@9X_~qF12I4YZ#TaY2#R&H9`QCcH$SVUVyi(2owp(^HVmjj zt1f1E)!iFZeJB$Ol(dofh*Fd2lNTaca5!B6I%T$a7) zh)1W6yWdMpq3SqCh;xKqRc#)$&7dKV5AZmasfk{CX_yonp=402`JvP4;2o%Aq0|<^ zb^6s6dM(r6pSm_{nGI>+ykBI_ZpukL>`T(OPIor~KfZ%F%zVFWb})6&H8+sZyf28j u$BEa7piM04h(I_&8@lw+M*p1!8NE*%Gr8u=cm8%B{wL4mwoJZ}&9mP%!lxww literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strrchr.o b/Libft/objs/ft_strrchr.o new file mode 100644 index 0000000000000000000000000000000000000000..5df8815da6375cb5853e5789029454873c59165c GIT binary patch literal 728 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%xB(Tv0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8zI{fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zElV z%29yQ0Zb6LYyi?wrvh0B5FekK5ua9+n41a_i;qWj-wdcy2PjkE*cZr3jzuFpNXU4JxKFz~nN0fj&u{(T($+d`jPUgU4(fC_nZy1oEOd9Z@4 z2l9TrJo^9tfBdRn#2yAJh5=|iVmMy}s(`U7h=H*}fKh;lonrz}l?qT?28ca?_J9B^ o9WXfZ3A8ae^RmGV2GT&~Y#@XAkxh?JD~T^IDJn|NC;}-30DQw^DF6Tf literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_strtrim.o b/Libft/objs/ft_strtrim.o new file mode 100644 index 0000000000000000000000000000000000000000..4a891a2cb4a204f63ecbe7a9aa3da2d1bf9add5c GIT binary patch literal 1408 zcmb_cL2DCH5PnWe}=m{WITHzdy!8SG#Xnq>ogawa)>k|0F6Dk`m#RaW@; zd}*1zF8RJnJ_*@5#;VFEdkcCQ8jqo$Whp2L(NKI-?v)>7>>)7fV+#}KP#)FNtVsQ5 zDRTEacYfr#+a7RtxyQZsphqmO(IuaIh`lLx;}~}h1fZ_rdxfsk*MNL(e&L!=F{j;S z`q~9lqtriE>KR>UQ{(0?-}=V5yQla9?z97@znY+;&qheC`_~eN01N|F=qD9kA>eKy zMBk7*JNbp}$_;&LjjEVFHOH9TCyRYT?1NE@*vSYxGnnj7!b>}Z`lo!t=!9sG*Hvvn zJVq~yg{V!>OJh$r-Tx3pk!+h?*j7#dPd`vcr}lGp&3bx6rwhlS)W;lPiWn}tO@m6aAI#`Jwn z;zGUCZHd*p+yvHfuY~^3j=wwsMzAU-Kv?*RrsxjMMvFMakJV|ZmnEb WuH9O)WcJgN`HTsxRI4>iaQ_D40uwU; literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_substr.o b/Libft/objs/ft_substr.o new file mode 100644 index 0000000000000000000000000000000000000000..668a61ca407e94803d103cd34ce28a15a35210ae GIT binary patch literal 1068 zcmaJ=L1+^}6rHVY8Z>ot5L8g8;I&Xah{YZvIxvL>f;Q+yh8R;Sq-jkz7?gmrwq&{o zy$GHK!K1h2R8o~Dda!$vJ?0`9h!AhlL*x6|S=PNG@LjyuAPY42& zGP}0Ap2=FWRCsv5a8Js`>p_jMtouys%@q33EG`yZ8q=jANSRxa%f-xU&fk@CbiP+w zl+dDe-A||N7-K6zOn4D~3O?mTknSqdID(vpu18YcWFP7C!- z*xi&+m7Xefg-W*_-c`H8sq}a0)fImxd2EDTqurcY43)rkgOC_#+FcuP#seZbox49K3aD;_g9^%Q+# zcU}{*$z4iNZ!z=PW7?dH+FQfi zoFM6?FwcH(C|vH7`jXh5pM~5LPRU(Ry@jU@8g5Z>H&LCR?K~e02EhfuNxFOEQ991U z2k8U*!v2`L^8u2u>32+>M(l*nj7K+^QH~q&*ktqtSo8+Yz{LTMg9ZNqyLvpnHFj+( zqIGY8pwE+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAa64fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z9Qk`d76MsO{QZ1DR=4Yq<^u|yu76&#L3luBx9gwS!^j3h;{n5Z5vU@@svri&3IRp| z9(IliKvgP0aTy@)_zwZFcw}(o6KG>{<^@>=13=|$AcOglO^;72i7&~|$uCbW0;vN4 Db)`kr literal 0 HcmV?d00001 diff --git a/Libft/objs/ft_toupper.o b/Libft/objs/ft_toupper.o new file mode 100644 index 0000000000000000000000000000000000000000..137ae034299c5876940f6875451f8bafc47236ea GIT binary patch literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAa64fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z68U>T76MsS{QZ1DR=4Yq<`)W`u76&#L3luBx9gwS!^j3h;{n5Z5vU@@svri&3IRp| z9(IliKvgP0aTy@)_zwZFcw}(o6KG>{<^@>=13=|$AcOglO^;72i7&}7EhtDW0;vN4 DyER5X literal 0 HcmV?d00001 diff --git a/Libft/objs/get_next_line.o b/Libft/objs/get_next_line.o new file mode 100644 index 0000000000000000000000000000000000000000..3fe2879730db3b1523d6228938a97ac898c702c9 GIT binary patch literal 2808 zcmb7GTWDKl9RIS_?pU{;4C-a*SV14Ea&(RggCQi?14l3*(#jafX-!UTHBB^4Seb-H zPAfS*6ec*lqJ8Y}#U~#`)`_L*TlGO&e99n$1dh^&3bB^P-~YQTm!^UreBb|m`!4@; zHuwHGIKf!xIKzV3gQ*?EGKh(B2D3Ck@CSp(`3=kCL#56$q$d+i%UzDgw~9N1~(ACPU=`^ZSEpRHL&b+m5Ga-kXSL z?Of{WbSh!nuZ}2P4j&NIvSbdSIPy3CAY)P_cR(oEwlifMy zNwS9+n^HKz3z&~#^1Ssv){9Alf)c-oJWc^#274J0_UtuG8Wf5q+0yaQx%}TTW_kB4 zHyHHtyKa7$=}Q#MDw%b1R9nO1=XR~7mx!#=VtHoOa`RQDFSMzC4w;|dwftO_>$&xY zK7X1Fd>HrDZrgKz$< z>b1Q5j+YA{*s**nN(Fo#Zv1?pYE|sETE7&r%a$M8vAj?XB$Wx>xiHh`4N3airC1=h zNhVSoSE_y_Oi^oVjYflPh4TDG$nS^uW5_-lZn|#Y@_`OtT(7O#$s4L(FJHI3+|KH= zu<5MrBzPrrABi+-KXN>vE9K?`6!R4@AI5&J{KGTAxv^&kkm7*pvU0rzx`?$j7M?{s z7OeMZgkyW>G_n>^`Hn@wfWV#8aKaCBo4k;#G+q>rxbbZYBCOpyGUAc=a)s}mH1*BE zGxvRSUmUc4t^hM8>pxHDT{0`gdf^T~H~$sQijP(F+ry{bgTA79!j7=?i$hO|@3nR%pZWN^&!+ z!jl!>uztFW%eX13^~`O&g6+ZN%z%yyHS-LDOJ+r1I@g|lusA^byp2kN;(%7$ zgu!9Es=h?Ws&eyV!SPtdivJo}9HxsWOBxFz#o@5JtmLxNJYQaORnprn@9li^y`jIX z(xps`$g)>db;X;0=*U9E*g!3 zs;Em`>Lu(z#Fh0O^7lRJ$9K#48W7($<9!J~#YdRv>wtLw#ya+q^lkxafWD;P1;isW zE&!sB8Gj)kvil4Wu8cDh{*F|zC&q7-6Juw;!$S18oMdM|21F?1y5wJz{4qedHmIk= zl`$mw1wr?YOBj)GP(lFG@BI+49}d)i3w6kT2-JB+C9Uoe{ST153>zA6U=pqF$&;XU z&}zhiw2=JYpp_=Pm8M?bO4BoIrEhl7A9T>np3K^_*-U&YqtJKK(!PRhAzr_u>#C!C~{bp%enCKCcDs}AqaO>y4LL^7GC HtziEGhP9L- literal 0 HcmV?d00001 diff --git a/Libft/objs/get_next_line_utils.o b/Libft/objs/get_next_line_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..d4ef3003edb8ea27560f9b335abdf86315d80376 GIT binary patch literal 884 zcma)4&r1S96rQzE>DO-1!Jxw)x_0R#bWv(y4h0bgb%;@P#UM3gB?*GS43@q0=XmN; zAav>KCD==#P~cHIXy4nN!6k_L;LZ2FH#6UR`{VWNbCO_8n`2lI^N21969KFv(v<&# zjNI!>RyjNw1^E($aO{>7>M+k)C%IX!lrIJO(JUz#5M#L|QV^n8uU;04j%e1d&TAzh z_V?5tu`d%-ayJ&vl7^og6_pu;uq&e6C{*pRCd7~V)bq(Jed(th78$E3O}vdrA%biA z0*fOE)RgKO%t1O2UIXJkJ48f5cU45||Ix?Xedp~Dle;$~?luS9vqs!w+_ij2pYK=$ zy+iLm$l5J~=^Z0XN4ytw80u=<%NX1{fRBdLuxcd-bRtOHUZ{K4m}Kc74ROmZ2F-iR1%b z<|b+z2!De9fDauYyJFnOc9-KaeF5Y6)}!PL$$7~j+KLtd$0l)%@iU0rr literal 0 HcmV?d00001 diff --git a/Makefile b/Makefile index 94abfbe..c27835a 100644 --- a/Makefile +++ b/Makefile @@ -6,9 +6,10 @@ L_NAME = libft.a INCS_DIR = incs SRCS_DIR = srcs OBJS_DIR = objs +READ_DIR = ~/.brew/opt/readline CC = cc -CFLAGS = -Wall -Wextra -Werror -I ~/.brew/opt/readline/include +CFLAGS = -Wall -Wextra -Werror -I $(READ_DIR)/include RLFLAGS = -lreadline -ltermcap RM = rm -rf @@ -66,9 +67,10 @@ all: $(NAME) ${OBJS_DIR}/%.o: ${SRCS_DIR}/%.c | ${OBJS_DIR} @$(CC) $(CFLAGS) -c $^ -o $@ -I $(INCS_DIR) + # @$(CC) $(RLFLAGS) $^ -o $@ -I $(INCS_DIR) -L ~/.brew/opt/readline/lib -fsanitize=address -g3 ${OBJS_DIR}: - @echo "MINISHELL BUILD" + @echo "*---MINISHELL BUILD---*" @mkdir ${OBJS_DIR} @mkdir ${OBJS_DIR}/init @mkdir ${OBJS_DIR}/input @@ -82,8 +84,7 @@ ${OBJS_DIR}: $(NAME): $(L_NAME) $(OBJS) @echo "MINISHELL DONE" - # @$(CC) $(RLFLAGS) $^ -o $@ -I $(INCS_DIR) -L ~/.brew/opt/readline/lib - @$(CC) $(RLFLAGS) $^ -o $@ -I $(INCS_DIR) -L ~/.brew/opt/readline/lib -fsanitize=address -g3 + @$(CC) $(RLFLAGS) $^ -o $@ -I $(INCS_DIR) -L $(READ_DIR)/lib $(L_NAME): @$(MAKE) -C $(L_DIR) @@ -102,7 +103,7 @@ fclean: @$(RM) $(NAME) re: - @echo "RE_BUILD" + @echo "*------RE_BUILD-------*" @$(MAKE) fclean @$(MAKE) all diff --git a/incs/parse.h b/incs/parse.h index ea6b9b4..167b5f5 100644 --- a/incs/parse.h +++ b/incs/parse.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/04 07:53:54 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 18:43:54 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 09:33:03 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,7 +30,7 @@ t_bool expand(t_data *data, t_token **token, int *i, t_bool quote); /*expand_check*/ t_bool check_heredoc(t_data *data, t_token *token, int *i); t_bool check_question(t_data *data, t_token *token, int *i); -t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote); +t_bool check_d_quote(t_data *data, t_token *token, int *i, t_bool quote); t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote); t_bool check_special(t_data *data, t_token *token, int *i); diff --git a/libft.a b/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..6c17ebc57b7385ce6f04b44f93ae283797fc9a44 GIT binary patch literal 37456 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 literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_add_env_front.o b/objs/builtin/ft_add_env_front.o new file mode 100644 index 0000000000000000000000000000000000000000..b3f9eec57d96e39dcb9ad77a76fdd21adf0ed01f GIT binary patch literal 1464 zcmb7EL2DCH5PsXHZK`Rrh=(eo0R=s{SUd?{3>tZd7NWG^CA=(~4OP-jNH;bJfy%0| zt6mkrL)o=E_XVYj74$RJ*nQy+CH@ocNkMBowj2Y7m z4`>X!M~4&?at?Zn{0Z`UN+voAqkV8PQsN~M!guSwJWGEq^JwkZ*Qd9Nhxllg3Lf*6 zjIkXuT7+=Qn-$yfMa|oO>=lGqxu?S4Ww z!6H_vKQiba;`-694wg^cPwz5l4AGlj8O9jkcJzk&*CZ86X`9$WIt~_MMrfXg#vd;< za{B;}$`k2CpUY^xqMR=i@>x~!U_$<^syCiJWJcXI%*0%L7d2N9zX0w0{1u7n&sciV zd^L4|!^8gUUfSGtBk8-#K5-{Gpef^PcB@pYxpeyxZC5U*9(> z7<24nm@rB)W@*uY0XvFuneZ-_r;V_b=GYjTjD}7#DZ{?8Ffo-$*=gMBw9%%2TcXya zN40z@V++yzVBsdxf_Db2-YUjwm(>mii_#9$XOCDmR3)2h*r1be^ z->_%MXXCB)wdjk?sx+&Ej(s-@9bn9_Q3*XPmG05mpir1B^d->tpfU%!- zV33h64cbe!>egcQ|JEhqUxoRtNyMW$5s$2hq>-WBNh3{iNh4K&i3GBbBk2`NiMWvy z2_u(iPnipjcza5Cm-+lvmz6a0j8D8GRw9}qmhiTx_a^f57m&^a=Y{#9se6&vGpk?mXdbnA{BjMuj^yZ&6uWMoy$epFT^t{6G~gc|-&EY?69=Z#f!1r1vg=2``xszNMj ztW(Wddb?O-W(i}xdr|jC>o;Gt?5EN{50aSO5{sQdtVn-uGrPR^L3Cn~xv82RoksUbKcwQ!asMWBjJX`HstV^*sGLOn7{-frdOwANu8*&ZREh8Sj7B=%+@pPR#^625TY$#q2)|Ty{H;u%Y=IOe(>CJ(ItGS=Sqg?kL z?ddr6 literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_cd.o b/objs/builtin/ft_cd.o new file mode 100644 index 0000000000000000000000000000000000000000..a82628ee71f13412b81d9852b6523d090f0cda15 GIT binary patch literal 2776 zcmb7GU1%It6uzlVx=owxN-d-yWCCg{Wh5#=3>0F`=zU0SEDc5_+^n;+KP1_Wv$HlT zD=FJ84#Pqb@kJ={LGVfHLm!l;Ehd;+gw}^b9(-8PLIM%?!H1wR@jG|!?9U{9@W7q# zo^!r)?z#7#o!NVT|G9mDv9`w;9vJ&EBKz>rFd)Y;J|)K^WW3#XoS+y;pd%-vLHS68 zaI87UpZofGWBhzW4`!FC5D4X?*m)#*mJIvZJV78rn0d#}WK+r@L~Fhv&pGA)R@E8A zt8xPs^_jVu*|_P5LiR!?n-F4TxbDPcRn@f+7&{mv)13%oDs@XrA*{4W+VL674+z&c zrw*p7@-3)*N@a%_O9ykp7chD-Uf+CFs}j-&qhgy&{8xgmTEnW z@qcBEyAOG3qo2FQ8ecKiDE<~@y-8W6%3Y(%OT{XSmT3iEIdujn^^EG3_d_Ff_fi}o_P--{cg*dh1i1#^#Khnw78tp2mJ!`A%0Ln~@dFX-^_0`lK#=sxfI)=DVNu29SipD78_2f)bxXvN)(CH?hqu!T++C52 zaJPJ)qK^1cR7kU(mlnz0xDL81pWsQ4Kd&s-z;esK;CYj7w3&h>ZU z-PWi#hW+(n3AMlPcOd9s_YU?Jn^<};o=-D=_Kd-3HmI42L5)-`n{%|h<#a0h)A>Q| zjhvP*m}xDUnYOf?ttB$HWjZoXN%O7Htu_N`A6vm1bN4Y zUH)sz|J5V>lk^gWJmbTz_$PcjYy0RNYnzL;#SR~cTmkDT*q_8mqu)qW{fxcR9lN~m z)h@hFr4WyH*}vuU)IRp)O@o*I*XODI?8*BayamNm``VLt1H2R4em=FoT|686$FD`7 z0^+ESz7E8XN`DE6ces91*)?U4Df>3a5%_CBihGC$@gFGtF0dQ=Rp3G3XFyuVQ~uLH zyi4>RAkOO44$hQ#8$gPC0K}(P{~3t4l)elE_2@T1T8Hj{@Dm`_;VA#RK$NJDDEnz; zKMBNFLGM%gHqM6Dy$eKM{W=gX{YxN3e;*I3$C4`3CxNv7Adu=APVE~H-x>2w~= z`Cbd@Z-(^mLi!gW{o{~M--_n^Oql6-Hf4$W>w$?`JD0*g7h&0U&KA~O#$h6p7kHbP zRz6P=AWKs+o|!IKm?s^9zhjBQY%tB5Gnfll~wk s=^Xwn;XjjwXUcNS3yIbQsY2X_2}>1b6LH6qxlG>@Kzw>SXJU)&KV7^-b^rhX literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_cnt_args.o b/objs/builtin/ft_cnt_args.o new file mode 100644 index 0000000000000000000000000000000000000000..8ed69ebd551cee8a96f9d7712945fb16907dffed GIT binary patch literal 672 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 ZCX1ymTPOKN)tMEl;GQiOz@1pw&p#p<8%+QJ literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_export_check.o b/objs/builtin/ft_export_check.o new file mode 100644 index 0000000000000000000000000000000000000000..91d3ab98941246304b1168bac802981f8c64cc62 GIT binary patch literal 2300 zcmbVNPly{;7=KgOZEV-h3SC@9=vb5%O0*Rz>(W4KJ1~L^QoG>6_3bp7Y=&khaWbik z5L}t0Y&ul;py1J)J?hPa#K;!cn|KuuVRwrOM98t*UAz9id2iAr?t=A^?|tw4JHPLH zUuJ%N@Yln`j44krY@iWP><~5$g!LR~g$xI*$tQ*3G{s;=GIBB^%14WH&sy@tS;$xQ z_pUyYqtgNb!J>Q=n?#Z$q!?k##G=J{s_414vmh0m59W*VoRjv?CC(^b!i_}WOXU{} zX3FCw=Of!mbN=?_o)L$yB(ATevVnZ0S_M9tdLSj|R+eX6bI}q3!}z9TW12GG{HVw$ zMRt_2Y;-368fX#}UWIyuje=;=LrMQVa3F?dV~l+PPUm+({flrC;ZcvhW{uiCqgL*& z>m7`$y1@He_v56vL5nn+o-Bd zr*jP>m_a9ITWbCFXZ(k3Mc-5_&%z=*1bx_#r26I0$(7RPEq(KjqE_h|+Q+a3dMoTo ztNk6iG8Cj%&&W){Ow0dCF;c&&^|5h(J2437cghArNntHLRGl8GjR9296RLznwQ)<| z=%KnPA4%8SyUeGc4D_uK>Q;35k#(Q@M-!hP$a5hkJBe|j$@R-yiuzf9PX}k@4KX7$ zJ(v;0zpKryWnNKFRG?rivr6-lTq*CUb$!Rb&j-f={{L#YCiWJMk&JLySgHZuP)c--6l*5O6z@#_`+8XQsP;af;xPdrkjCg!<(s3Z!m9 z-3)aSNSpqpPrHE?UM`-R)||Yjnc59AXQwqg zZ8@Huu`O4;1CW@#Pn&!_h@;r&rErkFA?d;u1J&jc?;w7~A+VINCEhFL_dOO>(f%P8XqKi~9e8l;^=|6+xjrlo&fNWht^Z zr5xSwCy*&;w65ULFIR_T`seoBuMf#5hh)Z6Su1s&Th0x}Gx*9D(xzvT$i<*DUU2gZ z_+WC&b@MK?wig8za;0K)E;(t-y=J;$7Q1NXoYG=svpy`DIZ9+ZUM5mH^bN+R*rMIz L6jI2VfXDs;q+jl+ literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_export_print.o b/objs/builtin/ft_export_print.o new file mode 100644 index 0000000000000000000000000000000000000000..e8e8056ad002c274d5c099b39e0ae5ffe99753ac GIT binary patch literal 2696 zcmb7GU1(cX96y=0i~Hz}vTBD)!*H^fE2|FNLxY{}$`K5xEHXs7rZ=~1Fm2MCTn&T3 z^tR&NrP2o#d@G7jeCm_F%u%~yt1oTe`cNfECka!SGfJ4#`1_xGZob+*c*x1`{6EkC zE4g?5_HY00XDoCN!xwfBc6cAYqS#nRu|FWeUDo`)zTgDeURs);gi?{*rFB60oIF6i!LSp2I5eFOZTB>K-jaFuxXJFZHkv-^(}Gu zA1lG#>)iSEBzH^oRjo#r+|%mZ8;NjN+w#xFNQDH>QivP%tB8mR8VY6Zl(v{M{giJ9 z{o;Tx^WtT0Bx>C4*@P1aM#ALKvunVXJ#-30H zr|EvC46;4qUDb9-=#+Mt^6}EC#zIJ$p>k9=@dY837OCMn+^5yOc+L4XLHDMNFAo^;tw;Jt|Y+qAtqdS+-X_nrS%0Ysl=Y zjyQ(bM1(`%yV^GQ68`1h@GU-TSNLo~c4Id76RNi8x7jIeqoOf#mV* zORf4~!1fYlh!)#K4+Nsw*k>(vd&B*UJ*|czbG2IaX-aih`$vL&F`Qyvq1D;cR!9AC zFv_x{BJb*YP(pXrZ=JIeX&mq? zm#aU*d6V*6i&BI(xw|edL(MUzDCWa38~O|RBf6mGUL2Q&sx1+Ds$l$r8544{@of5O zZTslOIYiWKjQ%x(bn%NCP3Fg0$}}=b%Z#eUXp|k#$BrF4 zAmDgj9J>BYK8FV^G_P|lO7fsD*(G0+oS%KYUGhcx1H*dNhh6fBd~RI7i~NYsXQ7L) zuuw4)iX7S>o`aXiz^CU+^luuGMnlHW*qOe_`}>|d96UBi4?iQeAoXM(d+KGNH+RSP zC-d1;?<44)|Hs#pdF`oph5Si9ncptG8^|9mReu4ZRQ*?gXsY^!#2JZcAX=v0ff904 zZ%Di>@m+~U;92c=W3$fMMVzAoP0QlsFtfia9bb;w(1wC(%;spsu%QW?rZj2`_Jx7cj-kJ)~%Vn*Cp0!dYDM7zrrR-dA zoHQny=ZrbYU~d|4>E@K3%rHG=zMW2)0VN!c3Cm2rkWXJUyDpisvjy<-bm6EyI+_7N NVF?o>naN}g_8+pMZE*kq literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_join_cmd.o b/objs/builtin/ft_join_cmd.o new file mode 100644 index 0000000000000000000000000000000000000000..f560b386699b30ffba38cf47b0c68c2094e59a81 GIT binary patch literal 2152 zcmb7EPiP!f7=PQubX(iZDiNy)Sy1s%R-z#G(8HGW!4q65(tsYyb2~dRX*QE3-K}e3 zAv#&8SDebx0O3|*$n)}hTTaxna^NEh=858HG5oVsywZw>r zBf$|(^jAt}N>0ufXPtz9yuMWvFEmcynRtd}Pck-@oQb{;JOxx^v5vDLAOR&M`6&#C z`dS5D0);=j03@Kk3CWjgr8)jzm=OLS!fR)R--t!fh&L&K&)WfSdv{a9?k=YxP*UOZ zPi5BmYaYU;pR}s|0J;MOTKJSVE=-tm=x;JT!V)7MbqW-d3?=3@VR7y=sjv!kIB^RPSeRH!U8MLV4ST z&cfL=Hg&E?Vl9uPy{)XZ_{=`xF{^nD!hpwWRq^i5qFZWDF;Xv?`!JU5NB9$)yZ2D} zt+n_D!mt((i3EJjU-4FU{KA??*X9aj5h+k(EbKyPEuYmlh1AVqdC7QGY9j zIZPiK{fpXjpMS=@I}+Ksa0j!DNaH>?>J1_Q;t0&9k-Iy;eMvig2cbde5SrYF`w67@6^0lcU!%%RoD9VO_R&`MTjj(n2UF| zjYC#&sHN8anhv7cx}O&m=S!u}il8n1gwiphHDfa_LQg@nyDDWWL0R}x_V1v+#5R_; z0z^ICfldn7vL2mu{-=FUjlQelo~=H)+33K8A4rV{$vbYk%Z=2?P1SIaQswy^)0fMe ze?#Lzs>apGSlggIdarxj5 zH&O4uSr{Yv@d&9wti4*Z+4k(97BsGd^me`@t`yl`7haejgRr95Nq=;S^cV2 zotv3`g)E-^40LxtpUC_-x_+X%HFe`SzXi)1DE95V2I8&ep8`?tM1lbjYjm{4ZvpX? z&N7hemc+l1qXXdj(s^J7hLN){CMaDk@GAvAU*KFjSx>qXwHx@q+K-}kr2T#vvoCDL Y0pVl&KF(NodUev+C>EOWeB0>t2j;_`R{#J2 literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_unset.o b/objs/builtin/ft_unset.o new file mode 100644 index 0000000000000000000000000000000000000000..60e8469f94e923552b1e51286a1aec5f5ec37e54 GIT binary patch literal 1300 zcmb7D&ubGw6rR-BMy+NK3K0|ndJthR;zll?9^1{di8Q-mvZ+xh2BPA! z6ms~fZ7?7Ae#ByDIF=P1 zhE#~$W}s@`vJMa(--BX-PSCnKX>=SJ3xX)qEw*m(rgTB2C4iTR02QxGjHHOhQ?BD98D-_?~*e z*Ff}($IwyXT2_9SlS!bVTeH{$t` z1)fsD4!4q$gW6~g%gq!pWY6xl3nKq!n&+5~3^i-|~mg|ULfo|{PS3xwt5HlByw-fizPwGCdn}rsWvZ0>yU)?5Z zazdD&fOx}8AAtB|%=f@7um!|ea|MWR-Yf%AXWj&2mU$J3cQ=bb)Wzc&`CalbQhA{L zjt;oMk#ua2`u(m}rJNUn8p>bBzlfw#z9QMK1%j6N zPui4;<$3{XmzxMHDXBtk)lt+4l%Q6l;si1#toW_P6&dG}2};)eRhcx!jL-a Gef|L_S<2!7 literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_update_env_cd.o b/objs/builtin/ft_update_env_cd.o new file mode 100644 index 0000000000000000000000000000000000000000..430ce8f372567701e7b57733e2f16bc7628e9d43 GIT binary patch literal 1256 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 literal 0 HcmV?d00001 diff --git a/objs/execute/execve.o b/objs/execute/execve.o new file mode 100644 index 0000000000000000000000000000000000000000..3021b3d82f0950c1f9adaf0ee7b93c9b76c16cf1 GIT binary patch literal 2400 zcmb7GO>7%Q6rL?^>e4oAej)`_DF$(fgtjtBMJW*EKwV7*mPl0#F4bhSUdO9!>}YLM zQ^``Kbr8$Ss7P?)j^M(bBGE!BLQgH+sDxAwNRDtNAF3++hVSjpI`$e4JZ0va_cL$4 znfEry&EN0-eTXsT0fq@9fss6bDUAVn4C7sL{D;iZ2FNV!fkZlTG8)p&gs7X%Iz@yc z#QEHt=Ob+&vqS_!`DpLb1Y?hrA;C5XA`!x<)g7y{A`S6;QJ#a+Uyc@1mvp0a;Ad3V z)^(#U8kLJyr6|N}rw2|fxa74YjqAuqrVK7AT_Y)lFw3Ik=xb)UA&GIk>xux=F>|d5I0-!$FVYuww;^@lRgaxd4Fmq0}Bj-TsuKacyJ&G?Jc?l;P*TWaTt zfC@cVqw5#?e*Ru?JH)!z6ff7``F3w_4_WR6TfGH5WAv`>_4I|U(g}5@O{X$-W`qy- z8hx+O^YUFk*Q2-R{#%(B&P=PFSA!#o4C6+=$E_Q|+bZAjg9&nZ+W`f4m#H24s^~=C zIVsQ`SJKeGpf(9Yf~S$y$RpojZWNI3hcMswo&wV2X7|*dy7@eExUDW8`XQ`PSZcm7 z>ClZojMI1LQ1%vO^G{-CSE-dHyU;*=O_hi!2esH4UmD`T&E9>^vIep?1%rPTACc%>rB4t8Hqkcy1mPb6KyI;T#BE zA412CNYG}mxS@5-zacHxLLBoGPZH(QIi@sIO6usL`46T3p469sN%$9m_?cS3gjd#Hl=^+#4TaNsK#KbbNO3oSDs&6@Fz^fzqWz2s zer*eQ1o#mU6g4UiWC``wxI>KyPbtW$AR$Uln%Px}JFl#ll#-yRFSBkdjkZKyMV!2`2b*sWe z&04AGHWQ_)v&ux-bj)Ja5G7k*VaRG4jk<|F)kdW*)~$7{ZL6{>mxf)fnQ|TSSk{r- kG4&#%5L>JYW34zyG^*6_?}u%Mwi0;jwp}$sA`uVv4_4pKW&i*H literal 0 HcmV?d00001 diff --git a/objs/execute/execve_utils.o b/objs/execute/execve_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..fd9d0f049ede85e1456c9b6c2653e0189ab36ef0 GIT binary patch literal 1776 zcmb7ETWb?R6rQxPjhA*KR8Ud64_+TqqEM)yklF^eVnIvAyp(CW*))r35;lo$g+O5& zH3XsH9}s==C+LG9E!a2x0Y2nKXeB}(M2ghL@9fUhByAB7oH_HI%Qt7vZ1U;X_nltG zeBBHS)DI1GVNs!wQ_yD=I6%Tw2)RTx5Q)LbNQsYx^MYX)yuF8~qp|6~Sne(h9^#|g z*dfOHDd=ZQWTbGe=L?pZnHLVu+xaBVfQa9fjR-7`k#y)!&o1QRdVv=+kIYPh^V{RQ zL2M$TU{*L&;G?Urqdzf%HcHNo6i-_51;Z=o?C+(>UJ-ojf=@tpl(CfDlf4Q(33Z=B zIl_9NBt%308u~a4o9kh02^RJ24zyLMPg11(x7^bzUp1$$YL!w$t45&_6&ipBwMw+6 zIi(s?mTBAw*SxSD*r0M+nTec&a5Vfl)+{4FlCU5`vkB2#ErJlGBgsd+CjG^XRE1{ zPa_k=TiWyCi|FeejrT1zD7tPh(W;Z6moTpuTnlQJ&qlaEH^wKy==Iu`JE5G ziss*hlevpGA{!5mXUjC3P2mW-ju~>eZQqP1)TEg<)P#}OEi+fhTErn`)!Wd7+T^o9 zuROaaz9c+v4v5R&x$p55^VvaP@K|qP1vTf8e+C-)jSeB=e8xumgHO7~`s8nc^2VVX zB2V%eLUW?WAh`U7qm3DYw4g2Z!0GhHwIaXcygQS7%==nYG;fV$y{w@gQVva-kkYHkrEqb@%k|&=+4_C8%%;As zrzM>v$}P2Z4eMDzT{BP67{I|F<^4_cF$V5}r@^>S_kd#XS%!Ll(KtfBAd;^l{%$AH zKqRfMNFAVJ0}};gI&nI2G$3 zIL|jz2f9*Ljka_2P9jDye30GG34!{4(zbnX+*949J01CN5MV2r$U z6O7rGY%o5n$}(SsHVfTe(K>$*_g1h~UeuF^e12!qC+US@Bb2M5A2cD_KGs%H_k(4U VZoTo?1JyitSuXi?&Uq`#=@+x7s51Zn literal 0 HcmV?d00001 diff --git a/objs/execute/parent.o b/objs/execute/parent.o new file mode 100644 index 0000000000000000000000000000000000000000..484742223947e21d228976bc7266cf2e09f86612 GIT binary patch literal 1168 zcmb7D&ubG=5PqAsX{yy-#YzONIatUg5cN_OA*C*?ppeEEdXZ;HHqAnsgzSa}AvCa! zG%NuR9{g)+{Q(~R@fYYpFsP724#7j?H@k1+Cg8!3%$u1v-+VihY(D({bu!PGG{bPf zW?_*Kju;HM1Usa{Kk!o2;?x89IW!p==@B@$^oHfdUcRYrZ~o2wC?3$G-eU|#IuL4+ z^TBz}v}#6qM_h0|spsn~h@;IVKPG?0EVPN|~~H0R+^bM7adji~)b zy7f`+zCc0iHv29^l;fJSpgCJ$W|CSi6V;5*i$s$?-I3(>c~`3cdKg(5(Jdr9Ypagh zx4-P$!+rVSrblp7CLdgLNh;J*NxL!2#tIIR8HI=pYgq{VRF{LFIc=Tky=> z;A#89bQ=e=HA)0T@yNG;Ad~~ZGKqkca`IkoJ~PJ)N_EEz;zU?~kMj)tIo$vvKWA|v zn{+(2lzD$XGpp3uiIx(REzav(UTh*BEycq^aOkd(O1Wv3$|VGx4tF7C?mQce2yuJq%_W!c`Aez8`gh|-_jmgPhk%57OHghgb9vb;@6vjJJhVKAm~ zsTqo_yrn(66$o2J*y^p8YpIE7$Bbze>Sq0U4T@D0dDCtJi@Gr>ZktuuA(^HuZH!*L zlR6n0zD7nOb%X1P>U#X8U3vZVZ|KiW>Jg_VBG<-&q|vUCmb%#1KHJu=lD0e7qtI^J zd$d@mUjpVBg>Ua6n`mb?k>R-Dd`2jrO?!tdb&E@d80t2q>W)+IUiq>7Q+v1DAHi5> zRd2cZ@tAZbcVub2f-+PPEm-!)D|~!Gr}Q~zv# ze_wL{x!WWEQD1Y@Zg8SFoI=cO?@t1p!F@`^bPT#%rg*xt^{X_ry`VI;G`PgKp=(79*f1y?o=PyKJDEi5vH;>^N)kJm^;MktA<2w40TWrVm9fc`t?%|YVHvMxfRWl!G65C*P5;svqp zK+^iVMp{FVr2hlGz>Tr)LXzEgka%URuOZO`>jWgl9fl47}XzQfr!V7FzT77UwfU<=F!< gF6FhaP)^!)F7rI^CUZ`jK`Q6EIx6`pXJJtY*9)}XHwDl0z2C4*>w(ce94}$&F$Ld(4UrAOwMWwV&SY>J~oMC>`?Fw_e*uflyq zbVEsKQS#Ga(|IQ`+yNrrL_l3=NmBbx>VbclOv%C*seknq@)cRgmSth8Xapt2nb%%weP1k2J8MyR5f98!BHqwjkWkd9p==Pc4ndZp%Gxj?>uqOMZwgZYeQRw^x3qJD+JRaFj*aFKo}C8aTiCv;M3S=89GZuGmcNbSca^=Gz)wh@}}%R(2Y`K5jZ=VI>Q@m2asT10)@GqZJnHXVV7kBb@-1Dew z>=-_4rVwu&y8FxGaUXx=#lXw$TRiUP08iorgxZ5+K(yZ155%W$a192ggAvA2#y-ZU z=-Eke#t|U#os1u`HpQO<$)94p!Ttac)NUUmz_c#|-3Zv{OlLy2eXf4C0jBg}M7S=u z+U#p>HgTKzLM2m)1^h3la4MBZscLgE8h^l3Gs^S%jM8Rf Nv4kenTsAo@egh_!nG*m2 literal 0 HcmV?d00001 diff --git a/objs/init/init.o b/objs/init/init.o new file mode 100644 index 0000000000000000000000000000000000000000..37cd140708df3a135f9d0e3d585be7c18851b0c3 GIT binary patch literal 1796 zcmb7FO=uHA6rS|QrdmzF3K50o;Gq;EDoBe|NVS0hTPRwk7n!7+O&gjfAx&&36arhd zAqavVJb3e>7X?o}S)_$}Q%`!#MNmwk$0FGHz1=tYYkKg(+xP#?w=>zv=Rdm#JwmuT z1s>2YsJjCXKNNBnx=w{7#7BdWL7IW+7?^^T@JN)(n)$5bJMnaAX1X40?;Ed0cr+XA z7UDD&yF`JE7Nv}(Y$l$Zq;+4hKeOb)yZ4!|W5|5vRB}2c{S*OKY`UUva2m#XV_YsxPI zFX@KMRsFu$^4{W@*Cy1Q>&Hvr0A?dg^BAkkJ;$ZfZIUoY?;U%n?&r*nBkF0c^Y?ma zzMt`3E4PI!?{#_mdfZRZbpiSF(86E(IaI66Pl&No-bWobPwL+?^^HR}xQ}_Z?W6Bw z>cGKczHR%Sqc6{W`krZBcMBZ5gb2K2`x>?v@hez-n`a)w;?oSwaQ+VGhdJK~i+2d@ zVlA4ZQ=+*|SU2LgoPWdlXRx?e0~4^2z$hLxHw;U2=U{2QFf2g_+4|YS*m;UQXb8iS z3_&T@=X8x@s*zlUQeB_(EyM_G5{B0p)7{e;liwHzTVlE|8tX#EvMRBZO`6L>r8B8H zT&2p)WKtPr=HpqR%;W8dJ+ULUWA6GkfW5^_|4{RlWy_gz`U7n-n{S4oA-9V?(ZFT z6Dg+%1GEzw?ZBWxA(x@cJn;`nb1r09+5m%-SecJS2+uBfO}~jJjHeSV9C+{KUd+d9 z*D%C*vXd6r1R_Kt@8ukKN(O{D&KK~UmGj^DfNdhnJ&J&Db|z~jJTd1!cif~955|rr z;cUpd;xf1cKBkOCh$PoBN+ImDNad^;EsU3-ei`a% z>VmTHrX1H$M?VL;&@&jUr-zIoye3f2@8#fs%44(q%PiG2vs|p3tD|qhx5E@>WxQ^d z6|-X0&C&>|OIJ9!I=X~}n;U-0XWqMP)MP#qDas0G7DO3k4Timbg3(hyal~NPd6Nn{A`U5uYzHUQ<5}L`(Zx{DTr-p4(LyFP@m|iL0--cyh(qT}MA~ zk5uKGtQfV@hJwCT-!~eK*Y!oN-(ypSClZA&u;U<29cOl8Dan z5#%%SJvnI2IIT9ZM6HYg=_)TCky3~$vEJ_J8nT8EzY6{N2Sq|8KheGZ*vpRleRz(( zaNZd7`(ZOr?sFoqfgG&S_h5Tqf574<^)1*=*pIMik-iSw2m1;ZtB*Bj^&rl_8M?MoS;7!fK}i?*lmNvuc{rd zgs=$VyCKZ=wy%E@!bS)eLUtt=|X6%BUL&VDE*`_>^$$N>6Z2@>W+ZNK#;^*z9 PNaSoQnQ>ejshFj|@QD?g literal 0 HcmV?d00001 diff --git a/objs/lexer/expand.o b/objs/lexer/expand.o new file mode 100644 index 0000000000000000000000000000000000000000..08c9ed9a522855dc0f0f3c467561b18423a70a54 GIT binary patch literal 2216 zcmb7FPiP!f7=Ke^y3sbXhg70ex&?(EoD%Cr!N68K@&s3QFVIOHzAmjwaKw^%ZjFj?`2;n*nSB@n= zXTE-}$K%nTDi7tO*zsY;9wOrqyGRg=5O&?I70YvKLWse9aUO(s&We-FDuT1gaHury- z;6d{a54<)HrlKI%;-MLZDgP@iNbwMs&}{Q?f`?O4L>2ryOkeyEgME$f?ly+GRxkMc zf7qYfZSMs?-Zgr%A0C*SgRN{z?`8{)KGAVEu?qB?i?}_auRNRTIDlheBf;r3SwhW^ zv_O0E8u!;Hrq}diS*G?U)7_uTldITo8621q_nQ$)9HJ7JC$Gk)ZEzHeYqtAqV)H)N zmZrA!#YgvW8cX?iMOMFZJ-g&>T{5?>YWgDX5ZlgmoSV^LR<3RE;QE(z1@`G_EbfU8 zQJv|wwX?GWj`r6x(`&OQ^Y-bS#hDBao@C|#TTja2V69zp4ji#m;_x-9;Bc6yDSx9SDzTFOz{ zLG?G3GxC{{^X#^yiuF9w^aq4=O6(CoCe2KH`z+HMX)S%|U}_mz9>e@m=*7RWBM?=e zvD2gJ_YORNIDWs8-x+A*AL*z1*we2BzwABfr~29D_Z#}f8^*W=)PX+%@jJ4D2ad}4 z42buLaSAvB+(NJ9_cM_Ez5$Y71&DW%@tU%~tn5z%@na1@3Nl;i^_@%TJG1=p30?C(JP zDElbEzew=o3I0ri&m=hY-=F_Vg3~9l-+nT|Urg{L2~M&7@k~@}l{tKegj1_kYQkw0 zT_$E-fv;!TwlKB}j{SzHxCN&c8}eQ?p1TfOSoMXSVw zQ+`v_9jj&+VpCpR@G7pu#GK=bGJO#7U3BoQIn|P7V<0tl~vOV`Uz0=EGdVll` zL;`y!w^@n><0t(PKL|w-qzH;gXrr`21hs-Wq>%ffaN|M&b-`knVpUWM_M`qu= zdB6AOy*FcUl-z?qc|0G-0TF@ae(;-H%ZsMFTnlW1>gM1|(%#ra}IQOfzfe zvwY6wQ~K#so3fmJbT^-oKe9a=VC*4UYGRYbB$=j_$)@AUb7H|XxBHWRM0o6moCv%K zSGq%dR%&!CVr9)-^7VK!YMLhpHk6orF5;RIixv2zn&tO0CRE#8nx-8yN79i|n;X=| zce- zmqQ{*#+~@yaIYixc@Yw1FE{Vb{YMf>w6RPA)Z~ zx(^=|k22EB)eqL!*Zn=PrJ@zO>-stt^wV}$;G>@-WZxXbjoVG%+`_H!o%owIEFg7^ zY?uc1eyD2eKpZ1FI^ClW@F>&9{W z9nOQq+15nzGcM3>BKZ_Jzl?H=c5LC7RMr)8z1ydCvU>HbjZXBwvw{$xz+Sa_DzS+Y zbCqm@1G|j=Z^X9Q1hu}!-hDT)dueDDnHVg$ z5j}Ar)NVU{BE(-g-=UuoD^GI1LtjC+5}jzE@5Sp!G~PhJpR1WN{ybCiK_%GQqFw~H z2kQqgN~=g0B;seRe_!yeJtx}4zfT`G09Lm5dY0WIdGKfzF~0uZw_^U<1h3h>Vs1ZeFjdr%ix5Y1}EH^}x4`?v8S`=XFX!6~lSa0aMx=tXdn zkAsulQE;-OTS#_o;P~kgq8C909|tE~4xDhq;Dj3#@`K<3$dlkOZ9Xe_Snw{v!F+ub zTmw+{VL`~GCkkPZzJkq&j$)83`+7*ovJc;Y4D|+OYUKB8j-dMyB6n zTk*^s$(o5wHWA5WnK_nDox^WL(@v*TY17Wfu?9VU*(R+B=2pzMUNuwMn4Olw`JA1} z##2cNOxT!mTxQI+;*o?DqvrWsDr*Cnw(;c{I~kQzIJKiG%XbvdrXqZji6q8i5%w>x CeW$em literal 0 HcmV?d00001 diff --git a/objs/lexer/lexer.o b/objs/lexer/lexer.o new file mode 100644 index 0000000000000000000000000000000000000000..b93bdd6019e0f74f45bf67e7d6b854078605addc GIT binary patch literal 2644 zcmb7GO^91n6uzm`_C?#dsZ^2g+<#b$mQ(&>FlhOZ%nm~5PmgzmCR%dcvQ2i$j_L1AfRO;r$U6)zwxlu}$#}dWdSGA-vTF9sELaz?GDQZYupdDQZDCwTeI0jATu{K^2+bG-c2 z0MiLxd0d&0n2*H#nTFog4+8?mc;!`?PTo?*=ng?_OMGz6Qh~I`+uzgqR}*(M;@kkl z=-}+aywa|_SqkN-YrG>0uRm{0vL-!*cVqnA^*Mfgim@T}uY0FLyuvBKPtsVQHz#yQcr8@nMZGMXPMN$> zho4of*8<>ZCoLq|-g!SHwE;ThY8$O@Nz*2u4YQ+HO2h1EnDfKzCwMtN%s$4;(P4J% zw%w2ePFB4)F4#*c;IwH&OH`X4GV^RjTkf+*%-dewY4cj{0WdG~tpV{zjdN(_Efy+9 zLXkrUtqu5&Vg6~1ja_&fZ~AYIXYzfZ z-xc^B`$zkkyzled9AOO26#EMMLlee60>@Nr5j+e&50272_Byx)eH#k-|AoCljMc&M zi_u z!Xc>Rw9$j}J7e_V<2wPJ!#|*pA#|zgqui~3(q~`m)1U3r=@r`@Pja_T`|j3H_UTL( za`SFh+OxAVlU^z?xtPyg#QzNG=JUC{bc<=s%@rj69c3LGvhq)_xOpZsZjo3vmtU|m u(n;A+E@bTNypf%h>-5SQd#RvZf`y&DYZqKBk$3Ub5pH&tVdX^|9P}Sb6Jam_ literal 0 HcmV?d00001 diff --git a/objs/lexer/lexer_utils.o b/objs/lexer/lexer_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..d153d6cefbeb72dc9143be3adb4094b159a5f10d GIT binary patch literal 1228 zcma)6O-vI}5S~RWtpcwHjQ?>D9z4j!69*4V?8Y^b#283=A!AnFhNCxchEt=#h$p>z^kUM6n)KKJq0V&YK^tsz(s^&bnQ!KO`*zds`@fF{0JJlJ z3wl5LHU&C5+GX@H!ac0i7Z-joM`4@^0hf62Z_h0I@NMVAnh(r8RnG7~=|&c{sf@D{ce?faY1@S|jx8 zR%A9Td!jBXBT0W>H$G^_rne`8i%9FPr3~@r3l(3Pd+#){aTXc1VO%1!?tj!mvtE1O zYPGtXKm->~OPq zZlk%q3<}Oy5kx3HsIQd~>Kxk`h_c7F5249ef)o1K)!F*{&N=tywrTwH=7Dp+^Zh;F z_nqIl_x`f;`|eT3e2*|ZF#9n5NAL(@VmyOcB}I>6z?sG=^1*O;64Ru3G&nD&%0;=B z{5k#Ya~z={hX( zOXe=-6UibkWiMs2Q=GpMb(L7$Qh~ly!Y#z3o^2yPrP>#g^HiEo7ZMj!(&1o!>3%7% zOTw1?GM-}DF=^1IBoBf`D(rjEc~JPXH!*2Yo;1mpa;3ih z*AX|YyM}o`XjpUGhE>`!ta!_?^_J~7fAm>?EVm6CqU4iWZ7^Uyn9wRi*aPw{!)7GBUDnG^e?O$cC53-nPGExqN+Evg=e9ZyT`Em zfL0svn>#G5eSRZcEj1SP#xjCZ)$Nyrr6+@U%Z@e0?&h{*bV7!6>S{0S?d{35Q8Nk@ z=7xDa_})*`r?t@qm@}r0GEaZdn^Mb)H>32#+zF0%&=CQYrMQ$)iuqIbqf7o4K*r{(4=P&BR`PZ%3hB>!^u&=>So@=b` zovmve47rPzS~@kQ17ztnLbtU8 zWP%bpg}XvP9;@o>E|8(}G|>U_`l7z>qT(dZsjIEyTIGFDyX|4~n$Jkymf%7W5x2SU z1yuf_zxIHF4vIr0E6_d*^!2J>ysEEhmC>I2PpJF2wy3YUWjrs;={}awqN@JJ{)Xyl%%fM7KMZ^nwv*Azw)CE4$+2!bwJ#SHipwG-#uLhi4q!xTg>o&*&jt z9|x>oVEz9>|8ZpGz11%I&nITn(Cr(?sM+ds;#CBtoZXQ^#d$2$SFYAWzpC_ul6Lw3 zsy;sVd-#v2t$ZK9#eC&}FEDu2zl11sB+p@%9{>y(Du2czLxE3@oP9!lPK8|*cKID? zr|LM=ZU%Oz{*ZR6o{sUzgo75RJEO=qpgP=s10vkbCGF z`r-%u3>5NE1{A8$J-pILf091npx;1A{$GQV|EGA6{tkLX@}EIT{v9aE2S6$A8l15V zy(_}7(7fdPKTtHRXi!lQvhRN#bO;Lv7pE0Zo6vX#ll0EHX25IUSC#%9#e;}(2~Viq zL7?^WwD$5R4)BcU3%LvUui~jfAy?q3a;C`mbdlq4Fq=$Z{ZT1bOz~1NGc(KhEKjCW q$q(^N6d0e{$4%33UKW3)(gnu&ot#NI+*Gb~zQd);`9yY#vA+PEB)Oyj literal 0 HcmV?d00001 diff --git a/objs/lexer/tokenizer.o b/objs/lexer/tokenizer.o new file mode 100644 index 0000000000000000000000000000000000000000..6469f12bd3cec5d3254a929f558b59479433f390 GIT binary patch literal 2212 zcmb7F&ube;6n;t-XOpH~wWN^H6pK=5LfBw(i4RGTsSN{-Nok_ui~!^8zcIZ14*i}iA74c68MGE6%!c7i*Ybq$p~!DZM4R=;xL_Jz$vM6NC4M!Rr`2QjX7o2gZMi65zTZ(L?W7P33vary^*x0!tPDG&J9DdgJe@p)c#vX2FmS?Lst0mOS}GsN&!`& zO^7IqakH%!4{YBaG45--&L>lknG_KSMOicELN5_h({r7%Z+$)@bqxzUCZLi+AmeUH=xt29nVy z;iH6b|B1=h4f#$pljIJfv=v$5!$iYsbGPAh3g?L0{|kl14nXOp>Z^QX=9m zRJT+vT-yfxiGJxUHa(%H4tWxT^=n+9`07q9p0vkrAx>nE>wbjWslT{g8+>D8R$Z{_ z_K`03QaF#zOp5C2;i}cgu=^#PdYqcyT*y_H5beovb&>UT z?gjBOq2u&a2aPvSVZJi=N8}%vd~HOYk2y=?#`lz1O(jwX_gU+hjaS3FlA(D|;d{BC$Z=q? z#LsM43;qG)KSz-BZCK9#iw6#%^Sg=vX5t|%mg@wtSd%kn@)u41EG%x9Gp={uc>yvA zId@_4#dUnxBK8ylMKpNy^_r3^Rif|1SD7d@)i8br04r(UwW$r z#B`1C8q^EyhopSQ-x?zvQ8LcO?CZOrq~H*&N9<8p*x>aK!nvKgm$0Iw8{sLz%4A zW!f0ZL0lKrw=0+@_io$*WOK*dINvpxU>+ac_;5O%{t=s>G(JG>iPLLwzcGF8`bbPx zh%-7YyW)+OXGz%6L8nR_GFPS@9@~!R3vye^ f-J)&fYzgXlO(@06jY5^rBAi?nLJJQ?;hp>jyYri2 literal 0 HcmV?d00001 diff --git a/objs/parser/parser.o b/objs/parser/parser.o new file mode 100644 index 0000000000000000000000000000000000000000..09b55135c73b78758a7e6d8dabba74536bae5f55 GIT binary patch literal 1660 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 Z6!Hcbl*mJif;s3DkT5_ literal 0 HcmV?d00001 diff --git a/objs/redirect/heredoc_parser.o b/objs/redirect/heredoc_parser.o new file mode 100644 index 0000000000000000000000000000000000000000..454e9c2c43d6883d969e6157d918383daa95adcb GIT binary patch literal 3028 zcmb7GZ)hAv6rZaxz0@RomR92*NQ4R%yHab#R2#iuRtNDQ)}|DpuIFXboTPW>=GF%B zFtCYaI|d3W_y?r)Ls9xo5JHvo+J?4%5F?0*ig3sk?n;Cx{Sc!z{@%{)<#M@v@Nu)h zdGr3voA=)A-gnEt-`vbt=oW?tMgvB86CNEHpt~?8NU#BoG)lovvH=A=d@>s3kH|E$ z)<{;)C4bO3d~lTyX4jPg`J?HnFk=spuz`&d1Z0|t;jEoZ9aRgaxz=Ccr$x!PQZQAd z!mX^pU;0=kp2(U`>Uc8MZ<^2dRD_r;sklz5#SZwRoRyjwyH&2OacP>?pgCa2k6BV! z8{db@s365Guly;N-Nx8pFeluD(T3rdLfgU`F^FhWT91H@5W;W<2w=S!L=-v=vZZZF z_J665d)K(T5anKOiF?kX*SEkYyJq3GM6S4J6u6r!Fm3EGu_Cv~g;U_dScJtq_pZQb zR;mi{!kOjXMW1(z1T)iDs8Q4+DDdm-e-iahcC z=>7;!^{&6WQR0bMQJdZtc9(Z(;|J8DREMrM-5hcMdP*C=+m|3!!kOojeMK3pXUv!B zLQ%Ysln^kau_|eYl=?x?Ry=f-dza5q_s&qCTb zU7YeG6uaNQ743Qzq98@Yy%_Q$450&Xxr*V>e9wqArM9pMfHqg`6oYRlwm|5 zwJSG_hp;m;DGsy+Yk%<2pNKHey}8wf7T|?5Rf&)?*0}D#cVJ%`p&yz%gIn-q2V+~< ztMTDMwu4qBeIbD^;u^{;ZiketlP{{3x24`Xd4^u#pq35nN9iL2dTj&wHYsMIHxIDT zNF)?#-W)y&T?+kP48DwHf>ivBb+<;|+4OXa`fU4pJ}A40yW@yAVk~0RQwqr>AOI(e_6`)C=fsWH{^u&{S`=dp94YqdwAd#qzfSV zcYx$)P~jmU-mLmFioXYlTcuNnlb=x_{5QU$FsiUaA;6dK0=7aiPYa+IF^CWP_^jfC zzWrG7L7(0SUW0x>E+$nh%hd4HE7kI^YWV#%yj8<*ui>Aq;mLQk{}VO*TQxj0Gj{qY z{!1i;`XowUaIvwnP8eq9K$?N zd)={yv&nQSkPcaxTB$e8VJmJY29;}OCWg|(7Bg)t-anK~VK!h}cm{54D>D>NR4rH| OnRu$-_nOS6^E=U=JT(gn_(dW zdjx*qLHH|LMBuPv@M(&7u^1J?zA(p+(NmD~wot0pue0{wUo`tII;Gjc>H9j$7+^(&@_eG#fRW z$NgsX06L$DbgKpzqjZgQpniM&_=evN*s{Lr#+W09InJ6V8^jm?J`c|73<_A(wt$tr zxB{PZJiaXg)rr8wfv~ZJ8k&dRNa8mx2aKOD#MSYMCnGasm`oe-X5p*MV;z6x z<-jX$di_|>5br!rJ19hS3W!fKdIE@VFG_C#&y0S8Ho_c`cu64f?gEK7!~2IhAL95K zo{eRczHwMIfgjq6FamUZ6gZ9z|6H-uv44)I5u21`vw%IJxI7Tw8i=O{Vxdw6Rj8DU tm9i>1scgxy%Q~0M_owWPV?XGj6pBt>C_7hp=m7L)I-A2fRVm_6?+@!?ISK#( literal 0 HcmV?d00001 diff --git a/objs/signal/signal.o b/objs/signal/signal.o new file mode 100644 index 0000000000000000000000000000000000000000..66ff5dd80389879014dd0975ef85189e57fd29df GIT binary patch literal 1856 zcmah~O-LI-6rNbC*1yf6mX`h~rGJ;SDp+hmu-L#JDil%hBIBBDlEux&?rv%<2$sa+ z8bUqv;JLk6@Zix?4JcK5X^%Y>dJsI+TMJTJ)9>w0bd5?M&V2LD``+6(Z+7G7-@E&@ zj0MgxOc>P|byb+!FkqK3=E!l16-f)bBe2YolhL4jWSrY-#`e}89}Eu<9`f>POgxM7 zQS1(;3*@Y3GX!PhJYw0VX2it?=STCE^V}5vc{-raM7ak$$d^h^C=r{djY-Xja{lD; zffI{z4`#&X3i46P#j^)zJd%=gHNj)1l2pBb%KF?M!?h~%wd0)r5*rvx2$u_;m@i_u z?UCwP4F(xKl=fFqM>BA-hOs3e;@MLSzu^&XPrXRL=l|;=+1Zw}KSt#|9>kcOXR;IC zbEcQG)5`%VcbWDIJ>4j;qqswgHLBDJFS(?nBp1>v?lQYql4hv_SKxVza=w2{e))Z^ zR4U0%|CY1qe3T1AhXFZy4Lgd?rd;Tvkkc~xs>}E9$q%-qS@eU+*^SYWbvH!kFV5)&#qLV2Irt9quh9jeYTEPk zbju&8In+SkBL-8cwxnWAwJByiom36ms%IHnHIt#vuKSUco-yzJA@j7@*Z~h|4 zJrCX2#qalCAjWQ;;%^rb^uEE4#h>@~S>VM03uJ~U)&)~)W_JP z=HRQUz9zZ`GSZ>_Y-Zoni8@cz>Cnvyov8Oj-5cl@gih3bOgD@g(Y{bvU@s7VSFdA2 zZJ`z*ey>8!KwMeNFXTK2z6-1aZUf2x4M_eCU^V!AAijv6w?NAC8rTG!2a@hNun~M% z_`^Vao1uq-hk%rq&PRIsZYkd=kV@+n*d`F*?)L#D2#AnLG_Wq;|CHe5BcooDzkI&~ z;3AaVjC$zjw=4Lw3ZARr6zh+VR`Bi$PUrUPuT^lyO`V%+RI?^@Ws32HVnlV7TUuN* zY{u=lYU2}OT+L`iBbI6_wr$c9E^ir0XnIsc!o#^`E0J*?NsRNDqUnsX8H$IDPvF0a g9b;TGG@Fkpmg<&}GPt2ma$PgP{TbqE#l#{10XIY;hyVZp literal 0 HcmV?d00001 diff --git a/objs/utils/env.o b/objs/utils/env.o new file mode 100644 index 0000000000000000000000000000000000000000..535da9b8a9a9f2e89a03be1ddd8bd78a3df687e4 GIT binary patch literal 2216 zcmah~PiP!f7=K%1vaM}r!B*BkXcVoA#hgPYxT|I`>* zSedkB7=k_MRqRdhpvNLoEGeXifU5^tVGnz#xC0i}+friJ-}l~|O)`o2!8hOg{{MS3 z^Yi_C4<;B(JjCz-jscU0@R$Sw9tWULIRK`}2N3ay$q2QY2~l&GYhO+- z7b9+mK1+oFC?5H)jWd=a!5C{2i9iUaTB|G;Kh%PFyeJObCA{^pK4_xL9SISyv{bg8 zny42)Su8FH@y_{?5{D^WS5pfwARdX5Xj1pMC!`Q=UgRqFlB*oz^?jq`-O%w`I-X|P zBaG#vGtpOoX`oz%afFQn2`DMar%=an&}5RauR-C@E&z7})k&y4cWeItJjeY%xc66z z`;7q)EMNv_tIxegpBbyOhyZb)2g~UmMe_y;+)N zeV}62Sj8$?cuHz@R+Q308H4b-9Utnw6_%*?s5ri94PZc%9AF?B3?w#>$!H$%!LaMS zJuP?9S{Eh1j2LHrjZC6}MB1a!Zd%)vD14h9bV5q#&%*g+#06MSkj3=RrNT$|3cEZw z3_0|Tt_+WOH2c8XM%|P18`t#yre(eAVx;r}FzH77W)kM{%8pSMJ%jK%m`$sL`CveF zv*d;A1y;xVDdAh4H>|d?PG1ygd(dKu*)EpY;r`e!vK=Se;oi(0^fUuA*(SXGTi&gq zpY70^SM?2rA8dn}JF=qiH_92+q3)PWK`ZNpE2^R{EfjfZQ`7SsFI0~(dJ8n<6qT=Q zBqLhZ%!JbH(>Jx`J7u>|KTR(@;BQ6t=}#y*ORT)h63eMX>gYuB8myj&{3+nsZ5rrs zsOw|w-0{@aLvJ37zLR8k9@x}&y3Pab3b4!nqvGj$548INc71K9>)vPALtl7r%=bW1 zi)n%4ikMG=;?rjSh#qh>ztYqOCHvPk{S!HGvCZ3{_`aFng5n!!UI&HW$u-c!;OWBS znwiui$xnlhfxiTbP~#a*Cp86;as$+WK?HTpNBf%7e6(LOCHrV!9Q-bK_IZr|GRA)v z;}>K6i!q+A-tPEM#P~BY-j4B1xW&t&RuXolVt=Z*GXAeMCUP}_Uv1H`N9Tolc}Ki7 zIv3m`6HeZBJ`(Q7b-SRVR9(B`po8Q1)v!88qKYeOLrNEMd7 z*<$eZ`RdGCGm%_RBs>*v9=5Y`ES z1)hTMQj&$kF2HkyC)m!EE_~r0gTX1tiI+^upxg>{uJN+_X!##DS(SN+kF<2Ks3TIM zV|pk`SzKRh_{BhO)Hkd3l9YFslJy4jba>N)5Yo~EA3kKPTmvb~tFrRUUn?8@zrG>! z?dr1l$b1aNX(3ikPVokO4z9-RQz8u~qeE%`4Md!z4J>&C%!_;Qq>)Z?J~~-CHh<`a z-@Wb+=N%2dy^5tzGhXNpy>5Fb>=&~H_uZJb2N?npYM~n=#$NY>v$9vYX3uX^UG$hQ z>xJ#u3pa=)7WOvDW(OQn!fifUXb^zJd;wl|AZC7(D>&&{t-@+vgMNpY^_YFrj{(8E;LfpXYgN>%OpB zj^)fuXL^{qjQvaS;cp0ru|6Rd&p0oqZqKH9j{271a|gPQbspJQLtlgYSnrX2uh6%{ zeXRRX-)r3h@Usy6kcQ literal 0 HcmV?d00001 diff --git a/objs/utils/list_clear.o b/objs/utils/list_clear.o new file mode 100644 index 0000000000000000000000000000000000000000..edd371a8801c50b74af9179874ab23aa195c9a18 GIT binary patch literal 1028 zcmah{K}#D^5T3*|hFY_);30xwD7|_q9(qi%fra)^N`!)hM~Ewy#wh8QEJ8rowh)$r zKf$BN9(zx~qXjP>y%Z8q$VCVqOuyMTFG(9p2j+eA&3td(?0b8DcXK~al$awd@D%(9 z2YEPb8UCF4KkP(mmx7j~C$V#1Hm!Xx@J(!Zsrarm;WoOJfcx<*0UA8uT#AkutZ7}{ z-#e&Oef_E4d|%(z`t?g&V;l-82>wi(Sx(RoA)A09T6?>Cr%~DSEdO&pdk4FwObUJM zw{dEL$d+QoGpspyd@asHO2gUsP|kms{a3)J;Mh-Z;M2xhcDdT=(tqPkxBbfvua(NkPp6_F(*rkKSkpe6@G!_hzc?-jxk=6H z!mcWJoK=!}@_)~>G2TsXyEwq81N3}ivI93NWRUK;QEOm(_gL4z7>!2pcbq|r`ND3# z+=)Z8d^0d}b;qKSXP&7qNj-7+mJ)$Vs7LdeW2pFzR^X@iI2b1ViC$#Y*W|`xTK2Jy ze?(W{h|f9tH;FNsRZ%v5y#7OwvhfAPSS22E`+>EY~i( zaxU>$`r=rC)$BuFK=Ej5J|@HqE^G>Ikt$MKLqevPhOG;xBQTlEy;NY_4%gA;Ga>$+2)|idTqDDB@5z8;dYMhr8#1c%%?Gu`C#1hM z@Ym+UG0M#?4bq<|8Xu|lYLwL4Al(a*I-;a_qc~rMNZ^RtzK@qUM74YZwS9__SM0>0 z%AqJ+^|_FVV)~``%JKESt?g|F`ug((s<-t^w85vuZm$E+QhGzB ze?1Za7oG#0-#5T%Kft;Q&>snaZ@@D$gSLGG)KT@N^zSMF=;0F)R44L^$XXuG8##vL zf5K8;$H&42$kc0bd0~w3g_&51-j{_<`DMq2xs%>#Y?I4unAM)UxG|k-XEJ$b?_$4& zU_URtQT;ZC%GJK#_HSooGp%h<$osk6JB&sCR+nxi5~+x|j%^!7$DVb@Z71SMCB#5x zFlpciqub~xB}D(|%ONzH9vm7?4~!)Z;m#NBZlfo`lXGg)6PRF2j0}yWlZIW+ms|uK z_rt@yGojfjyI@R%v@;u*Jl#eyU$h0!9eX_Q*f}>yLgk>6>QRPsYRw#u3O*l8S#vXF zsTxwzE?uVyjK&D0+ zKMjpfs)pAe*&jd?Z;kP%j8_>iGcGcoV0@nOFyrSKcQ8K6_z>e?u?g+>Gc@gYlkt~~ zKVtj=<09ic;}OO~jFXHz7&kF~gdSmf{Bvm9?-Ry17*h|){~F_07$+HbFm7c`H;ecW zP(^b literal 0 HcmV?d00001 diff --git a/objs/utils/tree.o b/objs/utils/tree.o new file mode 100644 index 0000000000000000000000000000000000000000..2d8f9dd2127a596f75e0b7d9d27c9c74c0720776 GIT binary patch literal 1560 zcmbtU&ubGw6n?2S4YhSw@DN4l9z1w35(LGQB-n*HSSZp!FJ%myjVYu*2pfz-AebsF zdnw|^@q4?oX-aKTeDLObzvj(1ZzuWs^T*)?QQ{n7 zfsRAB*f5}wE6{uFpCa?T5wfdlVjn$;Ri#Nv$8I=W8Htn&=Hf!^9btMbvbi5~xp6*1 zIIW{9LO*M5WxZ%QvcCFsd9@_v!`ab%+$Y`?fCzIDaX%t;QnX7-yCTcA;))&n$N9Zg z)mu@T)m(%Qa%sz*Ecd&TozVPO{ZaxhNgjeVa zcakHblTUG#vh|_u&h>?7_C@=%v9zPjv^b&8&+_@gt^00a4+jRMZSYND`Z#+EX2(3> z`X0Z99$RP?h;}1|(o3=H4>^uOZA-w%Ur_AxEI6zbi@5)NC9MA>{irht#& zcB08(O8$pvT)zLFjqvmE{aKzx5I)byjMkQNUPpK$Z>Y#=`E8Y7JZ1l7)j#q45hWUW zLZ6yQZDP-L#IHfcFHnUjenk0;`m3=A)BIau;ksGqJ5{H6{IRZzy7Xbx@2t8vsM}O^ ziuZ|r{FcUvGB1Gm-DkdG593uJK1}8@5UFHNp`j2E#`!60C}?p20yFdtHXsI+^V`b5 zseC{v_pz!}=<^IleUeViwq>zYlC|Y06=%e++U3}_s&=uaQdZ3_I<`clO!()sZLE&8 Kiq-0xMf4lA2tF79 literal 0 HcmV?d00001 diff --git a/objs/utils/utils.o b/objs/utils/utils.o new file mode 100644 index 0000000000000000000000000000000000000000..d0442f23069a0ba5cefb72ef2bd7782bebc7cc6c GIT binary patch literal 1780 zcmb7FO-K}B82;AQT>EjiNHD0}Aj8Xs6@ie^h%QahLWn{K<8xbQb!lCTTga{lH zSfD{@s0B+D3ONsbONpa|8X>*ZL&82d1u5~7NNE{G%e7s9H2!$>!1t_G-i!FCx3^V@ zGn5R9GJz*jrsga&lbhmzl+An|kGFr7=kof!aXlY=vorZ*%94fL%S>)k%7?>Vj&OtL zDs!*~KB8Q~e7r{!rIg0BOq-8hYWl*RH<)%ssPOewC$X(NV|DvMzg}63KKY!!7Ve&>4iWCw1oKA}zf-EK zCbc;I3L49Yg|9wd*IPrhuf48{bqA4kjY60VHj}t*764>H?-|fL*c;V7Mxz?vUT1ZbNP%yBeHrm=ipF0s}8z*)U^Zd$M zr12g#-ygant!uxQuCO&i`+D6J@odG^Gv_`pbcG}%F7Q+BIAV%O|IiP z53S3h?km^vyoc7kL*4sbcV7**65qZbFe7G&Ed%lX#Fp64GLAD2F}5@Q0vYvv1L6c? zpV(gp5>E+;S2y+o7z92C;<1el0Na7LfOy9{dpJG;Bx;Q@$_P;LXz zxKSa~mdwsssjQJSg|tk=kZkAi53tgLyPqag&!lN2C$pKHA!H_(FIe~r8?YynR?;=a EUz`pwy8r+H literal 0 HcmV?d00001 diff --git a/srcs/builtin/ft_join_cmd.c b/srcs/builtin/ft_join_cmd.c index 8dd39a0..cd334ef 100644 --- a/srcs/builtin/ft_join_cmd.c +++ b/srcs/builtin/ft_join_cmd.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 22:15:42 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 01:32:42 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 09:29:45 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -83,7 +83,7 @@ static char **input_leaf(t_leaf *leaf, char **str) free(tmp); } else - str[i++] = tmp; + str[i++] = tmp; leaf = leaf->right_child; } return (str); diff --git a/srcs/lexer/expand.c b/srcs/lexer/expand.c index c6d6814..2a420e8 100644 --- a/srcs/lexer/expand.c +++ b/srcs/lexer/expand.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:20:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 22:03:49 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 09:32:02 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,7 +23,7 @@ t_bool expand(t_data *data, t_token **token, int *i, t_bool quote) *i += 1; if (check_heredoc(data, *token, i) == FALSE \ && check_question(data, *token, i) == FALSE \ - && check_blank(data, *token, i, quote) == FALSE \ + && check_d_quote(data, *token, i, quote) == FALSE \ && check_other(data, *token, i, quote) == FALSE \ && check_special(data, *token, i) == FALSE) { diff --git a/srcs/lexer/expand_check.c b/srcs/lexer/expand_check.c index d71a5f9..ab7d896 100644 --- a/srcs/lexer/expand_check.c +++ b/srcs/lexer/expand_check.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:23:58 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 22:04:13 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 09:33:20 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,7 @@ t_bool check_heredoc(t_data *data, t_token *token, int *i); t_bool check_question(t_data *data, t_token *token, int *i); -t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote); +t_bool check_d_quote(t_data *data, t_token *token, int *i, t_bool quote); t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote); t_bool check_special(t_data *data, t_token *token, int *i); @@ -52,13 +52,22 @@ t_bool check_question(t_data *data, t_token *token, int *i) return (FALSE); } -t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote) +t_bool check_d_quote(t_data *data, t_token *token, int *i, t_bool quote) { - if (quote == FALSE && (data->input[*i] == ' ' || data->input[*i] == '\t')) + int idx; + + if (data->input[*i] == '\"') { - token->str = ft_strncat(token->str, "$", 1); - if (!token->str) - program_error_exit("bash"); + idx = *i; + if (quote == FALSE) + while (data->input[idx + 1] != '\"' && data->input[idx + 1] != '\0') + idx++; + if (quote == TRUE || check_end(data->input[idx + 1]) == TRUE) + { + token->str = ft_strncat(token->str, "$", 1); + if (!token->str) + program_error_exit("bash"); + } return (TRUE); } return (FALSE); @@ -66,19 +75,15 @@ t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote) t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote) { - if (data->input[*i] == '\'') - return (TRUE); - else if (data->input[*i] == '\"') + if (quote == FALSE && (data->input[*i] == ' ' || data->input[*i] == '\t')) { - if (quote == TRUE \ - || check_end(data->input[*i + 1]) == TRUE) - { - token->str = ft_strncat(token->str, "$", 1); - if (!token->str) - program_error_exit("bash"); - } + token->str = ft_strncat(token->str, "$", 1); + if (!token->str) + program_error_exit("bash"); return (TRUE); } + else if (data->input[*i] == '\'') + return (TRUE); else if (data->input[*i] == '\0') { token->str = ft_strncat(token->str, "$", 1); diff --git a/srcs/lexer/quote.c b/srcs/lexer/quote.c index f88b1ee..aefe3fd 100644 --- a/srcs/lexer/quote.c +++ b/srcs/lexer/quote.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 07:46:30 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 18:17:36 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 09:22:30 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/minishell.c b/srcs/minishell.c index ad108b1..cc5cffc 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 01:43:10 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 09:34:12 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,6 +28,7 @@ int main(int argc, char **argv, char **envp) if (get_input(data) == FALSE) continue ; execute(data); + check_leak(); input_free(data); } data_free(data); diff --git a/test case/echo.txt b/test case/echo.txt deleted file mode 100644 index 8530956..0000000 --- a/test case/echo.txt +++ /dev/null @@ -1,460 +0,0 @@ -echo 00\\\'pp -echo 00\\\\\'pp -echo ';;' -echo ";;;" -echo 00\\\\'pp' -echo “./hello”. -echo ./hello -echo \n ' \n this is the; "first line"' -echo "and right here;;; 'We have the second'" -echo and" a fe"'w 'here'; with some slash and quotes .' '\' -echo '\\' -echo "\\" -echo "\"" -echo \\ -echo \' -echo \" "\\" "\"" \\ \' \" -echo | cd .. | pwd -echo DOET HET NIET > test1 | cat test1 -echo hallo >x1 >x2 >x3 | echo hoi -echo "hallo$" -echo "\poep" -echo "123\"456" -echo \"test\" -echo" -echo - -echo /$"123$USER" -echo $POEP hallo -echo $1 234 -echo $2$4 -echo $/ -echo $ -echo $? -echo $TEST -echo $PWD -echo $HOME -echo "$PWD" -echo '$PWD' -echo "$HOME" -echo 'how are you' - -echo > ilovewords.txt count me | wc ilovewords.txt -echo > "hardesttest.txt" - -echo adding stuff >> working.txt | echo more stuff >> working.txt | echo > working.txt -cat working.txt | grep stuff | echo tim - -echo dit > test1 gaat > test2 goed > test3 -echo dit > test1 gaat > test2 goed > test3 > test4 - -echo > doethet | echo hoi >> doethet "of niet" -echo clear > "doethet" - -echo test > working.txt -echo > newfile.txt hardertest -echo hallo daar | echo hoi maran -echo echo hallo daar -"echo" hallo daar -echo "hallo daar" -echo hallo daar | echo hoi maran -echo hallo daar -echo hoi maran - -echo hallo >file1 >file2 | echo hallo >file1 >file2 maran | echo hallo >file1 >file2 >>file3 maran siemons | echo hallo file2 - -echo $USER"" -echo $USER" -echo $USER_ -echo 123$USER---- -echo 123$USER----$ -echo abc$USERdef -echo abc$USER123 -echo abc$POEPdef -echo $USER "$USER" '$USER' -echo $POEP -echo $POEP $MEERPOEP -echo hallo $POEP -echo $POEP hallo -echojhdfjhjdkh -echo | poep -echo hallo 'ma\"ran' siemons -echo hallo 'ma\'ran' siemons -echo hallo 'ma\'ran'' siemons -echo 'ma\' Hij ziet de \ niet als escape, print gewoon \ -echo 'hallo$USER' -echo 'hallo\$USER' -echo '\$?' -echo '\$USER' -echo '"\$USER"' -echo "hallo"maran" -echo "\poep" -echo \poep -echo "poep\"" -echo "poep\'" -echo "poep\" -echo "hallo\"\poep" -echo hallo"" -echo "hoi$USERmaran" - -ls filedoesnotexist | grep notme | echo "TEST" - -echo "'\$USER'" -echo "\$USER" -echo "123\"456" -echo "\poep" -echo "123\'456" -echo "hallo$" -echo \" -echo \$? -echo '$USER'$USER -echo '$USER'$USER\$USER/"$USER" -echo hallo"1234"maran"$USER"'/$USER'"/$USER"'poep''poep2'"maran"'ellende'END -echo "$USER"'/$USER' -echo 'poep''poep2'"maran"'ellende'END -echo 'poep2'"maran"'ellende' -echo 123"hallo$"456 -echo $1234 -echo $_1234 - -echo $USERhallo -echo $2$* -echo $hallo"poep" -echo $222 -echo hallo$USER***$USER$2$ -echo $a5aap -echo "$####jgklj" -echo hallo$\abc -echo hallo$\\abc -echo hallo$"USER" -echo hallo$"POEP" -echo hallo$'USER' -echo $halllo### -echo $USER9582309582529 -echo $USER' -echo $%%%%jlkjtwejt -echo %%$ -echo $####jgklj$USER -echo $@@@lkgj -echo $"USERhallo" -echo "$2$*" -echo "$222" -echo "$_poep" -echo "$a5aap" -echo "$halllo###" -echo "$USER9582309582529" -echo "$" -echo hallo"$"abc -echo hallo"$POEP"abc -echo hallo"$USER"abc -echo "$USER_" -echo $"hallo" -echo "hallo\"\poep" -echo $"etet" -echo “$\hallo” -echo $"\hallo" -echo "\\hallo" -echo "hallo\\hoi" -echo "\\$USER" -echo "123\"456" -echo "123\$456" -echo "123\`456" -echo "123\\456" -echo "123\!456" -echo "1234" -echo "12\34" -echo "1234\" -echo \"1234" -echo "1\a234" -echo \1 -echo "\1234" -echo "1234" \; echo hoi -echo "1234\\" -echo \a -echo \b -echo \c -echo \d -echo \e -echo \! -echo \" -echo \# -echo \$ -echo \% -echo \& -echo \' -echo \( -echo \) -echo \* -echo \+ -echo \, -echo \- -echo \. -echo \/ -echo \0 -echo \1 -echo \2 -echo \3 -echo \4 -echo \5 -echo \6 -echo \7 -echo \8 -echo \9 -echo \: -echo \; -echo \< -echo \= -echo \> -echo \? -echo \@ -echo \A -echo \B -echo \C -echo \D -echo \E -echo \F -echo \G -echo \H -echo \I -echo \J -echo \K -echo \L -echo \M -echo \N -echo \O -echo \P -echo \Q -echo \R -echo \S -echo \T -echo \U -echo \V -echo \W -echo \X -echo \Y -echo \Z -echo \[ -echo \\ -echo \] -echo \^ -echo \_ -echo \` -echo \a -echo \b -echo \c -echo \d -echo \e -echo \f -echo \g -echo \h -echo \i -echo \j -echo \k -echo \l -echo \m -echo \n -echo \o -echo \p -echo \q -echo \r -echo \s -echo \t -echo \u -echo \v -echo \w -echo \x -echo \y -echo \z -echo \{ -echo \| -echo \} -echo \~ -echo "\!" -echo "\"" -echo "\#" -echo "\$" -echo "\%" -echo "\&" -echo "\'" -echo "\(" -echo "\)" -echo "\*" -echo "\+" -echo "\," -echo "\-" -echo "\." -echo "\/" -echo "\0" -echo "\1" -echo "\2" -echo "\3" -echo "\4" -echo "\5" -echo "\6" -echo "\7" -echo "\8" -echo "\9" -echo "\:" -echo "\;" -echo "\<" -echo "\=" -echo "\>" -echo "\?" -echo "\@" -echo "\A" -echo "\B" -echo "\C" -echo "\D" -echo "\E" -echo "\F" -echo "\G" -echo "\H" -echo "\I" -echo "\J" -echo "\K" -echo "\L" -echo "\M" -echo "\N" -echo "\O" -echo "\P" -echo "\Q" -echo "\R" -echo "\S" -echo "\T" -echo "\U" -echo "\V" -echo "\W" -echo "\X" -echo "\Y" -echo "\Z" -echo "\[" -echo "\\" -echo "\]" -echo "\^" -echo "\_" -echo "\`" -echo "\a" -echo "\b" -echo "\c" -echo "\d" -echo "\e" -echo "\f" -echo "\g" -echo "\h" -echo "\i" -echo "\j" -echo "\k" -echo "\l" -echo "\m" -echo "\n" -echo "\o" -echo "\p" -echo "\q" -echo "\r" -echo "\s" -echo "\t" -echo "\u" -echo "\v" -echo "\w" -echo "\x" -echo "\y" -echo "\z" -echo "\{" -echo "\|" -echo "\}" -echo "\~" -echo '\!' -echo '\"' -echo '\#' -echo '\$' -echo '\%' -echo '\&' -echo '\'' -echo '\(' -echo '\)' -echo '\*' -echo '\+' -echo '\,' -echo '\-' -echo '\.' -echo '\/' -echo '\0' -echo '\1' -echo '\2' -echo '\3' -echo '\4' -echo '\5' -echo '\6' -echo '\7' -echo '\8' -echo '\9' -echo '\:' -echo '\;' -echo '\<' -echo '\=' -echo '\>' -echo '\?' -echo '\@' -echo '\A' -echo '\B' -echo '\C' -echo '\D' -echo '\E' -echo '\F' -echo '\G' -echo '\H' -echo '\I' -echo '\J' -echo '\K' -echo '\L' -echo '\M' -echo '\N' -echo '\O' -echo '\P' -echo '\Q' -echo '\R' -echo '\S' -echo '\T' -echo '\U' -echo '\V' -echo '\W' -echo '\X' -echo '\Y' -echo '\Z' -echo '\[' -echo '\\' -echo '\]' -echo '\^' -echo '\_' -echo '\`' -echo '\a' -echo '\b' -echo '\c' -echo '\d' -echo '\e' -echo '\f' -echo '\g' -echo '\h' -echo '\i' -echo '\j' -echo '\k' -echo '\l' -echo '\m' -echo '\n' -echo '\o' -echo '\p' -echo '\q' -echo '\r' -echo '\s' -echo '\t' -echo '\u' -echo '\v' -echo '\w' -echo '\x' -echo '\y' -echo '\z' -echo '\{' -echo '\|' -echo '\}' -echo '\~' -echo -nn -nnnnnnn -n -nnnn -nnnh diff --git a/test case/export.txt b/test case/export.txt deleted file mode 100644 index ee1b814..0000000 --- a/test case/export.txt +++ /dev/null @@ -1,76 +0,0 @@ -env -export a="\\" -export b='\\' -export c="\b" -env -export a=hijdoehet -export -export test=working -export -export test1 -export -export test1= -export -export 1test -export _TEST=DOethetwelmetunderscore -env -env -echo -export a=hijdoehet -echo -env -echo -export test=working;echo ;env -echo -export test1; export; echo -env -echo -export test1= -echo -env -export -export ZZZ -export ZZZ= -export -export a="\\" -export b='\\' -export c="\b" -export -export LS="ls -la" -ls -export TEST="evenchecken" -export | grep -e "PWD=" -export | grep -e "HOME=" -export PATH="test:working:multiplepath:directory1:directory2" -export -echo hi -echo -echo -echo -export -env -echo -echo -echo -echo working -echo $PWD -export kip=ei=koe===melk -export TEST=/Users/maran/Desktop/minishell -export TEST_$USER=hallo$LOGNAME -export -export ZZZ -export ZZZ= -export ZZZ=new_value -export ZZZ======new -export ZZZ=new YYY=new2 XXX===new3 -export $USER -export TEST=$USER4857987345 -export 123$USER--- -export MARANSIEMONS -export MARANSIEMONS=lief -export = -export += -export hello=hi hello+=wow -export $HULLO=there; echo $HULLO -export potato=tomato orange=doorhinge; -export po1=yes po2=no; echo $po1 $po2; diff --git a/test case/test_cmds.txt b/test case/test_cmds.txt deleted file mode 100644 index ea0fefe..0000000 --- a/test case/test_cmds.txt +++ /dev/null @@ -1,629 +0,0 @@ -/bin/ls -exit a aa a -echo ";;;;;" -/bin/pwd -ls -la -pwd -/bin/chmod -/bin/ls -la -echo 00\\\'pp ; echo 00\\\\\'pp -echo 00\\\\'pp' ; echo “./hello”. ; echo ./hello ; echo ello -Echo ; echo \n ' \n this is the; "first line"' ; echo "and right here;;; 'We have the second'" ; echo and" a fe"'w 'here'; with some slash and quotes .' '\' ; echo '\\' ; echo "\\" ; echo "\"" ; echo \\ ; echo \' ; echo \" "\\" "\"" \\ \' \" -echo /$"123$USER" -echo | cd .. | pwd -echo DOET HET NIET > test1 | cat test1 -echo hallo >x1 >x2 >x3 | echo hoi -echo $POEP hallo -echo "hallo$" -echo "\poep" -echo $/ -echo $ -echo "123\"456" -exit 123 123 123 -exit 1234 -echo $? -/bin/ls -echo $? -/bin/ls doesnotexist -echo $? -echo hi ; echo ; echo ; echo ; export ; env ; echo ; echo ; echo ; echo working ; echo $PWD -ctrl-C -ctrl-D -ctrl-\ -asdf ctrl-C -asdf ctrl-D -cat ctrl-C -asdf ctrl-\ -cat ctrl-D -echo \"test\" -echo" -hoi -" -echo -hallo$ -env -export ; export a="\\" ; export b='\\' ; export c="\b" ; export -env -export a=hijdoehet ; export -export test=working ; export -export test1 -export -export test1= -export -export 1test -export _TEST=DOethetwelmetunderscore -env -env ; echo ; export a=hijdoehet ; echo ; env ; echo ; export test=working;echo ;env ; echo ; export test1; export; echo ; env ; echo ; export test1= ; echo ; env -export -export ZZZ -export ZZZ= -export ; export a="\\" ; export b='\\' ; export c="\b" ; export -export LS="ls -la" ; ls -export TEST="evenchecken" -echo $TEST -unset a ; env ; unset test ; unset test1 ; env -unset PATH -ls -wc -awk -echo $PWD ; echo $HOME ; echo "$PWD" ; echo '$PWD' ; echo "$HOME" -cd .. -pwd -/bin/ls -cd .. -pwd -/bin/ls -cd notworking -cd . -cd .. ;pwd;/bin/ls;cd .. ; pwd ;/bin/ls; cd notworking; cd . -cd ~ -cd $IETSONBESTAANDS -cd $GEK .. -cd $NOTHING $MORENOTHING .. -pwd -pwd . -pwd .. -cd ../Desktop -ls -la -echo > ilovewords.txt count me ; wc ilovewords.txt -awk '{ print }' /etc/passwd -export PATH="test:working:multiplepath:directory1:directory2" -export -echo 'how are you' -echo '$PWD' -echo > "hardesttest.txt" -echo adding stuff >> working.txt -echo more stuff >> working.txt -echo > working.txt -echo dit > test1 gaat > test2 goed > test3 -echo dit > test1 gaat > test2 goed > test3 > test4 -cat < test4 -< test4 cat -> newfile ; > working.txt -< working.txt -< notworking.txt -echo > doethet ; echo hoi >> doethet "of niet" ; echo clear > "doethet" ; echo test > working.txt ; echo > newfile.txt hardertest -export | grep -e "HOME=" -echo hallo daar | echo hoi maran -cat working.txt | grep stuff | echo tim -cat | cat -e | cat -ls filedoesnotexist | grep notme | echo "TEST" -export | grep -e "PWD=" -echo -echo hallo daar -"echo" hallo daar -echo "hallo daar" -echo hallo daar | echo hoi maran -echo hallo daar ; echo hoi maran -echo hallo >file1 >file2 -echo hallo >file1 >file2 maran -echo hallo >file1 >file2 >>file3 maran siemons -echo hallo file2 -echo $USER"" -echo $USER" -echo $USER_ -cd -export -export ZZZ -export ZZZ= -export ZZZ=new_value -export ZZZ======new -export ZZZ=new YYY=new2 XXX===new3 -export $USER -export TEST=$USER4857987345 -export 123$USER--- -export MARANSIEMONS -export MARANSIEMONS=lief -echo $ -echo 123$USER---- -echo 123$USER----$ -echo abc$USERdef -echo abc$USER123 -echo abc$POEPdef -echo $USER "$USER" '$USER' -export TEST_$USER=hallo$LOGNAME -echo $POEP -echo $POEP $MEERPOEP -echo hallo $POEP -hallo -echo $POEP hallo -hallo -export TEST=/Users/maran/Desktop/minishell -cd $IETSONBESTAANDS -cd $IETSONBESTAANDS -cd $POEP $MEERPOEP .. -echojhdfjhjdkh -echo | poep - echo | cd .. | pwd - echo -echo -echo hoi -cd poep -ls -"ls" -test -exit -exit 99 -exit 3 a -exit 55 99 -/bin/ls -/binn/ls -echo hallo 'ma\"ran' siemons -hallo ma\"ran siemons -echo hallo 'ma\'ran' siemons -Multiple line error -echo hallo 'ma\'ran'' siemons -hallo ma\ran siemons Hij ziet de \ niet als escape, print gewoon \ -echo 'ma\' Hij ziet de \ niet als escape, print gewoon \ -ma\ -echo 'hallo$USER' -hallo$USER -echo 'hallo\$USER' -hallo\$USER -echo '\$?' -\$? -echo '$USER' -$USER -echo '\$USER' -\$USER -echo '"\$USER"' -"\$USER" -echo "hallo"maran" -echo "\poep" -\poep -echo \poep -poep -echo "poep\"" -poep" -echo "poep\'" -poep\' -echo "poep\" -echo "hallo\"\poep" -hallo"\poep -echo hallo"" -hallo -echo "hoi$USERmaran" -echo "$USER" -maran -echo "'\$USER'" -'$USER' -echo "\$USER" -$USER -echo "123\"456" -123"456 -echo "\poep" -\poep -echo "123\'456" -123\'456 -echo "hallo$" -hallo$ -echo \" -" -echo \$? -echo '$USER'$USER -$USERmaran -echo '$USER'$USER\$USER/"$USER" -$USERmaran$USER/maran -echo hallo"1234"maran"$USER"'/$USER'"/$USER"'poep''poep2'"maran"'ellende'END -hallo1234maranmaran/$USER/maranpoeppoep2maranellendeEND -echo "$USER"'/$USER' -maran/$USER -echo 'poep''poep2'"maran"'ellende'END -poeppoep2maranellendeEND -echo 'poep2'"maran"'ellende' -poep2maranellende -echo 123"hallo$"456 -export kip=ei=koe===melk -echo $_1234 -echo hallo -echo hallo | echo hoi -echo hallo ; echo hoi -echo hallo >x1 >x2 >x3 | echo hoi -echo hallo >x1 >x2 >x3 ; echo hoi -echo hallo | echo poep >x1 >x2 -echo hallo ; echo poep >x1 >x2 -echo hallo | echo hoi | cat -echo hallo | echo hoi > y1 >y2 | cat -e -echo hoi > y1 >y2 ; cat -e -echo hallo | echo hoi > y1 >y2 ; cat -e -echt bash -echo "hello | this is some stuff > touch this file" | grep more -env | leaks -cat x1 | grep Makefile -ls > x1 ; cat x1 | grep main -echo $USERhallo -echo $hallo"poep" -echo /$"123$USER" -echo $a5aap -echo $_poep -echo hallo$\abc -hallo$abc -echo hallo$\\abc -hallo$\abc -echo hallo$"USER" -halloUSER -echo hallo$"POEP" -halloPOEP -echo hallo$'USER' -halloUSER -echo $halllo### -echo $USER9582309582529 -echo $ -echo $USER -echo $USER' -echo 123$USER---- -echo 123$USER----$ -echo abc$USERdef -echo abc$USER123 -echo abc$POEPdef -echo $%%%%jlkjtwejt -echo %%$ -echo $"USERhallo" -echo "$222" -echo "hallo$USER***$USER$2$" -echo "$_poep" -echo "$a5aap" -echo "$halllo###" -echo "$USER9582309582529" -"hallo$USER" -echo "$" -echo hallo"$"abc -hallo$abc -echo hallo"$POEP"abc -echo hallo"$USER"abc -echo "$USER" -echo "$USER'" -echo "$USER_" -echo "abc$USERdef" -echo "abc$USER123" -echo "abc$POEPdef" -echo "$%%%%jlkjtwejt" -echo "%%$" -echo $"hallo" -echo $hallo -echo $hallo"poep" -echo "hallo\"\poep" -echo $"etet" -“$rewtwet” -echo "$53535" -$" -$' -echo “$\hallo” -echo $"\hallo" -\hallo -echo "\\hallo" -\hallo -echo "hallo\\hoi" -hallo\hoi -echo "\\$USER" -\maran -echo "123\"456" -123"456 -echo "123\$456" -echo "123\\456" -123\456 -echo "123\!456" -123\!456 -echo "1234" -echo "12\34" -echo "1234\" -echo \"1234" -echo "1\a234" -echo \1 -echo "\1234" -echo "1234\\" -echo '1234\\' -echo '1234' -echo '12\34' -echo '1234\' -echo \'1234' -echo '1\a234' -echo '\1234' -echo '1234\\' -echo '1234\\' -echo \a -echo \b -echo \c -echo \d -echo \e -echo \! -echo \" -echo \# -echo \$ -echo \% -echo \& -echo \' -echo \( -echo \) -echo \* -echo \+ -echo \, -echo \- -echo \. -echo \/ -echo \0 -echo \1 -echo \2 -echo \3 -echo \4 -echo \5 -echo \6 -echo \7 -echo \8 -echo \9 -echo \: -echo \= -echo \? -echo \@ -echo \A -echo \B -echo \C -echo \D -echo \E -echo \F -echo \G -echo \H -echo \I -echo \J -echo \K -echo \L -echo \M -echo \N -echo \O -echo \P -echo \Q -echo \R -echo \S -echo \T -echo \U -echo \V -echo \W -echo \X -echo \Y -echo \Z -echo \[ -echo \\ -echo \] -echo \^ -echo \_ -echo \a -echo \b -echo \c -echo \d -echo \e -echo \f -echo \g -echo \h -echo \i -echo \j -echo \k -echo \l -echo \m -echo \n -echo \o -echo \p -echo \q -echo \r -echo \s -echo \t -echo \u -echo \v -echo \w -echo \x -echo \y -echo \z -echo \{ -echo \} -echo \~ -echo "\!" -echo "\"" -echo "\#" -echo "\$" -echo "\%" -echo "\&" -echo "\'" -echo "\(" -echo "\)" -echo "\*" -echo "\+" -echo "\," -echo "\-" -echo "\." -echo "\/" -echo "\0" -echo "\1" -echo "\2" -echo "\3" -echo "\4" -echo "\5" -echo "\6" -echo "\7" -echo "\8" -echo "\9" -echo "\:" -echo "\<" -echo "\=" -echo "\>" -echo "\?" -echo "\@" -echo "\A" -echo "\B" -echo "\C" -echo "\D" -echo "\E" -echo "\F" -echo "\G" -echo "\H" -echo "\I" -echo "\J" -echo "\K" -echo "\L" -echo "\M" -echo "\N" -echo "\O" -echo "\P" -echo "\Q" -echo "\R" -echo "\S" -echo "\T" -echo "\U" -echo "\V" -echo "\W" -echo "\X" -echo "\Y" -echo "\Z" -echo "\[" -echo "\\" -echo "\]" -echo "\^" -echo "\_" -echo "\a" -echo "\b" -echo "\c" -echo "\d" -echo "\e" -echo "\f" -echo "\g" -echo "\h" -echo "\i" -echo "\j" -echo "\k" -echo "\l" -echo "\m" -echo "\n" -echo "\o" -echo "\p" -echo "\q" -echo "\r" -echo "\s" -echo "\t" -echo "\u" -echo "\v" -echo "\w" -echo "\x" -echo "\y" -echo "\z" -echo "\{" -echo "\|" -echo "\}" -echo "\~" -echo '\!' -echo '\"' -echo '\#' -echo '\$' -echo '\%' -echo '\&' -echo '\'' -echo '\(' -echo '\)' -echo '\*' -echo '\+' -echo '\,' -echo '\-' -echo '\.' -echo '\/' -echo '\0' -echo '\1' -echo '\2' -echo '\3' -echo '\4' -echo '\5' -echo '\6' -echo '\7' -echo '\8' -echo '\9' -echo '\:' -echo '\<' -echo '\=' -echo '\>' -echo '\?' -echo '\@' -echo '\A' -echo '\B' -echo '\C' -echo '\D' -echo '\E' -echo '\F' -echo '\G' -echo '\H' -echo '\I' -echo '\J' -echo '\K' -echo '\L' -echo '\M' -echo '\N' -echo '\O' -echo '\P' -echo '\Q' -echo '\R' -echo '\S' -echo '\T' -echo '\U' -echo '\V' -echo '\W' -echo '\X' -echo '\Y' -echo '\Z' -echo '\[' -echo '\\' -echo '\]' -echo '\^' -echo '\_' -echo '\a' -echo '\b' -echo '\c' -echo '\d' -echo '\e' -echo '\f' -echo '\g' -echo '\h' -echo '\i' -echo '\j' -echo '\k' -echo '\l' -echo '\m' -echo '\n' -echo '\o' -echo '\p' -echo '\q' -echo '\r' -echo '\s' -echo '\t' -echo '\u' -echo '\v' -echo '\w' -echo '\x' -echo '\y' -echo '\z' -echo '\{' -echo '\|' -echo '\}' -echo '\~' -echo '\;' -echo "\;" -echo '\>' -echo "\>" -echo '\<' -echo "\<" -echo '\|' -echo "\|" From f3fbcbe74253eff5f8511d4ca74a80a36b651800 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Thu, 17 Aug 2023 09:54:06 +0900 Subject: [PATCH 43/57] . --- Libft/libft.a | Bin 37456 -> 0 bytes Libft/objs/ft_atoi.o | Bin 892 -> 0 bytes Libft/objs/ft_bzero.o | Bin 684 -> 0 bytes Libft/objs/ft_calloc.o | Bin 776 -> 0 bytes Libft/objs/ft_isalnum.o | Bin 760 -> 0 bytes Libft/objs/ft_isalpha.o | Bin 680 -> 0 bytes Libft/objs/ft_isascii.o | Bin 664 -> 0 bytes Libft/objs/ft_isdigit.o | Bin 664 -> 0 bytes Libft/objs/ft_isprint.o | Bin 664 -> 0 bytes Libft/objs/ft_itoa.o | Bin 1160 -> 0 bytes Libft/objs/ft_memchr.o | Bin 732 -> 0 bytes Libft/objs/ft_memcmp.o | Bin 756 -> 0 bytes Libft/objs/ft_memcpy.o | Bin 764 -> 0 bytes Libft/objs/ft_memmove.o | Bin 856 -> 0 bytes Libft/objs/ft_memset.o | Bin 700 -> 0 bytes Libft/objs/ft_putchar_fd.o | Bin 696 -> 0 bytes Libft/objs/ft_putendl_fd.o | Bin 876 -> 0 bytes Libft/objs/ft_putnbr_fd.o | Bin 984 -> 0 bytes Libft/objs/ft_putstr_fd.o | Bin 756 -> 0 bytes Libft/objs/ft_split.o | Bin 2048 -> 0 bytes Libft/objs/ft_strchr.o | Bin 732 -> 0 bytes Libft/objs/ft_strdup.o | Bin 828 -> 0 bytes Libft/objs/ft_striteri.o | Bin 696 -> 0 bytes Libft/objs/ft_strjoin.o | Bin 936 -> 0 bytes Libft/objs/ft_strlcat.o | Bin 888 -> 0 bytes Libft/objs/ft_strlcpy.o | Bin 840 -> 0 bytes Libft/objs/ft_strlen.o | Bin 700 -> 0 bytes Libft/objs/ft_strmapi.o | Bin 848 -> 0 bytes Libft/objs/ft_strncat.o | Bin 980 -> 0 bytes Libft/objs/ft_strncmp.o | Bin 824 -> 0 bytes Libft/objs/ft_strnstr.o | Bin 988 -> 0 bytes Libft/objs/ft_strrchr.o | Bin 728 -> 0 bytes Libft/objs/ft_strtrim.o | Bin 1408 -> 0 bytes Libft/objs/ft_substr.o | Bin 1068 -> 0 bytes Libft/objs/ft_tolower.o | Bin 664 -> 0 bytes Libft/objs/ft_toupper.o | Bin 664 -> 0 bytes Libft/objs/get_next_line.o | Bin 2808 -> 0 bytes Libft/objs/get_next_line_utils.o | Bin 884 -> 0 bytes libft.a | Bin 37456 -> 0 bytes minishell | Bin 91000 -> 0 bytes objs/builtin/builtin.o | Bin 1824 -> 0 bytes objs/builtin/ft_add_env_front.o | Bin 1464 -> 0 bytes objs/builtin/ft_atolong.o | Bin 1716 -> 0 bytes objs/builtin/ft_cd.o | Bin 2776 -> 0 bytes objs/builtin/ft_cnt_args.o | Bin 672 -> 0 bytes objs/builtin/ft_echo.o | Bin 1548 -> 0 bytes objs/builtin/ft_env.o | Bin 1140 -> 0 bytes objs/builtin/ft_exit.o | Bin 2616 -> 0 bytes objs/builtin/ft_export.o | Bin 2524 -> 0 bytes objs/builtin/ft_export_check.o | Bin 2300 -> 0 bytes objs/builtin/ft_export_print.o | Bin 2696 -> 0 bytes objs/builtin/ft_join_cmd.o | Bin 2152 -> 0 bytes objs/builtin/ft_pwd.o | Bin 1112 -> 0 bytes objs/builtin/ft_unset.o | Bin 1300 -> 0 bytes objs/builtin/ft_update_env_cd.o | Bin 1256 -> 0 bytes objs/builtin/ft_update_env_export.o | Bin 2612 -> 0 bytes objs/execute/child.o | Bin 2904 -> 0 bytes objs/execute/execve.o | Bin 2400 -> 0 bytes objs/execute/execve_utils.o | Bin 1776 -> 0 bytes objs/execute/file.o | Bin 1068 -> 0 bytes objs/execute/parent.o | Bin 1168 -> 0 bytes objs/execute/path.o | Bin 2528 -> 0 bytes objs/execute/pipe.o | Bin 1984 -> 0 bytes objs/init/init.o | Bin 1796 -> 0 bytes objs/input/get_input.o | Bin 1680 -> 0 bytes objs/lexer/expand.o | Bin 2216 -> 0 bytes objs/lexer/expand_check.o | Bin 3096 -> 0 bytes objs/lexer/lexer.o | Bin 2644 -> 0 bytes objs/lexer/lexer_utils.o | Bin 1228 -> 0 bytes objs/lexer/quote.o | Bin 2864 -> 0 bytes objs/lexer/tokenizer.o | Bin 2212 -> 0 bytes objs/minishell.o | Bin 1164 -> 0 bytes objs/parser/parser.o | Bin 1660 -> 0 bytes objs/parser/syntax.o | Bin 2800 -> 0 bytes objs/redirect/heredoc.o | Bin 2520 -> 0 bytes objs/redirect/heredoc_parser.o | Bin 3028 -> 0 bytes objs/redirect/redirect.o | Bin 1616 -> 0 bytes objs/signal/signal.o | Bin 1856 -> 0 bytes objs/utils/env.o | Bin 2216 -> 0 bytes objs/utils/list.o | Bin 1344 -> 0 bytes objs/utils/list_clear.o | Bin 1028 -> 0 bytes objs/utils/temp.o | Bin 3032 -> 0 bytes objs/utils/tree.o | Bin 1560 -> 0 bytes objs/utils/utils.o | Bin 1780 -> 0 bytes 84 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Libft/libft.a delete mode 100644 Libft/objs/ft_atoi.o delete mode 100644 Libft/objs/ft_bzero.o delete mode 100644 Libft/objs/ft_calloc.o delete mode 100644 Libft/objs/ft_isalnum.o delete mode 100644 Libft/objs/ft_isalpha.o delete mode 100644 Libft/objs/ft_isascii.o delete mode 100644 Libft/objs/ft_isdigit.o delete mode 100644 Libft/objs/ft_isprint.o delete mode 100644 Libft/objs/ft_itoa.o delete mode 100644 Libft/objs/ft_memchr.o delete mode 100644 Libft/objs/ft_memcmp.o delete mode 100644 Libft/objs/ft_memcpy.o delete mode 100644 Libft/objs/ft_memmove.o delete mode 100644 Libft/objs/ft_memset.o delete mode 100644 Libft/objs/ft_putchar_fd.o delete mode 100644 Libft/objs/ft_putendl_fd.o delete mode 100644 Libft/objs/ft_putnbr_fd.o delete mode 100644 Libft/objs/ft_putstr_fd.o delete mode 100644 Libft/objs/ft_split.o delete mode 100644 Libft/objs/ft_strchr.o delete mode 100644 Libft/objs/ft_strdup.o delete mode 100644 Libft/objs/ft_striteri.o delete mode 100644 Libft/objs/ft_strjoin.o delete mode 100644 Libft/objs/ft_strlcat.o delete mode 100644 Libft/objs/ft_strlcpy.o delete mode 100644 Libft/objs/ft_strlen.o delete mode 100644 Libft/objs/ft_strmapi.o delete mode 100644 Libft/objs/ft_strncat.o delete mode 100644 Libft/objs/ft_strncmp.o delete mode 100644 Libft/objs/ft_strnstr.o delete mode 100644 Libft/objs/ft_strrchr.o delete mode 100644 Libft/objs/ft_strtrim.o delete mode 100644 Libft/objs/ft_substr.o delete mode 100644 Libft/objs/ft_tolower.o delete mode 100644 Libft/objs/ft_toupper.o delete mode 100644 Libft/objs/get_next_line.o delete mode 100644 Libft/objs/get_next_line_utils.o delete mode 100644 libft.a delete mode 100755 minishell delete mode 100644 objs/builtin/builtin.o delete mode 100644 objs/builtin/ft_add_env_front.o delete mode 100644 objs/builtin/ft_atolong.o delete mode 100644 objs/builtin/ft_cd.o delete mode 100644 objs/builtin/ft_cnt_args.o delete mode 100644 objs/builtin/ft_echo.o delete mode 100644 objs/builtin/ft_env.o delete mode 100644 objs/builtin/ft_exit.o delete mode 100644 objs/builtin/ft_export.o delete mode 100644 objs/builtin/ft_export_check.o delete mode 100644 objs/builtin/ft_export_print.o delete mode 100644 objs/builtin/ft_join_cmd.o delete mode 100644 objs/builtin/ft_pwd.o delete mode 100644 objs/builtin/ft_unset.o delete mode 100644 objs/builtin/ft_update_env_cd.o delete mode 100644 objs/builtin/ft_update_env_export.o delete mode 100644 objs/execute/child.o delete mode 100644 objs/execute/execve.o delete mode 100644 objs/execute/execve_utils.o delete mode 100644 objs/execute/file.o delete mode 100644 objs/execute/parent.o delete mode 100644 objs/execute/path.o delete mode 100644 objs/execute/pipe.o delete mode 100644 objs/init/init.o delete mode 100644 objs/input/get_input.o delete mode 100644 objs/lexer/expand.o delete mode 100644 objs/lexer/expand_check.o delete mode 100644 objs/lexer/lexer.o delete mode 100644 objs/lexer/lexer_utils.o delete mode 100644 objs/lexer/quote.o delete mode 100644 objs/lexer/tokenizer.o delete mode 100644 objs/minishell.o delete mode 100644 objs/parser/parser.o delete mode 100644 objs/parser/syntax.o delete mode 100644 objs/redirect/heredoc.o delete mode 100644 objs/redirect/heredoc_parser.o delete mode 100644 objs/redirect/redirect.o delete mode 100644 objs/signal/signal.o delete mode 100644 objs/utils/env.o delete mode 100644 objs/utils/list.o delete mode 100644 objs/utils/list_clear.o delete mode 100644 objs/utils/temp.o delete mode 100644 objs/utils/tree.o delete mode 100644 objs/utils/utils.o diff --git a/Libft/libft.a b/Libft/libft.a deleted file mode 100644 index 6c17ebc57b7385ce6f04b44f93ae283797fc9a44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37456 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 diff --git a/Libft/objs/ft_bzero.o b/Libft/objs/ft_bzero.o deleted file mode 100644 index cfe1fcb38b2a14fd921d7ec79f72985c3db1d65d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 684 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%*Z>v30aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7DmfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1- z%29yQ8cYzkbO33nQ-Lf5h>uUrh)*j@%uR)e#mA$%uK=pl0ZMy7&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNPGg+9SeXo50DSk&j52XkO>ALy->G8MTn=2n__UJvq^i`Sdt_Z)8v$I9qsSg51`;uYTqgYo z?q&T^o>3Y-fk?gt&V8rpi(KfESuPE=%3PU{AI)-^0>Fnvn}P!8cHKL$Y@au3$NRNC z&NtT89>t0jhKws{LbF_Bl%vMBavSG!D%?G^JV#VG|2f~e@{w^@`lu?A%g^fc$Uq>#7>XDJis* zEzp{IEuYPdUErw&tj{9LUjpjC!|G)IEVY(P%Rc%hc)T!&5x+x$%Ba)it0!)wG$A4T YO9OX(?m6C(;{*4sYPD|1C0nHM4T&sd0{{R3 diff --git a/Libft/objs/ft_isalnum.o b/Libft/objs/ft_isalnum.o deleted file mode 100644 index beb024fb43c977a5ff07b8d7ec035a1071eac39f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 760 zcmb7CJxjw-6uqg^inb<$gMvZ_hb~>592G4@a1g2BB9G7y6RnmF<;GA^&_iMi!w@$&gaR-6=75QiKQtbJJ!rgz$_4+ zrB6~C;NU|!e=YS--~v4AhciQl!LNju#Rk_Y;0rB26=5w9{?UT83t1GZUBCwTS#Y;C)9C-!H9B z8|SIDTw3b#V0>p$2cxXWX>d9R))S}k|Cq3$PI^*xUpdEBXW#KfTL*5lG1Q)Iaqk~* Cq*RFj diff --git a/Libft/objs/ft_isalpha.o b/Libft/objs/ft_isalpha.o deleted file mode 100644 index da20b0195bfc3228a1611cc01e4a7ae55c359431..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SOFEk0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7kxfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw$ z%29yPOc1v;0BNXGfh+`wk5A2rPb*5yO@)ZX$D_J01FF;kMnlbmav8W87+^}kLPkJR z0*JwO@pCb-0Wk=GECq>oK;1C|NDBb@K>Z8>K#UAPdZBJb7AA@v>e2bMv-U@G?GH!( z9+1^QRuq4q2!xf$-y;TLRq^-p09nUf|A1_I35qfx8%Q#AyZ(ti3}S!*G+r>A12PZ< z7^{L97%K!A1$fvwCID5b0L5g0xZ*zqz~Ys`kx!tF$(ff8qzMXu%Gp2$^CO!cpH>o| NS)7+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z82Ed{fLeg8dj5VMAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag;K7AI$Bf|LRP DvIs#H diff --git a/Libft/objs/ft_isdigit.o b/Libft/objs/ft_isdigit.o deleted file mode 100644 index a0e0f40d01b86d5d7227538c36481efb8e07fb54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z4ETG*fLeeoOa6WyAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag<#WTt0=Qwad2 CK0yZn diff --git a/Libft/objs/ft_isprint.o b/Libft/objs/ft_isprint.o deleted file mode 100644 index 8cf5033396fa25d36dbe5e96031092dc2714b779..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z6!?3@fLeg8I{tnhAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag;46lLatQwadc C8bMe9 diff --git a/Libft/objs/ft_itoa.o b/Libft/objs/ft_itoa.o deleted file mode 100644 index 6b8424d68378e36d6a5611c4e94625e64d9abff7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1160 zcmb7D&ubGw7@e)54caCFD^w5+=)p@QcF=6!G8%5v|ISwItR z5o0ejhk7Z^dUc~{+Oko5X4TfDT+WZLztw&exB(;N<(Ae{vbsjfQbm@Z7OSNQk@BoR zeZGn+c(3$y{UyfqQV88ayMPRBBrmdQBn6#?@J09_KNa+8^r&a|krY&;llY+qEu14B z3iqdQ`dPPmBusuJT<#06=^v7W%ljVhJ9~yOzlqO3m~cBG4pLV*%`Qv6oC8g?`GDxX zcW9{K&~SMGf)Bzh5j@^KVA?K3!8}7T8enS*!@KJB7Xl7 zTVJvv*ywuAAm91~;Xs&${y{7ry1~K#*g!a6 zv#a~%+sW%KXfjsb3Gc&g25sIa05$@3iZ&n81@|7Ez}r_ajBW^5C9Faaoud%wBcQgG zK11?wGpA>P?cR43LB!=lj}KS(!5)uT^r#b0n^MSDM4nimS0cvq2h7+^8L8Qs_zqY% zfnP($kICz3r1TlfB~q`Zmgc5a9r5zWK=IT*6Fhnge0v%CRuP#r8f+8FP>*B@G}+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%cmNf@0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8z3?fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1z8@Z zSOF>+!31&34j>J6Dv*T$@$sn{@o7bgxv3Db_;^(JEr2R@fYKFE^PpS?ZU%-77#lmYz0vLaro;C-koUl&^PorL!T&(u(dqlZqxlB|e~U5DXrSB;{%sum z+d{8fUgU4(g$e;R|9B}4;6uKmbb*432yPZA{L*YzU)4VZ#P8m>=2n__UJv+|=CU Hj3NdADT-*# diff --git a/Libft/objs/ft_memcmp.o b/Libft/objs/ft_memcmp.o deleted file mode 100644 index 4ae0e2bb654a43e15e6c99b8ab3cf36fdc659359..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 756 zcma)4Jxjw-6n&|+Em}X2Hb#UcobMF?HGi2jn& zwKzDMZW+4>?I1W7DeAe+?H3|=;N+fr-+Skski34re}#q6W&|E!5Nwc$fxrs5N&O$_ z@!aD*!ycZ3NWKK6idMPkYrjvL$H{R&RF5pkkFtyq6gMLcp;YGFE~GO>RmxwU2;wHwm5b(3Os2mk)45h4`%3h>x%bzJVov*=Lx4G8Xk6SS>L~f|5Zh*_+;4Xbm zgg^paN^_5MbWo${ab6sPlc2Mlb#nYKos!O*bgn<7Q|d@3)s|Hg+VoJ-n=WcwI!$@o z{05|xXv@2v&?^UU$C{_tBPgz3H?~@Og%VFs*IQ1a-;MKJ&QebHcSoJueSrCk*~g-& zn*Eb!5(Dse{`GoGysljx39W2sMl>9$Vb>bwt6-es0>l4A>?|7hf!&1=pQD29Au`q{ O-Bq@zY|GBr1@QxK3v*xq diff --git a/Libft/objs/ft_memcpy.o b/Libft/objs/ft_memcpy.o deleted file mode 100644 index d0b66830935e4bef0eeb8229d790025509088e30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 764 zcma)4Jxc>Y6nv*45ly@+EEFtK*xFcGDtfSmf=B{3vV?dc78iqDFbV<14?Jxw#max7 zrNP3|lvkz^l0ry%Sg7;dz2t%j4oqg=+qbhXB(ERupD7|^l<)y2z(+P&5SRfMx&90K zEQn^bB9oY$%aGD@>Ynnd&e>bJK^?g}Z8(p2=_5hMeGemLanG$5ik_@h4t6U$Qm(DW z&+m1S)mk4>y97|ZBHRE{I%QefFSw5CNjbdVlOA2tdaLtvNfSin$g?hh)8Nlr<~Sum z20zOEw%(%$O{2zr+5qF=yL#7n`(HjU{5Rn@dcv=Dgr9GV(?*ZXbAB4O1Dj#{Vuu{p zEpTydW84m)xMH`UZQ(b?N%IR3{yIWJGSBAKY)hT-f;ekkS(p!odcmdDec-DqIE04V z&zO%v|K7j8=9Hc>jyB1tTZWZRjon~s4*gj$%R2$l|Am$(t&5SBOfr^@@gxVE@pM`8 Lr0clF>LGmt?|yTx diff --git a/Libft/objs/ft_memmove.o b/Libft/objs/ft_memmove.o deleted file mode 100644 index 215dd01afd4aabcfc28b0b90b7a1c2f4460f6e6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 856 zcma)4K}!Nb6dp}fD%(AHFzVo;YY?4;E=euSAt6e^OAKO)9o8bWBoK;9T)Xsdif+=O zI_1%$m%u#)LYJk3_PyO%-H50M-@fm?dGDJyv-A4-J`6GDn_~C?0pOlU9DvOO35tKQ ztX%6#@5az%1kxoFqEe_;9PY$vEt{UiF8h##^k|l`1=#tRg9wp7)Q@ucil~-P56b&O zY;AhiEg8h6@A#crRxpqp6`6?%Q7DPxaZWEdIU&B!7n4ovvSlFkT!k6NN-ihA3d8`r zO_^pvfQ&Y!d_vB_;Z?-wXWM|+s8??5P5+B$xben~`hXkNJ~uKwepw$d<(jqz?Sn>$ zK56zvnGY1)XeigZ@MzIG@Lj&9b(BUDt0q7tJ#Mu5MSBF}MhdzXQ?3@AHMFF9t!UWp z1Z_sc<_ikV-M<8uT>)F14h`{6OSP4}xo%T6??@6Q?!*?Vti4Cdj7`3yAJ-R^6~40_ z=Buebbv6{fMb#4Wi@@`cPBt33?~o+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%H~)KfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1; z%29yQ7EBPg%mC6*rvh0B5FekK5ua9+n41a_i;qWjUjtOB1C)+{ng``Fa5FGuz}O(# z2#6(s7;G0m7Xup*g8;}IX`og2z^@m5N>w|9JFCD)3fxH(Uod-P{5B>)Nk51ng9?d@(_*-OvMt8XarF|cG zbe{5PJOr{GsQp0)6aUHDCpp!TLcjV9*qk2&>_OWOAO1pq6bZ67bOq`A(Rk0cI?lH zu66I)KM)kuT{>iM-1%@j1P#3Jy*E2E->~2F*XMVN$eJM>z$|btA`2kaft>h1;#Tu7 zT4OwBl0fE4Fb94+h;-x&N5#U_8?~oG=E*LNM6?%7*VG6zdl$8a>jfOvTh)4r`S>vY zJ*OtCY-5h>(l+ympr*m>SGe4CYkrht{=HvOOY_P*I!`Sv5LJv8-UZfx$#2QbQxcGn zOC{fh5PgS3Jo@Pbh==qV#Pk2rXU^c&>3!JwerG%gN4?I7GQ&A^zOUf8?u?vaIDU}n zZ!*s5J=y1vqBQg!ChMD=@TwZ?@|3K$ZP|;d^bM*uk>3FN<0#BK(*Cl2l{i>RYTp(Z j<=bMx$uu|18#(YS8ej!|B`_%H;6XZ6-|Wtk3N`S}%r`spy?IZcKHtBhM4=Ia14e;Z7%m0C=7A=E_`@Eh zzQi-IfJ2iQtjDIcWz;M`_jxXx&;9ZsGbCX>p8b#ravAh+)cWwus+P?oDQZ2a7wE`Z z)Cv;mAEK;xa(sGlXldI#FPjCeH#el!3nd{biERk*nX$3wBcxT1ODFU$ZpOIHqHtJo9x5hB=nuc@hUFF(6-NImD$_DW$n3vxW5?GZ6I8r$qDIZ<70QC?4XcD^7kIcntVwX)zH7$mmeYA3;z2 z7@lJ2#XF$aNUPABzYkwB-2aAirn^PYwcAdyEwtJYgv}pVj7-Wi=0HkXnI25F*fwe} z55ej*$0;D1Wh_q7gYGF?!& zaS;0QUWE4bkUkuVenZs+^3Q;i4$g+DcPCzt>R$)mjQDRC`wal)@hbZ@_8;K!-5$~H m(f$m_a1@85@EV9RqCFx0SbK$>WeSX-M;-kGLInkf4#h$JF1=_K9Q??a@4kEQ?p^Zk-d^70M3Di)3mgP5IWRzA8eC%k z2QDQ4AbUcOp2Xz746SXmY4_ru&t!*H8a8hT+8H||6)sdkE-=-D9`PBPN(H|D0wo3E>H7# z`EEz~PFMNauIIig?^bzEyUl0#u)fn)-c?{#>&Do*<^_S=kNm0;r;ehTv6$3lp!m-8A{1q5PD5i8&}83f9QIjC{PLtrw%)hv WyJn4aqh7JiAY(Z;lDbsHcKQT3j9ec8 diff --git a/Libft/objs/ft_split.o b/Libft/objs/ft_split.o deleted file mode 100644 index 34c727b49092ba2f6d31d2490e2121323eb1eec3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmb7FPiP!v6#u5C=~mm!T3d}EGzAYuTusD-#fT9*@PRG{=|T?;({(zrk?l67I~at4 zg-ImSp^$^3C-vBio;}Fg8gb*v2CD4QLnJejvU6D4q13Fu_syGaT(busyzhPQz2Eo# zeY4;GdjHPO0U@+U1QzfRIJXbW7#Q?4c!eATXr2y$PSP1rrX!{xX16fSn!Q*fL`tT4 z#yEQ>(;mvdI1a_5vtJAg@ff*>M4d!NrfFTNEzDKlXG4FyEKXMXk^R}pRC1c05%Dfx znlD>5)2V(mSG{1GZ=dctv5EP>*K8a`JepaI`Z)BzLYk(1(VSfm$|`-MB|Wz#^yR~_$)=GIIGV%a zxtlOk;quyRSJ6azA}F?`uSKuJ-Za?cwq)QSSE((p6+>n8lCHjdj1C8GD{xXH(j^fk ziooz7IV_Ng^nMzjS(|-9KfXjRp&y?T+|L;LNqnc%G-C1)y8epLm*~qRMQ`L@Eq3(f zCs>#JX^1M-^UCBVfzi<$v8u~AwgV%^9DE}VjBObd6KUO&+J^LtN%U2>+l3p|jLod= zo~QJkaHX^b5Lz`_O$1iiLsiP>te_MOVe8aJubQw|O&C=a$_;TRTdJ0cyS{N7^9iL@ zy3M03#xf|iq;*94LmNm16)CNQ(wkhzbsR#Brttt}cB7Nn2Na-)0Ng@I@Ia&fwCEgA z00RcxgZ>e(a({WAFNWmb^loc_&8pETyMDdPVKB1ZGGvfhr!`Gn)B|9DgCpb>9f6Rw6AOW zGW`mo5mh>0SM)7%V zLi_k#p)KaM{GkK6RpfjY_GiG;>KeOUu3v~ZM)IHRd-E`!D@BAm4Ne$WS5_>0;ON_$ z{u}cFaX)+FJ_Rnflj69qJ#pUyH_kZj??1Q?(LZjfaGvE4=q(5R8%R8zg%d2lL@YoG zJ|s+qG9;eB!nxFb>_tfQT%i9kP@#?mxZ(3Gr&x}$gi!tykRt$Q_e}38>Dj$L$9i^; zldNa=2B^?!VKN|hsp73ZeWFjNAINUJFlTG#mHEnCO_=tgoo&hJyoY~6VOmw})uv*X cp_8k&aKV{RT@||u+k$N?k5#TzE?da)55k_hwg3PC diff --git a/Libft/objs/ft_strchr.o b/Libft/objs/ft_strchr.o deleted file mode 100644 index 0f0c202426d5830381eab492ee1bd9626e5043fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 732 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%cmNf@0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8zY1fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1z8@Z zSOF>+!31&34j>J6Dv*T$@$sn{@o7bgxv3Db_;^(JEr2R@fYKFE^PpS?ZU%-77#lYqto@rOKTX16=XM1=)=nc z|NsBTr-cKg@VM&_AO$k|N9{=4FHG15rTbY#@XAkxh?JD~T^IDN4>LVgLYE|79!y diff --git a/Libft/objs/ft_strdup.o b/Libft/objs/ft_strdup.o deleted file mode 100644 index d96ab0ed5ffbdd7eee8fec0146c58f826f641262..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 828 zcmah{J4?e*6h6_~idq}NLBS!Yn|5(>RJ3ph3q>lp$R(sH719SarBw(BMImHy^k+D_ z`hdFW*fEPxL7`)DP|r#3wNVfceEGif%*nlZe1H2$04Sq?4@3-cO+rJU%_G*y|HHZ> z-W4^{$C*H&xn!K%X3GwB=;t&0`JpdWQwW+zyIhTk88JAOHN>17)pAWYY~H9e4=V-E zcebPXmT)w|IWgw}S*(g`Xq=lRUaae7GmLTmbH7Vbx*@nG_Y(djKuO4e*6=xp2;P;N zfH;DTUP|#N6!d*69?&W>_CpR4HR>hEGmPf`(|gQ)X6;vvxlW&XPQOPD%+2(ehZv)= z?8e7PM`nE1c6>;kB`MX(45;B{ksQzQnb*KE-<|Gl*yUw?=4J<&8L;-fc5p{cfr)zz zK3~R&XN9Aj?1Iu#6?G~xet}iX7+*lJ&(P$50Gre5`N&o>F8Xw2EKjc>O!L?rDaxtmvzgk8USA=scVb? diff --git a/Libft/objs/ft_striteri.o b/Libft/objs/ft_striteri.o deleted file mode 100644 index b14ffbd07af69e702ca1c6ba0618d99d4bb81546..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%*Z~#40aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj0F<{nFn$U9I!Anz}Y}Xe0*|#Zb4#lNqlKud1hWpe7uhfvU~)T zqX4B1m>_PM0HmQ#1+owzK0Y-gKCLJ*Hx(ilACKz33aC;CC>;Pb56WfWW?;yGu|c#E z5K90t*e-r91~woD0g$C2@flEetN_viKt51ELjVvX1CU;*Takr{VuyNkKJ{pRqu|k5 z`@^HN^uux2Hz0i;-L5}8l6~Ja*l;lLx2QryK6KZ<@#yviN`$`gV7%zjdG7xOpiuL1 z#?IO|FHipe|KFqeh(hdPWQ(EkgyB39s3OLyAO^+?0Y(8Hc8&=^RVqMn86eI8ng#-} ncxG_q6KG>{=4C@N9H^WPWH3Ln>G5eL@x>)YnI)-3nLs%J-wawt diff --git a/Libft/objs/ft_strjoin.o b/Libft/objs/ft_strjoin.o deleted file mode 100644 index 0e88db478a65639c179019944de738852d5e1711..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 936 zcmaJ<&r2IY6rR-(Lv5NIB3SScO0O2_DF+WqyD$d>K@_}{Y1l?g$q&&D1|blMO2%Az z>fhqg&>y)qIqp?RVFNAXW{_g~z3kg&bEpr#c|YcT-@MtK?)~qF1tE-ifdvQw*AyfH z*mEF7`G4#^?>X%K9GZeax@1b(xvK5OUcO`Q?M!n&`ojU~(JUzlOf*8G?)Q*a$|@HR zvzDzYrIUQ=gHl^>gZq=qppfLEGw11KAjYGjGBu@g2WtN)Tg-VirDo?#GHHV;Bi8d3 z7KJ$QWAd+oWne;!JrQAmj1Hyx9^b18pF|G6$N)hjE@5WSV8bKvuGBwe^vQ_|_-RU8dYtJ2qZjgFyfeQEt@CL)7xk%rwfr!=z59z3UKp)F=76D6r0cD zmve8TVdkyF=t&Z)ZkL7$xa9qeCEM^OZ HvL*fkEIy)# diff --git a/Libft/objs/ft_strlcat.o b/Libft/objs/ft_strlcat.o deleted file mode 100644 index 1a44b8f2d409487dbcfa82492673fcda67ba14d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 888 zcma)5ze^)Q6rS}*6i?k1EEFs(J5G3iWsMT#^B8&F6YER5gF&S)$IKlt{&_q}=FyujrC>G8RPF{_o~1Ga$| zlnjHwAUH|&2bj^le>$2Po{UJo1S#G0o*U+2J;&$g-fELQ>V*7gmr)qBkk-b2QZSG* zwXwdLOu2F=v%8vEl5+Zo=~1leVpzulOlX%$eDtafTiwQf=@q%Wm0VAUij?p7bM#P5 z4+PrJ%zt5Q#pDzxzyYu^W_Pg&NT5qekLlmFh)6Z&*$mhWnl)_JKa(ef`Y*hPm{12* zp>_hH5@q2ZR0A3oiWgA?rYHy>!W1vtzx$}|^MYvQWgM$j{)R#k0*pW(jWHaL(rSvA z#;=4Q5A4f6?}=r3-ahPy?(>q$dAYiZm%JLY|6FGi`4gT$x9p>Kv@6lj6>H_huN*lE z6%S4vxZ{>4t(tWzXZ3oW8h4G=Xp;i12B{{z+t|Vl#troQA;)*1r3lvkEVK3;%jxdu zJjJOIXhUG}8J7U&{jqPo&T-54o(K&AUqKv?(*J=XX^0V!+4RxqL2N4V@Rwb=?QX55 KlJ0As&af9Gnwnhz diff --git a/Libft/objs/ft_strlcpy.o b/Libft/objs/ft_strlcpy.o deleted file mode 100644 index 98c68f0743316b5bc1f76fa4c587c67bf9078b5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 840 zcma)4Jxjw-6uqh17QYg~LBXMegNsm|1Q$gEZ?GUz!9^aWRur^~ruYFxr7EUfT*TGU zpWr0*195ZIv5Sy`f@5*8o}0YbI0#-ix%ZrR-?=v-PoM8!5hAUL@Bo^DD=uOHq8Aup z{znX`vlo?p4o_mRFNc&?X4~>=k0;H!WP|(Ftt!}$cVPq9x|#OXk(;DUudS}9(w59+ zx0bUDQcg_<&mR?useBRgc8U6aL{J(bWoAh(ZlqQ-o+jn*{T$UgrgB;NDN1cbOMcCH z80Z1q-St)q0~|b*bpv~F9Yi?-{h5afDZ*gJgKZKogggsjkrM%<5 zhp^2TQOH+FKk9&)D1q8$t-1$NW%r@7C?y>Ix~uR>C+4$$$m{V9O+PO~D4Nfgnts&6 z{iA$TGBM#s9Nh4}!cI6v0~#g=w2u?kDx#&1z`RQJj0?0qG3iNbw+{tiZgxb>DQ{*rY(D|W) XzfXYTM_#n#rnRw>Uf=ntGg(}!*iUF| z3>q9;gXZ8l1dh^>eaCm78WHrtchC2od+xd4%jd^eoXD6W9AFfD6p;pjB`_oY4?OAq ztDXrxc9Kx`3Ya~&<^?+NSv!{<`%pPr$Uez3LX;XK4Z&PEDWB#G9-mh(jw*-D+gp?O zjy7psGm#+69jcBBH3qX=;$k&lc7q=C&wLF%x~^+Z@6(oMiAtfCx(Y6W!@tZKih%<8 zRQmTi#{+5-9`9)voP@m9Str~7()+6Qu3Gh;>e#+KP|bRe%SvQf*R4nwU7>`K=Q;rZ^^!UuH9=jF#27dWeJ^%m! diff --git a/Libft/objs/ft_strmapi.o b/Libft/objs/ft_strmapi.o deleted file mode 100644 index 42f0f023a9174375d2eec7f7338b8d8a2a5b0db6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 848 zcmaJ-#ROosO5p6_{|_t*DwcfaoM9)?7$LBRo}fD1ZV z0QLs>K>ZJMOfEE>Xv`FXb7@+8rCl%fW4-KtUVhezcV-;U<1VcM5j+(8q{Or?ZdSGm zMNikNI~&zit(O*)9QoXctl?t};VvDpS@mhGNn^j#x?bBZR7!C~>;C<2OyQj2Q!~#< zc_p%*_~duM1n_j1{Zi5Zjh8acWw=icM;45J`3UqHdx^e9dkg;KuPFbIYW&S9zus1U zt)+r`yTy9-f+N+{Z&7|Tj`(h<8ud`@!x5&MZij`pUvMNqtT)S||<<=3Ly@7-<}{Yd1a>r{rbLgl+1a7Q(M=Dz;m z4T+iW&mH@0%qVN`lUTcskV6YndhjAN5PA~YgQ5d-uprVxFES0=EfLbR#9b^xps-rp zE`|OX9zBW&5h_Mh>>hH+F^32nXd%boq3Qc(XVX>i&=1~zKi~UinK}J)elf|IG0yM- zCV&qV%mc7l;2!1wv0dG3YoF%OWCYSBlhSqe+$2u&RldG@m8a2EMvu-SAfPlR*nT=g zUP^msd$(-6(yP6EUfY!N@uO@%uXW~iF&;~FHXx>3s9c$pPDO6j%iB&;lk)HLl{D$T zrkLrubbgbuiVl@q#CHZzH0uV-0c5n4>J{+m|K7nbz=O}809hk00VCJ8H4*$4{#i)` zjlKxHI9TfnztLybYubb`X4ac&3Y&aD>b;+ogpGbonXp&7!uS^OPRKj{XG7S7Pjr-| z8Spj~+W#sXVxY-eiXZYmG+O)1CRW}dMO`^8mujPL=0zh0x zm5@hEylWlZP53cLk>-Oq?nT1>r9>hn67_y45vT`zfGq>ze4E*2ouh zV!V3FjJ>>(pPDp}F-1qe4ZOdAG%S6e?7^-4!Pvv;oaTLm$9Qoa9(P<^g2%lTsf~J$ u7FzVtHhLR6pM%e|8C^{_XL8GxFWh>~F1u-5b!rIfj-v{8xmw+^N$wK9G^Wh} diff --git a/Libft/objs/ft_strncmp.o b/Libft/objs/ft_strncmp.o deleted file mode 100644 index d5f0590a942ffea99b4136fea66530a1a51a19c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 824 zcma)4Jxc>Y5Z#L!#jm@{s&93 z5KGZQut?6zlxYN02$m`#@l9?niHP99%e;9zGy67N?(41GDumG_@B=ghH$*}Jq7N9O z`j7C>^4#Os*eM9KmqKehnzTLc)r)dzv0nS^nF;M9FSTeE2Q?0&bz~#Hxe~GUPGWaG zv8wgVbmMuRixB6_fak@6A+`#o9$H6ZdTnbZ9`!V>fBO62)(Oro@8eQ*2odu+du^2e#ly;ZQO^Fma&}&o6E3KX1ebYa)Y2Wf zRhij>avs&;T?J9?Ir}V%v~5} zx&;lzx%#NrY>hveDS9z4WOeAtnJpCuSywIePWI>4Dz_MhwFguq~0 J5s7b7&o}l;ioyT@ diff --git a/Libft/objs/ft_strnstr.o b/Libft/objs/ft_strnstr.o deleted file mode 100644 index 10bba56b90c572c309b9a3fe5211716834ae6601..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 988 zcmaJ=&r2IY6rS}*47R#Cc&OmPg9qCpR8JN!5j!vk3!*M~DN{)!7EBboK`EpJ7d3GY z_2U2FpWsPEh0RUdQ!a&E3Q1`p$Fv92@6FD%&JPFm-))_Uu?1`mLAQr4gsan!%C)y zqLi7<+}3KwmxcV!+x#0T=U>?MXIf`eFDA842~n52?0zY;>vC;-HJ6Q7rMy4if+nRk zY23`E@dJ#iQx&H0d<0iCx1S~8WV9)*mo@(kaSRxIwg9({xa9W+wHyAEd!q7H1mDx5 zQf!Gzp&=?>T|~S_6cO@9X_~qF12I4YZ#TaY2#R&H9`QCcH$SVUVyi(2owp(^HVmjj zt1f1E)!iFZeJB$Ol(dofh*Fd2lNTaca5!B6I%T$a7) zh)1W6yWdMpq3SqCh;xKqRc#)$&7dKV5AZmasfk{CX_yonp=402`JvP4;2o%Aq0|<^ zb^6s6dM(r6pSm_{nGI>+ykBI_ZpukL>`T(OPIor~KfZ%F%zVFWb})6&H8+sZyf28j u$BEa7piM04h(I_&8@lw+M*p1!8NE*%Gr8u=cm8%B{wL4mwoJZ}&9mP%!lxww diff --git a/Libft/objs/ft_strrchr.o b/Libft/objs/ft_strrchr.o deleted file mode 100644 index 5df8815da6375cb5853e5789029454873c59165c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 728 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%xB(Tv0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZj8zI{fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zElV z%29yQ0Zb6LYyi?wrvh0B5FekK5ua9+n41a_i;qWj-wdcy2PjkE*cZr3jzuFpNXU4JxKFz~nN0fj&u{(T($+d`jPUgU4(fC_nZy1oEOd9Z@4 z2l9TrJo^9tfBdRn#2yAJh5=|iVmMy}s(`U7h=H*}fKh;lonrz}l?qT?28ca?_J9B^ o9WXfZ3A8ae^RmGV2GT&~Y#@XAkxh?JD~T^IDJn|NC;}-30DQw^DF6Tf diff --git a/Libft/objs/ft_strtrim.o b/Libft/objs/ft_strtrim.o deleted file mode 100644 index 4a891a2cb4a204f63ecbe7a9aa3da2d1bf9add5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1408 zcmb_cL2DCH5PnWe}=m{WITHzdy!8SG#Xnq>ogawa)>k|0F6Dk`m#RaW@; zd}*1zF8RJnJ_*@5#;VFEdkcCQ8jqo$Whp2L(NKI-?v)>7>>)7fV+#}KP#)FNtVsQ5 zDRTEacYfr#+a7RtxyQZsphqmO(IuaIh`lLx;}~}h1fZ_rdxfsk*MNL(e&L!=F{j;S z`q~9lqtriE>KR>UQ{(0?-}=V5yQla9?z97@znY+;&qheC`_~eN01N|F=qD9kA>eKy zMBk7*JNbp}$_;&LjjEVFHOH9TCyRYT?1NE@*vSYxGnnj7!b>}Z`lo!t=!9sG*Hvvn zJVq~yg{V!>OJh$r-Tx3pk!+h?*j7#dPd`vcr}lGp&3bx6rwhlS)W;lPiWn}tO@m6aAI#`Jwn z;zGUCZHd*p+yvHfuY~^3j=wwsMzAU-Kv?*RrsxjMMvFMakJV|ZmnEb WuH9O)WcJgN`HTsxRI4>iaQ_D40uwU; diff --git a/Libft/objs/ft_substr.o b/Libft/objs/ft_substr.o deleted file mode 100644 index 668a61ca407e94803d103cd34ce28a15a35210ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1068 zcmaJ=L1+^}6rHVY8Z>ot5L8g8;I&Xah{YZvIxvL>f;Q+yh8R;Sq-jkz7?gmrwq&{o zy$GHK!K1h2R8o~Dda!$vJ?0`9h!AhlL*x6|S=PNG@LjyuAPY42& zGP}0Ap2=FWRCsv5a8Js`>p_jMtouys%@q33EG`yZ8q=jANSRxa%f-xU&fk@CbiP+w zl+dDe-A||N7-K6zOn4D~3O?mTknSqdID(vpu18YcWFP7C!- z*xi&+m7Xefg-W*_-c`H8sq}a0)fImxd2EDTqurcY43)rkgOC_#+FcuP#seZbox49K3aD;_g9^%Q+# zcU}{*$z4iNZ!z=PW7?dH+FQfi zoFM6?FwcH(C|vH7`jXh5pM~5LPRU(Ry@jU@8g5Z>H&LCR?K~e02EhfuNxFOEQ991U z2k8U*!v2`L^8u2u>32+>M(l*nj7K+^QH~q&*ktqtSo8+Yz{LTMg9ZNqyLvpnHFj+( zqIGY8pwE+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAa64fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z9Qk`d76MsO{QZ1DR=4Yq<^u|yu76&#L3luBx9gwS!^j3h;{n5Z5vU@@svri&3IRp| z9(IliKvgP0aTy@)_zwZFcw}(o6KG>{<^@>=13=|$AcOglO^;72i7&~|$uCbW0;vN4 Db)`kr diff --git a/Libft/objs/ft_toupper.o b/Libft/objs/ft_toupper.o deleted file mode 100644 index 137ae034299c5876940f6875451f8bafc47236ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAa64fXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z68U>T76MsS{QZ1DR=4Yq<`)W`u76&#L3luBx9gwS!^j3h;{n5Z5vU@@svri&3IRp| z9(IliKvgP0aTy@)_zwZFcw}(o6KG>{<^@>=13=|$AcOglO^;72i7&}7EhtDW0;vN4 DyER5X diff --git a/Libft/objs/get_next_line.o b/Libft/objs/get_next_line.o deleted file mode 100644 index 3fe2879730db3b1523d6228938a97ac898c702c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2808 zcmb7GTWDKl9RIS_?pU{;4C-a*SV14Ea&(RggCQi?14l3*(#jafX-!UTHBB^4Seb-H zPAfS*6ec*lqJ8Y}#U~#`)`_L*TlGO&e99n$1dh^&3bB^P-~YQTm!^UreBb|m`!4@; zHuwHGIKf!xIKzV3gQ*?EGKh(B2D3Ck@CSp(`3=kCL#56$q$d+i%UzDgw~9N1~(ACPU=`^ZSEpRHL&b+m5Ga-kXSL z?Of{WbSh!nuZ}2P4j&NIvSbdSIPy3CAY)P_cR(oEwlifMy zNwS9+n^HKz3z&~#^1Ssv){9Alf)c-oJWc^#274J0_UtuG8Wf5q+0yaQx%}TTW_kB4 zHyHHtyKa7$=}Q#MDw%b1R9nO1=XR~7mx!#=VtHoOa`RQDFSMzC4w;|dwftO_>$&xY zK7X1Fd>HrDZrgKz$< z>b1Q5j+YA{*s**nN(Fo#Zv1?pYE|sETE7&r%a$M8vAj?XB$Wx>xiHh`4N3airC1=h zNhVSoSE_y_Oi^oVjYflPh4TDG$nS^uW5_-lZn|#Y@_`OtT(7O#$s4L(FJHI3+|KH= zu<5MrBzPrrABi+-KXN>vE9K?`6!R4@AI5&J{KGTAxv^&kkm7*pvU0rzx`?$j7M?{s z7OeMZgkyW>G_n>^`Hn@wfWV#8aKaCBo4k;#G+q>rxbbZYBCOpyGUAc=a)s}mH1*BE zGxvRSUmUc4t^hM8>pxHDT{0`gdf^T~H~$sQijP(F+ry{bgTA79!j7=?i$hO|@3nR%pZWN^&!+ z!jl!>uztFW%eX13^~`O&g6+ZN%z%yyHS-LDOJ+r1I@g|lusA^byp2kN;(%7$ zgu!9Es=h?Ws&eyV!SPtdivJo}9HxsWOBxFz#o@5JtmLxNJYQaORnprn@9li^y`jIX z(xps`$g)>db;X;0=*U9E*g!3 zs;Em`>Lu(z#Fh0O^7lRJ$9K#48W7($<9!J~#YdRv>wtLw#ya+q^lkxafWD;P1;isW zE&!sB8Gj)kvil4Wu8cDh{*F|zC&q7-6Juw;!$S18oMdM|21F?1y5wJz{4qedHmIk= zl`$mw1wr?YOBj)GP(lFG@BI+49}d)i3w6kT2-JB+C9Uoe{ST153>zA6U=pqF$&;XU z&}zhiw2=JYpp_=Pm8M?bO4BoIrEhl7A9T>np3K^_*-U&YqtJKK(!PRhAzr_u>#C!C~{bp%enCKCcDs}AqaO>y4LL^7GC HtziEGhP9L- diff --git a/Libft/objs/get_next_line_utils.o b/Libft/objs/get_next_line_utils.o deleted file mode 100644 index d4ef3003edb8ea27560f9b335abdf86315d80376..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 884 zcma)4&r1S96rQzE>DO-1!Jxw)x_0R#bWv(y4h0bgb%;@P#UM3gB?*GS43@q0=XmN; zAav>KCD==#P~cHIXy4nN!6k_L;LZ2FH#6UR`{VWNbCO_8n`2lI^N21969KFv(v<&# zjNI!>RyjNw1^E($aO{>7>M+k)C%IX!lrIJO(JUz#5M#L|QV^n8uU;04j%e1d&TAzh z_V?5tu`d%-ayJ&vl7^og6_pu;uq&e6C{*pRCd7~V)bq(Jed(th78$E3O}vdrA%biA z0*fOE)RgKO%t1O2UIXJkJ48f5cU45||Ix?Xedp~Dle;$~?luS9vqs!w+_ij2pYK=$ zy+iLm$l5J~=^Z0XN4ytw80u=<%NX1{fRBdLuxcd-bRtOHUZ{K4m}Kc74ROmZ2F-iR1%b z<|b+z2!De9fDauYyJFnOc9-KaeF5Y6)}!PL$$7~j+KLtd$0l)%@iU0rr diff --git a/libft.a b/libft.a deleted file mode 100644 index 6c17ebc57b7385ce6f04b44f93ae283797fc9a44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37456 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 diff --git a/objs/builtin/ft_add_env_front.o b/objs/builtin/ft_add_env_front.o deleted file mode 100644 index b3f9eec57d96e39dcb9ad77a76fdd21adf0ed01f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1464 zcmb7EL2DCH5PsXHZK`Rrh=(eo0R=s{SUd?{3>tZd7NWG^CA=(~4OP-jNH;bJfy%0| zt6mkrL)o=E_XVYj74$RJ*nQy+CH@ocNkMBowj2Y7m z4`>X!M~4&?at?Zn{0Z`UN+voAqkV8PQsN~M!guSwJWGEq^JwkZ*Qd9Nhxllg3Lf*6 zjIkXuT7+=Qn-$yfMa|oO>=lGqxu?S4Ww z!6H_vKQiba;`-694wg^cPwz5l4AGlj8O9jkcJzk&*CZ86X`9$WIt~_MMrfXg#vd;< za{B;}$`k2CpUY^xqMR=i@>x~!U_$<^syCiJWJcXI%*0%L7d2N9zX0w0{1u7n&sciV zd^L4|!^8gUUfSGtBk8-#K5-{Gpef^PcB@pYxpeyxZC5U*9(> z7<24nm@rB)W@*uY0XvFuneZ-_r;V_b=GYjTjD}7#DZ{?8Ffo-$*=gMBw9%%2TcXya zN40z@V++yzVBsdxf_Db2-YUjwm(>mii_#9$XOCDmR3)2h*r1be^ z->_%MXXCB)wdjk?sx+&Ej(s-@9bn9_Q3*XPmG05mpir1B^d->tpfU%!- zV33h64cbe!>egcQ|JEhqUxoRtNyMW$5s$2hq>-WBNh3{iNh4K&i3GBbBk2`NiMWvy z2_u(iPnipjcza5Cm-+lvmz6a0j8D8GRw9}qmhiTx_a^f57m&^a=Y{#9se6&vGpk?mXdbnA{BjMuj^yZ&6uWMoy$epFT^t{6G~gc|-&EY?69=Z#f!1r1vg=2``xszNMj ztW(Wddb?O-W(i}xdr|jC>o;Gt?5EN{50aSO5{sQdtVn-uGrPR^L3Cn~xv82RoksUbKcwQ!asMWBjJX`HstV^*sGLOn7{-frdOwANu8*&ZREh8Sj7B=%+@pPR#^625TY$#q2)|Ty{H;u%Y=IOe(>CJ(ItGS=Sqg?kL z?ddr6 diff --git a/objs/builtin/ft_cd.o b/objs/builtin/ft_cd.o deleted file mode 100644 index a82628ee71f13412b81d9852b6523d090f0cda15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2776 zcmb7GU1%It6uzlVx=owxN-d-yWCCg{Wh5#=3>0F`=zU0SEDc5_+^n;+KP1_Wv$HlT zD=FJ84#Pqb@kJ={LGVfHLm!l;Ehd;+gw}^b9(-8PLIM%?!H1wR@jG|!?9U{9@W7q# zo^!r)?z#7#o!NVT|G9mDv9`w;9vJ&EBKz>rFd)Y;J|)K^WW3#XoS+y;pd%-vLHS68 zaI87UpZofGWBhzW4`!FC5D4X?*m)#*mJIvZJV78rn0d#}WK+r@L~Fhv&pGA)R@E8A zt8xPs^_jVu*|_P5LiR!?n-F4TxbDPcRn@f+7&{mv)13%oDs@XrA*{4W+VL674+z&c zrw*p7@-3)*N@a%_O9ykp7chD-Uf+CFs}j-&qhgy&{8xgmTEnW z@qcBEyAOG3qo2FQ8ecKiDE<~@y-8W6%3Y(%OT{XSmT3iEIdujn^^EG3_d_Ff_fi}o_P--{cg*dh1i1#^#Khnw78tp2mJ!`A%0Ln~@dFX-^_0`lK#=sxfI)=DVNu29SipD78_2f)bxXvN)(CH?hqu!T++C52 zaJPJ)qK^1cR7kU(mlnz0xDL81pWsQ4Kd&s-z;esK;CYj7w3&h>ZU z-PWi#hW+(n3AMlPcOd9s_YU?Jn^<};o=-D=_Kd-3HmI42L5)-`n{%|h<#a0h)A>Q| zjhvP*m}xDUnYOf?ttB$HWjZoXN%O7Htu_N`A6vm1bN4Y zUH)sz|J5V>lk^gWJmbTz_$PcjYy0RNYnzL;#SR~cTmkDT*q_8mqu)qW{fxcR9lN~m z)h@hFr4WyH*}vuU)IRp)O@o*I*XODI?8*BayamNm``VLt1H2R4em=FoT|686$FD`7 z0^+ESz7E8XN`DE6ces91*)?U4Df>3a5%_CBihGC$@gFGtF0dQ=Rp3G3XFyuVQ~uLH zyi4>RAkOO44$hQ#8$gPC0K}(P{~3t4l)elE_2@T1T8Hj{@Dm`_;VA#RK$NJDDEnz; zKMBNFLGM%gHqM6Dy$eKM{W=gX{YxN3e;*I3$C4`3CxNv7Adu=APVE~H-x>2w~= z`Cbd@Z-(^mLi!gW{o{~M--_n^Oql6-Hf4$W>w$?`JD0*g7h&0U&KA~O#$h6p7kHbP zRz6P=AWKs+o|!IKm?s^9zhjBQY%tB5Gnfll~wk s=^Xwn;XjjwXUcNS3yIbQsY2X_2}>1b6LH6qxlG>@Kzw>SXJU)&KV7^-b^rhX diff --git a/objs/builtin/ft_cnt_args.o b/objs/builtin/ft_cnt_args.o deleted file mode 100644 index 8ed69ebd551cee8a96f9d7712945fb16907dffed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 672 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 ZCX1ymTPOKN)tMEl;GQiOz@1pw&p#p<8%+QJ diff --git a/objs/builtin/ft_export_check.o b/objs/builtin/ft_export_check.o deleted file mode 100644 index 91d3ab98941246304b1168bac802981f8c64cc62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2300 zcmbVNPly{;7=KgOZEV-h3SC@9=vb5%O0*Rz>(W4KJ1~L^QoG>6_3bp7Y=&khaWbik z5L}t0Y&ul;py1J)J?hPa#K;!cn|KuuVRwrOM98t*UAz9id2iAr?t=A^?|tw4JHPLH zUuJ%N@Yln`j44krY@iWP><~5$g!LR~g$xI*$tQ*3G{s;=GIBB^%14WH&sy@tS;$xQ z_pUyYqtgNb!J>Q=n?#Z$q!?k##G=J{s_414vmh0m59W*VoRjv?CC(^b!i_}WOXU{} zX3FCw=Of!mbN=?_o)L$yB(ATevVnZ0S_M9tdLSj|R+eX6bI}q3!}z9TW12GG{HVw$ zMRt_2Y;-368fX#}UWIyuje=;=LrMQVa3F?dV~l+PPUm+({flrC;ZcvhW{uiCqgL*& z>m7`$y1@He_v56vL5nn+o-Bd zr*jP>m_a9ITWbCFXZ(k3Mc-5_&%z=*1bx_#r26I0$(7RPEq(KjqE_h|+Q+a3dMoTo ztNk6iG8Cj%&&W){Ow0dCF;c&&^|5h(J2437cghArNntHLRGl8GjR9296RLznwQ)<| z=%KnPA4%8SyUeGc4D_uK>Q;35k#(Q@M-!hP$a5hkJBe|j$@R-yiuzf9PX}k@4KX7$ zJ(v;0zpKryWnNKFRG?rivr6-lTq*CUb$!Rb&j-f={{L#YCiWJMk&JLySgHZuP)c--6l*5O6z@#_`+8XQsP;af;xPdrkjCg!<(s3Z!m9 z-3)aSNSpqpPrHE?UM`-R)||Yjnc59AXQwqg zZ8@Huu`O4;1CW@#Pn&!_h@;r&rErkFA?d;u1J&jc?;w7~A+VINCEhFL_dOO>(f%P8XqKi~9e8l;^=|6+xjrlo&fNWht^Z zr5xSwCy*&;w65ULFIR_T`seoBuMf#5hh)Z6Su1s&Th0x}Gx*9D(xzvT$i<*DUU2gZ z_+WC&b@MK?wig8za;0K)E;(t-y=J;$7Q1NXoYG=svpy`DIZ9+ZUM5mH^bN+R*rMIz L6jI2VfXDs;q+jl+ diff --git a/objs/builtin/ft_export_print.o b/objs/builtin/ft_export_print.o deleted file mode 100644 index e8e8056ad002c274d5c099b39e0ae5ffe99753ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2696 zcmb7GU1(cX96y=0i~Hz}vTBD)!*H^fE2|FNLxY{}$`K5xEHXs7rZ=~1Fm2MCTn&T3 z^tR&NrP2o#d@G7jeCm_F%u%~yt1oTe`cNfECka!SGfJ4#`1_xGZob+*c*x1`{6EkC zE4g?5_HY00XDoCN!xwfBc6cAYqS#nRu|FWeUDo`)zTgDeURs);gi?{*rFB60oIF6i!LSp2I5eFOZTB>K-jaFuxXJFZHkv-^(}Gu zA1lG#>)iSEBzH^oRjo#r+|%mZ8;NjN+w#xFNQDH>QivP%tB8mR8VY6Zl(v{M{giJ9 z{o;Tx^WtT0Bx>C4*@P1aM#ALKvunVXJ#-30H zr|EvC46;4qUDb9-=#+Mt^6}EC#zIJ$p>k9=@dY837OCMn+^5yOc+L4XLHDMNFAo^;tw;Jt|Y+qAtqdS+-X_nrS%0Ysl=Y zjyQ(bM1(`%yV^GQ68`1h@GU-TSNLo~c4Id76RNi8x7jIeqoOf#mV* zORf4~!1fYlh!)#K4+Nsw*k>(vd&B*UJ*|czbG2IaX-aih`$vL&F`Qyvq1D;cR!9AC zFv_x{BJb*YP(pXrZ=JIeX&mq? zm#aU*d6V*6i&BI(xw|edL(MUzDCWa38~O|RBf6mGUL2Q&sx1+Ds$l$r8544{@of5O zZTslOIYiWKjQ%x(bn%NCP3Fg0$}}=b%Z#eUXp|k#$BrF4 zAmDgj9J>BYK8FV^G_P|lO7fsD*(G0+oS%KYUGhcx1H*dNhh6fBd~RI7i~NYsXQ7L) zuuw4)iX7S>o`aXiz^CU+^luuGMnlHW*qOe_`}>|d96UBi4?iQeAoXM(d+KGNH+RSP zC-d1;?<44)|Hs#pdF`oph5Si9ncptG8^|9mReu4ZRQ*?gXsY^!#2JZcAX=v0ff904 zZ%Di>@m+~U;92c=W3$fMMVzAoP0QlsFtfia9bb;w(1wC(%;spsu%QW?rZj2`_Jx7cj-kJ)~%Vn*Cp0!dYDM7zrrR-dA zoHQny=ZrbYU~d|4>E@K3%rHG=zMW2)0VN!c3Cm2rkWXJUyDpisvjy<-bm6EyI+_7N NVF?o>naN}g_8+pMZE*kq diff --git a/objs/builtin/ft_join_cmd.o b/objs/builtin/ft_join_cmd.o deleted file mode 100644 index f560b386699b30ffba38cf47b0c68c2094e59a81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2152 zcmb7EPiP!f7=PQubX(iZDiNy)Sy1s%R-z#G(8HGW!4q65(tsYyb2~dRX*QE3-K}e3 zAv#&8SDebx0O3|*$n)}hTTaxna^NEh=858HG5oVsywZw>r zBf$|(^jAt}N>0ufXPtz9yuMWvFEmcynRtd}Pck-@oQb{;JOxx^v5vDLAOR&M`6&#C z`dS5D0);=j03@Kk3CWjgr8)jzm=OLS!fR)R--t!fh&L&K&)WfSdv{a9?k=YxP*UOZ zPi5BmYaYU;pR}s|0J;MOTKJSVE=-tm=x;JT!V)7MbqW-d3?=3@VR7y=sjv!kIB^RPSeRH!U8MLV4ST z&cfL=Hg&E?Vl9uPy{)XZ_{=`xF{^nD!hpwWRq^i5qFZWDF;Xv?`!JU5NB9$)yZ2D} zt+n_D!mt((i3EJjU-4FU{KA??*X9aj5h+k(EbKyPEuYmlh1AVqdC7QGY9j zIZPiK{fpXjpMS=@I}+Ksa0j!DNaH>?>J1_Q;t0&9k-Iy;eMvig2cbde5SrYF`w67@6^0lcU!%%RoD9VO_R&`MTjj(n2UF| zjYC#&sHN8anhv7cx}O&m=S!u}il8n1gwiphHDfa_LQg@nyDDWWL0R}x_V1v+#5R_; z0z^ICfldn7vL2mu{-=FUjlQelo~=H)+33K8A4rV{$vbYk%Z=2?P1SIaQswy^)0fMe ze?#Lzs>apGSlggIdarxj5 zH&O4uSr{Yv@d&9wti4*Z+4k(97BsGd^me`@t`yl`7haejgRr95Nq=;S^cV2 zotv3`g)E-^40LxtpUC_-x_+X%HFe`SzXi)1DE95V2I8&ep8`?tM1lbjYjm{4ZvpX? z&N7hemc+l1qXXdj(s^J7hLN){CMaDk@GAvAU*KFjSx>qXwHx@q+K-}kr2T#vvoCDL Y0pVl&KF(NodUev+C>EOWeB0>t2j;_`R{#J2 diff --git a/objs/builtin/ft_unset.o b/objs/builtin/ft_unset.o deleted file mode 100644 index 60e8469f94e923552b1e51286a1aec5f5ec37e54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1300 zcmb7D&ubGw6rR-BMy+NK3K0|ndJthR;zll?9^1{di8Q-mvZ+xh2BPA! z6ms~fZ7?7Ae#ByDIF=P1 zhE#~$W}s@`vJMa(--BX-PSCnKX>=SJ3xX)qEw*m(rgTB2C4iTR02QxGjHHOhQ?BD98D-_?~*e z*Ff}($IwyXT2_9SlS!bVTeH{$t` z1)fsD4!4q$gW6~g%gq!pWY6xl3nKq!n&+5~3^i-|~mg|ULfo|{PS3xwt5HlByw-fizPwGCdn}rsWvZ0>yU)?5Z zazdD&fOx}8AAtB|%=f@7um!|ea|MWR-Yf%AXWj&2mU$J3cQ=bb)Wzc&`CalbQhA{L zjt;oMk#ua2`u(m}rJNUn8p>bBzlfw#z9QMK1%j6N zPui4;<$3{XmzxMHDXBtk)lt+4l%Q6l;si1#toW_P6&dG}2};)eRhcx!jL-a Gef|L_S<2!7 diff --git a/objs/builtin/ft_update_env_cd.o b/objs/builtin/ft_update_env_cd.o deleted file mode 100644 index 430ce8f372567701e7b57733e2f16bc7628e9d43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1256 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 diff --git a/objs/execute/execve.o b/objs/execute/execve.o deleted file mode 100644 index 3021b3d82f0950c1f9adaf0ee7b93c9b76c16cf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2400 zcmb7GO>7%Q6rL?^>e4oAej)`_DF$(fgtjtBMJW*EKwV7*mPl0#F4bhSUdO9!>}YLM zQ^``Kbr8$Ss7P?)j^M(bBGE!BLQgH+sDxAwNRDtNAF3++hVSjpI`$e4JZ0va_cL$4 znfEry&EN0-eTXsT0fq@9fss6bDUAVn4C7sL{D;iZ2FNV!fkZlTG8)p&gs7X%Iz@yc z#QEHt=Ob+&vqS_!`DpLb1Y?hrA;C5XA`!x<)g7y{A`S6;QJ#a+Uyc@1mvp0a;Ad3V z)^(#U8kLJyr6|N}rw2|fxa74YjqAuqrVK7AT_Y)lFw3Ik=xb)UA&GIk>xux=F>|d5I0-!$FVYuww;^@lRgaxd4Fmq0}Bj-TsuKacyJ&G?Jc?l;P*TWaTt zfC@cVqw5#?e*Ru?JH)!z6ff7``F3w_4_WR6TfGH5WAv`>_4I|U(g}5@O{X$-W`qy- z8hx+O^YUFk*Q2-R{#%(B&P=PFSA!#o4C6+=$E_Q|+bZAjg9&nZ+W`f4m#H24s^~=C zIVsQ`SJKeGpf(9Yf~S$y$RpojZWNI3hcMswo&wV2X7|*dy7@eExUDW8`XQ`PSZcm7 z>ClZojMI1LQ1%vO^G{-CSE-dHyU;*=O_hi!2esH4UmD`T&E9>^vIep?1%rPTACc%>rB4t8Hqkcy1mPb6KyI;T#BE zA412CNYG}mxS@5-zacHxLLBoGPZH(QIi@sIO6usL`46T3p469sN%$9m_?cS3gjd#Hl=^+#4TaNsK#KbbNO3oSDs&6@Fz^fzqWz2s zer*eQ1o#mU6g4UiWC``wxI>KyPbtW$AR$Uln%Px}JFl#ll#-yRFSBkdjkZKyMV!2`2b*sWe z&04AGHWQ_)v&ux-bj)Ja5G7k*VaRG4jk<|F)kdW*)~$7{ZL6{>mxf)fnQ|TSSk{r- kG4&#%5L>JYW34zyG^*6_?}u%Mwi0;jwp}$sA`uVv4_4pKW&i*H diff --git a/objs/execute/execve_utils.o b/objs/execute/execve_utils.o deleted file mode 100644 index fd9d0f049ede85e1456c9b6c2653e0189ab36ef0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1776 zcmb7ETWb?R6rQxPjhA*KR8Ud64_+TqqEM)yklF^eVnIvAyp(CW*))r35;lo$g+O5& zH3XsH9}s==C+LG9E!a2x0Y2nKXeB}(M2ghL@9fUhByAB7oH_HI%Qt7vZ1U;X_nltG zeBBHS)DI1GVNs!wQ_yD=I6%Tw2)RTx5Q)LbNQsYx^MYX)yuF8~qp|6~Sne(h9^#|g z*dfOHDd=ZQWTbGe=L?pZnHLVu+xaBVfQa9fjR-7`k#y)!&o1QRdVv=+kIYPh^V{RQ zL2M$TU{*L&;G?Urqdzf%HcHNo6i-_51;Z=o?C+(>UJ-ojf=@tpl(CfDlf4Q(33Z=B zIl_9NBt%308u~a4o9kh02^RJ24zyLMPg11(x7^bzUp1$$YL!w$t45&_6&ipBwMw+6 zIi(s?mTBAw*SxSD*r0M+nTec&a5Vfl)+{4FlCU5`vkB2#ErJlGBgsd+CjG^XRE1{ zPa_k=TiWyCi|FeejrT1zD7tPh(W;Z6moTpuTnlQJ&qlaEH^wKy==Iu`JE5G ziss*hlevpGA{!5mXUjC3P2mW-ju~>eZQqP1)TEg<)P#}OEi+fhTErn`)!Wd7+T^o9 zuROaaz9c+v4v5R&x$p55^VvaP@K|qP1vTf8e+C-)jSeB=e8xumgHO7~`s8nc^2VVX zB2V%eLUW?WAh`U7qm3DYw4g2Z!0GhHwIaXcygQS7%==nYG;fV$y{w@gQVva-kkYHkrEqb@%k|&=+4_C8%%;As zrzM>v$}P2Z4eMDzT{BP67{I|F<^4_cF$V5}r@^>S_kd#XS%!Ll(KtfBAd;^l{%$AH zKqRfMNFAVJ0}};gI&nI2G$3 zIL|jz2f9*Ljka_2P9jDye30GG34!{4(zbnX+*949J01CN5MV2r$U z6O7rGY%o5n$}(SsHVfTe(K>$*_g1h~UeuF^e12!qC+US@Bb2M5A2cD_KGs%H_k(4U VZoTo?1JyitSuXi?&Uq`#=@+x7s51Zn diff --git a/objs/execute/parent.o b/objs/execute/parent.o deleted file mode 100644 index 484742223947e21d228976bc7266cf2e09f86612..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1168 zcmb7D&ubG=5PqAsX{yy-#YzONIatUg5cN_OA*C*?ppeEEdXZ;HHqAnsgzSa}AvCa! zG%NuR9{g)+{Q(~R@fYYpFsP724#7j?H@k1+Cg8!3%$u1v-+VihY(D({bu!PGG{bPf zW?_*Kju;HM1Usa{Kk!o2;?x89IW!p==@B@$^oHfdUcRYrZ~o2wC?3$G-eU|#IuL4+ z^TBz}v}#6qM_h0|spsn~h@;IVKPG?0EVPN|~~H0R+^bM7adji~)b zy7f`+zCc0iHv29^l;fJSpgCJ$W|CSi6V;5*i$s$?-I3(>c~`3cdKg(5(Jdr9Ypagh zx4-P$!+rVSrblp7CLdgLNh;J*NxL!2#tIIR8HI=pYgq{VRF{LFIc=Tky=> z;A#89bQ=e=HA)0T@yNG;Ad~~ZGKqkca`IkoJ~PJ)N_EEz;zU?~kMj)tIo$vvKWA|v zn{+(2lzD$XGpp3uiIx(REzav(UTh*BEycq^aOkd(O1Wv3$|VGx4tF7C?mQce2yuJq%_W!c`Aez8`gh|-_jmgPhk%57OHghgb9vb;@6vjJJhVKAm~ zsTqo_yrn(66$o2J*y^p8YpIE7$Bbze>Sq0U4T@D0dDCtJi@Gr>ZktuuA(^HuZH!*L zlR6n0zD7nOb%X1P>U#X8U3vZVZ|KiW>Jg_VBG<-&q|vUCmb%#1KHJu=lD0e7qtI^J zd$d@mUjpVBg>Ua6n`mb?k>R-Dd`2jrO?!tdb&E@d80t2q>W)+IUiq>7Q+v1DAHi5> zRd2cZ@tAZbcVub2f-+PPEm-!)D|~!Gr}Q~zv# ze_wL{x!WWEQD1Y@Zg8SFoI=cO?@t1p!F@`^bPT#%rg*xt^{X_ry`VI;G`PgKp=(79*f1y?o=PyKJDEi5vH;>^N)kJm^;MktA<2w40TWrVm9fc`t?%|YVHvMxfRWl!G65C*P5;svqp zK+^iVMp{FVr2hlGz>Tr)LXzEgka%URuOZO`>jWgl9fl47}XzQfr!V7FzT77UwfU<=F!< gF6FhaP)^!)F7rI^CUZ`jK`Q6EIx6`pXJJtY*9)}XHwDl0z2C4*>w(ce94}$&F$Ld(4UrAOwMWwV&SY>J~oMC>`?Fw_e*uflyq zbVEsKQS#Ga(|IQ`+yNrrL_l3=NmBbx>VbclOv%C*seknq@)cRgmSth8Xapt2nb%%weP1k2J8MyR5f98!BHqwjkWkd9p==Pc4ndZp%Gxj?>uqOMZwgZYeQRw^x3qJD+JRaFj*aFKo}C8aTiCv;M3S=89GZuGmcNbSca^=Gz)wh@}}%R(2Y`K5jZ=VI>Q@m2asT10)@GqZJnHXVV7kBb@-1Dew z>=-_4rVwu&y8FxGaUXx=#lXw$TRiUP08iorgxZ5+K(yZ155%W$a192ggAvA2#y-ZU z=-Eke#t|U#os1u`HpQO<$)94p!Ttac)NUUmz_c#|-3Zv{OlLy2eXf4C0jBg}M7S=u z+U#p>HgTKzLM2m)1^h3la4MBZscLgE8h^l3Gs^S%jM8Rf Nv4kenTsAo@egh_!nG*m2 diff --git a/objs/init/init.o b/objs/init/init.o deleted file mode 100644 index 37cd140708df3a135f9d0e3d585be7c18851b0c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1796 zcmb7FO=uHA6rS|QrdmzF3K50o;Gq;EDoBe|NVS0hTPRwk7n!7+O&gjfAx&&36arhd zAqavVJb3e>7X?o}S)_$}Q%`!#MNmwk$0FGHz1=tYYkKg(+xP#?w=>zv=Rdm#JwmuT z1s>2YsJjCXKNNBnx=w{7#7BdWL7IW+7?^^T@JN)(n)$5bJMnaAX1X40?;Ed0cr+XA z7UDD&yF`JE7Nv}(Y$l$Zq;+4hKeOb)yZ4!|W5|5vRB}2c{S*OKY`UUva2m#XV_YsxPI zFX@KMRsFu$^4{W@*Cy1Q>&Hvr0A?dg^BAkkJ;$ZfZIUoY?;U%n?&r*nBkF0c^Y?ma zzMt`3E4PI!?{#_mdfZRZbpiSF(86E(IaI66Pl&No-bWobPwL+?^^HR}xQ}_Z?W6Bw z>cGKczHR%Sqc6{W`krZBcMBZ5gb2K2`x>?v@hez-n`a)w;?oSwaQ+VGhdJK~i+2d@ zVlA4ZQ=+*|SU2LgoPWdlXRx?e0~4^2z$hLxHw;U2=U{2QFf2g_+4|YS*m;UQXb8iS z3_&T@=X8x@s*zlUQeB_(EyM_G5{B0p)7{e;liwHzTVlE|8tX#EvMRBZO`6L>r8B8H zT&2p)WKtPr=HpqR%;W8dJ+ULUWA6GkfW5^_|4{RlWy_gz`U7n-n{S4oA-9V?(ZFT z6Dg+%1GEzw?ZBWxA(x@cJn;`nb1r09+5m%-SecJS2+uBfO}~jJjHeSV9C+{KUd+d9 z*D%C*vXd6r1R_Kt@8ukKN(O{D&KK~UmGj^DfNdhnJ&J&Db|z~jJTd1!cif~955|rr z;cUpd;xf1cKBkOCh$PoBN+ImDNad^;EsU3-ei`a% z>VmTHrX1H$M?VL;&@&jUr-zIoye3f2@8#fs%44(q%PiG2vs|p3tD|qhx5E@>WxQ^d z6|-X0&C&>|OIJ9!I=X~}n;U-0XWqMP)MP#qDas0G7DO3k4Timbg3(hyal~NPd6Nn{A`U5uYzHUQ<5}L`(Zx{DTr-p4(LyFP@m|iL0--cyh(qT}MA~ zk5uKGtQfV@hJwCT-!~eK*Y!oN-(ypSClZA&u;U<29cOl8Dan z5#%%SJvnI2IIT9ZM6HYg=_)TCky3~$vEJ_J8nT8EzY6{N2Sq|8KheGZ*vpRleRz(( zaNZd7`(ZOr?sFoqfgG&S_h5Tqf574<^)1*=*pIMik-iSw2m1;ZtB*Bj^&rl_8M?MoS;7!fK}i?*lmNvuc{rd zgs=$VyCKZ=wy%E@!bS)eLUtt=|X6%BUL&VDE*`_>^$$N>6Z2@>W+ZNK#;^*z9 PNaSoQnQ>ejshFj|@QD?g diff --git a/objs/lexer/expand.o b/objs/lexer/expand.o deleted file mode 100644 index 08c9ed9a522855dc0f0f3c467561b18423a70a54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2216 zcmb7FPiP!f7=Ke^y3sbXhg70ex&?(EoD%Cr!N68K@&s3QFVIOHzAmjwaKw^%ZjFj?`2;n*nSB@n= zXTE-}$K%nTDi7tO*zsY;9wOrqyGRg=5O&?I70YvKLWse9aUO(s&We-FDuT1gaHury- z;6d{a54<)HrlKI%;-MLZDgP@iNbwMs&}{Q?f`?O4L>2ryOkeyEgME$f?ly+GRxkMc zf7qYfZSMs?-Zgr%A0C*SgRN{z?`8{)KGAVEu?qB?i?}_auRNRTIDlheBf;r3SwhW^ zv_O0E8u!;Hrq}diS*G?U)7_uTldITo8621q_nQ$)9HJ7JC$Gk)ZEzHeYqtAqV)H)N zmZrA!#YgvW8cX?iMOMFZJ-g&>T{5?>YWgDX5ZlgmoSV^LR<3RE;QE(z1@`G_EbfU8 zQJv|wwX?GWj`r6x(`&OQ^Y-bS#hDBao@C|#TTja2V69zp4ji#m;_x-9;Bc6yDSx9SDzTFOz{ zLG?G3GxC{{^X#^yiuF9w^aq4=O6(CoCe2KH`z+HMX)S%|U}_mz9>e@m=*7RWBM?=e zvD2gJ_YORNIDWs8-x+A*AL*z1*we2BzwABfr~29D_Z#}f8^*W=)PX+%@jJ4D2ad}4 z42buLaSAvB+(NJ9_cM_Ez5$Y71&DW%@tU%~tn5z%@na1@3Nl;i^_@%TJG1=p30?C(JP zDElbEzew=o3I0ri&m=hY-=F_Vg3~9l-+nT|Urg{L2~M&7@k~@}l{tKegj1_kYQkw0 zT_$E-fv;!TwlKB}j{SzHxCN&c8}eQ?p1TfOSoMXSVw zQ+`v_9jj&+VpCpR@G7pu#GK=bGJO#7U3BoQIn|P7V<0tl~vOV`Uz0=EGdVll` zL;`y!w^@n><0t(PKL|w-qzH;gXrr`21hs-Wq>%ffaN|M&b-`knVpUWM_M`qu= zdB6AOy*FcUl-z?qc|0G-0TF@ae(;-H%ZsMFTnlW1>gM1|(%#ra}IQOfzfe zvwY6wQ~K#so3fmJbT^-oKe9a=VC*4UYGRYbB$=j_$)@AUb7H|XxBHWRM0o6moCv%K zSGq%dR%&!CVr9)-^7VK!YMLhpHk6orF5;RIixv2zn&tO0CRE#8nx-8yN79i|n;X=| zce- zmqQ{*#+~@yaIYixc@Yw1FE{Vb{YMf>w6RPA)Z~ zx(^=|k22EB)eqL!*Zn=PrJ@zO>-stt^wV}$;G>@-WZxXbjoVG%+`_H!o%owIEFg7^ zY?uc1eyD2eKpZ1FI^ClW@F>&9{W z9nOQq+15nzGcM3>BKZ_Jzl?H=c5LC7RMr)8z1ydCvU>HbjZXBwvw{$xz+Sa_DzS+Y zbCqm@1G|j=Z^X9Q1hu}!-hDT)dueDDnHVg$ z5j}Ar)NVU{BE(-g-=UuoD^GI1LtjC+5}jzE@5Sp!G~PhJpR1WN{ybCiK_%GQqFw~H z2kQqgN~=g0B;seRe_!yeJtx}4zfT`G09Lm5dY0WIdGKfzF~0uZw_^U<1h3h>Vs1ZeFjdr%ix5Y1}EH^}x4`?v8S`=XFX!6~lSa0aMx=tXdn zkAsulQE;-OTS#_o;P~kgq8C909|tE~4xDhq;Dj3#@`K<3$dlkOZ9Xe_Snw{v!F+ub zTmw+{VL`~GCkkPZzJkq&j$)83`+7*ovJc;Y4D|+OYUKB8j-dMyB6n zTk*^s$(o5wHWA5WnK_nDox^WL(@v*TY17Wfu?9VU*(R+B=2pzMUNuwMn4Olw`JA1} z##2cNOxT!mTxQI+;*o?DqvrWsDr*Cnw(;c{I~kQzIJKiG%XbvdrXqZji6q8i5%w>x CeW$em diff --git a/objs/lexer/lexer.o b/objs/lexer/lexer.o deleted file mode 100644 index b93bdd6019e0f74f45bf67e7d6b854078605addc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2644 zcmb7GO^91n6uzm`_C?#dsZ^2g+<#b$mQ(&>FlhOZ%nm~5PmgzmCR%dcvQ2i$j_L1AfRO;r$U6)zwxlu}$#}dWdSGA-vTF9sELaz?GDQZYupdDQZDCwTeI0jATu{K^2+bG-c2 z0MiLxd0d&0n2*H#nTFog4+8?mc;!`?PTo?*=ng?_OMGz6Qh~I`+uzgqR}*(M;@kkl z=-}+aywa|_SqkN-YrG>0uRm{0vL-!*cVqnA^*Mfgim@T}uY0FLyuvBKPtsVQHz#yQcr8@nMZGMXPMN$> zho4of*8<>ZCoLq|-g!SHwE;ThY8$O@Nz*2u4YQ+HO2h1EnDfKzCwMtN%s$4;(P4J% zw%w2ePFB4)F4#*c;IwH&OH`X4GV^RjTkf+*%-dewY4cj{0WdG~tpV{zjdN(_Efy+9 zLXkrUtqu5&Vg6~1ja_&fZ~AYIXYzfZ z-xc^B`$zkkyzled9AOO26#EMMLlee60>@Nr5j+e&50272_Byx)eH#k-|AoCljMc&M zi_u z!Xc>Rw9$j}J7e_V<2wPJ!#|*pA#|zgqui~3(q~`m)1U3r=@r`@Pja_T`|j3H_UTL( za`SFh+OxAVlU^z?xtPyg#QzNG=JUC{bc<=s%@rj69c3LGvhq)_xOpZsZjo3vmtU|m u(n;A+E@bTNypf%h>-5SQd#RvZf`y&DYZqKBk$3Ub5pH&tVdX^|9P}Sb6Jam_ diff --git a/objs/lexer/lexer_utils.o b/objs/lexer/lexer_utils.o deleted file mode 100644 index d153d6cefbeb72dc9143be3adb4094b159a5f10d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1228 zcma)6O-vI}5S~RWtpcwHjQ?>D9z4j!69*4V?8Y^b#283=A!AnFhNCxchEt=#h$p>z^kUM6n)KKJq0V&YK^tsz(s^&bnQ!KO`*zds`@fF{0JJlJ z3wl5LHU&C5+GX@H!ac0i7Z-joM`4@^0hf62Z_h0I@NMVAnh(r8RnG7~=|&c{sf@D{ce?faY1@S|jx8 zR%A9Td!jBXBT0W>H$G^_rne`8i%9FPr3~@r3l(3Pd+#){aTXc1VO%1!?tj!mvtE1O zYPGtXKm->~OPq zZlk%q3<}Oy5kx3HsIQd~>Kxk`h_c7F5249ef)o1K)!F*{&N=tywrTwH=7Dp+^Zh;F z_nqIl_x`f;`|eT3e2*|ZF#9n5NAL(@VmyOcB}I>6z?sG=^1*O;64Ru3G&nD&%0;=B z{5k#Ya~z={hX( zOXe=-6UibkWiMs2Q=GpMb(L7$Qh~ly!Y#z3o^2yPrP>#g^HiEo7ZMj!(&1o!>3%7% zOTw1?GM-}DF=^1IBoBf`D(rjEc~JPXH!*2Yo;1mpa;3ih z*AX|YyM}o`XjpUGhE>`!ta!_?^_J~7fAm>?EVm6CqU4iWZ7^Uyn9wRi*aPw{!)7GBUDnG^e?O$cC53-nPGExqN+Evg=e9ZyT`Em zfL0svn>#G5eSRZcEj1SP#xjCZ)$Nyrr6+@U%Z@e0?&h{*bV7!6>S{0S?d{35Q8Nk@ z=7xDa_})*`r?t@qm@}r0GEaZdn^Mb)H>32#+zF0%&=CQYrMQ$)iuqIbqf7o4K*r{(4=P&BR`PZ%3hB>!^u&=>So@=b` zovmve47rPzS~@kQ17ztnLbtU8 zWP%bpg}XvP9;@o>E|8(}G|>U_`l7z>qT(dZsjIEyTIGFDyX|4~n$Jkymf%7W5x2SU z1yuf_zxIHF4vIr0E6_d*^!2J>ysEEhmC>I2PpJF2wy3YUWjrs;={}awqN@JJ{)Xyl%%fM7KMZ^nwv*Azw)CE4$+2!bwJ#SHipwG-#uLhi4q!xTg>o&*&jt z9|x>oVEz9>|8ZpGz11%I&nITn(Cr(?sM+ds;#CBtoZXQ^#d$2$SFYAWzpC_ul6Lw3 zsy;sVd-#v2t$ZK9#eC&}FEDu2zl11sB+p@%9{>y(Du2czLxE3@oP9!lPK8|*cKID? zr|LM=ZU%Oz{*ZR6o{sUzgo75RJEO=qpgP=s10vkbCGF z`r-%u3>5NE1{A8$J-pILf091npx;1A{$GQV|EGA6{tkLX@}EIT{v9aE2S6$A8l15V zy(_}7(7fdPKTtHRXi!lQvhRN#bO;Lv7pE0Zo6vX#ll0EHX25IUSC#%9#e;}(2~Viq zL7?^WwD$5R4)BcU3%LvUui~jfAy?q3a;C`mbdlq4Fq=$Z{ZT1bOz~1NGc(KhEKjCW q$q(^N6d0e{$4%33UKW3)(gnu&ot#NI+*Gb~zQd);`9yY#vA+PEB)Oyj diff --git a/objs/lexer/tokenizer.o b/objs/lexer/tokenizer.o deleted file mode 100644 index 6469f12bd3cec5d3254a929f558b59479433f390..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2212 zcmb7F&ube;6n;t-XOpH~wWN^H6pK=5LfBw(i4RGTsSN{-Nok_ui~!^8zcIZ14*i}iA74c68MGE6%!c7i*Ybq$p~!DZM4R=;xL_Jz$vM6NC4M!Rr`2QjX7o2gZMi65zTZ(L?W7P33vary^*x0!tPDG&J9DdgJe@p)c#vX2FmS?Lst0mOS}GsN&!`& zO^7IqakH%!4{YBaG45--&L>lknG_KSMOicELN5_h({r7%Z+$)@bqxzUCZLi+AmeUH=xt29nVy z;iH6b|B1=h4f#$pljIJfv=v$5!$iYsbGPAh3g?L0{|kl14nXOp>Z^QX=9m zRJT+vT-yfxiGJxUHa(%H4tWxT^=n+9`07q9p0vkrAx>nE>wbjWslT{g8+>D8R$Z{_ z_K`03QaF#zOp5C2;i}cgu=^#PdYqcyT*y_H5beovb&>UT z?gjBOq2u&a2aPvSVZJi=N8}%vd~HOYk2y=?#`lz1O(jwX_gU+hjaS3FlA(D|;d{BC$Z=q? z#LsM43;qG)KSz-BZCK9#iw6#%^Sg=vX5t|%mg@wtSd%kn@)u41EG%x9Gp={uc>yvA zId@_4#dUnxBK8ylMKpNy^_r3^Rif|1SD7d@)i8br04r(UwW$r z#B`1C8q^EyhopSQ-x?zvQ8LcO?CZOrq~H*&N9<8p*x>aK!nvKgm$0Iw8{sLz%4A zW!f0ZL0lKrw=0+@_io$*WOK*dINvpxU>+ac_;5O%{t=s>G(JG>iPLLwzcGF8`bbPx zh%-7YyW)+OXGz%6L8nR_GFPS@9@~!R3vye^ f-J)&fYzgXlO(@06jY5^rBAi?nLJJQ?;hp>jyYri2 diff --git a/objs/parser/parser.o b/objs/parser/parser.o deleted file mode 100644 index 09b55135c73b78758a7e6d8dabba74536bae5f55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1660 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 Z6!Hcbl*mJif;s3DkT5_ diff --git a/objs/redirect/heredoc_parser.o b/objs/redirect/heredoc_parser.o deleted file mode 100644 index 454e9c2c43d6883d969e6157d918383daa95adcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3028 zcmb7GZ)hAv6rZaxz0@RomR92*NQ4R%yHab#R2#iuRtNDQ)}|DpuIFXboTPW>=GF%B zFtCYaI|d3W_y?r)Ls9xo5JHvo+J?4%5F?0*ig3sk?n;Cx{Sc!z{@%{)<#M@v@Nu)h zdGr3voA=)A-gnEt-`vbt=oW?tMgvB86CNEHpt~?8NU#BoG)lovvH=A=d@>s3kH|E$ z)<{;)C4bO3d~lTyX4jPg`J?HnFk=spuz`&d1Z0|t;jEoZ9aRgaxz=Ccr$x!PQZQAd z!mX^pU;0=kp2(U`>Uc8MZ<^2dRD_r;sklz5#SZwRoRyjwyH&2OacP>?pgCa2k6BV! z8{db@s365Guly;N-Nx8pFeluD(T3rdLfgU`F^FhWT91H@5W;W<2w=S!L=-v=vZZZF z_J665d)K(T5anKOiF?kX*SEkYyJq3GM6S4J6u6r!Fm3EGu_Cv~g;U_dScJtq_pZQb zR;mi{!kOjXMW1(z1T)iDs8Q4+DDdm-e-iahcC z=>7;!^{&6WQR0bMQJdZtc9(Z(;|J8DREMrM-5hcMdP*C=+m|3!!kOojeMK3pXUv!B zLQ%Ysln^kau_|eYl=?x?Ry=f-dza5q_s&qCTb zU7YeG6uaNQ743Qzq98@Yy%_Q$450&Xxr*V>e9wqArM9pMfHqg`6oYRlwm|5 zwJSG_hp;m;DGsy+Yk%<2pNKHey}8wf7T|?5Rf&)?*0}D#cVJ%`p&yz%gIn-q2V+~< ztMTDMwu4qBeIbD^;u^{;ZiketlP{{3x24`Xd4^u#pq35nN9iL2dTj&wHYsMIHxIDT zNF)?#-W)y&T?+kP48DwHf>ivBb+<;|+4OXa`fU4pJ}A40yW@yAVk~0RQwqr>AOI(e_6`)C=fsWH{^u&{S`=dp94YqdwAd#qzfSV zcYx$)P~jmU-mLmFioXYlTcuNnlb=x_{5QU$FsiUaA;6dK0=7aiPYa+IF^CWP_^jfC zzWrG7L7(0SUW0x>E+$nh%hd4HE7kI^YWV#%yj8<*ui>Aq;mLQk{}VO*TQxj0Gj{qY z{!1i;`XowUaIvwnP8eq9K$?N zd)={yv&nQSkPcaxTB$e8VJmJY29;}OCWg|(7Bg)t-anK~VK!h}cm{54D>D>NR4rH| OnRu$-_nOS6^E=U=JT(gn_(dW zdjx*qLHH|LMBuPv@M(&7u^1J?zA(p+(NmD~wot0pue0{wUo`tII;Gjc>H9j$7+^(&@_eG#fRW z$NgsX06L$DbgKpzqjZgQpniM&_=evN*s{Lr#+W09InJ6V8^jm?J`c|73<_A(wt$tr zxB{PZJiaXg)rr8wfv~ZJ8k&dRNa8mx2aKOD#MSYMCnGasm`oe-X5p*MV;z6x z<-jX$di_|>5br!rJ19hS3W!fKdIE@VFG_C#&y0S8Ho_c`cu64f?gEK7!~2IhAL95K zo{eRczHwMIfgjq6FamUZ6gZ9z|6H-uv44)I5u21`vw%IJxI7Tw8i=O{Vxdw6Rj8DU tm9i>1scgxy%Q~0M_owWPV?XGj6pBt>C_7hp=m7L)I-A2fRVm_6?+@!?ISK#( diff --git a/objs/signal/signal.o b/objs/signal/signal.o deleted file mode 100644 index 66ff5dd80389879014dd0975ef85189e57fd29df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1856 zcmah~O-LI-6rNbC*1yf6mX`h~rGJ;SDp+hmu-L#JDil%hBIBBDlEux&?rv%<2$sa+ z8bUqv;JLk6@Zix?4JcK5X^%Y>dJsI+TMJTJ)9>w0bd5?M&V2LD``+6(Z+7G7-@E&@ zj0MgxOc>P|byb+!FkqK3=E!l16-f)bBe2YolhL4jWSrY-#`e}89}Eu<9`f>POgxM7 zQS1(;3*@Y3GX!PhJYw0VX2it?=STCE^V}5vc{-raM7ak$$d^h^C=r{djY-Xja{lD; zffI{z4`#&X3i46P#j^)zJd%=gHNj)1l2pBb%KF?M!?h~%wd0)r5*rvx2$u_;m@i_u z?UCwP4F(xKl=fFqM>BA-hOs3e;@MLSzu^&XPrXRL=l|;=+1Zw}KSt#|9>kcOXR;IC zbEcQG)5`%VcbWDIJ>4j;qqswgHLBDJFS(?nBp1>v?lQYql4hv_SKxVza=w2{e))Z^ zR4U0%|CY1qe3T1AhXFZy4Lgd?rd;Tvkkc~xs>}E9$q%-qS@eU+*^SYWbvH!kFV5)&#qLV2Irt9quh9jeYTEPk zbju&8In+SkBL-8cwxnWAwJByiom36ms%IHnHIt#vuKSUco-yzJA@j7@*Z~h|4 zJrCX2#qalCAjWQ;;%^rb^uEE4#h>@~S>VM03uJ~U)&)~)W_JP z=HRQUz9zZ`GSZ>_Y-Zoni8@cz>Cnvyov8Oj-5cl@gih3bOgD@g(Y{bvU@s7VSFdA2 zZJ`z*ey>8!KwMeNFXTK2z6-1aZUf2x4M_eCU^V!AAijv6w?NAC8rTG!2a@hNun~M% z_`^Vao1uq-hk%rq&PRIsZYkd=kV@+n*d`F*?)L#D2#AnLG_Wq;|CHe5BcooDzkI&~ z;3AaVjC$zjw=4Lw3ZARr6zh+VR`Bi$PUrUPuT^lyO`V%+RI?^@Ws32HVnlV7TUuN* zY{u=lYU2}OT+L`iBbI6_wr$c9E^ir0XnIsc!o#^`E0J*?NsRNDqUnsX8H$IDPvF0a g9b;TGG@Fkpmg<&}GPt2ma$PgP{TbqE#l#{10XIY;hyVZp diff --git a/objs/utils/env.o b/objs/utils/env.o deleted file mode 100644 index 535da9b8a9a9f2e89a03be1ddd8bd78a3df687e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2216 zcmah~PiP!f7=K%1vaM}r!B*BkXcVoA#hgPYxT|I`>* zSedkB7=k_MRqRdhpvNLoEGeXifU5^tVGnz#xC0i}+friJ-}l~|O)`o2!8hOg{{MS3 z^Yi_C4<;B(JjCz-jscU0@R$Sw9tWULIRK`}2N3ay$q2QY2~l&GYhO+- z7b9+mK1+oFC?5H)jWd=a!5C{2i9iUaTB|G;Kh%PFyeJObCA{^pK4_xL9SISyv{bg8 zny42)Su8FH@y_{?5{D^WS5pfwARdX5Xj1pMC!`Q=UgRqFlB*oz^?jq`-O%w`I-X|P zBaG#vGtpOoX`oz%afFQn2`DMar%=an&}5RauR-C@E&z7})k&y4cWeItJjeY%xc66z z`;7q)EMNv_tIxegpBbyOhyZb)2g~UmMe_y;+)N zeV}62Sj8$?cuHz@R+Q308H4b-9Utnw6_%*?s5ri94PZc%9AF?B3?w#>$!H$%!LaMS zJuP?9S{Eh1j2LHrjZC6}MB1a!Zd%)vD14h9bV5q#&%*g+#06MSkj3=RrNT$|3cEZw z3_0|Tt_+WOH2c8XM%|P18`t#yre(eAVx;r}FzH77W)kM{%8pSMJ%jK%m`$sL`CveF zv*d;A1y;xVDdAh4H>|d?PG1ygd(dKu*)EpY;r`e!vK=Se;oi(0^fUuA*(SXGTi&gq zpY70^SM?2rA8dn}JF=qiH_92+q3)PWK`ZNpE2^R{EfjfZQ`7SsFI0~(dJ8n<6qT=Q zBqLhZ%!JbH(>Jx`J7u>|KTR(@;BQ6t=}#y*ORT)h63eMX>gYuB8myj&{3+nsZ5rrs zsOw|w-0{@aLvJ37zLR8k9@x}&y3Pab3b4!nqvGj$548INc71K9>)vPALtl7r%=bW1 zi)n%4ikMG=;?rjSh#qh>ztYqOCHvPk{S!HGvCZ3{_`aFng5n!!UI&HW$u-c!;OWBS znwiui$xnlhfxiTbP~#a*Cp86;as$+WK?HTpNBf%7e6(LOCHrV!9Q-bK_IZr|GRA)v z;}>K6i!q+A-tPEM#P~BY-j4B1xW&t&RuXolVt=Z*GXAeMCUP}_Uv1H`N9Tolc}Ki7 zIv3m`6HeZBJ`(Q7b-SRVR9(B`po8Q1)v!88qKYeOLrNEMd7 z*<$eZ`RdGCGm%_RBs>*v9=5Y`ES z1)hTMQj&$kF2HkyC)m!EE_~r0gTX1tiI+^upxg>{uJN+_X!##DS(SN+kF<2Ks3TIM zV|pk`SzKRh_{BhO)Hkd3l9YFslJy4jba>N)5Yo~EA3kKPTmvb~tFrRUUn?8@zrG>! z?dr1l$b1aNX(3ikPVokO4z9-RQz8u~qeE%`4Md!z4J>&C%!_;Qq>)Z?J~~-CHh<`a z-@Wb+=N%2dy^5tzGhXNpy>5Fb>=&~H_uZJb2N?npYM~n=#$NY>v$9vYX3uX^UG$hQ z>xJ#u3pa=)7WOvDW(OQn!fifUXb^zJd;wl|AZC7(D>&&{t-@+vgMNpY^_YFrj{(8E;LfpXYgN>%OpB zj^)fuXL^{qjQvaS;cp0ru|6Rd&p0oqZqKH9j{271a|gPQbspJQLtlgYSnrX2uh6%{ zeXRRX-)r3h@Usy6kcQ diff --git a/objs/utils/list_clear.o b/objs/utils/list_clear.o deleted file mode 100644 index edd371a8801c50b74af9179874ab23aa195c9a18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1028 zcmah{K}#D^5T3*|hFY_);30xwD7|_q9(qi%fra)^N`!)hM~Ewy#wh8QEJ8rowh)$r zKf$BN9(zx~qXjP>y%Z8q$VCVqOuyMTFG(9p2j+eA&3td(?0b8DcXK~al$awd@D%(9 z2YEPb8UCF4KkP(mmx7j~C$V#1Hm!Xx@J(!Zsrarm;WoOJfcx<*0UA8uT#AkutZ7}{ z-#e&Oef_E4d|%(z`t?g&V;l-82>wi(Sx(RoA)A09T6?>Cr%~DSEdO&pdk4FwObUJM zw{dEL$d+QoGpspyd@asHO2gUsP|kms{a3)J;Mh-Z;M2xhcDdT=(tqPkxBbfvua(NkPp6_F(*rkKSkpe6@G!_hzc?-jxk=6H z!mcWJoK=!}@_)~>G2TsXyEwq81N3}ivI93NWRUK;QEOm(_gL4z7>!2pcbq|r`ND3# z+=)Z8d^0d}b;qKSXP&7qNj-7+mJ)$Vs7LdeW2pFzR^X@iI2b1ViC$#Y*W|`xTK2Jy ze?(W{h|f9tH;FNsRZ%v5y#7OwvhfAPSS22E`+>EY~i( zaxU>$`r=rC)$BuFK=Ej5J|@HqE^G>Ikt$MKLqevPhOG;xBQTlEy;NY_4%gA;Ga>$+2)|idTqDDB@5z8;dYMhr8#1c%%?Gu`C#1hM z@Ym+UG0M#?4bq<|8Xu|lYLwL4Al(a*I-;a_qc~rMNZ^RtzK@qUM74YZwS9__SM0>0 z%AqJ+^|_FVV)~``%JKESt?g|F`ug((s<-t^w85vuZm$E+QhGzB ze?1Za7oG#0-#5T%Kft;Q&>snaZ@@D$gSLGG)KT@N^zSMF=;0F)R44L^$XXuG8##vL zf5K8;$H&42$kc0bd0~w3g_&51-j{_<`DMq2xs%>#Y?I4unAM)UxG|k-XEJ$b?_$4& zU_URtQT;ZC%GJK#_HSooGp%h<$osk6JB&sCR+nxi5~+x|j%^!7$DVb@Z71SMCB#5x zFlpciqub~xB}D(|%ONzH9vm7?4~!)Z;m#NBZlfo`lXGg)6PRF2j0}yWlZIW+ms|uK z_rt@yGojfjyI@R%v@;u*Jl#eyU$h0!9eX_Q*f}>yLgk>6>QRPsYRw#u3O*l8S#vXF zsTxwzE?uVyjK&D0+ zKMjpfs)pAe*&jd?Z;kP%j8_>iGcGcoV0@nOFyrSKcQ8K6_z>e?u?g+>Gc@gYlkt~~ zKVtj=<09ic;}OO~jFXHz7&kF~gdSmf{Bvm9?-Ry17*h|){~F_07$+HbFm7c`H;ecW zP(^b diff --git a/objs/utils/tree.o b/objs/utils/tree.o deleted file mode 100644 index 2d8f9dd2127a596f75e0b7d9d27c9c74c0720776..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1560 zcmbtU&ubGw6n?2S4YhSw@DN4l9z1w35(LGQB-n*HSSZp!FJ%myjVYu*2pfz-AebsF zdnw|^@q4?oX-aKTeDLObzvj(1ZzuWs^T*)?QQ{n7 zfsRAB*f5}wE6{uFpCa?T5wfdlVjn$;Ri#Nv$8I=W8Htn&=Hf!^9btMbvbi5~xp6*1 zIIW{9LO*M5WxZ%QvcCFsd9@_v!`ab%+$Y`?fCzIDaX%t;QnX7-yCTcA;))&n$N9Zg z)mu@T)m(%Qa%sz*Ecd&TozVPO{ZaxhNgjeVa zcakHblTUG#vh|_u&h>?7_C@=%v9zPjv^b&8&+_@gt^00a4+jRMZSYND`Z#+EX2(3> z`X0Z99$RP?h;}1|(o3=H4>^uOZA-w%Ur_AxEI6zbi@5)NC9MA>{irht#& zcB08(O8$pvT)zLFjqvmE{aKzx5I)byjMkQNUPpK$Z>Y#=`E8Y7JZ1l7)j#q45hWUW zLZ6yQZDP-L#IHfcFHnUjenk0;`m3=A)BIau;ksGqJ5{H6{IRZzy7Xbx@2t8vsM}O^ ziuZ|r{FcUvGB1Gm-DkdG593uJK1}8@5UFHNp`j2E#`!60C}?p20yFdtHXsI+^V`b5 zseC{v_pz!}=<^IleUeViwq>zYlC|Y06=%e++U3}_s&=uaQdZ3_I<`clO!()sZLE&8 Kiq-0xMf4lA2tF79 diff --git a/objs/utils/utils.o b/objs/utils/utils.o deleted file mode 100644 index d0442f23069a0ba5cefb72ef2bd7782bebc7cc6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1780 zcmb7FO-K}B82;AQT>EjiNHD0}Aj8Xs6@ie^h%QahLWn{K<8xbQb!lCTTga{lH zSfD{@s0B+D3ONsbONpa|8X>*ZL&82d1u5~7NNE{G%e7s9H2!$>!1t_G-i!FCx3^V@ zGn5R9GJz*jrsga&lbhmzl+An|kGFr7=kof!aXlY=vorZ*%94fL%S>)k%7?>Vj&OtL zDs!*~KB8Q~e7r{!rIg0BOq-8hYWl*RH<)%ssPOewC$X(NV|DvMzg}63KKY!!7Ve&>4iWCw1oKA}zf-EK zCbc;I3L49Yg|9wd*IPrhuf48{bqA4kjY60VHj}t*764>H?-|fL*c;V7Mxz?vUT1ZbNP%yBeHrm=ipF0s}8z*)U^Zd$M zr12g#-ygant!uxQuCO&i`+D6J@odG^Gv_`pbcG}%F7Q+BIAV%O|IiP z53S3h?km^vyoc7kL*4sbcV7**65qZbFe7G&Ed%lX#Fp64GLAD2F}5@Q0vYvv1L6c? zpV(gp5>E+;S2y+o7z92C;<1el0Na7LfOy9{dpJG;Bx;Q@$_P;LXz zxKSa~mdwsssjQJSg|tk=kZkAi53tgLyPqag&!lN2C$pKHA!H_(FIe~r8?YynR?;=a EUz`pwy8r+H From b1aad9591ce69addab912ea256b260d0f99a1dcf Mon Sep 17 00:00:00 2001 From: eunwoo Date: Thu, 17 Aug 2023 13:37:30 +0900 Subject: [PATCH 44/57] =?UTF-8?q?libft=20=ED=95=A9=EC=B9=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Libft/Makefile | 89 ------------- Libft/srcs/ft_atoi.c | 31 ----- Libft/srcs/ft_bzero.c | 22 ---- Libft/srcs/ft_isascii.c | 18 --- Libft/srcs/ft_isprint.c | 18 --- Libft/srcs/ft_memchr.c | 29 ----- Libft/srcs/ft_memcmp.c | 30 ----- Libft/srcs/ft_memcpy.c | 27 ---- Libft/srcs/ft_memmove.c | 31 ----- Libft/srcs/ft_putchar_fd.c | 20 --- Libft/srcs/ft_putnbr_fd.c | 40 ------ Libft/srcs/ft_putstr_fd.c | 20 --- Libft/srcs/ft_strchr.c | 27 ---- Libft/srcs/ft_striteri.c | 23 ---- Libft/srcs/ft_strmapi.c | 31 ----- Libft/srcs/ft_strnstr.c | 38 ------ Libft/srcs/ft_strrchr.c | 31 ----- Libft/srcs/ft_strtrim.c | 55 -------- Libft/srcs/ft_tolower.c | 18 --- Libft/srcs/ft_toupper.c | 18 --- Libft/srcs/get_next_line.c | 138 --------------------- Libft/srcs/get_next_line_utils.c | 36 ------ Makefile | 52 ++++---- incs/builtin.h | 4 +- incs/execute.h | 5 +- {Libft/incs => incs}/libft.h | 38 +----- incs/minishell.h | 4 +- incs/utils.h | 2 +- {Libft/srcs => srcs/Libft}/ft_calloc.c | 4 +- {Libft/srcs => srcs/Libft}/ft_isalnum.c | 4 +- {Libft/srcs => srcs/Libft}/ft_isalpha.c | 0 {Libft/srcs => srcs/Libft}/ft_isdigit.c | 0 {Libft/srcs => srcs/Libft}/ft_itoa.c | 8 +- {Libft/srcs => srcs/Libft}/ft_memset.c | 4 +- {Libft/srcs => srcs/Libft}/ft_putendl_fd.c | 4 +- {Libft/srcs => srcs/Libft}/ft_split.c | 20 +-- {Libft/srcs => srcs/Libft}/ft_strdup.c | 8 +- {Libft/srcs => srcs/Libft}/ft_strjoin.c | 8 +- {Libft/srcs => srcs/Libft}/ft_strlcat.c | 4 +- {Libft/srcs => srcs/Libft}/ft_strlcpy.c | 4 +- {Libft/srcs => srcs/Libft}/ft_strlen.c | 4 +- {Libft/srcs => srcs/Libft}/ft_strncat.c | 6 +- {Libft/srcs => srcs/Libft}/ft_strncmp.c | 4 +- {Libft/srcs => srcs/Libft}/ft_substr.c | 6 +- srcs/builtin/ft_add_env_front.c | 9 +- srcs/builtin/ft_cd.c | 4 +- srcs/builtin/ft_env.c | 2 - srcs/builtin/ft_exit.c | 8 +- srcs/builtin/ft_export.c | 81 +++++------- srcs/builtin/ft_export_check.c | 38 +++--- srcs/builtin/ft_export_print.c | 6 +- srcs/builtin/ft_join_cmd.c | 4 +- srcs/builtin/ft_pwd.c | 6 +- srcs/builtin/ft_unset.c | 4 +- srcs/builtin/ft_update_env_export.c | 2 +- srcs/execute/child.c | 22 +++- srcs/execute/execve.c | 6 +- srcs/execute/pipe.c | 6 +- srcs/init/init.c | 4 +- srcs/input/get_input.c | 3 +- srcs/lexer/expand.c | 8 +- srcs/lexer/expand_check.c | 18 +-- srcs/lexer/lexer.c | 9 +- srcs/lexer/quote.c | 8 +- srcs/lexer/tokenizer.c | 10 +- srcs/minishell.c | 5 +- srcs/redirect/heredoc_parser.c | 12 +- srcs/utils/env.c | 4 +- srcs/utils/list.c | 4 +- srcs/utils/tree.c | 4 +- srcs/utils/utils.c | 2 +- 71 files changed, 187 insertions(+), 1085 deletions(-) delete mode 100644 Libft/Makefile delete mode 100644 Libft/srcs/ft_atoi.c delete mode 100644 Libft/srcs/ft_bzero.c delete mode 100644 Libft/srcs/ft_isascii.c delete mode 100644 Libft/srcs/ft_isprint.c delete mode 100644 Libft/srcs/ft_memchr.c delete mode 100644 Libft/srcs/ft_memcmp.c delete mode 100644 Libft/srcs/ft_memcpy.c delete mode 100644 Libft/srcs/ft_memmove.c delete mode 100644 Libft/srcs/ft_putchar_fd.c delete mode 100644 Libft/srcs/ft_putnbr_fd.c delete mode 100644 Libft/srcs/ft_putstr_fd.c delete mode 100644 Libft/srcs/ft_strchr.c delete mode 100644 Libft/srcs/ft_striteri.c delete mode 100644 Libft/srcs/ft_strmapi.c delete mode 100644 Libft/srcs/ft_strnstr.c delete mode 100644 Libft/srcs/ft_strrchr.c delete mode 100644 Libft/srcs/ft_strtrim.c delete mode 100644 Libft/srcs/ft_tolower.c delete mode 100644 Libft/srcs/ft_toupper.c delete mode 100644 Libft/srcs/get_next_line.c delete mode 100644 Libft/srcs/get_next_line_utils.c rename {Libft/incs => incs}/libft.h (58%) rename {Libft/srcs => srcs/Libft}/ft_calloc.c (91%) rename {Libft/srcs => srcs/Libft}/ft_isalnum.c (90%) rename {Libft/srcs => srcs/Libft}/ft_isalpha.c (100%) rename {Libft/srcs => srcs/Libft}/ft_isdigit.c (100%) rename {Libft/srcs => srcs/Libft}/ft_itoa.c (87%) rename {Libft/srcs => srcs/Libft}/ft_memset.c (91%) rename {Libft/srcs => srcs/Libft}/ft_putendl_fd.c (90%) rename {Libft/srcs => srcs/Libft}/ft_split.c (83%) rename {Libft/srcs => srcs/Libft}/ft_strdup.c (84%) rename {Libft/srcs => srcs/Libft}/ft_strjoin.c (83%) rename {Libft/srcs => srcs/Libft}/ft_strlcat.c (92%) rename {Libft/srcs => srcs/Libft}/ft_strlcpy.c (91%) rename {Libft/srcs => srcs/Libft}/ft_strlen.c (90%) rename {Libft/srcs => srcs/Libft}/ft_strncat.c (90%) rename {Libft/srcs => srcs/Libft}/ft_strncmp.c (92%) rename {Libft/srcs => srcs/Libft}/ft_substr.c (90%) diff --git a/Libft/Makefile b/Libft/Makefile deleted file mode 100644 index a4ec870..0000000 --- a/Libft/Makefile +++ /dev/null @@ -1,89 +0,0 @@ -# **************************************************************************** # -# # -# ::: :::::::: # -# Makefile :+: :+: :+: # -# +:+ +:+ +:+ # -# By: eunwolee +#+ +:+ +#+ # -# +#+#+#+#+#+ +#+ # -# Created: 2022/11/17 12:21:51 by eunwolee #+# #+# # -# Updated: 2023/08/14 07:52:20 by eunwolee ### ########.fr # -# # -# **************************************************************************** # - -NAME = libft.a - -INCS_DIR = incs -SRCS_DIR = srcs -OBJS_DIR = objs - -CC = cc -CFLAGS = -Wall -Wextra -Werror -AR = ar rcs -RM = rm -rf - -SRCS = ft_isalpha.c \ - ft_isdigit.c \ - ft_isalnum.c \ - ft_isascii.c \ - ft_isprint.c \ - ft_toupper.c \ - ft_tolower.c \ - ft_memcmp.c \ - ft_memset.c \ - ft_memchr.c \ - ft_memcpy.c \ - ft_memmove.c \ - ft_calloc.c \ - ft_bzero.c \ - ft_strlen.c \ - ft_strlcpy.c \ - ft_strlcat.c \ - ft_strncat.c \ - ft_strchr.c \ - ft_strrchr.c \ - ft_strnstr.c \ - ft_strdup.c \ - ft_strncmp.c \ - ft_atoi.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 \ - get_next_line.c \ - get_next_line_utils.c - -SRCS_WITH_PATH = $(addprefix $(SRCS_DIR)/, $(SRCS)) -OBJS = $(SRCS_WITH_PATH:$(SRCS_DIR)/%.c=$(OBJS_DIR)/%.o) - -all: $(NAME) - -$(NAME): $(OBJS) - @echo "LIBFT BUILD DONE" - @$(AR) $@ $^ - -${OBJS_DIR}/%.o: ${SRCS_DIR}/%.c | ${OBJS_DIR} - @$(CC) $(CFLAGS) -c $^ -o $@ -I $(INCS_DIR) - -${OBJS_DIR}: - @echo "LIBFT BUILD" - @mkdir ${OBJS_DIR} - -clean: - @$(RM) $(OBJS_DIR) - -fclean: - @$(MAKE) clean - @$(RM) $(NAME) - -re: - @$(MAKE) fclean - @$(MAKE) all - -.PHONY: all clean fclean re diff --git a/Libft/srcs/ft_atoi.c b/Libft/srcs/ft_atoi.c deleted file mode 100644 index 3e0ce61..0000000 --- a/Libft/srcs/ft_atoi.c +++ /dev/null @@ -1,31 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_atoi.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/12 17:50:40 by eunwolee #+# #+# */ -/* Updated: 2022/11/22 16:00:54 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_atoi(const char *str) -{ - int res; - int sign; - - res = 0; - sign = 1; - while ((*str >= 9 && *str <= 13) || *str == 32) - str++; - if (*str == '+' || *str == '-') - { - if (*str == '-') - sign *= -1; - str++; - } - while (*str >= '0' && *str <= '9') - res = (res * 10) + (*str++ - '0'); - return (res * sign); -} diff --git a/Libft/srcs/ft_bzero.c b/Libft/srcs/ft_bzero.c deleted file mode 100644 index 2df6ce3..0000000 --- a/Libft/srcs/ft_bzero.c +++ /dev/null @@ -1,22 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_bzero.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/12 15:33:02 by eunwolee #+# #+# */ -/* Updated: 2022/11/26 16:38:32 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void ft_bzero(void *s, size_t n) -{ - unsigned char *str; - - str = (unsigned char *)s; - while (n--) - *str++ = 0; -} diff --git a/Libft/srcs/ft_isascii.c b/Libft/srcs/ft_isascii.c deleted file mode 100644 index 5fd8dd2..0000000 --- a/Libft/srcs/ft_isascii.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isascii.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/09 18:26:14 by eunwolee #+# #+# */ -/* Updated: 2022/11/14 18:22:39 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_isascii(int c) -{ - if (c >= 0 && c <= 127) - return (1); - return (0); -} diff --git a/Libft/srcs/ft_isprint.c b/Libft/srcs/ft_isprint.c deleted file mode 100644 index ca57df1..0000000 --- a/Libft/srcs/ft_isprint.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isprint.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/09 18:35:25 by eunwolee #+# #+# */ -/* Updated: 2022/11/14 20:25:14 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_isprint(int c) -{ - if (c >= 32 && c <= 126) - return (1); - return (0); -} diff --git a/Libft/srcs/ft_memchr.c b/Libft/srcs/ft_memchr.c deleted file mode 100644 index ed5928a..0000000 --- a/Libft/srcs/ft_memchr.c +++ /dev/null @@ -1,29 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memchr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/11 15:44:27 by eunwolee #+# #+# */ -/* Updated: 2022/11/14 20:26:04 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void *ft_memchr(const void *s, int c, size_t n) -{ - const unsigned char *str; - unsigned char ch; - - str = (const unsigned char *)s; - ch = (unsigned char)c; - while (n--) - { - if (*str == ch) - return ((void *)str); - str++; - } - return (0); -} diff --git a/Libft/srcs/ft_memcmp.c b/Libft/srcs/ft_memcmp.c deleted file mode 100644 index e5b430e..0000000 --- a/Libft/srcs/ft_memcmp.c +++ /dev/null @@ -1,30 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memcmp.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/09 21:07:36 by eunwolee #+# #+# */ -/* Updated: 2022/11/26 17:20:33 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -int ft_memcmp(const void *s1, const void *s2, size_t n) -{ - const unsigned char *str1; - const unsigned char *str2; - - str1 = (const unsigned char *)s1; - str2 = (const unsigned char *)s2; - while (n--) - { - if (*str1 != *str2) - return (*str1 - *str2); - str1++; - str2++; - } - return (0); -} diff --git a/Libft/srcs/ft_memcpy.c b/Libft/srcs/ft_memcpy.c deleted file mode 100644 index dc64629..0000000 --- a/Libft/srcs/ft_memcpy.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memcpy.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/11 14:09:56 by eunwolee #+# #+# */ -/* Updated: 2022/11/23 22:50:36 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void *ft_memcpy(void *dst, const void *src, size_t n) -{ - unsigned char *dest; - const unsigned char *source; - - if (!dst && !src) - return (0); - dest = (unsigned char *)dst; - source = (const unsigned char *)src; - while (n--) - *dest++ = *source++; - return (dst); -} diff --git a/Libft/srcs/ft_memmove.c b/Libft/srcs/ft_memmove.c deleted file mode 100644 index 1f9c422..0000000 --- a/Libft/srcs/ft_memmove.c +++ /dev/null @@ -1,31 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memmove.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/11 17:43:24 by eunwolee #+# #+# */ -/* Updated: 2022/11/23 22:52:37 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void *ft_memmove(void *dst, const void *src, size_t len) -{ - unsigned char *dest; - const unsigned char *source; - - if (!dst && !src) - return (0); - dest = (unsigned char *)dst; - source = (const unsigned char *)src; - if (dest > source) - while (len--) - *(dest + len) = *(source + len); - else - while (len--) - *dest++ = *source++; - return (dst); -} diff --git a/Libft/srcs/ft_putchar_fd.c b/Libft/srcs/ft_putchar_fd.c deleted file mode 100644 index 7fb1548..0000000 --- a/Libft/srcs/ft_putchar_fd.c +++ /dev/null @@ -1,20 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putchar_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/15 15:41:40 by eunwolee #+# #+# */ -/* Updated: 2022/11/17 12:34:30 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void ft_putchar_fd(char c, int fd) -{ - if (fd < 0) - return ; - write (fd, &c, 1); -} diff --git a/Libft/srcs/ft_putnbr_fd.c b/Libft/srcs/ft_putnbr_fd.c deleted file mode 100644 index d3e5e80..0000000 --- a/Libft/srcs/ft_putnbr_fd.c +++ /dev/null @@ -1,40 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putnbr_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/16 21:49:13 by eunwolee #+# #+# */ -/* Updated: 2022/11/17 14:47:44 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void ft_putnbr_fd(int n, int fd) -{ - char num; - - if (fd < 0) - return ; - if (n == -2147483648) - { - write(fd, "-2147483648", 11); - return ; - } - if (n < 0) - { - write (fd, "-", 1); - n *= -1; - } - if (n < 10) - { - num = n + '0'; - write (fd, &num, 1); - return ; - } - ft_putnbr_fd(n / 10, fd); - num = n % 10 + '0'; - write(fd, &num, 1); -} diff --git a/Libft/srcs/ft_putstr_fd.c b/Libft/srcs/ft_putstr_fd.c deleted file mode 100644 index d3be0c6..0000000 --- a/Libft/srcs/ft_putstr_fd.c +++ /dev/null @@ -1,20 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putstr_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/15 16:25:54 by eunwolee #+# #+# */ -/* Updated: 2022/11/17 14:45:35 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void ft_putstr_fd(char *s, int fd) -{ - if (fd < 0) - return ; - write(fd, s, ft_strlen(s)); -} diff --git a/Libft/srcs/ft_strchr.c b/Libft/srcs/ft_strchr.c deleted file mode 100644 index 5200892..0000000 --- a/Libft/srcs/ft_strchr.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strchr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/12 17:03:53 by eunwolee #+# #+# */ -/* Updated: 2022/11/23 20:24:50 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -char *ft_strchr(const char *s, int c) -{ - unsigned char ch; - - ch = (unsigned char) c; - while (*s) - { - if (*s == ch) - return ((char *)s); - s++; - } - if (*s == ch) - return ((char *)s); - return (0); -} diff --git a/Libft/srcs/ft_striteri.c b/Libft/srcs/ft_striteri.c deleted file mode 100644 index 60e94c4..0000000 --- a/Libft/srcs/ft_striteri.c +++ /dev/null @@ -1,23 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_striteri.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/15 15:01:23 by eunwolee #+# #+# */ -/* Updated: 2022/11/17 14:44:32 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -void ft_striteri(char *s, void (*f)(unsigned int, char*)) -{ - int idx; - - idx = 0; - while (s[idx]) - { - f(idx, &s[idx]); - idx++; - } -} diff --git a/Libft/srcs/ft_strmapi.c b/Libft/srcs/ft_strmapi.c deleted file mode 100644 index 5b493b0..0000000 --- a/Libft/srcs/ft_strmapi.c +++ /dev/null @@ -1,31 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strmapi.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/15 12:58:33 by eunwolee #+# #+# */ -/* Updated: 2022/11/26 17:05:28 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -char *ft_strmapi(char const *s, char (*f)(unsigned int, char)) -{ - int idx; - char *dest; - - dest = (char *)malloc(sizeof(char) * (ft_strlen(s) + 1)); - if (!dest) - return (0); - idx = 0; - while (s[idx]) - { - dest[idx] = f(idx, s[idx]); - idx++; - } - dest[idx] = '\0'; - return (dest); -} diff --git a/Libft/srcs/ft_strnstr.c b/Libft/srcs/ft_strnstr.c deleted file mode 100644 index d719a2b..0000000 --- a/Libft/srcs/ft_strnstr.c +++ /dev/null @@ -1,38 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strnstr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/12 17:16:09 by eunwolee #+# #+# */ -/* Updated: 2023/04/06 19:28:36 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -char *ft_strnstr(const char *haystack, const char *needle, size_t len) -{ - size_t idx; - size_t h_len; - size_t n_len; - - idx = 0; - if (!*needle) - return ((char *)haystack); - if (!len) - return (0); - h_len = ft_strlen(haystack); - n_len = ft_strlen(needle); - if (len < n_len || h_len < n_len) - return (0); - while (idx <= len - n_len && *haystack) - { - if (!ft_strncmp(haystack, needle, n_len)) - return ((char *)haystack); - idx++; - haystack++; - } - return (0); -} diff --git a/Libft/srcs/ft_strrchr.c b/Libft/srcs/ft_strrchr.c deleted file mode 100644 index c2cdf10..0000000 --- a/Libft/srcs/ft_strrchr.c +++ /dev/null @@ -1,31 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strrchr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/12 17:11:16 by eunwolee #+# #+# */ -/* Updated: 2022/11/23 20:46:02 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -char *ft_strrchr(const char *s, int c) -{ - const char *tmp; - unsigned char ch; - - tmp = 0; - ch = (unsigned char) c; - while (*s) - { - if (*s == ch) - tmp = s; - s++; - } - if (*s == ch) - tmp = s; - return ((char *)tmp); -} diff --git a/Libft/srcs/ft_strtrim.c b/Libft/srcs/ft_strtrim.c deleted file mode 100644 index 0bc375e..0000000 --- a/Libft/srcs/ft_strtrim.c +++ /dev/null @@ -1,55 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strtrim.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/20 14:30:50 by eunwolee #+# #+# */ -/* Updated: 2022/12/02 15:49:00 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -static const char *from_front(char const *s1, char const *set, int *size) -{ - while (*s1) - { - if (!ft_strchr(set, *s1)) - break ; - s1++; - *size -= 1; - } - return (s1); -} - -static void from_back(char const *tmp, char const *set, int *size) -{ - while (*tmp) - { - if (!ft_strchr(set, *tmp)) - break ; - tmp--; - *size -= 1; - } -} - -char *ft_strtrim(char const *s1, char const *set) -{ - int size; - char *dest; - char const *tmp; - - size = ft_strlen(s1); - s1 = from_front(s1, set, &size); - tmp = s1; - tmp += size - 1; - if (size) - from_back(tmp, set, &size); - dest = (char *)malloc(sizeof(char) * (size + 1)); - if (!dest) - return (0); - ft_strlcpy(dest, s1, size + 1); - return (dest); -} diff --git a/Libft/srcs/ft_tolower.c b/Libft/srcs/ft_tolower.c deleted file mode 100644 index b5b54b4..0000000 --- a/Libft/srcs/ft_tolower.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_tolower.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/09 18:50:14 by eunwolee #+# #+# */ -/* Updated: 2022/11/14 20:30:06 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_tolower(int c) -{ - if (c >= 'A' && c <= 'Z') - return (c + 32); - return (c); -} diff --git a/Libft/srcs/ft_toupper.c b/Libft/srcs/ft_toupper.c deleted file mode 100644 index fc084ac..0000000 --- a/Libft/srcs/ft_toupper.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_toupper.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/09 18:47:05 by eunwolee #+# #+# */ -/* Updated: 2022/11/14 20:30:09 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_toupper(int c) -{ - if (c >= 'a' && c <= 'z') - return (c - 32); - return (c); -} diff --git a/Libft/srcs/get_next_line.c b/Libft/srcs/get_next_line.c deleted file mode 100644 index 6500a3a..0000000 --- a/Libft/srcs/get_next_line.c +++ /dev/null @@ -1,138 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* get_next_line.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/12/26 16:01:43 by eunwolee #+# #+# */ -/* Updated: 2023/07/12 19:41:52 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -static t_g_list *get_new_nod(int fd) -{ - char *buff; - t_g_list *nod; - - buff = (char *)malloc(sizeof(char) * 1); - if (!buff) - return (0); - buff[0] = '\0'; - nod = (t_g_list *)malloc(sizeof(t_g_list) * 1); - if (!nod) - { - free(buff); - return (0); - } - nod->buff = buff; - nod->fd = fd; - nod->next = 0; - return (nod); -} - -static t_g_list *get_fd_nod(t_g_list **head, int fd) -{ - t_g_list *tmp; - - tmp = *head; - if (!tmp) - { - tmp = get_new_nod(fd); - if (!tmp) - return (0); - *head = tmp; - } - while (tmp->next) - { - if (tmp->fd == fd) - return (tmp); - tmp = tmp->next; - } - if (tmp->fd != fd) - { - tmp->next = get_new_nod(fd); - if (!tmp->next) - return (0); - tmp = tmp->next; - } - return (tmp); -} - -static char *get_done_line(t_g_list *nod) -{ - int idx; - int nod_cnt; - int line_cnt; - char *line; - - line_cnt = 0; - while (nod->buff[line_cnt] != '\n' && nod->buff[line_cnt]) - line_cnt++; - if (nod->buff[line_cnt] == '\n') - line_cnt++; - nod_cnt = ft_strlen(&nod->buff[line_cnt]); - line = (char *)malloc(sizeof(char) * (line_cnt + 1)); - if (!line) - return (0); - idx = -1; - while (++idx < line_cnt) - line[idx] = nod->buff[idx]; - idx = -1; - while (++idx < nod_cnt) - nod->buff[idx] = nod->buff[idx + line_cnt]; - line[line_cnt] = '\0'; - nod->buff[nod_cnt] = '\0'; - return (line); -} - -static int get_read_line(int fd, t_g_list *nod) -{ - int rd; - char *buff; - - buff = (char *)malloc(sizeof(char) * BUFFER_SIZE + 1); - if (!buff) - return (-1); - rd = 1; - while (rd) - { - rd = read(fd, buff, BUFFER_SIZE); - if (rd == -1 || !rd) - break ; - buff[rd] = '\0'; - nod->buff = ft_strjoin(nod->buff, buff); - if (!nod->buff) - { - free(buff); - return (-1); - } - if (ft_strchr(nod->buff, '\n')) - break ; - } - free(buff); - return (rd); -} - -char *get_next_line(int fd) -{ - t_g_list *nod; - char *line; - static t_g_list *head; - - if (fd < 0 || BUFFER_SIZE <= 0) - return (0); - nod = get_fd_nod(&head, fd); - if (!nod) - return (0); - if (get_read_line(fd, nod) == -1 || !*(nod->buff)) - return (delete_nod(&head, nod)); - line = get_done_line(nod); - if (!line) - return (delete_nod(&head, nod)); - if (!*(nod->buff)) - delete_nod(&head, nod); - return (line); -} diff --git a/Libft/srcs/get_next_line_utils.c b/Libft/srcs/get_next_line_utils.c deleted file mode 100644 index ec97127..0000000 --- a/Libft/srcs/get_next_line_utils.c +++ /dev/null @@ -1,36 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* get_next_line_utils.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/12/26 16:01:47 by eunwolee #+# #+# */ -/* Updated: 2023/07/10 19:31:14 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -char *delete_nod(t_g_list **head, t_g_list *nod) -{ - t_g_list *tmp; - - tmp = *head; - if (tmp == nod) - { - if (!(tmp->next)) - *head = 0; - else - *head = tmp->next; - free(nod->buff); - free(nod); - return (0); - } - while (tmp->next != nod) - tmp = tmp->next; - tmp->next = nod->next; - free(nod->buff); - free(nod); - return (0); -} diff --git a/Makefile b/Makefile index c27835a..f6681d9 100644 --- a/Makefile +++ b/Makefile @@ -26,18 +26,7 @@ SRCS = minishell.c \ lexer/lexer_utils.c \ parser/syntax.c \ parser/parser.c \ - utils/env.c \ - utils/list.c \ - utils/list_clear.c \ - utils/tree.c \ - utils/utils.c \ - utils/temp.c \ builtin/builtin.c \ - builtin/ft_join_cmd.c \ - builtin/ft_cnt_args.c \ - builtin/ft_update_env_cd.c \ - builtin/ft_update_env_export.c \ - builtin/ft_add_env_front.c \ builtin/ft_cd.c \ builtin/ft_echo.c \ builtin/ft_exit.c \ @@ -48,6 +37,11 @@ SRCS = minishell.c \ builtin/ft_export_check.c \ builtin/ft_env.c \ builtin/ft_atolong.c \ + builtin/ft_join_cmd.c \ + builtin/ft_cnt_args.c \ + builtin/ft_update_env_cd.c \ + builtin/ft_update_env_export.c \ + builtin/ft_add_env_front.c \ execute/execve.c \ execute/execve_utils.c \ execute/child.c \ @@ -55,10 +49,32 @@ SRCS = minishell.c \ execute/pipe.c \ execute/path.c \ execute/file.c \ - redirect/heredoc_parser.c \ redirect/heredoc.c \ + redirect/heredoc_parser.c \ redirect/redirect.c \ - signal/signal.c + signal/signal.c \ + utils/env.c \ + utils/list.c \ + utils/list_clear.c \ + utils/tree.c \ + utils/utils.c \ + utils/temp.c \ + Libft/ft_isalpha.c \ + Libft/ft_isalnum.c \ + Libft/ft_isdigit.c \ + Libft/ft_itoa.c \ + Libft/ft_split.c \ + Libft/ft_substr.c \ + Libft/ft_strjoin.c \ + Libft/ft_strncmp.c \ + Libft/ft_strncat.c \ + Libft/ft_strdup.c \ + Libft/ft_strlen.c \ + Libft/ft_strlcat.c \ + Libft/ft_strlcpy.c \ + Libft/ft_calloc.c \ + Libft/ft_memset.c \ + Libft/ft_putendl_fd.c \ SRCS_WITH_PATH = $(addprefix $(SRCS_DIR)/, $(SRCS)) OBJS = $(SRCS_WITH_PATH:$(SRCS_DIR)/%.c=$(OBJS_DIR)/%.o) @@ -67,7 +83,6 @@ all: $(NAME) ${OBJS_DIR}/%.o: ${SRCS_DIR}/%.c | ${OBJS_DIR} @$(CC) $(CFLAGS) -c $^ -o $@ -I $(INCS_DIR) - # @$(CC) $(RLFLAGS) $^ -o $@ -I $(INCS_DIR) -L ~/.brew/opt/readline/lib -fsanitize=address -g3 ${OBJS_DIR}: @echo "*---MINISHELL BUILD---*" @@ -81,23 +96,18 @@ ${OBJS_DIR}: @mkdir ${OBJS_DIR}/execute @mkdir ${OBJS_DIR}/redirect @mkdir ${OBJS_DIR}/signal + @mkdir ${OBJS_DIR}/Libft -$(NAME): $(L_NAME) $(OBJS) +$(NAME): $(OBJS) @echo "MINISHELL DONE" @$(CC) $(RLFLAGS) $^ -o $@ -I $(INCS_DIR) -L $(READ_DIR)/lib -$(L_NAME): - @$(MAKE) -C $(L_DIR) - @cp ./$(L_DIR)/$(L_NAME) . - clean: @echo "MINISHELL CLEAN" - @$(MAKE) fclean -C $(L_DIR) @$(RM) $(OBJS_DIR) @$(RM) $(L_NAME) fclean: - @$(MAKE) fclean -C $(L_DIR) @$(MAKE) clean @echo "MINISHELL FCLEAN" @$(RM) $(NAME) diff --git a/incs/builtin.h b/incs/builtin.h index 9271fd8..70a0b58 100644 --- a/incs/builtin.h +++ b/incs/builtin.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/16 21:22:15 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 22:09:43 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 11:16:46 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -49,10 +49,10 @@ void devide_equal(char *src, char **str1, char **str2, \ t_bool key_need_equal); /*ft_export_check*/ +t_bool check_env(t_data *data, char *key, char *value); int check_plus(char *str); int check_name(char *str); int check_equal(char *str); int check_underbar(char ch); -t_bool check_env(t_data *data, char *key, char *value); #endif \ No newline at end of file diff --git a/incs/execute.h b/incs/execute.h index 71901c5..4e95ff3 100644 --- a/incs/execute.h +++ b/incs/execute.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/08 17:49:19 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 19:15:52 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 12:19:25 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,11 +24,12 @@ void execute_cmd(t_data *data, int flag); int check_builtin(t_data *data); void recover_std(t_data *data); void heredoc_flag(t_leaf *leaf, t_data *data); -void error_print(char *cmd, char *option, int flag); /*child*/ void do_cmd(t_data *data); void exec_fork(t_data *data); +void error_print(char *cmd, char *option, int flag); +void check_errortype(char *str, int flag); /*parent*/ void wait_child_processes(t_data *data); diff --git a/Libft/incs/libft.h b/incs/libft.h similarity index 58% rename from Libft/incs/libft.h rename to incs/libft.h index db6e378..a762118 100644 --- a/Libft/incs/libft.h +++ b/incs/libft.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/07 21:00:01 by eunwolee #+# #+# */ -/* Updated: 2023/07/12 19:42:12 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:10:28 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,57 +17,21 @@ # include # include -# ifndef BUFFER_SIZE -# define BUFFER_SIZE 42 -# endif - -typedef struct s_g_list -{ - int fd; - char *buff; - struct s_g_list *next; -} t_g_list; - -char *get_next_line(int fd); -char *delete_nod(t_g_list **head, t_g_list *nod); - -//Libc functions 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); -int ft_memcmp(const void *s1, const void *s2, size_t n); void *ft_memset(void *b, int c, size_t len); -void *ft_memchr(const void *s, int c, size_t n); -void *ft_memcpy(void *dst, const void *src, size_t n); -void *ft_memmove(void *dst, const void *src, size_t len); void *ft_calloc(size_t count, size_t size); -void ft_bzero(void *s, size_t n); size_t ft_strlen(const char *s); size_t ft_strlcpy(char *dst, const char *src, size_t dstsize); size_t ft_strlcat(char *dst, const char *src, size_t dstsize); char *ft_strncat(char *dest, char *src, int n); -char *ft_strchr(const char *s, int c); -char *ft_strrchr(const char *s, int c); -char *ft_strnstr(const char *haystack, const char *needle, size_t len); char *ft_strdup(const char *s1); int ft_strncmp(const char *s1, const char *s2, size_t n); -int ft_atoi(const char *str); - -//Additional functions char *ft_substr(char const *s, unsigned int start, size_t len); char *ft_strjoin(char const *s1, char const *s2); -char *ft_strtrim(char const *s1, char const *set); char **ft_split(char const *s, char c); char *ft_itoa(int n); -char *ft_strmapi(char const *s, char (*f)(unsigned int, char)); -void ft_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); #endif \ No newline at end of file diff --git a/incs/minishell.h b/incs/minishell.h index 0b0240c..427a8f9 100644 --- a/incs/minishell.h +++ b/incs/minishell.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:05:33 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 15:49:18 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:05:26 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,6 +29,6 @@ # include "execute.h" # include "utils.h" # include "message.h" -# include "../Libft/incs/libft.h" +# include "libft.h" #endif \ No newline at end of file diff --git a/incs/utils.h b/incs/utils.h index 51c0df2..0cece44 100644 --- a/incs/utils.h +++ b/incs/utils.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:32:09 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 00:38:27 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 11:18:12 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/Libft/srcs/ft_calloc.c b/srcs/Libft/ft_calloc.c similarity index 91% rename from Libft/srcs/ft_calloc.c rename to srcs/Libft/ft_calloc.c index 4ab8b68..09c73f7 100644 --- a/Libft/srcs/ft_calloc.c +++ b/srcs/Libft/ft_calloc.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/12 18:35:23 by eunwolee #+# #+# */ -/* Updated: 2022/11/15 20:29:04 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:32:33 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "libft.h" +#include "../../incs/minishell.h" void *ft_calloc(size_t count, size_t size) { diff --git a/Libft/srcs/ft_isalnum.c b/srcs/Libft/ft_isalnum.c similarity index 90% rename from Libft/srcs/ft_isalnum.c rename to srcs/Libft/ft_isalnum.c index f0103f4..4f0615d 100644 --- a/Libft/srcs/ft_isalnum.c +++ b/srcs/Libft/ft_isalnum.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/09 16:51:21 by eunwolee #+# #+# */ -/* Updated: 2022/11/14 18:26:47 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:32:37 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "libft.h" +#include "../../incs/minishell.h" int ft_isalnum(int c) { diff --git a/Libft/srcs/ft_isalpha.c b/srcs/Libft/ft_isalpha.c similarity index 100% rename from Libft/srcs/ft_isalpha.c rename to srcs/Libft/ft_isalpha.c diff --git a/Libft/srcs/ft_isdigit.c b/srcs/Libft/ft_isdigit.c similarity index 100% rename from Libft/srcs/ft_isdigit.c rename to srcs/Libft/ft_isdigit.c diff --git a/Libft/srcs/ft_itoa.c b/srcs/Libft/ft_itoa.c similarity index 87% rename from Libft/srcs/ft_itoa.c rename to srcs/Libft/ft_itoa.c index 569aa48..5edabb4 100644 --- a/Libft/srcs/ft_itoa.c +++ b/srcs/Libft/ft_itoa.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/15 12:28:06 by eunwolee #+# #+# */ -/* Updated: 2022/11/17 13:30:13 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:32:46 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "libft.h" +#include "../../incs/minishell.h" static int cnt_digit(long n) { @@ -41,9 +41,9 @@ char *ft_itoa(int n) num = (long)n; size = cnt_digit(num); - dest = (char *)malloc(sizeof(char) * (size + 1)); + dest = (char *)ft_calloc((size + 1), sizeof(char)); if (!dest) - return (0); + program_error_exit("bash"); idx = size - 1; if (!num) dest[0] = '0'; diff --git a/Libft/srcs/ft_memset.c b/srcs/Libft/ft_memset.c similarity index 91% rename from Libft/srcs/ft_memset.c rename to srcs/Libft/ft_memset.c index 0959e11..da4975a 100644 --- a/Libft/srcs/ft_memset.c +++ b/srcs/Libft/ft_memset.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/10 12:33:34 by eunwolee #+# #+# */ -/* Updated: 2022/11/14 20:27:03 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:32:54 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "libft.h" +#include "../../incs/minishell.h" void *ft_memset(void *b, int c, size_t len) { diff --git a/Libft/srcs/ft_putendl_fd.c b/srcs/Libft/ft_putendl_fd.c similarity index 90% rename from Libft/srcs/ft_putendl_fd.c rename to srcs/Libft/ft_putendl_fd.c index 88597d8..6471868 100644 --- a/Libft/srcs/ft_putendl_fd.c +++ b/srcs/Libft/ft_putendl_fd.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/16 21:45:36 by eunwolee #+# #+# */ -/* Updated: 2022/11/17 12:34:37 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:32:56 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "libft.h" +#include "../../incs/minishell.h" void ft_putendl_fd(char *s, int fd) { diff --git a/Libft/srcs/ft_split.c b/srcs/Libft/ft_split.c similarity index 83% rename from Libft/srcs/ft_split.c rename to srcs/Libft/ft_split.c index 2c4a6c4..9b742e7 100644 --- a/Libft/srcs/ft_split.c +++ b/srcs/Libft/ft_split.c @@ -6,17 +6,16 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/14 21:52:44 by eunwolee #+# #+# */ -/* Updated: 2023/04/22 14:58:31 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:33:00 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "libft.h" +#include "../../incs/minishell.h" char **ft_split(char const *s, char c); static int cnt_str(char const *s, int c); static int exe_split(char **dest, const char *s, char c, int *idx); static int cnt_len(char const *s, char c); -static char **clear(char **dest, int idx); char **ft_split(char const *s, char c) { @@ -27,14 +26,13 @@ char **ft_split(char const *s, char c) cnt = cnt_str(s, c); dest = (char **)ft_calloc(cnt + 1, sizeof(char *)); if (!dest) - return (0); + program_error_exit("bash"); if (!cnt) dest[0] = ft_strdup(""); else { idx = 0; - if (exe_split(dest, s, c, &idx) == -1) - return (clear(dest, idx)); + exe_split(dest, s, c, &idx); } return (dest); } @@ -72,8 +70,6 @@ static int exe_split(char **dest, const char *s, char c, int *idx) { size = cnt_len(s, c); dest[*idx] = ft_substr(s, 0, size); - if (!dest[*idx]) - return (-1); s += size; *idx += 1; } @@ -90,11 +86,3 @@ static int cnt_len(char const *s, char c) len++; return (len); } - -static char **clear(char **dest, int idx) -{ - while (idx--) - free (dest[idx]); - free (dest); - return (0); -} diff --git a/Libft/srcs/ft_strdup.c b/srcs/Libft/ft_strdup.c similarity index 84% rename from Libft/srcs/ft_strdup.c rename to srcs/Libft/ft_strdup.c index 5a58a49..aed6df3 100644 --- a/Libft/srcs/ft_strdup.c +++ b/srcs/Libft/ft_strdup.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/12 18:07:32 by eunwolee #+# #+# */ -/* Updated: 2022/12/02 15:48:12 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:33:05 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "libft.h" +#include "../../incs/minishell.h" char *ft_strdup(const char *s1) { @@ -18,9 +18,9 @@ char *ft_strdup(const char *s1) char *dest; len = ft_strlen(s1); - dest = (char *)malloc(sizeof(char) * (len + 1)); + dest = (char *)ft_calloc((len + 1), sizeof(char)); if (!dest) - return (0); + program_error_exit("bash"); ft_strlcpy(dest, s1, len + 1); return (dest); } diff --git a/Libft/srcs/ft_strjoin.c b/srcs/Libft/ft_strjoin.c similarity index 83% rename from Libft/srcs/ft_strjoin.c rename to srcs/Libft/ft_strjoin.c index 1962922..b0d72d6 100644 --- a/Libft/srcs/ft_strjoin.c +++ b/srcs/Libft/ft_strjoin.c @@ -6,20 +6,20 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/14 20:57:36 by eunwolee #+# #+# */ -/* Updated: 2022/11/15 15:18:15 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:33:08 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "libft.h" +#include "../../incs/minishell.h" char *ft_strjoin(char const *s1, char const *s2) { int idx; char *str; - str = (char *)malloc(sizeof(char) * (ft_strlen(s1) + ft_strlen(s2) + 1)); + str = (char *)ft_calloc((ft_strlen(s1) + ft_strlen(s2) + 1), sizeof(char)); if (!str) - return (0); + program_error_exit("bash"); idx = 0; while (*s1) str[idx++] = *s1++; diff --git a/Libft/srcs/ft_strlcat.c b/srcs/Libft/ft_strlcat.c similarity index 92% rename from Libft/srcs/ft_strlcat.c rename to srcs/Libft/ft_strlcat.c index 54737c8..3332bd6 100644 --- a/Libft/srcs/ft_strlcat.c +++ b/srcs/Libft/ft_strlcat.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/12 16:27:27 by eunwolee #+# #+# */ -/* Updated: 2022/11/14 20:29:15 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:33:15 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "libft.h" +#include "../../incs/minishell.h" size_t ft_strlcat(char *dst, const char *src, size_t dstsize) { diff --git a/Libft/srcs/ft_strlcpy.c b/srcs/Libft/ft_strlcpy.c similarity index 91% rename from Libft/srcs/ft_strlcpy.c rename to srcs/Libft/ft_strlcpy.c index 4f7b7ad..e8b4992 100644 --- a/Libft/srcs/ft_strlcpy.c +++ b/srcs/Libft/ft_strlcpy.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/12 16:08:41 by eunwolee #+# #+# */ -/* Updated: 2022/11/17 15:37:54 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:33:18 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "libft.h" +#include "../../incs/minishell.h" size_t ft_strlcpy(char *dst, const char *src, size_t dstsize) { diff --git a/Libft/srcs/ft_strlen.c b/srcs/Libft/ft_strlen.c similarity index 90% rename from Libft/srcs/ft_strlen.c rename to srcs/Libft/ft_strlen.c index cc14ae3..464b0a2 100644 --- a/Libft/srcs/ft_strlen.c +++ b/srcs/Libft/ft_strlen.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/12 15:48:24 by eunwolee #+# #+# */ -/* Updated: 2023/07/03 08:52:25 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:33:21 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "libft.h" +#include "../../incs/minishell.h" size_t ft_strlen(const char *s) { diff --git a/Libft/srcs/ft_strncat.c b/srcs/Libft/ft_strncat.c similarity index 90% rename from Libft/srcs/ft_strncat.c rename to srcs/Libft/ft_strncat.c index 761d08c..7b15ddb 100644 --- a/Libft/srcs/ft_strncat.c +++ b/srcs/Libft/ft_strncat.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 07:51:04 by eunwolee #+# #+# */ -/* Updated: 2023/08/11 10:29:43 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:33:25 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "libft.h" +#include "../../incs/minishell.h" char *ft_strncat(char *dest, char *src, int n) { @@ -24,7 +24,7 @@ char *ft_strncat(char *dest, char *src, int n) size = ft_strlen(dest) + n; res = (char *)ft_calloc(size + 1, sizeof(char)); if (!res) - return (NULL); + program_error_exit("bash"); i = 0; while (dest[i]) { diff --git a/Libft/srcs/ft_strncmp.c b/srcs/Libft/ft_strncmp.c similarity index 92% rename from Libft/srcs/ft_strncmp.c rename to srcs/Libft/ft_strncmp.c index fedb6ba..134951d 100644 --- a/Libft/srcs/ft_strncmp.c +++ b/srcs/Libft/ft_strncmp.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/12 17:23:49 by eunwolee #+# #+# */ -/* Updated: 2022/11/17 16:34:45 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:33:27 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "libft.h" +#include "../../incs/minishell.h" int ft_strncmp(const char *s1, const char *s2, size_t n) { diff --git a/Libft/srcs/ft_substr.c b/srcs/Libft/ft_substr.c similarity index 90% rename from Libft/srcs/ft_substr.c rename to srcs/Libft/ft_substr.c index f795706..cfffdd9 100644 --- a/Libft/srcs/ft_substr.c +++ b/srcs/Libft/ft_substr.c @@ -6,11 +6,11 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/14 17:55:14 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 13:20:57 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:33:30 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ -#include "libft.h" +#include "../../incs/minishell.h" char *ft_substr(char const *s, unsigned int start, size_t len) { @@ -26,7 +26,7 @@ char *ft_substr(char const *s, unsigned int start, size_t len) size = len; tmp = (char *)ft_calloc((size + 1), sizeof(char)); if (!tmp) - return (0); + program_error_exit("bash"); idx = 0; if (size) while (idx < len && s[start]) diff --git a/srcs/builtin/ft_add_env_front.c b/srcs/builtin/ft_add_env_front.c index 599cf3a..ee9b1ac 100644 --- a/srcs/builtin/ft_add_env_front.c +++ b/srcs/builtin/ft_add_env_front.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 20:38:22 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 01:04:01 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:30:35 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,14 +29,9 @@ static t_list *create_env_node(char *key, char *value) t_list *new_node; new_node = ft_lstnew(); - if (!new_node) - return (NULL); new_node->token = (t_token *)ft_calloc(1, sizeof(t_token)); if (!new_node->token) - { - free(new_node); - return (NULL); - } + program_error_exit("bash"); if (value) { new_node->env = ft_strncat(key, value, ft_strlen(value)); diff --git a/srcs/builtin/ft_cd.c b/srcs/builtin/ft_cd.c index 6321139..bfedb09 100644 --- a/srcs/builtin/ft_cd.c +++ b/srcs/builtin/ft_cd.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 02:31:18 by kichlee #+# #+# */ -/* Updated: 2023/08/16 15:54:01 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:25:23 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -55,8 +55,6 @@ static int change_directory(t_data *data, char *path) } else buf = ft_strdup(path); - if (!buf) - program_error_exit("bash"); res = chdir(buf); getcwd(pwd, BUF_SIZE); free(buf); diff --git a/srcs/builtin/ft_env.c b/srcs/builtin/ft_env.c index c0be0a2..902f822 100644 --- a/srcs/builtin/ft_env.c +++ b/srcs/builtin/ft_env.c @@ -20,8 +20,6 @@ t_bool ft_env(t_data *data) int arg_cnt; cmd = ft_join_cmd(data->root->left_child->right_child); - if (!cmd) - program_error_exit("bash"); arg_cnt = ft_cnt_args(cmd); if (arg_cnt != 1) { diff --git a/srcs/builtin/ft_exit.c b/srcs/builtin/ft_exit.c index 48055cf..7030d6f 100644 --- a/srcs/builtin/ft_exit.c +++ b/srcs/builtin/ft_exit.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:23:29 by kichlee #+# #+# */ -/* Updated: 2023/08/16 22:23:26 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:34:29 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -69,13 +69,12 @@ static void arg_over_two(t_data *data, int count, char **cmd, int flag) int i; i = 1; - // status = ft_atolong(cmd[1], &flag); ft_atolong(cmd[1], &flag); while (i < count) { if (flag && is_num_str(cmd[i]) && ft_strlen(cmd[i]) <= 20) { - printf("bash: exit: too many arguments\n"); + check_errortype("error", 3); data->error_code = 1; break ; } @@ -87,8 +86,7 @@ static void arg_over_two(t_data *data, int count, char **cmd, int flag) static void exit_not_num(t_data *data, char *str) { - printf("exit\n"); - printf("bash: exit: %s: numeric argument required\n", str); + check_errortype(str, 4); data->error_code = 255; exit(255); } diff --git a/srcs/builtin/ft_export.c b/srcs/builtin/ft_export.c index 26cd44d..273ce9c 100644 --- a/srcs/builtin/ft_export.c +++ b/srcs/builtin/ft_export.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 11:50:55 by kichlee #+# #+# */ -/* Updated: 2023/08/17 00:41:03 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:28:03 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,13 +14,13 @@ t_bool ft_export(t_data *data, t_leaf *arg); static int cnt_args(t_leaf *tmp); -static t_bool start_export(t_data *data, t_leaf **cur); -static t_bool separated_token(t_data *data, t_leaf **tmp); -static t_bool combined_token(t_data *data, t_leaf **tmp); +static void join_str(t_leaf **cur, char **tmp); +static t_bool start_export(t_data *data, char *tmp); t_bool ft_export(t_data *data, t_leaf *cmd) { int args_cnt; + char *tmp; args_cnt = cnt_args(cmd); if (!cmd || args_cnt == 0) @@ -30,12 +30,27 @@ t_bool ft_export(t_data *data, t_leaf *cmd) } cmd = cmd->right_child; while (args_cnt--) - if (start_export(data, &cmd) == FALSE) + { + join_str(&cmd, &tmp); + if (start_export(data, tmp) == FALSE) return (FALSE); + } update_env_double_char(data); return (TRUE); } +static void join_str(t_leaf **cur, char **tmp) +{ + *tmp = ft_strdup((*cur)->token->str); + while (!(*cur)->token->blank && (*cur)->right_child) + { + *cur = (*cur)->right_child; + *tmp = ft_strncat(*tmp, (*cur)->token->str, \ + ft_strlen((*cur)->token->str)); + } + *cur = (*cur)->right_child; +} + static int cnt_args(t_leaf *tmp) { int args; @@ -50,60 +65,20 @@ static int cnt_args(t_leaf *tmp) return (args); } -static t_bool start_export(t_data *data, t_leaf **cur) +static t_bool start_export(t_data *data, char *tmp) { - if (check_equal((*cur)->token->str) == TRUE) - { - if ((*cur)->token->str[ft_strlen((*cur)->token->str) - 1] == '=') - { - if (separated_token(data, cur) == FALSE) - return (FALSE); - } - else - { - if (combined_token(data, cur) == FALSE) - return (FALSE); - } - } - else - { - if (check_env(data, ft_strdup((*cur)->token->str), NULL) == FALSE) - return (FALSE); - *cur = (*cur)->right_child; - } - return (TRUE); -} - -static t_bool separated_token(t_data *data, t_leaf **cur) -{ - char *tmp; + char *str1; + char *str2; - if (!(*cur)->right_child || (*cur)->token->blank == TRUE) + if (check_equal(tmp) == TRUE) { - if (check_env(data, ft_strdup((*cur)->token->str), NULL) == FALSE) + devide_equal(tmp, &str1, &str2, TRUE); + free(tmp); + if (check_env(data, str1, str2) == FALSE) return (FALSE); - *cur = (*cur)->right_child; } else - { - tmp = ft_strdup((*cur)->right_child->token->str); - if (!tmp) - program_error_exit("bash"); - if (check_env(data, ft_strdup((*cur)->token->str), tmp) == FALSE) + if (check_env(data, tmp, NULL) == FALSE) return (FALSE); - *cur = (*cur)->right_child->right_child; - } - return (TRUE); -} - -static t_bool combined_token(t_data *data, t_leaf **cur) -{ - char *str1; - char *str2; - - devide_equal((*cur)->token->str, &str1, &str2, TRUE); - if (check_env(data, str1, str2) == FALSE) - return (FALSE); - *cur = (*cur)->right_child; return (TRUE); } diff --git a/srcs/builtin/ft_export_check.c b/srcs/builtin/ft_export_check.c index 0ebf8cf..ba4f410 100644 --- a/srcs/builtin/ft_export_check.c +++ b/srcs/builtin/ft_export_check.c @@ -6,17 +6,34 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 21:42:23 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 21:03:17 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 11:16:37 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" +t_bool check_env(t_data *data, char *key, char *value); int check_plus(char *str); int check_equal(char *str); int check_name(char *str); int check_underbar(char ch); -t_bool check_env(t_data *data, char *key, char *value); + +t_bool check_env(t_data *data, char *key, char *value) +{ + if (!key) + program_error_exit("bash"); + if (!check_name(key)) + { + printf("bash: export: '%s': not a valid identifier\n", key); + data->error_code = 1; + free(key); + if (value) + free(value); + return (FALSE); + } + ft_update_env_export(data, key, value); + return (TRUE); +} int check_plus(char *str) { @@ -81,20 +98,3 @@ int check_underbar(char ch) return (1); return (0); } - -t_bool check_env(t_data *data, char *key, char *value) -{ - if (!key) - program_error_exit("bash"); - if (!check_name(key)) - { - printf("bash: export: '%s': not a valid identifier\n", key); - data->error_code = 1; - free(key); - if (value) - free(value); - return (FALSE); - } - ft_update_env_export(data, key, value); - return (TRUE); -} diff --git a/srcs/builtin/ft_export_print.c b/srcs/builtin/ft_export_print.c index adc4794..d08e19c 100644 --- a/srcs/builtin/ft_export_print.c +++ b/srcs/builtin/ft_export_print.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/15 18:48:19 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 22:09:17 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:29:26 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,6 +29,8 @@ void print_export_order(t_data *data) i = 0; cur = data->envs; order_copy = (char **)ft_calloc(ft_lstsize(data->envs) + 1, sizeof(char *)); + if (!order_copy) + program_error_exit("bash"); while (cur) { order_copy[i] = ft_strdup(cur->env); @@ -55,8 +57,6 @@ void devide_equal(char *src, char **str1, char **str2, t_bool key_need_equal) else *str1 = ft_substr(src, 0, equal_len - 1); *str2 = ft_substr(src, equal_len, value_len); - if (!*str1 || !*str2) - program_error_exit("bash"); } void free_d_char_ptr(char **str) diff --git a/srcs/builtin/ft_join_cmd.c b/srcs/builtin/ft_join_cmd.c index cd334ef..e847a9e 100644 --- a/srcs/builtin/ft_join_cmd.c +++ b/srcs/builtin/ft_join_cmd.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 22:15:42 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 09:29:45 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 12:32:30 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,7 +26,7 @@ char **ft_join_cmd(t_leaf *leaf) cnt_str = get_str_cnt(leaf); str = (char **)ft_calloc(cnt_str + 1, sizeof(char *)); if (!str) - return (NULL); + program_error_exit("bash"); str = input_leaf(leaf, str); return (str); } diff --git a/srcs/builtin/ft_pwd.c b/srcs/builtin/ft_pwd.c index 8291805..16feaf6 100644 --- a/srcs/builtin/ft_pwd.c +++ b/srcs/builtin/ft_pwd.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:24:31 by kichlee #+# #+# */ -/* Updated: 2023/08/16 15:54:41 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 12:02:00 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -25,7 +25,7 @@ void ft_pwd(void) { buf = (char *)ft_calloc(buf_size, sizeof(char)); if (!buf) - program_error_exit("ft_calloc fail!"); + program_error_exit("bash"); if (getcwd(buf, buf_size) != NULL) { printf("%s\n", buf); @@ -34,7 +34,7 @@ void ft_pwd(void) } free(buf); if (buf_size > SIZE_MAX / 2) - program_error_exit("get_cwd fail!"); + program_error_exit("bash"); buf_size *= 2; } } diff --git a/srcs/builtin/ft_unset.c b/srcs/builtin/ft_unset.c index 2813fe2..5ca9ab2 100644 --- a/srcs/builtin/ft_unset.c +++ b/srcs/builtin/ft_unset.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 22:51:02 by kichlee #+# #+# */ -/* Updated: 2023/08/17 00:57:02 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 12:40:22 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -37,6 +37,4 @@ void update_env_double_char(t_data *data) { free(data->env_array); data->env_array = env_to_array(data); - if (!data->env_array) - program_error_exit("bash"); } diff --git a/srcs/builtin/ft_update_env_export.c b/srcs/builtin/ft_update_env_export.c index eb8d6b5..22ab513 100644 --- a/srcs/builtin/ft_update_env_export.c +++ b/srcs/builtin/ft_update_env_export.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/15 00:37:38 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 21:21:50 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 10:57:04 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/execute/child.c b/srcs/execute/child.c index 18c3dde..cbb7e54 100644 --- a/srcs/execute/child.c +++ b/srcs/execute/child.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:36:58 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 01:24:10 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:34:36 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,7 @@ void do_cmd(t_data *data); void exec_fork(t_data *data); +void error_print(char *cmd, char *option, int flag); void check_errortype(char *str, int flag); void do_cmd(t_data *data) @@ -84,9 +85,9 @@ void error_print(char *cmd, char *option, int flag) char *tmp; char *str; - str = ft_strdup (cmd); + str = ft_strdup(cmd); tmp = str; - str = ft_strjoinstr ("bash: ", str); + str = ft_strjoinstr("bash: ", str); free(tmp); if (option) { @@ -109,6 +110,21 @@ void check_errortype(char *str, int flag) str = ft_strjoinstr(str, ": command not found\n"); else if (flag == 1) str = ft_strjoinstr(str, ": No such file or directory\n"); + else if (flag == 2) + { + // 형 수정 + } + else if (flag == 3) + { + str = "bash: exit: too many arguments\n"; + write(2, str, ft_strlen (str)); + return ; + } + else if (flag == 4) + { + write(2, "bash: exit: ", 12); + str = ft_strjoinstr(str, " numeric argument required\n"); + } free(tmp); write(2, str, ft_strlen (str)); free(str); diff --git a/srcs/execute/execve.c b/srcs/execute/execve.c index ca0fd00..d8da835 100644 --- a/srcs/execute/execve.c +++ b/srcs/execute/execve.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:31:21 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 15:48:02 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 11:58:20 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,8 +20,8 @@ void execute(t_data *data) { count_pipe(data); heredoc_flag(data->root, data); - data->info->heredoc_file = (char **)ft_calloc(data->info->heredoc_flag + 1, \ - sizeof(char *)); + data->info->heredoc_file = \ + (char **)ft_calloc(data->info->heredoc_flag + 1, sizeof(char *)); if (!data->info->heredoc_file) program_error_exit("bash"); if (!data->info->pipe_num && !data->info->heredoc_flag) diff --git a/srcs/execute/pipe.c b/srcs/execute/pipe.c index 9a79dc9..9a9b9d9 100644 --- a/srcs/execute/pipe.c +++ b/srcs/execute/pipe.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:38:38 by eunwolee #+# #+# */ -/* Updated: 2023/08/15 00:46:01 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 12:03:24 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -66,8 +66,8 @@ void count_pipe(t_data *data) } if (data->info->pipe_num != 0) data->info->pipe_num--; - data->pipe->com = (t_pid *)ft_calloc(data->info->pipe_num + 1, \ - sizeof(t_pid)); + data->pipe->com = \ + (t_pid *)ft_calloc(data->info->pipe_num + 1, sizeof(t_pid)); if (!data->pipe->com) program_error_exit("bash"); } diff --git a/srcs/init/init.c b/srcs/init/init.c index af53aaa..35fc6c6 100644 --- a/srcs/init/init.c +++ b/srcs/init/init.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:52 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 15:55:23 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:30:40 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -34,8 +34,6 @@ void env_init(t_data *data, char **envp) while (envp[++i]) { new = ft_lstnew(); - if (!new) - program_error_exit("bash"); new->env = ft_strdup(envp[i]); new->equal_flag = 0; if (!new->env) diff --git a/srcs/input/get_input.c b/srcs/input/get_input.c index 4a7675e..7ab21cb 100644 --- a/srcs/input/get_input.c +++ b/srcs/input/get_input.c @@ -6,12 +6,13 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:27:16 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 19:15:48 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 09:59:53 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" +t_bool get_input(t_data *data); static t_bool check_blank_input(char *str); t_bool get_input(t_data *data) diff --git a/srcs/lexer/expand.c b/srcs/lexer/expand.c index 2a420e8..ccd2ba8 100644 --- a/srcs/lexer/expand.c +++ b/srcs/lexer/expand.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:20:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 09:32:02 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:27:28 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -43,13 +43,9 @@ static char *get_name(t_data *data, int *i) char *name; name = ft_strdup(""); - if (!name) - program_error_exit("bash"); while (ft_isalnum(data->input[*i]) || data->input[*i] == '_') { name = ft_strncat(name, &data->input[*i], 1); - if (!name) - program_error_exit("bash"); *i += 1; } return (name); @@ -68,8 +64,6 @@ static void replace(t_data *data, t_token *token, char *name) j++; token->str = ft_strncat(token->str, \ &tmp->env[j + 1], ft_strlen(&tmp->env[j + 1])); - if (!token->str) - program_error_exit("bash"); } free(name); } diff --git a/srcs/lexer/expand_check.c b/srcs/lexer/expand_check.c index ab7d896..60759e0 100644 --- a/srcs/lexer/expand_check.c +++ b/srcs/lexer/expand_check.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:23:58 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 09:33:20 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:27:51 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,8 +26,6 @@ t_bool check_heredoc(t_data *data, t_token *token, int *i) if (tmp && tmp->token->redirect_type == T_HEREDOC) { token->str = ft_strncat(token->str, "$", 1); - if (!token->str) - program_error_exit("bash"); *i -= 1; return (TRUE); } @@ -42,8 +40,6 @@ t_bool check_question(t_data *data, t_token *token, int *i) { tmp = ft_itoa(data->error_code); token->str = ft_strncat(token->str, tmp, ft_strlen(tmp)); - if (!token->str) - program_error_exit("bash"); token->blank = check_end(data->input[*i + 1]); *i += 1; free(tmp); @@ -63,11 +59,7 @@ t_bool check_d_quote(t_data *data, t_token *token, int *i, t_bool quote) while (data->input[idx + 1] != '\"' && data->input[idx + 1] != '\0') idx++; if (quote == TRUE || check_end(data->input[idx + 1]) == TRUE) - { token->str = ft_strncat(token->str, "$", 1); - if (!token->str) - program_error_exit("bash"); - } return (TRUE); } return (FALSE); @@ -78,8 +70,6 @@ t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote) if (quote == FALSE && (data->input[*i] == ' ' || data->input[*i] == '\t')) { token->str = ft_strncat(token->str, "$", 1); - if (!token->str) - program_error_exit("bash"); return (TRUE); } else if (data->input[*i] == '\'') @@ -87,8 +77,6 @@ t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote) else if (data->input[*i] == '\0') { token->str = ft_strncat(token->str, "$", 1); - if (!token->str) - program_error_exit("bash"); return (TRUE); } return (FALSE); @@ -99,15 +87,11 @@ t_bool check_special(t_data *data, t_token *token, int *i) if (!ft_isalpha(data->input[*i]) && data->input[*i] != '_') { token->str = ft_strncat(token->str, "$", 1); - if (!token->str) - program_error_exit("bash"); while (!ft_isalpha(data->input[*i]) \ && data->input[*i] != '$' \ && check_end(data->input[*i]) == FALSE) { token->str = ft_strncat(token->str, &data->input[*i], 1); - if (!token->str) - program_error_exit("bash"); *i += 1; } return (TRUE); diff --git a/srcs/lexer/lexer.c b/srcs/lexer/lexer.c index de93a0e..fa0176e 100644 --- a/srcs/lexer/lexer.c +++ b/srcs/lexer/lexer.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 16:24:37 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 16:54:50 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:31:01 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,16 +22,17 @@ void lexer(t_data *data) int i; t_token *token; t_bool pre_pipe; + t_list *last_token; pre_pipe = FALSE; token = token_create(); - if (!token) - program_error_exit("bash"); i = -1; while (data->input[++i]) check_char(data, &token, &i, &pre_pipe); free(token->str); free(token); + last_token = ft_lstlast(data->tokens); + last_token->token->blank = FALSE; } static void check_char(t_data *data, t_token **token, int *i, t_bool *pre_pipe) @@ -72,8 +73,6 @@ static void normal_char(t_data *data, t_token **token, int *i) { (*token)->blank = FALSE; (*token)->str = ft_strncat((*token)->str, &data->input[*i], 1); - if (!(*token)->str) - program_error_exit("bash"); if (check_end(data->input[*i + 1]) == TRUE \ && check_last_blank(data->input, *i + 1) == FALSE) (*token)->blank = TRUE; diff --git a/srcs/lexer/quote.c b/srcs/lexer/quote.c index aefe3fd..9ff5f09 100644 --- a/srcs/lexer/quote.c +++ b/srcs/lexer/quote.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 07:46:30 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 09:22:30 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:29:07 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -75,8 +75,6 @@ static t_bool find_next_quote(char *input, t_token *token, int i, char quote) if (input[i] == '\0') { token->str = ft_strncat(token->str, "e, 1); - if (!token->str) - program_error_exit("bash"); return (FALSE); } return (TRUE); @@ -93,8 +91,6 @@ static t_bool s_check_char(char *input, \ } else token->str = ft_strncat(token->str, &input[*i], 1); - if (!token->str) - program_error_exit("bash"); return (FALSE); } @@ -111,7 +107,5 @@ static t_bool d_check_char(char *input, \ } else token->str = ft_strncat(token->str, &input[*i], 1); - if (!token->str) - program_error_exit("bash"); return (FALSE); } diff --git a/srcs/lexer/tokenizer.c b/srcs/lexer/tokenizer.c index 6dde8cf..777c40d 100644 --- a/srcs/lexer/tokenizer.c +++ b/srcs/lexer/tokenizer.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:26:13 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 17:03:12 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:31:08 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -40,8 +40,6 @@ t_token *token_create(void) token->blank = TRUE; token->type = T_WORD; token->str = ft_strdup(""); - if (!token->str) - program_error_exit("bash"); return (token); } @@ -77,14 +75,8 @@ void token_add_list(t_list **head, t_token **token, t_bool create_flag) if ((*token)->type == T_WORD && !(*token)->str[0]) return ; new = ft_lstnew(); - if (!new) - program_error_exit("bash"); new->token = *token; ft_lstadd_back(head, new); if (create_flag == TRUE) - { *token = token_create(); - if (!*token) - program_error_exit("bash"); - } } diff --git a/srcs/minishell.c b/srcs/minishell.c index cc5cffc..e94ad23 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 09:34:12 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:34:21 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,15 +20,12 @@ int main(int argc, char **argv, char **envp) init(&data, envp); init_base(argc); data->env_array = env_to_array(data); - if (!data->env_array) - program_error_exit("bash"); while (TRUE) { sig(); if (get_input(data) == FALSE) continue ; execute(data); - check_leak(); input_free(data); } data_free(data); diff --git a/srcs/redirect/heredoc_parser.c b/srcs/redirect/heredoc_parser.c index 8c00a73..7fbdbe3 100644 --- a/srcs/redirect/heredoc_parser.c +++ b/srcs/redirect/heredoc_parser.c @@ -1,12 +1,12 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* heredoc_utils.c :+: :+: :+: */ +/* heredoc_parser.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:16:20 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 18:17:54 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:28:46 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -67,8 +67,6 @@ static char *heredoc_question(t_data *data, char *tmp, int *i) temp = ft_itoa(data->error_code); tmp = ft_strncat(tmp, temp, ft_strlen(temp)); - if (!tmp) - program_error_exit("bash"); *i += 1; return (tmp); } @@ -99,11 +97,7 @@ static void heredoc_replace(t_data *data, char **tmp, char *name) if (!env) { *tmp = ft_strncat(*tmp, "$", 1); - if (!*tmp) - program_error_exit("bash"); *tmp = ft_strncat(*tmp, name, ft_strlen(name)); - if (!*tmp) - program_error_exit("bash"); } else { @@ -112,7 +106,5 @@ static void heredoc_replace(t_data *data, char **tmp, char *name) j++; *tmp = ft_strncat(*tmp, \ &env->env[j + 1], ft_strlen(&env->env[j + 1])); - if (!*tmp) - program_error_exit("bash"); } } diff --git a/srcs/utils/env.c b/srcs/utils/env.c index 4c0c071..9bc8482 100644 --- a/srcs/utils/env.c +++ b/srcs/utils/env.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 06:38:21 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 01:03:09 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 12:16:34 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -86,7 +86,7 @@ char **env_to_array(t_data *data) cnt = ft_lstsize(data->envs); array = (char **)ft_calloc(cnt, sizeof(char *)); if (!array) - return (NULL); + program_error_exit("bash"); i = -1; cur = data->envs; while (++i < cnt) diff --git a/srcs/utils/list.c b/srcs/utils/list.c index f2cb7b4..d35ea5a 100644 --- a/srcs/utils/list.c +++ b/srcs/utils/list.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/02 16:53:01 by eunwolee #+# #+# */ -/* Updated: 2023/07/12 19:39:50 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 12:36:05 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,7 +23,7 @@ t_list *ft_lstnew(void) tmp = (t_list *)ft_calloc(1, sizeof(t_list)); if (!tmp) - return (NULL); + program_error_exit("bash"); return (tmp); } diff --git a/srcs/utils/tree.c b/srcs/utils/tree.c index ba346f0..abb3dac 100644 --- a/srcs/utils/tree.c +++ b/srcs/utils/tree.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:48:39 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 15:56:04 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 12:36:21 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,7 +23,7 @@ t_leaf *tree_create_leaf(t_leaf *parent, int leaf_type) new = (t_leaf *)ft_calloc(1, sizeof(t_leaf)); if (!new) - return (NULL); + program_error_exit("bash"); new->leaf_type = leaf_type; new->parent = parent; new->left_child = NULL; diff --git a/srcs/utils/utils.c b/srcs/utils/utils.c index ff958bc..6ec563d 100644 --- a/srcs/utils/utils.c +++ b/srcs/utils/utils.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/12 19:40:44 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 22:51:25 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 12:43:59 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ From 2104ff89d8b861609a197b5a4d646fb5ef4e5fa2 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Thu, 17 Aug 2023 16:59:20 +0900 Subject: [PATCH 45/57] . --- .DS_Store | Bin 0 -> 6148 bytes Makefile | 3 +- incs/execute.h | 9 +-- incs/utils.h | 57 +++++++-------- minishell | Bin 0 -> 91112 bytes objs/Libft/ft_calloc.o | Bin 0 -> 776 bytes objs/Libft/ft_isalnum.o | Bin 0 -> 760 bytes objs/Libft/ft_isalpha.o | Bin 0 -> 680 bytes objs/Libft/ft_isdigit.o | Bin 0 -> 664 bytes objs/Libft/ft_itoa.o | Bin 0 -> 1276 bytes objs/Libft/ft_memset.o | Bin 0 -> 700 bytes objs/Libft/ft_putendl_fd.o | Bin 0 -> 876 bytes objs/Libft/ft_split.o | Bin 0 -> 1776 bytes objs/Libft/ft_strdup.o | Bin 0 -> 972 bytes objs/Libft/ft_strjoin.o | Bin 0 -> 1072 bytes objs/Libft/ft_strlcat.o | Bin 0 -> 888 bytes objs/Libft/ft_strlcpy.o | Bin 0 -> 840 bytes objs/Libft/ft_strlen.o | Bin 0 -> 700 bytes objs/Libft/ft_strncat.o | Bin 0 -> 1112 bytes objs/Libft/ft_strncmp.o | Bin 0 -> 824 bytes objs/Libft/ft_substr.o | Bin 0 -> 1192 bytes objs/builtin/builtin.o | Bin 0 -> 1824 bytes objs/builtin/ft_add_env_front.o | Bin 0 -> 1540 bytes objs/builtin/ft_atolong.o | Bin 0 -> 1716 bytes objs/builtin/ft_cd.o | Bin 0 -> 2728 bytes objs/builtin/ft_cnt_args.o | Bin 0 -> 672 bytes objs/builtin/ft_echo.o | Bin 0 -> 1548 bytes objs/builtin/ft_env.o | Bin 0 -> 1056 bytes objs/builtin/ft_exit.o | Bin 0 -> 2528 bytes objs/builtin/ft_export.o | Bin 0 -> 1976 bytes objs/builtin/ft_export_check.o | Bin 0 -> 2404 bytes objs/builtin/ft_export_print.o | Bin 0 -> 2672 bytes objs/builtin/ft_join_cmd.o | Bin 0 -> 2292 bytes objs/builtin/ft_pwd.o | Bin 0 -> 1088 bytes objs/builtin/ft_unset.o | Bin 0 -> 1136 bytes objs/builtin/ft_update_env_cd.o | Bin 0 -> 1256 bytes objs/builtin/ft_update_env_export.o | Bin 0 -> 2612 bytes objs/execute/child.o | Bin 0 -> 2448 bytes objs/execute/execve.o | Bin 0 -> 2400 bytes objs/execute/execve_utils.o | Bin 0 -> 1776 bytes objs/execute/file.o | Bin 0 -> 1068 bytes objs/execute/parent.o | Bin 0 -> 1168 bytes objs/execute/path.o | Bin 0 -> 2484 bytes objs/execute/pipe.o | Bin 0 -> 1984 bytes objs/init/init.o | Bin 0 -> 1748 bytes objs/input/get_input.o | Bin 0 -> 1680 bytes objs/lexer/expand.o | Bin 0 -> 2052 bytes objs/lexer/expand_check.o | Bin 0 -> 2724 bytes objs/lexer/lexer.o | Bin 0 -> 2516 bytes objs/lexer/lexer_utils.o | Bin 0 -> 1228 bytes objs/lexer/quote.o | Bin 0 -> 2620 bytes objs/lexer/tokenizer.o | Bin 0 -> 2076 bytes objs/minishell.o | Bin 0 -> 956 bytes objs/parser/parser.o | Bin 0 -> 1660 bytes objs/parser/syntax.o | Bin 0 -> 2800 bytes objs/redirect/heredoc.o | Bin 0 -> 2520 bytes objs/redirect/heredoc_parser.o | Bin 0 -> 2824 bytes objs/redirect/redirect.o | Bin 0 -> 1616 bytes objs/signal/signal.o | Bin 0 -> 1856 bytes objs/utils/env.o | Bin 0 -> 2308 bytes objs/utils/error.o | Bin 0 -> 2756 bytes objs/utils/free.o | Bin 0 -> 1180 bytes objs/utils/list.o | Bin 0 -> 1460 bytes objs/utils/list_clear.o | Bin 0 -> 1028 bytes objs/utils/temp.o | Bin 0 -> 3032 bytes objs/utils/tree.o | Bin 0 -> 1684 bytes srcs/builtin/ft_export_check.c | 7 +- srcs/execute/child.c | 99 ++++++++------------------ srcs/execute/path.c | 23 +++---- srcs/minishell.c | 3 +- srcs/signal/signal.c | 2 +- srcs/utils/env.c | 8 ++- srcs/utils/error.c | 103 ++++++++++++++++++++++++++++ srcs/utils/{utils.c => free.c} | 22 +----- 74 files changed, 195 insertions(+), 141 deletions(-) create mode 100644 .DS_Store create mode 100755 minishell create mode 100644 objs/Libft/ft_calloc.o create mode 100644 objs/Libft/ft_isalnum.o create mode 100644 objs/Libft/ft_isalpha.o create mode 100644 objs/Libft/ft_isdigit.o create mode 100644 objs/Libft/ft_itoa.o create mode 100644 objs/Libft/ft_memset.o create mode 100644 objs/Libft/ft_putendl_fd.o create mode 100644 objs/Libft/ft_split.o create mode 100644 objs/Libft/ft_strdup.o create mode 100644 objs/Libft/ft_strjoin.o create mode 100644 objs/Libft/ft_strlcat.o create mode 100644 objs/Libft/ft_strlcpy.o create mode 100644 objs/Libft/ft_strlen.o create mode 100644 objs/Libft/ft_strncat.o create mode 100644 objs/Libft/ft_strncmp.o create mode 100644 objs/Libft/ft_substr.o create mode 100644 objs/builtin/builtin.o create mode 100644 objs/builtin/ft_add_env_front.o create mode 100644 objs/builtin/ft_atolong.o create mode 100644 objs/builtin/ft_cd.o create mode 100644 objs/builtin/ft_cnt_args.o create mode 100644 objs/builtin/ft_echo.o create mode 100644 objs/builtin/ft_env.o create mode 100644 objs/builtin/ft_exit.o create mode 100644 objs/builtin/ft_export.o create mode 100644 objs/builtin/ft_export_check.o create mode 100644 objs/builtin/ft_export_print.o create mode 100644 objs/builtin/ft_join_cmd.o create mode 100644 objs/builtin/ft_pwd.o create mode 100644 objs/builtin/ft_unset.o create mode 100644 objs/builtin/ft_update_env_cd.o create mode 100644 objs/builtin/ft_update_env_export.o create mode 100644 objs/execute/child.o create mode 100644 objs/execute/execve.o create mode 100644 objs/execute/execve_utils.o create mode 100644 objs/execute/file.o create mode 100644 objs/execute/parent.o create mode 100644 objs/execute/path.o create mode 100644 objs/execute/pipe.o create mode 100644 objs/init/init.o create mode 100644 objs/input/get_input.o create mode 100644 objs/lexer/expand.o create mode 100644 objs/lexer/expand_check.o create mode 100644 objs/lexer/lexer.o create mode 100644 objs/lexer/lexer_utils.o create mode 100644 objs/lexer/quote.o create mode 100644 objs/lexer/tokenizer.o create mode 100644 objs/minishell.o create mode 100644 objs/parser/parser.o create mode 100644 objs/parser/syntax.o create mode 100644 objs/redirect/heredoc.o create mode 100644 objs/redirect/heredoc_parser.o create mode 100644 objs/redirect/redirect.o create mode 100644 objs/signal/signal.o create mode 100644 objs/utils/env.o create mode 100644 objs/utils/error.o create mode 100644 objs/utils/free.o create mode 100644 objs/utils/list.o create mode 100644 objs/utils/list_clear.o create mode 100644 objs/utils/temp.o create mode 100644 objs/utils/tree.o create mode 100644 srcs/utils/error.c rename srcs/utils/{utils.c => free.c} (72%) diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c8c2522e2b05a510e1091563b86bcac4f58dee6e GIT binary patch literal 6148 zcmeHKJ5Iwu5PbtKEYYN-+$(SbR#7M@Qc)v8LXZ#^k%;K`MmY$Ff;S%!7}G`q%}Bd% zJU`n{@{R|9%wO)#fEj?EOHovr5H(M_jw1M&C|cuk*sfQ@cExKg_!mT(^8UwWFQ$x29kk;F~FX!(w{iy zo(v=d$-pNAdOj2`#TwWg?dafUBLK0Z*@U|N`V)&9h&8Y|(n1kWC3>pFh#@gKh^NzE zBfdF$I>heGI&tTZ;YDKbkYeGG>X>^nkPLihKxbddO#A-@Kc&eb-$HUr29kmQ%7Ao> ztHqpe7rphzdup#OTsK@Q8rM{zP`6f0v{uXuJx5N>>HeZR{WY*TY8ACxIx&9)jF8-t Ifdeq`4tVW2UH||9 literal 0 HcmV?d00001 diff --git a/Makefile b/Makefile index f6681d9..c6e8647 100644 --- a/Makefile +++ b/Makefile @@ -53,11 +53,12 @@ SRCS = minishell.c \ redirect/heredoc_parser.c \ redirect/redirect.c \ signal/signal.c \ + utils/error.c \ utils/env.c \ utils/list.c \ utils/list_clear.c \ utils/tree.c \ - utils/utils.c \ + utils/free.c \ utils/temp.c \ Libft/ft_isalpha.c \ Libft/ft_isalnum.c \ diff --git a/incs/execute.h b/incs/execute.h index 4e95ff3..9ff5e4c 100644 --- a/incs/execute.h +++ b/incs/execute.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/08 17:49:19 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 12:19:25 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 16:41:42 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,8 +28,7 @@ void heredoc_flag(t_leaf *leaf, t_data *data); /*child*/ void do_cmd(t_data *data); void exec_fork(t_data *data); -void error_print(char *cmd, char *option, int flag); -void check_errortype(char *str, int flag); +t_bool check_dir(char *command); /*parent*/ void wait_child_processes(t_data *data); @@ -41,8 +40,10 @@ int fork_heredoc(t_data *data); /*heredoc_uilts*/ void write_str(t_data *data, char *content, int fd); -char *set_path(t_data *data, t_leaf *leaf); +char *set_path(t_data *data); void abs_path(t_data *data); +char *search_path(t_pipe *base); +int check_path(char *str); void check_file(int fd, t_data *data); void close_file(t_data *data); diff --git a/incs/utils.h b/incs/utils.h index 0cece44..ab49e89 100644 --- a/incs/utils.h +++ b/incs/utils.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:32:09 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 11:18:12 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 15:09:33 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,33 +15,36 @@ # include "struct.h" -void env_print(t_data *data); -t_list *env_search(t_data *data, char *key, t_bool flag); -t_bool env_remove(t_data *data, char *key); -char **env_to_array(t_data *data); - -t_list *ft_lstnew(void); -void ft_lstadd_back(t_list **lst, t_list *new); -t_list *ft_lstlast(t_list *lst); -int ft_lstsize(t_list *lst); -void ft_lstdelone(t_list *lst); -void ft_lstclear(t_list **lst); - -t_leaf *tree_create_leaf(t_leaf *parent, int leaf_type); -t_bool tree_add_left(t_leaf *parent, t_token *new_token, int leaf_type); -t_bool tree_add_right(t_leaf *parent, t_token *new_token, int leaf_type); -void tree_clear(t_leaf *leaf); - -t_bool error_back_readline(t_data *data, char *str, int error_code, int flag); -void program_error_exit(char *str); -void input_free(t_data *data); -void data_free(t_data *data); -void init_base(int ac); +void error_print(char *cmd, char *option, int flag); +void check_errortype(char *str, int flag); +t_bool error_back_readline(t_data *data, \ + char *str, int error_code, int flag); +void program_error_exit(char *str); + +void env_print(t_data *data); +t_list *env_search(t_data *data, char *key, t_bool flag); +t_bool env_remove(t_data *data, char *key); +char **env_to_array(t_data *data); + +t_list *ft_lstnew(void); +void ft_lstadd_back(t_list **lst, t_list *new); +t_list *ft_lstlast(t_list *lst); +int ft_lstsize(t_list *lst); +void ft_lstdelone(t_list *lst); +void ft_lstclear(t_list **lst); + +t_leaf *tree_create_leaf(t_leaf *parent, int leaf_type); +t_bool tree_add_left(t_leaf *parent, t_token *new_token, int leaf_type); +t_bool tree_add_right(t_leaf *parent, t_token *new_token, int leaf_type); +void tree_clear(t_leaf *leaf); + +void input_free(t_data *data); +void data_free(t_data *data); /*temp.c 임시 함수*/ -void tree_print(t_leaf *leaf); -void print_token(t_data *data); -void env_array_print(t_data *data); -void check_leak(void); +void tree_print(t_leaf *leaf); +void print_token(t_data *data); +void env_array_print(t_data *data); +void check_leak(void); #endif \ No newline at end of file diff --git a/minishell b/minishell new file mode 100755 index 0000000000000000000000000000000000000000..9d181f1c00ce5d110762a817c4bba0c92946f7b9 GIT binary patch literal 91112 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 literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_calloc.o b/objs/Libft/ft_calloc.o new file mode 100644 index 0000000000000000000000000000000000000000..8b630e61f0b50b71f097b3c7bb455805383d8d2a GIT binary patch literal 776 zcmb7BF-yZh6n?4FingYMgMwlP*A6;4DjK-Kf=Gofa)y{tp=m`^EJC4B6hjw(g8x9r z&MMT+)iH|@LBUCigZf_Xjz+=3k9_yu_wL?zFUiBl>t_Z)8v$I9qsSg51`;uYTqgYo z?q&T^o>3Y-fk?gt&V8rpi(KfESuPE=%3PU{AI)-^0>Fnvn}P!8cHKL$Y@au3$NRNC z&NtT89>t0jhKws{LbF_Bl%vMBavSG!D%?G^JV#VG|2f~e@{w^@`lu?A%g^fc$Uq>#7>XDJis* zEzp{IEuYPdUErw&tj{9LUjpjC!|G)IEVY(P%Rc%hc)T!&5x+x$%Ba)it0!)wG$A4T YO9OX(?m6C(;{*4sYPD|1C0nHM4T&sd0{{R3 literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_isalnum.o b/objs/Libft/ft_isalnum.o new file mode 100644 index 0000000000000000000000000000000000000000..beb024fb43c977a5ff07b8d7ec035a1071eac39f GIT binary patch literal 760 zcmb7CJxjw-6uqg^inb<$gMvZ_hb~>592G4@a1g2BB9G7y6RnmF<;GA^&_iMi!w@$&gaR-6=75QiKQtbJJ!rgz$_4+ zrB6~C;NU|!e=YS--~v4AhciQl!LNju#Rk_Y;0rB26=5w9{?UT83t1GZUBCwTS#Y;C)9C-!H9B z8|SIDTw3b#V0>p$2cxXWX>d9R))S}k|Cq3$PI^*xUpdEBXW#KfTL*5lG1Q)Iaqk~* Cq*RFj literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_isalpha.o b/objs/Libft/ft_isalpha.o new file mode 100644 index 0000000000000000000000000000000000000000..da20b0195bfc3228a1611cc01e4a7ae55c359431 GIT binary patch literal 680 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SOFEk0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7kxfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw$ z%29yPOc1v;0BNXGfh+`wk5A2rPb*5yO@)ZX$D_J01FF;kMnlbmav8W87+^}kLPkJR z0*JwO@pCb-0Wk=GECq>oK;1C|NDBb@K>Z8>K#UAPdZBJb7AA@v>e2bMv-U@G?GH!( z9+1^QRuq4q2!xf$-y;TLRq^-p09nUf|A1_I35qfx8%Q#AyZ(ti3}S!*G+r>A12PZ< z7^{L97%K!A1$fvwCID5b0L5g0xZ*zqz~Ys`kx!tF$(ff8qzMXu%Gp2$^CO!cpH>o| NS)7+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z4ETG*fLeeoOa6WyAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag<#WTt0=Qwad2 CK0yZn literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_itoa.o b/objs/Libft/ft_itoa.o new file mode 100644 index 0000000000000000000000000000000000000000..f99951707e6d3e44c5bc413fec64ca3decbb3f38 GIT binary patch literal 1276 zcma)5&ubGw6rR-B2CYfJ7Agn^^dLy2h!+onu^AYl0g)=blp$`@bfHa3y1^g>8d4?8 z67bqT!JByVBE?GETTk9|5jGHE4*^pNjo+J{jfq9@k@x2P_}=&444ac*KhCBY3teC^ z&@ePI0h542u0b1A_=n6B7IIskK@3htN_-?zTDgkl`+mH{mzVy;fmhSBh>v=gVH8K0 z?F1M)r8Ks!l3B>>q?F@)0nbHUe@_=25xwp(1HR(sR@Sg&x$w#?tV+3<9v0yQZ}3Pb zKY))YD_Bl*jZsROTbFC4>}Jky_^ z-@qRDv16F~IML6ZLP@A6P{NNbN`U{6=feIj>YapL?F)nVh0R^zR9%-^ZQgZwx4s_| zM(;BXQdvM+qF!yW*qdqOMDyVT)KrPkZph|6)ZL)&@YW%lZ{H-WN;j{PtI|nfa(4is zxoxDGGCpp1!N<8`?-Mg!*E2674@%)m4n!g9WXI{5v*+qF z8XbE5jD;%kP<(nS@(!q5$X|!fozbp?f#zo{6^*~0ShzB&`v{kYdK#zaoWnf<2A_12 zu=w6)@A_wwzEwyv0fVuMmQH%ID4gI%ci_e-){?+E5-NW*W^$`k%;WzibEQ(TBy$zh aV$vvBa@EX}yJkrvyRlI;lxteWEc*>BSM#X= literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_memset.o b/objs/Libft/ft_memset.o new file mode 100644 index 0000000000000000000000000000000000000000..a58395d4b75244653f309add6ecc5517919e15df GIT binary patch literal 700 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%H~)KfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1; z%29yQ7EBPg%mC6*rvh0B5FekK5ua9+n41a_i;qWjUjtOB1C)+{ng``Fa5FGuz}O(# z2#6(s7;G0m7Xup*g8;}IX`og2z^@m5N>w|9JFCD)3fxH(Uod-P{5B>)Nk51ng9?d@(_*-OvMt8XarF|cG zbe{5PJOr{GsQp0)ej!|B`_%H;6XZ6-|Wtk3N`S}%r`spy?IZcKHtBhM4=Ia14e;Z7%m0C=7A=E_`@Eh zzQi-IfJ2iQtjDIcWz;M`_jxXx&;9ZsGbCX>p8b#ravAh+)cWwus+P?oDQZ2a7wE`Z z)Cv;mAEK;xa(sGlXldI#FPjCeH#el!3nd{biERk*nX$3wBcxT1ODFU$ZpOIHqHtJo9x5hB=nuc@hUFF(6iG1frAT9zT>i4gikGBFY#mVgku>v?sK%J_gsMEbIgR}TF2vC;8U%vyu3q z5D&YygIILR4H*eWQIC#pgP$zDtE3Q-s2EE0k4D@Ld-=`D>@Tw3s;nnnc8sy8wd?4|WE&4;K5`BPa>+B=z2}YA zuBv&XvPu<9tz>DX?3}{&YMxj)C^xkN&!!7ZooWQer*E%;ffLH6OF)S?(1M3@D^%d7 zQalHIQM2)6Xj9;pfmY!PpAOk>VT%fX4fM_rT~=EsDUa>sXBz9<+qG)u22&^Lrg2L{ z9pA0cx;k}A`n-;Y0;bjCB?n4ZEp1)RyN#T4**KS}**GBhRk^;zm1S;*s>KgmTU(Z9 zyG&&NHkuDN4LcVuBMIEK!XgSg-ED`8AstY`smdM8+idJ@Hg@rWla;nHu0f zF}vG=U#@OwlDSvU>Lk6m^Ihk&8hs(=b8B05#|^kq-7Qzwn3vw#yTS(=6qS!5AUm7F zq3h|9WcD_B-FLRUw4r~#Bh{HzK36>rX_RQw`ogb(CqVM8`~%7XV)9YRPwSoz!7@1d z={?YG(ksYzC;!u5G2x|YUlmQ*x;0VjHkLjUF5H+17!p|%o}CEWQf%6-nDU>;r1o`Y z>R%~p#U^S%=C1Qc+7!Kuq1iFvxoMvkKmPpWZ1-$|NdK#Rr^g;?l-d74nPwqV7#kk> zhFdR?e+JC{NzJ|sntNFIGVo?Rr+p3>yDTk&v7gd>8b6){L#8wV#%fC-iF41vc{tWy z!|4hWzdKePd!5Gn?h~&Ej2B&T>wCm?zqWz5!=CTgeD<2;_oOdVh<>1%%<542(3}Jy~ zV7U=2MHp}i*5Srq@IZRg%mI=dn#9I>46OsV8N_j%FWJjWr+E_nkbw1=+reOGxt5_V zb_uk0HUqy}UzLK^!+MF%fQvm-{DCRRxF;3pdFvY$C(w=hlWP5u){D1JnjFY?7Ns~1 zJ(hffMOs6WTDxm{#jmWpG2zeoibA>}dP?*prSn8>_MH%b%kxjKPO;{Vn+X zdqwbb@Zi&JSQ^Y_!Q@gF`8>=AbDPtc>Qa)7Hp4#5ybCfxF z$3AWuyQ|u*F6Ez(aqs2)>!h`BhX|o$M_Y50e|Ak0WlojK(M|yyy1R|g{A}-ArWGpZ zOJ^c?^r_$P9|^yg=3}fBzxOXbD=ViQe$M203=H~l_Wp;5mCd0$;6vnH@n;QTLNe>= z9kQAQt1vd2dxc$BQJ;dnKgO6q@-FG-g~E%Gh4HNLmf>+PrMvLB)5&>w&`Ve1yfi5u zj_X;@^QkFj;ySknxQsQ`9>nRK^oH-P;(cn@_dQ>`&1yh;CD8a+J@%^gB(Aw}=u~Po H&msB^D6y^p literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_strlcat.o b/objs/Libft/ft_strlcat.o new file mode 100644 index 0000000000000000000000000000000000000000..1a44b8f2d409487dbcfa82492673fcda67ba14d7 GIT binary patch literal 888 zcma)5ze^)Q6rS}*6i?k1EEFs(J5G3iWsMT#^B8&F6YER5gF&S)$IKlt{&_q}=FyujrC>G8RPF{_o~1Ga$| zlnjHwAUH|&2bj^le>$2Po{UJo1S#G0o*U+2J;&$g-fELQ>V*7gmr)qBkk-b2QZSG* zwXwdLOu2F=v%8vEl5+Zo=~1leVpzulOlX%$eDtafTiwQf=@q%Wm0VAUij?p7bM#P5 z4+PrJ%zt5Q#pDzxzyYu^W_Pg&NT5qekLlmFh)6Z&*$mhWnl)_JKa(ef`Y*hPm{12* zp>_hH5@q2ZR0A3oiWgA?rYHy>!W1vtzx$}|^MYvQWgM$j{)R#k0*pW(jWHaL(rSvA z#;=4Q5A4f6?}=r3-ahPy?(>q$dAYiZm%JLY|6FGi`4gT$x9p>Kv@6lj6>H_huN*lE z6%S4vxZ{>4t(tWzXZ3oW8h4G=Xp;i12B{{z+t|Vl#troQA;)*1r3lvkEVK3;%jxdu zJjJOIXhUG}8J7U&{jqPo&T-54o(K&AUqKv?(*J=XX^0V!+4RxqL2N4V@Rwb=?QX55 KlJ0As&af9Gnwnhz literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_strlcpy.o b/objs/Libft/ft_strlcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..98c68f0743316b5bc1f76fa4c587c67bf9078b5f GIT binary patch literal 840 zcma)4Jxjw-6uqh17QYg~LBXMegNsm|1Q$gEZ?GUz!9^aWRur^~ruYFxr7EUfT*TGU zpWr0*195ZIv5Sy`f@5*8o}0YbI0#-ix%ZrR-?=v-PoM8!5hAUL@Bo^DD=uOHq8Aup z{znX`vlo?p4o_mRFNc&?X4~>=k0;H!WP|(Ftt!}$cVPq9x|#OXk(;DUudS}9(w59+ zx0bUDQcg_<&mR?useBRgc8U6aL{J(bWoAh(ZlqQ-o+jn*{T$UgrgB;NDN1cbOMcCH z80Z1q-St)q0~|b*bpv~F9Yi?-{h5afDZ*gJgKZKogggsjkrM%<5 zhp^2TQOH+FKk9&)D1q8$t-1$NW%r@7C?y>Ix~uR>C+4$$$m{V9O+PO~D4Nfgnts&6 z{iA$TGBM#s9Nh4}!cI6v0~#g=w2u?kDx#&1z`RQJj0?0qG3iNbw+{tiZgxb>DQ{*rY(D|W) XzfXYTM_#n#rnRw>Uf=ntGg(}!*iUF| z3>q9;gXZ8l1dh^>eaCm78WHrtchC2od+xd4%jd^eoXD6W9AFfD6p;pjB`_oY4?OAq ztDXrxc9Kx`3Ya~&<^?+NSv!{<`%pPr$Uez3LX;XK4Z&PEDWB#G9-mh(jw*-D+gp?O zjy7psGm#+69jcBBH3qX=;$k&lc7q=C&wLF%x~^+Z@6(oMiAtfCx(Y6W!@tZKih%<8 zRQmTi#{+5-9`9)voP@m9Str~7()+6Qu3Gh;>e#+KP|bRe%SvQf*R4nwU7>`K=Q;rZ^^!UuH9=jF#27dWeJ^%m! literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_strncat.o b/objs/Libft/ft_strncat.o new file mode 100644 index 0000000000000000000000000000000000000000..2318428921b28eff1eba07002006d7a98fc9dcc6 GIT binary patch literal 1112 zcmb7DL2DC16rOEsy4cpuA%zMaDtJ&Z5cDEcp`rtGP!MS$7a8KZZ3F2hY<4jSfx@bE z4F!+-FT8q@f?|pV-9rvJ_7EWfg&c#2#_#RUrrUxCAH03<%{Slo-tNr)`1AXCmN9Lb z;Q^n4>r;3v!(kWUy9E5hY6`nb99U9AlaZ4inUt>8aN|6#*LZR5q)xKAlpb;4VX$)q z&afQ{iAibJU8ihsss$-e>m@o77kh5f3#LqsJ6VBVb-PwFUFq4+%l0!VAKagSNV00K zWwm$=8U|#3iTi`oFd=f}g_wRS-dQC<3n^toMZ995Ul2bwb)_#;XNN z+k8aggF`A>&0(J^VLt2$?I7SsEq>(hYr-6TqETWn;9V$mp)gN-_wKw;pf>Lyg$^G= zqO)^bN5?Cvl{YyZV3)w%oZj*}{#PyVI)iWH@p#g`%|lXY@oTj`& zX1@gga13o&a!=Xa3)$CG_ZBjW_Yo1>^L0d=SKda%SuYmjm|sD}k>?R;UuF@}NKJ7) zUMDy*x<4tHT|QG2md2T^In_@vCGO8j-US(@Y(%f_-}SrKTKDwV29 G4gUhX9Y5Z#L!#jm@{s&93 z5KGZQut?6zlxYN02$m`#@l9?niHP99%e;9zGy67N?(41GDumG_@B=ghH$*}Jq7N9O z`j7C>^4#Os*eM9KmqKehnzTLc)r)dzv0nS^nF;M9FSTeE2Q?0&bz~#Hxe~GUPGWaG zv8wgVbmMuRixB6_fak@6A+`#o9$H6ZdTnbZ9`!V>fBO62)(Oro@8eQ*2odu+du^2e#ly;ZQO^Fma&}&o6E3KX1ebYa)Y2Wf zRhij>avs&;T?J9?Ir}V%v~5} zx&;lzx%#NrY>hveDS9z4WOeAtnJpCuSywIePWI>4Dz_MhwFguq~0 J5s7b7&o}l;ioyT@ literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_substr.o b/objs/Libft/ft_substr.o new file mode 100644 index 0000000000000000000000000000000000000000..ca036a4033848a9a967e5fea655e093d382688ea GIT binary patch literal 1192 zcmZ`&&ubGw6rQd95j1sku%Mt2!9zg;(Ss;fi0Hx;8VK5;7a7u+Hi0$?+YJV#pv0C; zgV>AUKOpFTAP7yW(o_#NC&@7vApr%29HNJ&-^{gxNKIkW)B|y1a57TjBN4(%&1Qiw!SESj;EgxxSa-Ujb+?BYO`x4pv@O4L?GKmxTpAUptJ3Q_XBT!#;kNwBwHlXI zyFePXmd9bC06sP|YJ7~&gSu_9PH}@5)*4J-_Y(Hv#=AaLHR|vg;2P7PKY`n0x>Uhv zb$&hEEE;9KK)(~@_89uM*H`$x#Rs@KKXE+ZXvQv^f(* zdxMv9^;!9Q_F08yo0CR8RGbO6UUs`(XMWU#>${^K+73g1jy(9Z5L->6yf5k=6UBg> zQjzxf4%6~J&F7u)(4D$~{8?z^0Q*3kcff9*^lgmXn(VzL;1wwDLEr-{?$Fd5ShNT7 zb{x2;?0IEj2p^w<)!{gD5soWl{-KyKH_k-X%q-zuh=gfoOp(Z^EG8B$v6@@JgSK7E QTu!8WZalWUoQZ?u5DAag=>Px# literal 0 HcmV?d00001 diff --git a/objs/builtin/builtin.o b/objs/builtin/builtin.o new file mode 100644 index 0000000000000000000000000000000000000000..189e89f290f924ceba8b176131909d6cd1985ac2 GIT binary patch literal 1824 zcma)7&ubG=5S}z?8*O!0w9Hvk_tuIG;T;U6`;vQFIsb?xYZxhW-Yz zSyTxbaFQ|3ilA{Q0O^^wI3Qjg|U^o zpe$U5{U*-Ao+a1(++VS(D^}&3X;sT>Rt@^_#AVc4<~vyB8kIU3 zelIrfhu8U#K^&`M@?$RJAzPVzoZt%<#f-OQa--lygZUNZm-$g!y0bIz8_bu?#I>|C z`AEUF2JoLRMk04(}OM7&q;4?2!0=dKR`Il+chVdGi6f_Anty;;H$>n<7@VA5%U9VhE z7=Ggw%Joje-=P??P$8w0yA1#MrjYJYQ1zQ%`xMyvaNYm-lDo{~F$u}dcVthJW9Meb zDdjyXEKE|-op(II!pt0udmD*T&heF~pM&(sbwv7UcboVwMULGWrC7;~nZ4b~$KW1- ze-E_(*Y8kNeWJ75%?BOlxA6e5FmDK&*^oTdr-gSCgPb5r_rM}Iy^0=qj`T-ZOh@`P zEZ!ph92TRUc40wH55Oj24T<}Hpcms6Sj79@Df~*|X9_=2cvj&lg)b<4M&Z2*?^HMi zi&o+1vAqh+y|tWHSl{a?a3oATB~i@#DCYZ)VjjsTzSx8hHeo(*lush-2_A&d%DIqR yObl=2#PAOP53W63kW8K`;glR(+$iR6d3iT<^N2AOb0_SaW8c(KkuAD5TGJnzye~ii literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_add_env_front.o b/objs/builtin/ft_add_env_front.o new file mode 100644 index 0000000000000000000000000000000000000000..9b8bb34f6b74ecf9d618bfabe1ab551bce6ca743 GIT binary patch literal 1540 zcmb7E&ubGw6rR*JO>1p(P^cm{2f-d(EZzk}4a~t}l@>$@lQr2ik#y5;H#Ud?C04pD zLJwZN`44#U;z3ZbMUP%{l3s)aEc6&WM8CKDCQVa&@WGpJ-tYHjhWY+`zdI^KKU=AabH-cQ;1m6Tq+BfaW@^p;xEPj_UamJspH3&UyDrmu`Kg zDL&E2x=xGgpqCc+GC_4--T2sZY19uy{6&h?KDzhOy`RPeRQVf*X&!dsSDW6K{=`!> zRiJ1Gd1+*So=U<(C3j~tJMrnTUwt->dItsR3S>}wlU`waCTM`->2y#(6$|>Hlk&%; z7wJh}B(w9-TrVO()1z<`T));4uCnkh#AEg(Ywn(4Kg;ovC-+38mWU)KMq}HExeWb9 zaIE_$Ag(V&YBKS1Xzq-DL*$3+5)16def-m}48JD(aX-iWy70jpHTHq{Ka3wh)G|H* zW5D-7yybJRfy0oW197@W7KpYD{!)yqkU_>xEYL@jjDSGS0w-b6=XZ%^eO`3gao9CI zz@|?WYXdUb`t5fH_$I+bPoF3NJ8 qileMrDRjc0Xy?q{zHHfubu3G$oMV};738!lc_>gXXO_#AocIgzNe&JG literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_atolong.o b/objs/builtin/ft_atolong.o new file mode 100644 index 0000000000000000000000000000000000000000..88851a1b652e0fc8b979ec1ffab66a019ef7f093 GIT binary patch literal 1716 zcma)6T}YEr7(O$9W~paVkwK(HP!TgLgMuI|!^8gUUfSGtBk8-#K5-{Gpef^PcB@pYxpeyxZC5U*9(> z7<24nm@rB)W@*uY0XvFuneZ-_r;V_b=GYjTjD}7#DZ{?8Ffo-$*=gMBw9%%2TcXya zN40z@V++yzVBsdxf_Db2-YUjwm(>mii_#9$XOCDmR3)2h*r1be^ z->_%MXXCB)wdjk?sx+&Ej(s-@9bn9_Q3*XPmG05mpir1B^d->tpfU%!- zV33h64cbe!>egcQ|JEhqUxoRtNyMW$5s$2hq>-WBNh3{iNh4K&i3GBbBk2`NiMWvy z2_u(iPnipjcza5Cm-+lvmz6a0j8D8GRw9}qmhiTx_a^f57m&^a=Y{#9se6&vGpk?mXdbnA{BjMuj^yZ&6uWMoy$epFT^t{6G~gc|-&EY?69=Z#f!1r1vg=2``xszNMj ztW(Wddb?O-W(i}xdr|jC>o;Gt?5EN{50aSO5{sQdtVn-uGrPR^L3Cn~xv82RoksUbKcwQ!asMWBjJX`HstV^*sGLOn7{-frdOwANu8*&ZREh8Sj7B=%+@pPR#^625TY$#q2)|Ty{H;u%Y=IOe(>CJ(ItGS=Sqg?kL z?ddr6 literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_cd.o b/objs/builtin/ft_cd.o new file mode 100644 index 0000000000000000000000000000000000000000..7dfb1564cb09b72c1a9df5fec58dc4bccb2ea7fe GIT binary patch literal 2728 zcmb7GVQ3sh6rR+kxh75SM2js5*?_eLS&2$O1C^-RGGMeZG+31|IrsK*N0Pg^w`Zer zCFOe3WjV^>1Tu5gULJaiRj97f3^SY{)6~rUe`w_-;=v^U&a8e@a#wQ)+(3szO zeJ~XrZ|0DSr$yGrSSnl-K8kq^Q@)C5D?5ZqgEl4o0`j;UxO|wg6(IcCASMmkiYEC| zu17Hc?-=I(ZC+gO=6<2dm#kIt|C*xSpr}&hzE$DHLWM<3v;!}nHgQ7A6j)Ur^ck2D z%os0D$3W{MT7ZD%o|YYIq2gP=NVm0@LPDcI#gOr)B9d9$VA0Fet1?`Wukc`aRa$&& zbFJQ>0)xqxtWC;2ur_(|X7|Wq^5JObWiqg6CzJJFS|3D(JdiJ#2MiT%aDTq?&-OO= z=T-=Uc?sp7Gk6o%h*-;~l!63;q?db65Mk%ADC1Hrok!4jj5pH` z++UKLaKE%nUiT<3N~B(ot;wuZ<@qYse(6U%Z_s;FYDGbyg^(GPiQ<tH~14j`K9YHMoUp>1G(mxZqiAOEXt_Sw&bkt7X$r*Bg? zUl;s!eP3>4phNxdQCnwx4zY0R=hp-S#AI5 z4)#8}BrzUTu*d&irDsiV4zZ@`SX1msOJo+T2cW+n^9nkRhR&a{r#fP9A9$u6*QFf9 zqbdhC6;Ic(FK+_8)W3?S>)Dt0E_hcpPuI0C?>cy=wp2V_-yYr&>c{WId=`kKI(ia_ zpObkX5O=iMruFn^Li#F5r2iEd0WJf{?^~^()AFal4%jaOapjvXkoFnZcKZLsU14tF zEOAz+Zv%<>lu-Tn3PnXpsw%$Or;*8vk#Zgvb`BEoUqtSg-9w8um`Cvbb%PA*3tAWKy; zo}S1%SSLM!&#Od!DqLplNvs95aeEvdLwv23LYAwDsYwNWDb56PrBh5!Hn literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_cnt_args.o b/objs/builtin/ft_cnt_args.o new file mode 100644 index 0000000000000000000000000000000000000000..8ed69ebd551cee8a96f9d7712945fb16907dffed GIT binary patch literal 672 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SO68j0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAajHfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw! z%29yQ5=;=cQ~+tHQ-Lf5h>uUrh)*j@%uR)e#mA$%F9E950ZLmy&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW1~+jtM|o0LTaGX9xgdWB}3&bt|$kQS4BU&Zi!owLgx# zegUcX=yv_#(QLuM-y#d-b-R9PKET-N`o*K$_lHO0K@O0LPTwCdum1o4A1E1n7^DXb zpz(p>3=yb2V^t6XV}$^t01rFI1fVJvptuYWHvmln0a$!8IPwX!F*)}MqF;=_$p}MEz2QA$`Ck?{>>q~pGh)~|udKV&Th?n7 z3@7Iq#d+5##%tTO;pnctVQtjyVb}76mhbjKx@R~8XxF{!*LuBPC8S~H2r%RWa-QF9 zI6g9JEkqP;`Fz-m6v!@0i+5gPlDDD}9uU6)v6ZU{ZJB|S4M6Ktyyn~EKG zt7|05KijD25SLA08m$~8bP7%Og|qKLJWwz34)YzT_i(?m_)sYLsYFh+t1CcV!u~n< z$RFr}@%IaHw=43z<=)9Q?jzhF++!T;I21PpTxmDp+naA6UngELyj!tWM0`$tKo8|> zh?K8#UgSK12)VH bgfvqLb5bU!#wUcF#b0MO$x%+FGoZ+c(g~toxfi|xoCET2HI7pakdTkc`4Dr|z}sLAMn63O zsv*6Cqt(Oz+&|Rmo*sWyIvpM8%mJ1ZP}kYeo`{D|or%sylU$_E?s&9oHC|npOeUGA zuHP;$LvB$~kJ{AP$@ia}L$TPG$M(kqn}aedQ)kYh9)DC%K6t@KOI;bX)csHm*4>`! z`p-NS#;W7To|}a6^Wtj6lFU00gQ+-Ul=WhTtf6h$Cl~7PP$lo>0$~3tqI^fReA<3J zck7hgvBV~T@@4?WZ_s>f_#PPd+q_fgv)91*NtzeI^I(wl)nuTCEGCYDE0QkFXqmT~ zZ_Q|VAJsf@H(}fq$-)u-DM^0h1_`(0wE;xzdE8;Q*N!<#Vk(NddDYX<57_N@h<*c> CvyNf_ literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_exit.o b/objs/builtin/ft_exit.o new file mode 100644 index 0000000000000000000000000000000000000000..f0a8f19bc152ca7102e94e997fb77c63fb4029e1 GIT binary patch literal 2528 zcmb7GO>7%Q6dtD~HKENKk%%IJlBzwlM2lP}B@QG~fG%1I0#)0fawtROY?`$356+qz zkfl@`Lsm;52P9BWm5@*c2d)TEFa%`if%X81Ll2e+C_zRtCId6cET;U*Nih2_z=hiqMOOM1YIiN8= zQ*BI1@uiw2pEB89jE(z!(h;=%XyPce7S@bLLX(pJ4Dx7&j^2q}p)sDFKqH~4sL@!; z6_Ece!>0SI>6F8!o2#0hfi~EQ7BszVXqnhd*H|{a+_ErSW2tDAXg;%OR4DA^mI7Ly zs>z%ih+yZA76j7ERb1nyWbkrTFSBHN!^_@K$#+RY)A>4lc5&<>tz(AR*nE9HZf4bV zhnL-eyb)Nt`;AU z(iC3qrfdAHyhN4-S!PK%T%&{qF>PiVKsi-5xIsU2zR_zs)i&*oQ{6*JPxlA02d2W4 zM_XtME`;Ie`$>Ddy&>S-?$h4d3un<-!;`HLpvL?G7LEv2jc2UYpSIQ^^L5H0QGafx zg8iv1P*JNbFsjADDDC4H^bpQkwbaIU()e1v_(dv;rS5z^qx7h;s?9mzk_Y`9dg7pC zLnYJem(@bGG}FIbL>~A73e63?0JT7uMSZTc%$0)#z)9Dbdn7Xw5c^$Pc?r9MgX=uI zXk{nt7N++_BHi7+k#P6J(PKTmy~m>AD6`V(WExyG$;&RyvPtHZ^@xmYiQiD3_a$yi ze3~vCNVim5;sq67+#ycyAxYrXlPr)81wwoG1n0qW2tK;!-}@Wug{b@)d#p9|deam8 za6Jkk9LkrmHHlN}*cLYl*#3VcPOWEK+&jQsQ8=}(ZE>Fi_ld%(^=-jj*d^{{{Yhxt zwR*p_+q zg2qp8!Grj2AxFah0!{cIp~2Js4K!Xo{WE3128~avuBt}ouxT89l4;zK!aWF$3qXGW z8ebfJ8X8kIzo_(}(w#~}iTIn)tpNJ2_{H+B54zk2#nat$t3>h@D%><*kcTY dR_p>7@4Wp=%Btf^CSW14^T~+>kHtqB`wv%L3L5|b literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_export.o b/objs/builtin/ft_export.o new file mode 100644 index 0000000000000000000000000000000000000000..73483d45bb1184f4f332b002735b9a4c1e843457 GIT binary patch literal 1976 zcmb7EO=uHQ5T0nQ@ppqLs0htLLC}>}iV7k`bYcCe6tSQOd8WzMR@)@qZZwJkVXbyu z3Lf+l}|6)Gg4w1*yoRO>hU-p2gcg9Eek=Kp&$yZhzmkKdb#A{z-0 za2t4r4{(Bxxg636BsG}w^D>n(@SOte8B?)oOxPC3v{>rHh^33%DESrdS zu&Iq6OOJdCk;;zbk|{^zGxvuwX(2A3ulG-@I$_dd6k{y$c3Brk6(O^Pum;6|ogA@3 zy%FDGb&(nACIYVTZfx2{G#I*A9tZCQ2V>E;QahN5o3cFt9DJ`BhBOU{eCh==ab0H4 zft5oXpP$iCn?-mBJz8+Yy3tcv6LXRA$!J z)|wmn#;WOl>b&`J;F#9&gkwqTpa8#Dtj-xLYyo8Md6bX7Q3a;BTZl!pah{EDthl9! zXRIg}!>v|6qZd3kKWZK4N!F9|sA3)f%2iM-5jXupR9&D4vx;<;Ouq-tEvA1V?mmdo zgt4TJ@2a&1m_m%SSF;m6OV5p^X`sN%K$ZTw2%Z@i@giu1W~UnZ<)RI0B8n|7nBE+K z)ke9%qx3%11FQ50;|qb;IKjVfG zS5R>Z??2;SA};Y;)>F7!;vV2f(nh3TQSuBVekFQ0B(UjwAn{h}pK%v_==ys|d@Fh< zWEAo>dSEO1BS?hmSxC6_6Oi~9>HN8Z^jmnq-kwl0t|UZY?}FTkfD#)(r@^d;d*RKq z9`0d3jvDKV_*kdXvnHKqQSX1#q>nb~e4qOGLruETq~B=LNu&m?)Lmg^?vWUClC~qP zLN04NBnBFeV~(9kC1Flw9FeqdkCC{O9m*ibCXus;V3mm?Yo{&P^0{=8T l7CI$iM_J^g^SSUiY-MUFM)S#G5^3w+P#URH8?Y^l{s3n=n63Z- literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_export_check.o b/objs/builtin/ft_export_check.o new file mode 100644 index 0000000000000000000000000000000000000000..3b65a7f015991d07362b819ff754a7cdb358a655 GIT binary patch literal 2404 zcmbVNUuaup6#p`3m(99cWyARgdKE{768|AG>jF`C;XYUx-3l_C-?HSUxh}oQZf<4~ zf`yxmW}(st1%2zIkNTkaAa$~_fG=)u;!|lWBoHBw-8x%;=ic*WNwdlH!1>O1{{7DR z{@m~WcIU6{eL_SY5g5RG!O=Y!bTH^?@B%p=K!ry`$4it0QaUgNG2szO=~;7LI1lyH z#s{bG>1wt}jerP`a=!w|Fd6oWc@m1GOcg!Xc4pWhWj~(6k?jAT`&9Ydu2RuoDnDCD zraW14KCzv&l<%MDIx*>RU(0MfG9(0qe)MI7Vykf-=_r(6$;BY8ZE+iWY4I0y}0sETWtQP&e+H{&oHAwTw23 zlkHtk!{ER+p)`yQ5>#7TiTbytR(ZawALE5Zvk9L^Uc&G?1!TMo$-YB<&DHbY5j_^{!K)y(y_D-VyGKU|7xUWG+W>8?Cekz zJxN-1oRR92P5+mOnYyK|43GG?xdxSX#KEU&9IQQXk!9?Rw}L@GtXg_+c0~;13>8_#WgxhgX0o z7K(xVL!n(nKAjSgxsk}o@V@90qF#jkIq=CX93qJO7vi0RBbWEQ_qcldDDDJ!ljC?D z_l?UTZu##JkNdrE9KE~0KSbP5h#T1s@pyd$c&D&`=ry(byha1lN05Qe=Tl@| z-G?_>SLgpO>*_o|gWdxtrgrJHu3kTVrM>!vT{^9&*Dqu$Yo#to%ef?E27mKHI_X)Y z%J5SWvf$=t@MD&i>*ifpZBHc?a;2i0mz=cao=>^~id{_RoYJiFSr<#m90A#mmr+KC T{`L6fTQqu-QVQ85+7tf(8Epto literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_export_print.o b/objs/builtin/ft_export_print.o new file mode 100644 index 0000000000000000000000000000000000000000..0e3c966fe21a476fe853897ba27187b42bd773cc GIT binary patch literal 2672 zcmb7GU1(cX96#B*E^b{DWYrCY#^GcyS6dyphX(4$g(Db0m*Iosn%>;5)wD^Ido>mc z)!Rw0mr4cag9z@ih!1<&+=I^A4O>NM`qqaIf>cOAK}V3Vsqyze=iH=Cy9WtNQ@3PO%M#jFbj5mbo`uR7{+#gfuBc|d|zi^DN%*n zWWrx|ESEBE!x?{PbUbYs&p+D~Vi8t}TvW_H_@hwg!;GmCY;$QC)`&5jPmNj9pgq0? z<*%&#m6Sh4vV)9`1Z%>_F^^!1Rzwc4PD~oKDe!LHuxBq}(jXn06feap zEwT6?BgwsAx%*om_onL0dW|f(uh+Rh80DV6F4x6qg#_+mh@16mh=>Uq3T5t2m09F` z7un6leS{)JRnmuSokeDzpruc~ibtfKpD1%PS>s;EniLF%X*1ucxj%$Fr&e8RG#cEW zDhJzCKva}%uyAkmoxMK4OZ?0FChhJ{ZL-LP#gmPNP~<$7r@Dp*gj8yziY>5*UiT9< z_xq41p4?pH?m!7aUxboK-b~cEKd>S+lQnkG#nO)fy$H0n+u>VI--{5{yZtf4<;&V=g&m~m{=HgdSwM(+M?$ib<8Yefh z`S%Ntq#yshrB=N!VEf53MD(^%9;){SqPh5Fi@mkUa${ew;m~<{t@B<{eyeSikH}2 z*2@%uDs4G(?Qqz=9goa(gX!yK5p=nF6V98IY%NL=TI1fT*bFttDMc|KfLZ@v$RE)K zHTM(PEL3fY$WsN!FF0dDPBy+nf2R!@zn`eUOqOaWRTyDu%gm(mR!l3#V(fS!e(cx* z0mlns(e~2#j?z-EBe|5%MMWG$yD;Qa@d!$a^NZx|kT24U3ge7~9rBpEAHKbd{IKM+ z(BvyDRE&nAUHilH@bWPDbdQ|6L#=N#RQ!xR)gAp{&ohUD>w)y}_h2QZr}EfUF9W@+ ze@lNVpI!Anf!_2#QcvZztKK){PwA=rcIf?#{P7aiE-SpC@LeEUq;&z2i*^TfB>YU_ z#|meGhroXih+ofyqTf{X8AZRS=*JXI_c4Aw4@uPa0`aocQm8HN8tr8u?SC0LAO!6z zAXwTLKnyL12d*aVRUi((_5zUnodV*D*G>S#z-b`tI^R$@s4%7wAmm>HyP>#942(}P zi4M+}4LSlkI4?0p2j{C_(Eu^%I|Ay>@pT(b{n#r1u#MK+=-1n5x{J5k_q5UPx6!1# zRi7ETeD)l^Ck!i}&*lxQIBGLv*ft8z5I%&k%v+X`Hq4P!-pCOnhp!_Wdbw=gHnRD& zMM}`O^Jym+EXU2U<~n1IGuT_^TZT2^q%zD%TW^o1t$-2^hlORPU>8Owt+q`joU9FA Wfi@g+hK4dAC@f)OrZSnV$^HXkeP=cR literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_join_cmd.o b/objs/builtin/ft_join_cmd.o new file mode 100644 index 0000000000000000000000000000000000000000..88463bb3b4e95ef924d2a1118f25ad80e4290765 GIT binary patch literal 2292 zcmb7FPly{;7=P)m+f>_~C|mr4ut5a{nX(EVgcefUfhQU)(#2kuXLd5XNt>O7G|{vW zjLt@OIu!Pxs5cKDy!0Y?E6c8}rZ?A%dRW*wtdKy2IRuQ0?)v-Qyy>RN_TWd}eDC}B z`~JL{m!Eh4+&juxY>eT7HI5ZOf=3by^fcBA86HCG6aadOVnC4$Oh!wYnGhALRw0j& zgt%y2x)@0Z{52{BM0gb2o?vW}6yvNxEFvMytCe!zUQ~)SN>=4YaH!8L zE|oH7MO5t%^LAE()7-KnQlI&GHpTd$yp*_kbu!txr=^Loy1o(wGW8Z)yo?XBqqB+u{SgI8+|C?sH z`v-TrN$%GB+^hH7gy0%I&*(YpF>dzP2vusiYqYsjZ!@iV96EmUOb=CtCPZ?t+CK2} z$oFn??#{v~ZF-qNnKpf%F_kYt`C3Mg^uX*hZTTE+Jp(wYq*I$hmL~@^+^fYU`k2wX zUmiBxOC#b<;HCSW@AmiiQ8*GOka#d(O7`bggO<@9$obb{8PKQy%DMthI@c0x#n{%G zTIB205={GiV>VDJ?_e$}DeJYM(Ho4p4ZuMR?zDIK)-Vxy+kqLIHqNWdH_$K-<<76p}yR7o(T&;(sba>cHLi{pJHyc%gtTxj{iMa zT4!%hVh0#h>cJBV&*$K5T1EiaurV{;Yn+bbq|Od#w6&?YvzyeGPmU;$Y0YC$dPaaZ z$u)xTmBN{IZpm{Bka|_U4>QsEaCf$i(FL+68MoCkb^ya#hEL2hw%iS8W8Y10IrQ3G zhOR>fbQo|m?Q3hN!#9P@O}b+|!h`fi zzY%*w*}s2?eM;fSuD{D-wL~m&{Ahd?C@(<&EZP1+SD=jYV`nE5pB_1P0@s!#^22A# zxbjndu*3Wc@LN@Ws-HvsK7-$v|Au*0Ux)hLhM%weRDUCWW4K&#C+fdp4)_lBufXxs ze?*VyLB9>&8mM4j<-_Rz~kVzkc0f+0f$O|101)TekRnPd=VU1u>LqWNN?Z) zzlrx1Pbr>M98B8b!zS^F&VNbCJ~+|qSY(gR_bnwy=XnD%)fmx7*bIp5+K~Lkko?|| zJU=8qHzc1LlIgn{%*Vu{RT21W7N%WcqEs#};!jXm<#MqstXdwr1!=dhFeqCsMezm8X7DUkE23a!7N9O$787R9GOq~B&Pu<_MPQjr NppG)eTYd=$w>{dkM;xVZPQLC>(jaTKCDh_YpIa%zgVill$hX7niqm#__!w zUTi*W7tF|uzptQlrP^)K`EIrEn<+g*mE7@^mJGa0%7;TO*W z%P_2*hB4vN<(z*p=g;SS;ZE|2J7K$yf674^wnGm3%}8R+R#YQ=;2^*mac5(dxE@5l NAbh{Nw$}F1>kmg`l&1gy literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_unset.o b/objs/builtin/ft_unset.o new file mode 100644 index 0000000000000000000000000000000000000000..7fb58f256fac422ff1e51e2882f6af8cc9429169 GIT binary patch literal 1136 zcma)5&ubG=5Pqq(4gSg=JVa0kC?14dRIt!XO1tn57DXBmq&(N%S5s*=%XU*!p%@4V z%Od3H)xW_@&$du+>doUGDnwB5SUfa-^WNKajT9W1{pOpQ_s#6DkH3B#&oWjz#c+X7 z!*?mD!C{x+bHq=u$ENnhV8)@z$Vrz>h)DJ#9c#W~KV134v*?`(NRM`zg8=D(^a(N( z!tJyJ$BjhSf4=T}Lfl=-YJ|InGz<=>^ezGP5Rw_tL1KpDMCd*iEp~?sQ*6JQ@mD@`l znXf8O=O4kX6Y3XDYw5)UR_a+L>)dR42$gHdUxts4u{F%-Gq!NSdNs9pK6}R0w*+tK zwy~M>Pv2Yg;1$;20H=XnAjZ@;fTw{?Al_a51`yiyD?oh5^%@X;Y8+t&yn-OJJBIg7 z;vTS2R&kL(ny6o&;Pn3%`<)5Sg!H#W)Dcb?I@?UF(GRsLBNe%Rg#6P@kWfnD3Ag2h oB8WmJx`F3JQXTd>-6tDT)wEhD+np_`4=J5zopoQhZ4a}51Lg&@cK`qY literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_update_env_cd.o b/objs/builtin/ft_update_env_cd.o new file mode 100644 index 0000000000000000000000000000000000000000..430ce8f372567701e7b57733e2f16bc7628e9d43 GIT binary patch literal 1256 zcmah|&ui2`6rQbhyJ&S6w6cPSf`YvS7R6)5VhbZE6zPH>GQ?!IyI`{+o75mI3aio( z3O#xD&k&C)C|>N%9`_8ppQ2kyqv!(&@!JF^>{N`n5^6BUIgBivuM;I39G_*E_ zWgZGS3*Dl`KcuU23)BPAJ~$aE@sSAO%h1p5++SO{v-a25)-PocANB5Fuvv;tvnK>v zgs=v_*K^iYK#0S9nulf}IZq#05H;>30>1u+Yg)btoQFNf7UJgeBnhLYzH?p$Ti_$g z6pKn7q7*`QMaMHYWZqDoZ$UL(Q+%t6Pr2+kj#Ar%m!M5()>c2ps!$Tzl;Zp7uK`0G znhQifTZI;ddP((}6m$Qx+dTThN8egJ8t(HbNO{yw_-L52`cv8pX2R;v=%)Dg;zvM2 zj66nl9Hg&l+dLAjj8QyB@tHyakK0L>|GJe$Q51(w&52h-rM`;pvxAqQ&H6W%C4grKdqd~ zquZ+^Y{mZ5N z)sla)7j^6HaAg%_4d}x_u6BZBsDsumaA7Notk4JNF(fxjU7N%-SL5Jf zb_xhyC>AJO6*a z|2zNr&&^GLzWe9>y+Xtu5%|E^jS=64j|2wnNsLcu;Q=jgS2C+=~bK|Yro zxTr5(SSY5_W$EPKpUY>YJaekIh{*;E)q~)W5ES|%E(A;WNlIzwWVV!AuysPTz6v*{ z$$E9xV^=&bL@t;UzJM`?p{~MsOblU=(WVq%MIHNrD~}3s6^MNCItCeSMT2swR!|?> zW-R}A%ll)(^4+fGI~~iPX<0S5(;_85xk>Yyv#H#pH!VN8fk@Y?IU6d3K*Mu4g>i{4 zlb1SHjYOs!no@H$w|%%r(aY9ypb~6od218ru4SJy#;dfy$gXgGlT@GY+_9EV9LDto zd$&CIPRzJ;64dL-4rN%iWYoNjGK zpAu(iwU<<`+f~Y57osoeh@vW0-)&m{bu@{OZc^VN)}(IuKlN&AKR=k+(3$H&M;gdk z59c6-YHy(fli?2V`4fHj<4lM@L5^ zQCwP6m*}k}&RsLcMY#XH=Y#gwyR9jKB+99bsYKPfS3*&2h!)~tzPq8Du>DwItr0W< zJ6rzLSbH{{yZqu&H2FJfv@VNT5L8=+#Mia>D)ZcRtgS}G>E?Moi7p&h^Y%ftBR$j< zoS=tSlOk7PjGq!gKl;Bf+x>VaR6UEhE!@hK-UIp%)s0@k?R{Dp0^Fw^FI0bj#0iku zKG#Sc?6W$1e`_3E=ZO1&^#s2aW12URKS3{1*i{V!>(q3z*u^(QtTGZC*|#^o0@gE# zJ%y3`7vEGE*Du7>@W{uzPVUF+R2lJb9iquRKF5x{dGNlyr}g+eJMw6+k^eN0&$T1( zd+@r<V@$RFa#QTf!Hjwx?fyDoc{W=hT zqgD1DAg!MP;y1v20tiX-AM}!Re*=>4uZ%wciT5Fp^ou~sKh6Fz_74Dww}rD3?;9X~ znar<&*kbfkAnAUjeUpB#$$txoRP$vZe&Wp|K$uDYZ{Y6CB_P&^-e#O+OfUk}Iyhn& zA9V`AUd2#8Ex=yGAU}8xFR~vzcl6pfn2V{XVuV~lubHs_S;W5*@#%RB^D_~@5b=*i zd?C-8A^M2gc<=+K8juKVeCOtbh8D5kT^FhPPt&eB^B{}VV)Dx{`}oxq(IqjTZw$d z`BKJoc-4NVU}rghd8}>3VnX({AeAoik!l4)${9OSa&F~$uAG^-L_oa1t1{o$GG9yP zlOns9v3$5Dd;;7D4qkBjS&{%%z8X&c{MO80#!S1F1 z2n3^E+hWSn5pwn^3uSeafz36hB|(wic}uZ5u-+SK}roDZ|K=R1bEnz0U4rZngzZ7Ud}!{)oHO#DjI@J6vQ6igd* zLNwG$D2+!%^PwU2gZI-#dV_(-rT4?t{#cZ~Cx{KZZny6T<c$`6U_>Ct;#5a5L%~>eRZ@zW{F* z?C0W*3s_=HQLfh9Yh;wP&=|{KPVer@7uG`Sv_HyMjVzRdtjX9g8-b#624SLSDC*Zx1gA#-5lDXD0`aBlpG)~uAkL0n1mfb*-;ny3fW44k0HU>{^nZ$Q z8i>?ABN8=1&AQ^J4O3Os4&f`ZFGUbi9P$0uBVXfTx+a%voNxvV}4}!BB?8 zc+TPY-C&#ZC33b*K2t5sIR#rvxng;i@rvc}QpU+Mo|&o0mB=ZyVg9*{Q#fNuhoFO; q$aBVGJX_@Ed^V`~cCla!K}5=$JXf_%RC6-U!1$}LjisM{lKlsSX3z!z literal 0 HcmV?d00001 diff --git a/objs/execute/execve.o b/objs/execute/execve.o new file mode 100644 index 0000000000000000000000000000000000000000..3021b3d82f0950c1f9adaf0ee7b93c9b76c16cf1 GIT binary patch literal 2400 zcmb7GO>7%Q6rL?^>e4oAej)`_DF$(fgtjtBMJW*EKwV7*mPl0#F4bhSUdO9!>}YLM zQ^``Kbr8$Ss7P?)j^M(bBGE!BLQgH+sDxAwNRDtNAF3++hVSjpI`$e4JZ0va_cL$4 znfEry&EN0-eTXsT0fq@9fss6bDUAVn4C7sL{D;iZ2FNV!fkZlTG8)p&gs7X%Iz@yc z#QEHt=Ob+&vqS_!`DpLb1Y?hrA;C5XA`!x<)g7y{A`S6;QJ#a+Uyc@1mvp0a;Ad3V z)^(#U8kLJyr6|N}rw2|fxa74YjqAuqrVK7AT_Y)lFw3Ik=xb)UA&GIk>xux=F>|d5I0-!$FVYuww;^@lRgaxd4Fmq0}Bj-TsuKacyJ&G?Jc?l;P*TWaTt zfC@cVqw5#?e*Ru?JH)!z6ff7``F3w_4_WR6TfGH5WAv`>_4I|U(g}5@O{X$-W`qy- z8hx+O^YUFk*Q2-R{#%(B&P=PFSA!#o4C6+=$E_Q|+bZAjg9&nZ+W`f4m#H24s^~=C zIVsQ`SJKeGpf(9Yf~S$y$RpojZWNI3hcMswo&wV2X7|*dy7@eExUDW8`XQ`PSZcm7 z>ClZojMI1LQ1%vO^G{-CSE-dHyU;*=O_hi!2esH4UmD`T&E9>^vIep?1%rPTACc%>rB4t8Hqkcy1mPb6KyI;T#BE zA412CNYG}mxS@5-zacHxLLBoGPZH(QIi@sIO6usL`46T3p469sN%$9m_?cS3gjd#Hl=^+#4TaNsK#KbbNO3oSDs&6@Fz^fzqWz2s zer*eQ1o#mU6g4UiWC``wxI>KyPbtW$AR$Uln%Px}JFl#ll#-yRFSBkdjkZKyMV!2`2b*sWe z&04AGHWQ_)v&ux-bj)Ja5G7k*VaRG4jk<|F)kdW*)~$7{ZL6{>mxf)fnQ|TSSk{r- kG4&#%5L>JYW34zyG^*6_?}u%Mwi0;jwp}$sA`uVv4_4pKW&i*H literal 0 HcmV?d00001 diff --git a/objs/execute/execve_utils.o b/objs/execute/execve_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..fd9d0f049ede85e1456c9b6c2653e0189ab36ef0 GIT binary patch literal 1776 zcmb7ETWb?R6rQxPjhA*KR8Ud64_+TqqEM)yklF^eVnIvAyp(CW*))r35;lo$g+O5& zH3XsH9}s==C+LG9E!a2x0Y2nKXeB}(M2ghL@9fUhByAB7oH_HI%Qt7vZ1U;X_nltG zeBBHS)DI1GVNs!wQ_yD=I6%Tw2)RTx5Q)LbNQsYx^MYX)yuF8~qp|6~Sne(h9^#|g z*dfOHDd=ZQWTbGe=L?pZnHLVu+xaBVfQa9fjR-7`k#y)!&o1QRdVv=+kIYPh^V{RQ zL2M$TU{*L&;G?Urqdzf%HcHNo6i-_51;Z=o?C+(>UJ-ojf=@tpl(CfDlf4Q(33Z=B zIl_9NBt%308u~a4o9kh02^RJ24zyLMPg11(x7^bzUp1$$YL!w$t45&_6&ipBwMw+6 zIi(s?mTBAw*SxSD*r0M+nTec&a5Vfl)+{4FlCU5`vkB2#ErJlGBgsd+CjG^XRE1{ zPa_k=TiWyCi|FeejrT1zD7tPh(W;Z6moTpuTnlQJ&qlaEH^wKy==Iu`JE5G ziss*hlevpGA{!5mXUjC3P2mW-ju~>eZQqP1)TEg<)P#}OEi+fhTErn`)!Wd7+T^o9 zuROaaz9c+v4v5R&x$p55^VvaP@K|qP1vTf8e+C-)jSeB=e8xumgHO7~`s8nc^2VVX zB2V%eLUW?WAh`U7qm3DYw4g2Z!0GhHwIaXcygQS7%==nYG;fV$y{w@gQVva-kkYHkrEqb@%k|&=+4_C8%%;As zrzM>v$}P2Z4eMDzT{BP67{I|F<^4_cF$V5}r@^>S_kd#XS%!Ll(KtfBAd;^l{%$AH zKqRfMNFAVJ0}};gI&nI2G$3 zIL|jz2f9*Ljka_2P9jDye30GG34!{4(zbnX+*949J01CN5MV2r$U z6O7rGY%o5n$}(SsHVfTe(K>$*_g1h~UeuF^e12!qC+US@Bb2M5A2cD_KGs%H_k(4U VZoTo?1JyitSuXi?&Uq`#=@+x7s51Zn literal 0 HcmV?d00001 diff --git a/objs/execute/parent.o b/objs/execute/parent.o new file mode 100644 index 0000000000000000000000000000000000000000..484742223947e21d228976bc7266cf2e09f86612 GIT binary patch literal 1168 zcmb7D&ubG=5PqAsX{yy-#YzONIatUg5cN_OA*C*?ppeEEdXZ;HHqAnsgzSa}AvCa! zG%NuR9{g)+{Q(~R@fYYpFsP724#7j?H@k1+Cg8!3%$u1v-+VihY(D({bu!PGG{bPf zW?_*Kju;HM1Usa{Kk!o2;?x89IW!p==@B@$^oHfdUcRYrZ~o2wC?3$G-eU|#IuL4+ z^TBz}v}#6qM_h0|spsn~h@;IVKPG?0EVPN|~~H0R+^bM7adji~)b zy7f`+zCc0iHv29^l;fJSpgCJ$W|CSi6V;5*i$s$?-I3(>c~`3cdKg(5(Jdr9Ypagh zx4-P$!+rVSrblp7CLdgLNh;J*NxL!2#tIIR8HI=pYgq{VRF{LFIc=u(zSBP@(Zbhx(wfJyfWWppHC52wJV5bMLwN)dca-d(S<;KHqcB zJ-PJOpTGZeK#0ga0vpx{R&*b>Bo^oqtoO(;gyg-(FitTbD+5!|B0M6c0>2cPvyo@q zxtWe^PuD3C5aCg59v}%)jEKv`EGgv`gTj37JS&vy#j`juw%_JFZ9J!IMdar#F67f* zpq6r%=5yziIyKcc;!x$hK4oPCc%(WS6@sCAAeHj7DpN==_$Ht~zbrRqi}BX>8$1@p z{X%5znfS9<)CYYPvHQe+EF$_S>F1EgVes*TLVN&@cyStwh+=5bCn;CB{%@LWc#mK&i=axpuQ1 zT5bW2iUCFq=2rc2EiBgz@}}E@Eb7K(dCO?w2mh8Vf0aD5vBvqvO}i zYINQIqqaZ)+2%2g!)*@T?edqAio0EZe|L9Ra??949$H^((`|C1xRFxAd_J6pa1t{! zna~(CKf3sphfVe{Lq!#saiU4BU!<)A#tzN$-Sn9eXnK3-8cXjO zzQ>+o&G$p>N&10-el%=PynZxcyFSGJfYFP{8!w4SDISR*IuKn0$`jB(idFgxwSqW* zAtp!TSN6Sd7|*9B@|&X5j`8C<2KrrqTbBK}o`HTJ!!P-_!Q;9H`h5<+pV*J<+v9fy zPYj-DM}gx7ac05MvIp;Ai$Y!p$J_1DLq+-tY#`?@dO-GD;FuWa3vlv#8yv5Xa|s+h za1MeK?k<8T{#S64e`fg`mN!`b1RNnPHE5ci$$T%`+>@*gRJs%7xTs;D4bhr pA9LP9`~2GCd`_q$M*!n&QO649Wqt2;J{SFT!OOCcDfqq+{{q2O@*w~K literal 0 HcmV?d00001 diff --git a/objs/execute/pipe.o b/objs/execute/pipe.o new file mode 100644 index 0000000000000000000000000000000000000000..db42057667a26414acb8eb92bb534f06be99cd7c GIT binary patch literal 1984 zcmbVNOKVe65I(7~4O&eU3lW3{ks6Rnts9|;scrBm2DG%$O*z)vvtY*9)}XHwDl0z2C4*>w(ce94}$&F$Ld(4UrAOwMWwV&SY>J~oMC>`?Fw_e*uflyq zbVEsKQS#Ga(|IQ`+yNrrL_l3=NmBbx>VbclOv%C*seknq@)cRgmSth8Xapt2nb%%weP1k2J8MyR5f98!BHqwjkWkd9p==Pc4ndZp%Gxj?>uqOMZwgZYeQRw^x3qJD+JRaFj*aFKo}C8aTiCv;M3S=89GZuGmcNbSca^=Gz)wh@}}%R(2Y`K5jZ=VI>Q@m2asT10)@GqZJnHXVV7kBb@-1Dew z>=-_4rVwu&y8FxGaUXx=#lXw$TRiUP08iorgxZ5+K(yZ155%W$a192ggAvA2#y-ZU z=-Eke#t|U#os1u`HpQO<$)94p!Ttac)NUUmz_c#|-3Zv{OlLy2eXf4C0jBg}M7S=u z+U#p>HgTKzLM2m)1^h3la4MBZscLgE8h^l3Gs^S%jM8Rf Nv4kenTsAo@egh_!nG*m2 literal 0 HcmV?d00001 diff --git a/objs/init/init.o b/objs/init/init.o new file mode 100644 index 0000000000000000000000000000000000000000..2db55111e74652c2feeb0c292f0e11f80582456c GIT binary patch literal 1748 zcmb7EOKTHR6h5haYIP!1tSEFAE{YKGfmozMstpX-LXj$N%59oVnqWE!X<~yY6sL+q z5Cz@25#012=*kBzv^(ua+*t&nLWC}ZVB>dY&LnAU79KeFyuS0@bLVkC{r6$G-PQ_F_Kn)jNm| zbFrNk+4!PVY(Ae$S+kN*YB!(HgLYTG@c|n|#;s+*mzm2(V|i7u7E)GRsj<;o5zYsh zYf+M0;A6^VY#?XcMX8jTREb=4&h#3Z=L-w^t?(s5(m3J)qNJ2ua}H}i)Ez_HPn}Q} zrs4cL=HN`SlPC>~ewu(b3eU+3$bZWX!}(#@<)Go*uNY2Y`#lfx&cL$8Tt;ae>3~s+ zR1ABFw1>T%d~*37U;;p;G-Q+t+g@z12B%gMr?r74?kC~beg3sbxe5W{c4@q9e+)R| zWh1s>*u$SmTZ*B>qj4gej4@&;mxkB>75lzdqUb8U@eX5p+QX z^sTuZKOgY!_NqR$q797J=5x>Qon5aJ?0xpd8ldT{+CbPpZv)?84c_8ep78-^tNtU!{XmNG7F1eFEk|i^O8R*`7-vv8A4xRxo-oO z`<7w55kH5;JsBENpJHujiu`q6)V-0|5Se8>zj{Wy?Nn)Fo&WzvJgG!prRVdOxj-tL%go|xRAw%h$tkm# w%9Ap!J1S+dm$DKWakHtcDK6S^;l~SEQtsl>MdNWb6OG+=>0{A!I)kg>FAa?!+W-In literal 0 HcmV?d00001 diff --git a/objs/input/get_input.o b/objs/input/get_input.o new file mode 100644 index 0000000000000000000000000000000000000000..eb6e18489ff1354c75d80d6bd52d5c3a5521fb17 GIT binary patch literal 1680 zcmb7E&ubG=5T30~n`+w)T7RL?6?*7pMMba(g@|3)g9VX_Udm%lHqFv>8dJ+ULUWA6GkfW5^_|4{RlWy_gz`U7n-n{S4oA-9V?(ZFT z6Dg+%1GEzw?ZBWxA(x@cJn;`nb1r09+5m%-SecJS2+uBfO}~jJjHeSV9C+{KUd+d9 z*D%C*vXd6r1R_Kt@8ukKN(O{D&KK~UmGj^DfNdhnJ&J&Db|z~jJTd1!cif~955|rr z;cUpd;xf1cKBkOCh$PoBN+ImDNad^;EsU3-ei`a% z>VmTHrX1H$M?VL;&@&jUr-zIoye3f2@8#fs%44(q%PiG2vs|p3tD|qhx5E@>WxQ^d z6|-X0&C&>|OIJ9!I=X~}n;U-0XWqMP)MP#qDas0G7DO3k4Timbg3(hyal~NPd6Nn{A`U5uYzHUQ<5}L`(Zx{DTr-p4(LyFP@m|iL0--cyh(qT}MA~ zk5uKGtQfV@hJwCT-!~eK*Y!oN-(ypSClZA&u;U<29cOl8Dan z5#%%SJvnI2IIT9ZM6HYg=_)TCky3~$vEJ_J8nT8EzY6{N2Sq|8KheGZ*vpRleRz(( zaNZd7`(ZOr?sFoqfgG&S_h5Tqf574<^)1*=*pIMik-iSw2m1;ZtB*Bj^&rl_8M?MoS;7!fK}i?*lmNvuc{rd zgs=$VyCKZ=wy%E@!bS)eLUtt=|X6%BUL&VDE*`_>^$$N>6Z2@>W+ZNK#;^*z9 PNaSoQnQ>ejshFj|@QD?g literal 0 HcmV?d00001 diff --git a/objs/lexer/expand.o b/objs/lexer/expand.o new file mode 100644 index 0000000000000000000000000000000000000000..5afc400e7e9de1321e58468475d15bb332ab1431 GIT binary patch literal 2052 zcmb7FPiPcZ7=IIE+*r-*K_M24d$8caDX~TIps==%yn~^l1_TK&>+Hl`x|v;fXY5i4 zN+*$wgRO_2da?A>LJuOIdJs)S*OT$&>dC{FY(OFQBx+56-@Z55-HAc`;G5t3{(tZ9 zJbeA)-3G?AbqpVHFF4VIPYMj$2A(0q8uS|lf_701D3Xzr5mP=QAzZua%CVGBnx{^- zby@PhFvLzuybO(oSCp?K)k=CTDPkz-+s(fsal#( z7|SVB3%C@LRSkw69YGXLuXa}G9 zfc@*$_IB{+D@ITD!vnM4-AY}0Pd3o#?v}fWS)kwHCb#G*j!7T3Mef2g_J*8622Rtc=RL)R`9xbVHjNSnbjtwj})5 zBCY>&FFoTeTs9Z}(DZ4X6SlZdPAry{Yc(F+`;`m^sd&#wb(aJmz9%IjHY7ZcXUM-ka zBAvn`NH?iA*T0({ouh_2XnX6z$ZOM~W+|y>H>6TYZI5S4^I#487Uin_aGYt?q?X*Y zA#oKkJE7kWo_~uOgH(OS4h&hO=v~5*G}1uC^`#U7TJm||01PQG(Iqg+&y@TtWL=HPPVae#$f$0o z{CiBs9J}mvpM|&b9Om0 zWW7?PKj+yMH(zujQ^A(Qd?izGyot!IQnIalroe>loEH^4Q?_!EDJ#x-Mb~EHtnCVi jem3~$*!Y(1QXykuAUm*~EW)d$453t^B|BTR&_4SgDCDWI literal 0 HcmV?d00001 diff --git a/objs/lexer/expand_check.o b/objs/lexer/expand_check.o new file mode 100644 index 0000000000000000000000000000000000000000..7be3b9b554056d4a42677db1366b1a51fb4a47af GIT binary patch literal 2724 zcmb7G|7#pY6rZiJxvNR%qAe;aIYZI@a?prM!D26%g+)B9($GjL+heow4zG9D+#Vi< zXkhQkZ5AOvRQ$F6=6@iFgqlhl^@mnLaz7Mu6@*-Ap@?8iW8>%T%v^I{R`9{wH*em1 zpLy@i?9SfUy7zF9G3_yi2Y3J+*@H(M40;w^CqoEL?-ho_6a!K^Fc~r75t*iAR~#`G z`bmBI-uS)eF+lr>;!l>(UQcpFaMXO4DWZt zy?ey)=I-sjCTa+orcrst#Hr(%zoVhy7N3k<9pJZ=7SUS}- ztmq_P9*9i1o5y)=5%H9)Upe|HS6>(D_+=!DWWD*DhIbvct;(#R`{h+{r8`N~9IWAw zxGS1r{m7S($rhjxZz4wP`*H%*L-E0R%<;sYa0CAAI@1xVtr0*VlM;R74V}kI?T> zz|R7fCHd#qlJ)Z1qQ3T(#%pv^TKn-pbEp`-(fV>{XD3(#OKQA2))(toEU4Js1jdWP zL+$%ToYvlb5ABWE>?$zY``z6iQM)CU5uFM)A0zg8dKUVPlXr*vc)t>bGh#UfX2hk@2giYzBC8_=-WRLxD>g)F{{HFgAezLwEzb^)YyDBjai7!s# zDM)Ns;!pGicUa;MBwBdzYe~!aHII43|lsego=zogr>Rh}e zb#=}rl#cp{Y%tv0WOnKGF8$Lkonm*#zuu(}cj?TWb6>Te<&M9@qJYOz2HXP?{JcW;)pHV}A+A{?!0LnUr Nv>24qxnd^G{slk9VPgOQ literal 0 HcmV?d00001 diff --git a/objs/lexer/lexer.o b/objs/lexer/lexer.o new file mode 100644 index 0000000000000000000000000000000000000000..67b54eb83126d43f1ef32bb98317bf57cb56a4cd GIT binary patch literal 2516 zcmb7FUx*t;7@ySZHPQAag(Bxa8p?tAu%(JQz_V|#xLJ0sU9+AHw2q(c9s}TypvYh3m72By;Yo+%WOY@fX`sq+d_^OUm)51^3 zRW2f_;zE2tt0b~4w_q)l?Il-9Eo(5poZjbU?KFwJ!o88`F~$m7CD99*CoyDM_@itb zgMbz#c>#GG0nVlv`y3el>`e>;iW@x-nEY>;75;tU{c%e8=X)*l9{IOv6294PncZE0 z2+W=cSdi~}KP3EoS2(}crqhhqpCr5Bd{1nywZ-OaS8V3*N$1Wj<<=HKHL1b{W?T5J zkVd>v;hT4`07fp|%BAJf-i=dduk+(IVxsv8f9-+rXAvmBt&8X}&dQ!EUDMs}yuRj%|I>8%{OBD(bAhBS!tv3ICjKdUfybRUz zw`9$tF7WM%3)hm;k@oo86}k_;`MZj^5EC&IpIwSK`p2V}Lanw{yrVMSaNZEI4oyNH zzyd#xP8m`EZ7-YP4Qe{nd%H!Rtn&>`MD2G5ncR1Y+=pv-dHtCfi&TzZx=AJ z{reV}I9?WBPsPyN{s&y!)c zK~`smo&GE{^?HmqCX`;M(cha|doLtibo9X0el(fepdO9T9HmD$)JEyi5_6;UCwM(K zN9wXXo9>oV|`15%^5eRG9&2YHnR=9@1y@>n`uCeukp~()#iKI>!H) zHcqU+%@WmgB7OK!@?+ReLH;yGbBCVL-Cdm@V>1)!iw9mig5Qh;vO}A($-k7H&U0To zdfHb0R(3kyeeEv6F8hzN(|JE+_w5*CXcprO><>+5d;koQ@eXhbxQn`wejFH|@c?_m zXEZU9`~oocV7vi*7v|C(v%gideRYIlZ@{(P&oPrJJy`o(@r)j6) hI)gNYQzqepPT939E|x31n3acHnrD_D9z4j!69*4V?8Y^b#283=A!AnFhNCxchEt=#h$p>z^kUM6n)KKJq0V&YK^tsz(s^&bnQ!KO`*zds`@fF{0JJlJ z3wl5LHU&C5+GX@H!ac0i7Z-joM`4@^0hf62Z_h0I@NMVAnh(r8RnG7~=|&c{sf@D{ce?faY1@S|jx8 zR%A9Td!jBXBT0W>H$G^_rne`8i%9FPr3~@r3l(3Pd+#){aTXc1VO%1!?tj!mvtE1O zYPGtXKm->~OEn&HM9}E;(U=Qk9yiM0)mu_u>K`0Dv zBe}f@L+1Oy7oYTTRwUFvY{M7lo3wqnG!+t1=!=lm+4}p=IrmT71bpVmr2r2rVD2&nUucCwFyYuq;iZMdwC~z#A^iE zuny^8T{qo)xW&0)dw-%~wD`(%P^#VY*ge6UBXN6=W%%cJGmUC%)o6W*pph=|3Mx57a*~}3=%#)dj5mx8ULWnd|Af9@8>_}fkj6{WobFc@MJjk} zK_`aSOI}1*-6`a&D_-#2{MM0+NG}WtSG{05xAx^lgp-QyUqmzpAIeqi%o>FplM+r3-T6kLWMIZf5{nZ*&^qBwc0p<8> zAO8`(RqW$;Sge+eB?nK%Zz2kn{CUj#4{_KS8b4#%q2wngE}Yh%KWUeP-TI!g(|Po? zqwm_Kzm=WNr>EU5*m>Gc=hf5hJHq#mil_5CW>-MR0&Ds+)B!Khv;~S%rO$&xmA-?I zDe3=G^-Es?CH`yFfM^1g{5G%`mg#pvG152iAd}0QW;9J{3L^DyfDXYhg-L@xcf@;| zKdX8FoC@GMbpE;0tDAU#SXe|@xsLLukLa10sfeY@V%aKIn7CeDsFXytGB>}(#FDUP sOV)>Y78jYAKE%z?FH{+SXvzh~bLA`ZC7+vKsD2P~rP{S(d780*0rIPoSpWb4 literal 0 HcmV?d00001 diff --git a/objs/lexer/tokenizer.o b/objs/lexer/tokenizer.o new file mode 100644 index 0000000000000000000000000000000000000000..d8eea7b2859c79139300c74af450e1b1a5995302 GIT binary patch literal 2076 zcmb7F&1(}u6rX5Y*N?hU6ciPM2cq&*W#TEv%DAI_RGNzlY4aOvHHdw?$aE%xi zp`Zs3o&_)BQ9M+%O2A9~6M88mP$3r~h+n@qGn;N>BlyVMx9{us-n^OFEPwy{Ya3&+ ztqc!vAK2J}M*<8w2!2G49(0ltKqo1Oq}GASh_%Xu@SHi1A`}TRIeu+2)Yj!{hyzKv zmj@WzMeaUUArX=gcFA+I`5W5MjThn|UD9B`e$hgg=@@}mxK&Kso+#(9!y}mv2dnpp8i_= z9gTaDPJD>k=Kg#eE` zmZbY*Y;<@0;g<7*;rEW>#=vtwRh;f~)3_Ys62DZO?swC;r-Y~Dbl-o)En{5|ShT7LqGgJI<$u^ej(5E?(oUzqBn%`I-3OB%&U;Af;r=DH4k5|IQ?;PerVwq{Ns|xl*y&uZU^DgyOL~^{ literal 0 HcmV?d00001 diff --git a/objs/minishell.o b/objs/minishell.o new file mode 100644 index 0000000000000000000000000000000000000000..6a0d20dc2e031313b7abb2bae4f6e60084dab0b8 GIT binary patch literal 956 zcmb7CF-s$15S^$O<5QQZO zmi`P&|ACcUo6Kd?c;O%>Fc4l_?_WOT-`#4CH>L)ya0pL_b4nRx* z-^ITXP0cs8Cia*~0+}np>^n6-(ve@8Ut4+cv8t+&d9uq%Uo;2iUtA;1T-+&@?V`_t z_s8`%m=}L0-`CXSlna<6yR^W%D%49bJKMZju}e;rV}8Bgv6lW&F6%tCG)%M|YvHfJ zIMDr8<|Cy63Hhkx?;wW2Wh}J_Mn4sRWJs?-&hfpmYQihCcauAte~{L&-Zo)yXTsH% zX#_2ESifjVzEN*?*)%j^8cP=@%#Xj$?zJhi{{i*amz_>0QLJ6p=Sa)E=g|MCNBx|p zF_o#^WlGhusqDz$&=IPpkpBW043dcN0p&ks5Blat)7tk73~kw99HF%U#t~Y1FwV*P z2F5sR28@NRNign_1(JL^2hKpmAu?e}`jS4=<3IO!{T{MW%z~2r(>IWz8uDz7xISb-UV?sKrHfa8I8Azde4I literal 0 HcmV?d00001 diff --git a/objs/parser/parser.o b/objs/parser/parser.o new file mode 100644 index 0000000000000000000000000000000000000000..09b55135c73b78758a7e6d8dabba74536bae5f55 GIT binary patch literal 1660 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 Z6!Hcbl*mJif;s3DkT5_ literal 0 HcmV?d00001 diff --git a/objs/redirect/heredoc_parser.o b/objs/redirect/heredoc_parser.o new file mode 100644 index 0000000000000000000000000000000000000000..b67bcc70ab29394435a2857110a6e7dc4d730747 GIT binary patch literal 2824 zcmb7GU1%d!6uwz&H`TTiW!J4guoe2S502D7tgGv$*pd5Spq7nPu};Hux(T#NOf%gg z1Parx9mh)X2YvKO-KSjyp(|3e+p^miv4YULAO?w$K$R-{P^-K3J9F zd(Qptx#yfalkazazkQgoz#R+^^d|J+Av`+K(e6i|BgFwN)GQPyXbqY#gOgDwK5Dw2 zHK(#-EaWrV;F+rIkKUFGh>wOnLB<{?WfPkw@SCn16WL56c~(y7`d&Vt2g|*7QTi!G zCf)T#_-CZX(=j8fTgh{YXVeC#Zw}(>K&A2|AiH(~= zS?^!BTvQNhHi%#mpWp6gEbfm9A4l&%_fnzU#hTHn(WW#XhaU=X5Yv}{SkL;=sgdi{ zX)SFlR$}l!T9iA#aeFh&o!mBetSu+H$>&dvgSJF0+|df$&J~z4Gf1MF+v2WO;I6iX z6&u{Sjzw$2)P?L?Yuvf&$@Vr=W>3mRzC{6qt5S%p@@K9nv&V!m+3;0ztEK6Ftm{xZKu$BPS937u*#ilUsL9)6tBT+H+R$HcC`&B_oIlf2$&1e zwXjTtmkj5hT1B0BEQo7fFuA!Bghe6PEB!;u)rgHQ$ar=8`KEv>ZJ{kM9VwTgfu= z)i}%23+#k~KwyIu*PvGy_Dc8AvY(@d`#BNpp%waE)@$bjeGWseZXp)F2OE#&xf=m- zw7`vfm8B=|v2U|EZC#mp8Ubsd?DUi(Iph%djTVv4may{CweXy^{*Jc(ML?OQi&B1~ znhxK(QAWr~H)LN8IH7WaO3KSG<<=_6U{`kQQ7y;SrwbVt3VLAxx1QsOcwd+L?$ zn~1+Co4w_LYqxHu2w{X9IaUX$vZxs7W)Y6%I)9*@FObjK!-o~ClCAuKl0pJ zuNI>V*|ioce$eTg5gC-|^PTki>LO=E`%-}STJ+}#^HS&%ntl2$ITIIl`}D)|ZQgdk z`m}smA3H#QMD8DWYk&o&LV-~0;ot&n$@PcOFYO>uXwrYidfP+i553Ulf2PQ;51s!b z?BqEb+Ks`k|6gGz&(qNEL)d*H?c}){+I<7N>05$No^PMsWRv%eQO^SLJyHKaJW$W- zFF=wnOZg%Yp*;FN5NA_Q0`XIi;z9QBL5WY7>Hx{^Sv+X|5g_rj0)xOCh#fwW>UTg? zocb-0?7x!oXF#&IfwcY&p;yB|{M27@Cfes`Ag#LqL{mS&16N&jfy8eCiHG7y_zJKU z_@a~_1hzrG4@f-IK=3yYOAJfwlnC(j^o?$ZVV)+?PNS3T*Wt%f9tJ73^XR1a>kNA` z1+w2#7}SXD^*VXFPX4@3K2ayXTqhHEEkC^pYvsv0nc`KeXZmPX$3L{B5z8|DTqcn< zNo0E5%$Or7Lr=#t6DDL~He#jyVbU1K*f)FAGAFW$RMOXunHZYMNqxeMWsJC_X1Xz! onlPE3F=HcRi6lm&852*RCS#_@Vn)q`IhBqjM?BU^E=U=JT(gn_(dW zdjx*qLHH|LMBuPv@M(&7u^1J?zA(p+(NmD~wot0pue0{wUo`tII;Gjc>H9j$7+^(&@_eG#fRW z$NgsX06L$DbgKpzqjZgQpniM&_=evN*s{Lr#+W09InJ6V8^jm?J`c|73<_A(wt$tr zxB{PZJiaXg)rr8wfv~ZJ8k&dRNa8mx2aKOD#MSYMCnGasm`oe-X5p*MV;z6x z<-jX$di_|>5br!rJ19hS3W!fKdIE@VFG_C#&y0S8Ho_c`cu64f?gEK7!~2IhAL95K zo{eRczHwMIfgjq6FamUZ6gZ9z|6H-uv44)I5u21`vw%IJxI7Tw8i=O{Vxdw6Rj8DU tm9i>1scgxy%Q~0M_owWPV?XGj6pBt>C_7hp=m7L)I-A2fRVm_6?+@!?ISK#( literal 0 HcmV?d00001 diff --git a/objs/signal/signal.o b/objs/signal/signal.o new file mode 100644 index 0000000000000000000000000000000000000000..66ff5dd80389879014dd0975ef85189e57fd29df GIT binary patch literal 1856 zcmah~O-LI-6rNbC*1yf6mX`h~rGJ;SDp+hmu-L#JDil%hBIBBDlEux&?rv%<2$sa+ z8bUqv;JLk6@Zix?4JcK5X^%Y>dJsI+TMJTJ)9>w0bd5?M&V2LD``+6(Z+7G7-@E&@ zj0MgxOc>P|byb+!FkqK3=E!l16-f)bBe2YolhL4jWSrY-#`e}89}Eu<9`f>POgxM7 zQS1(;3*@Y3GX!PhJYw0VX2it?=STCE^V}5vc{-raM7ak$$d^h^C=r{djY-Xja{lD; zffI{z4`#&X3i46P#j^)zJd%=gHNj)1l2pBb%KF?M!?h~%wd0)r5*rvx2$u_;m@i_u z?UCwP4F(xKl=fFqM>BA-hOs3e;@MLSzu^&XPrXRL=l|;=+1Zw}KSt#|9>kcOXR;IC zbEcQG)5`%VcbWDIJ>4j;qqswgHLBDJFS(?nBp1>v?lQYql4hv_SKxVza=w2{e))Z^ zR4U0%|CY1qe3T1AhXFZy4Lgd?rd;Tvkkc~xs>}E9$q%-qS@eU+*^SYWbvH!kFV5)&#qLV2Irt9quh9jeYTEPk zbju&8In+SkBL-8cwxnWAwJByiom36ms%IHnHIt#vuKSUco-yzJA@j7@*Z~h|4 zJrCX2#qalCAjWQ;;%^rb^uEE4#h>@~S>VM03uJ~U)&)~)W_JP z=HRQUz9zZ`GSZ>_Y-Zoni8@cz>Cnvyov8Oj-5cl@gih3bOgD@g(Y{bvU@s7VSFdA2 zZJ`z*ey>8!KwMeNFXTK2z6-1aZUf2x4M_eCU^V!AAijv6w?NAC8rTG!2a@hNun~M% z_`^Vao1uq-hk%rq&PRIsZYkd=kV@+n*d`F*?)L#D2#AnLG_Wq;|CHe5BcooDzkI&~ z;3AaVjC$zjw=4Lw3ZARr6zh+VR`Bi$PUrUPuT^lyO`V%+RI?^@Ws32HVnlV7TUuN* zY{u=lYU2}OT+L`iBbI6_wr$c9E^ir0XnIsc!o#^`E0J*?NsRNDqUnsX8H$IDPvF0a g9b;TGG@Fkpmg<&}GPt2ma$PgP{TbqE#l#{10XIY;hyVZp literal 0 HcmV?d00001 diff --git a/objs/utils/env.o b/objs/utils/env.o new file mode 100644 index 0000000000000000000000000000000000000000..e9270b9c5a2aa1566af3184edc8469edce511076 GIT binary patch literal 2308 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 RFT;N?O@-b{vc!eh{}-@E!0rG5 literal 0 HcmV?d00001 diff --git a/objs/utils/list.o b/objs/utils/list.o new file mode 100644 index 0000000000000000000000000000000000000000..1d4c29aa9f61ff612cf35137f60a6007f68f6488 GIT binary patch literal 1460 zcmaJ>L2DCH5PqpK4cfX96{-lyL9jy8gQp4#DRyB61ELl55MH*)rU|A=NVYZ<0+mGR z5(EVg{se!5Ck;gC(I4O?7a;+K9C8RA8ozlv8xw6Dm^U-;`{sM|Hn08q>*w*j5WZ6a z3)~M6&S8nbVVB{D1kAAa#Dy($^lE4da?&G{(zdF$o4fU<{$%q{?PX8-EYhRi78a%9 z7Y81PqLitMUCtG@c~i=1Jx}K}<1grf6UO6?cc53?DVZr-?iTiPg|w9SH^v~6B+qrg zn}^UN$&NRl5L1#;T3MMXn>&`<@b`Qj*89kMLFi15cvgrkLn_?Fx&&8k+8GgmlhL8H zFL2QSLK2ZaEBeI)_@vm+I+MtHw2Kh1{xdG~;OU^{#tp zbIm)w3pU|h!&wg^M;-5ji<2XXc4k!zH_#;9^PL)Pn>4N95UqRGBh|va&UNO}zDqu)etqLr3f5IaKzzjI2sviH1 zstSwD*fL+S3)Y^O=FN&NWT{--#=i$?mCMDlw5mDmxl}WqmRn}(nO9eG`y%Z8q$VCVqOuyMTFG(9p2j+eA&3td(?0b8DcXK~al$awd@D%(9 z2YEPb8UCF4KkP(mmx7j~C$V#1Hm!Xx@J(!Zsrarm;WoOJfcx<*0UA8uT#AkutZ7}{ z-#e&Oef_E4d|%(z`t?g&V;l-82>wi(Sx(RoA)A09T6?>Cr%~DSEdO&pdk4FwObUJM zw{dEL$d+QoGpspyd@asHO2gUsP|kms{a3)J;Mh-Z;M2xhcDdT=(tqPkxBbfvua(NkPp6_F(*rkKSkpe6@G!_hzc?-jxk=6H z!mcWJoK=!}@_)~>G2TsXyEwq81N3}ivI93NWRUK;QEOm(_gL4z7>!2pcbq|r`ND3# z+=)Z8d^0d}b;qKSXP&7qNj-7+mJ)$Vs7LdeW2pFzR^X@iI2b1ViC$#Y*W|`xTK2Jy ze?(W{h|f9tH;FNsRZ%v5y#7OwvhfAPSS22E`+>EY~i( zaxU>$`r=rC)$BuFK=Ej5J|@HqE^G>Ikt$MKLqevPhOG;xBQTlEy;NY_4%gA;Ga>$+2)|idTqDDB@5z8;dYMhr8#1c%%?Gu`C#1hM z@Ym+UG0M#?4bq<|8Xu|lYLwL4Al(a*I-;a_qc~rMNZ^RtzK@qUM74YZwS9__SM0>0 z%AqJ+^|_FVV)~``%JKESt?g|F`ug((s<-t^w85vuZm$E+QhGzB ze?1Za7oG#0-#5T%Kft;Q&>snaZ@@D$gSLGG)KT@N^zSMF=;0F)R44L^$XXuG8##vL zf5K8;$H&42$kc0bd0~w3g_&51-j{_<`DMq2xs%>#Y?I4unAM)UxG|k-XEJ$b?_$4& zU_URtQT;ZC%GJK#_HSooGp%h<$osk6JB&sCR+nxi5~+x|j%^!7$DVb@Z71SMCB#5x zFlpciqub~xB}D(|%ONzH9vm7?4~!)Z;m#NBZlfo`lXGg)6PRF2j0}yWlZIW+ms|uK z_rt@yGojfjyI@R%v@;u*Jl#eyU$h0!9eX_Q*f}>yLgk>6>QRPsYRw#u3O*l8S#vXF zsTxwzE?uVyjK&D0+ zKMjpfs)pAe*&jd?Z;kP%j8_>iGcGcoV0@nOFyrSKcQ8K6_z>e?u?g+>Gc@gYlkt~~ zKVtj=<09ic;}OO~jFXHz7&kF~gdSmf{Bvm9?-Ry17*h|){~F_07$+HbFm7c`H;ecW zP(^b literal 0 HcmV?d00001 diff --git a/objs/utils/tree.o b/objs/utils/tree.o new file mode 100644 index 0000000000000000000000000000000000000000..910682cebc822d38d73f52a774999198de8895c8 GIT binary patch literal 1684 zcmbtU&1(};5TDfAhFZ-E7ODu%LBUHTh>8~>!3N&JLMaXOQl9H((*)8cY&RH$LZMZ< zEJ6_v9{mf%n?0#eAxA+x^ys0&1}fyxLy+3~o89+ns>Tl-m^a@uzn!^e!36JLrQBP%2sfd#rUl1e9g36SzowUUMNU;d;Bm6 z#ZU#y%6S9*_|czXfNFiDrIdC_79DfmjtYLnx301`RKE??PnmRrsHAn4SHPp-@G25R zGyrDeHtc@`9K7!|mQ{d6JxzkUiE%QkE9(yZQO^tSlUUhF3U8_7)puVrj#p_M0hbCd z7l@UmfD#Xe*?e^K0}{fJpW7AwMBrsdAv(g(2f`a-k7#D&VQr)vkze_FFgr94Rl|~$?r?u&4;(*w0eLOfg5dKozuWxJI zTgVT9XG?h5By`vln3#>DF+ZfA+XJHX>}K(DVr-QMP+}}Y|BcT$iqH60e8ykl3-1ft z>fmPhQ)pesfv3bpL@QA`kH;3^_nOgWu%+N-w5}j{&PsSMcg@8T??6*6Qo`3#`&cSJ zJ?;@VR7J1&3l*Q~QGX`#Q|$f}#TrJ;7#@tTqvitq=fRU-0U4xmQ1+DZu)kfVnp2&_ ze@)tsQ+1@>D7z$G$F`+eC`hL~SL(Jac2S#F#Wo$4YB{#)+7g~3;V)_1I9+L(l}gnj F`UZ$8M +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 21:42:23 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 11:16:37 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 15:09:19 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,7 +24,10 @@ t_bool check_env(t_data *data, char *key, char *value) program_error_exit("bash"); if (!check_name(key)) { - printf("bash: export: '%s': not a valid identifier\n", key); + if (value) + printf("bash: export: '%s%s': not a valid identifier\n", key, value); + else + printf("bash: export: '%s': not a valid identifier\n", key); data->error_code = 1; free(key); if (value) diff --git a/srcs/execute/child.c b/srcs/execute/child.c index cbb7e54..259936e 100644 --- a/srcs/execute/child.c +++ b/srcs/execute/child.c @@ -6,16 +6,16 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:36:58 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 13:34:36 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 16:40:49 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -void do_cmd(t_data *data); -void exec_fork(t_data *data); -void error_print(char *cmd, char *option, int flag); -void check_errortype(char *str, int flag); +void do_cmd(t_data *data); +void exec_fork(t_data *data); +t_bool check_dir(char *command); +static t_bool check_relative_path(char *command); void do_cmd(t_data *data) { @@ -50,82 +50,39 @@ void exec_fork(t_data *data) base = data->pipe; if (!data->root->left_child->right_child) return ; - abs_path(data); - base->command = set_path(data, data->root->left_child->right_child); + base->cmd_path = ft_join_cmd(data->root->left_child->right_child); + if (check_dir(base->cmd_path[0]) == TRUE) + { + error_print(base->cmd_path[0], 0, 2); + exit(126); + } + if (check_path(base->cmd_path[0]) == FALSE) + abs_path(data); + base->command = set_path(data); if (!base->command) { - error_print(base->cmd_path[0], 0, 0); + if (check_relative_path(base->cmd_path[0]) == TRUE) + error_print(base->cmd_path[0], 0, 1); + else + error_print(base->cmd_path[0], 0, 0); exit(127); } execve(base->command, base->cmd_path, data->env_array); } -char *ft_strjoinstr(char *s1, char *s2) -{ - char *tmp; - size_t lena; - size_t lenb; - - if (s1 == 0 || s2 == 0) - return (0); - lena = ft_strlen(s1); - lenb = ft_strlen(s2); - tmp = (char *)malloc(sizeof(char) * (lena + lenb + 1)); - if (!tmp) - return (0); - tmp[0] = '\0'; - ft_strlcat(tmp, s1, lena + 1); - ft_strlcat(tmp, s2, lena + lenb + 1); - tmp[lena + lenb] = '\0'; - return (tmp); -} - -void error_print(char *cmd, char *option, int flag) +t_bool check_dir(char *command) { - char *tmp; - char *str; + struct stat path_stat; - str = ft_strdup(cmd); - tmp = str; - str = ft_strjoinstr("bash: ", str); - free(tmp); - if (option) - { - tmp = str; - str = ft_strjoin(str, ": "); - free(tmp); - tmp = str; - str = ft_strjoin(str, option); - free(tmp); - } - check_errortype(str, flag); + if (check_relative_path(command) == TRUE) + if (stat(command, &path_stat) == 0 && S_ISDIR(path_stat.st_mode)) + return (TRUE); + return (FALSE); } -void check_errortype(char *str, int flag) +static t_bool check_relative_path(char *command) { - char *tmp; - - tmp = str; - if (flag == 0) - str = ft_strjoinstr(str, ": command not found\n"); - else if (flag == 1) - str = ft_strjoinstr(str, ": No such file or directory\n"); - else if (flag == 2) - { - // 형 수정 - } - else if (flag == 3) - { - str = "bash: exit: too many arguments\n"; - write(2, str, ft_strlen (str)); - return ; - } - else if (flag == 4) - { - write(2, "bash: exit: ", 12); - str = ft_strjoinstr(str, " numeric argument required\n"); - } - free(tmp); - write(2, str, ft_strlen (str)); - free(str); + if (!ft_strncmp("./", command, 2) || !ft_strncmp("../", command, 3)) + return (TRUE); + return (FALSE); } diff --git a/srcs/execute/path.c b/srcs/execute/path.c index d8a4a81..7affa79 100644 --- a/srcs/execute/path.c +++ b/srcs/execute/path.c @@ -6,28 +6,27 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:43:04 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 01:32:53 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 16:41:54 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -char *set_path(t_data *data, t_leaf *leaf); +char *set_path(t_data *data); void abs_path(t_data *data); -static int check_path(char *str); -static char *search_path(t_pipe *base); +int check_path(char *str); +char *search_path(t_pipe *base); static char **get_path_envp(char **env); -char *set_path(t_data *data, t_leaf *leaf) +char *set_path(t_data *data) { char *tmp; t_pipe *base; base = data->pipe; - base->cmd_path = ft_join_cmd(leaf); if (!base->cmd_path) exit(1); - if (check_path(base->cmd_path[0]) == 1) + if (check_path(base->cmd_path[0]) == TRUE) { tmp = ft_strdup(base->cmd_path[0]); if (access(tmp, X_OK) == 0) @@ -35,8 +34,7 @@ char *set_path(t_data *data, t_leaf *leaf) free(tmp); return (NULL); } - else - return (search_path(base)); + return (search_path(base)); } void abs_path(t_data *data) @@ -46,7 +44,7 @@ void abs_path(t_data *data) i = 0; data->pipe->cmd_abs = get_path_envp(data->env_array); - if (!data->pipe->cmd_abs) + if (!data->pipe->cmd_abs || !data->pipe->cmd_abs[1]) return ; while (data->pipe->cmd_abs[i]) { @@ -57,7 +55,7 @@ void abs_path(t_data *data) } } -static int check_path(char *str) +int check_path(char *str) { if (!ft_strncmp("./", str, 2) || \ !ft_strncmp("../", str, 3) || \ @@ -66,7 +64,7 @@ static int check_path(char *str) return (0); } -static char *search_path(t_pipe *base) +char *search_path(t_pipe *base) { char *tmp; int k; @@ -93,7 +91,6 @@ static char **get_path_envp(char **env) char *path; int i; - path = NULL; i = 0; if (*env == NULL) return (NULL); diff --git a/srcs/minishell.c b/srcs/minishell.c index e94ad23..23f1c95 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 13:34:21 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 15:20:58 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,6 +26,7 @@ int main(int argc, char **argv, char **envp) if (get_input(data) == FALSE) continue ; execute(data); + // check_leak(); input_free(data); } data_free(data); diff --git a/srcs/signal/signal.c b/srcs/signal/signal.c index 79d8f15..01572a7 100644 --- a/srcs/signal/signal.c +++ b/srcs/signal/signal.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/15 18:40:34 by kichlee #+# #+# */ -/* Updated: 2023/08/16 15:55:55 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 15:13:27 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/utils/env.c b/srcs/utils/env.c index 9bc8482..2659c86 100644 --- a/srcs/utils/env.c +++ b/srcs/utils/env.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 06:38:21 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 12:16:34 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 15:36:02 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -69,9 +69,15 @@ t_bool env_remove(t_data *data, char *key) return (FALSE); } if (!env->pre) + { + env->next->pre = NULL; data->envs = env->next; + } else + { + env->next->pre = env->pre; env->pre->next = env->next; + } ft_lstdelone(env); return (TRUE); } diff --git a/srcs/utils/error.c b/srcs/utils/error.c new file mode 100644 index 0000000..5532bb2 --- /dev/null +++ b/srcs/utils/error.c @@ -0,0 +1,103 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* error.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: eunwolee +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/08/17 14:53:39 by eunwolee #+# #+# */ +/* Updated: 2023/08/17 14:57:04 by eunwolee ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../../incs/minishell.h" + +void error_print(char *cmd, char *option, int flag); +void check_errortype(char *str, int flag); +static char *ft_strjoinstr(char *s1, char *s2); + +void error_print(char *cmd, char *option, int flag) +{ + char *tmp; + char *str; + + str = ft_strdup(cmd); + tmp = str; + str = ft_strjoinstr("bash: ", str); + free(tmp); + if (option) + { + tmp = str; + str = ft_strjoin(str, ": "); + free(tmp); + tmp = str; + str = ft_strjoin(str, option); + free(tmp); + } + check_errortype(str, flag); +} + +void check_errortype(char *str, int flag) +{ + char *tmp; + + tmp = str; + if (flag == 0) + str = ft_strjoinstr(str, ": command not found\n"); + else if (flag == 1) + str = ft_strjoinstr(str, ": No such file or directory\n"); + else if (flag == 2) + { + str = ft_strjoinstr(str, ": is a directory\n"); + } + else if (flag == 3) + { + str = "bash: exit: too many arguments\n"; + write(2, str, ft_strlen (str)); + return ; + } + else if (flag == 4) + { + write(2, "bash: exit: ", 12); + str = ft_strjoinstr(str, " numeric argument required\n"); + } + free(tmp); + write(2, str, ft_strlen (str)); + free(str); +} + +static char *ft_strjoinstr(char *s1, char *s2) +{ + char *tmp; + size_t lena; + size_t lenb; + + if (s1 == 0 || s2 == 0) + return (0); + lena = ft_strlen(s1); + lenb = ft_strlen(s2); + tmp = (char *)malloc(sizeof(char) * (lena + lenb + 1)); + if (!tmp) + return (0); + tmp[0] = '\0'; + ft_strlcat(tmp, s1, lena + 1); + ft_strlcat(tmp, s2, lena + lenb + 1); + tmp[lena + lenb] = '\0'; + return (tmp); +} + +t_bool error_back_readline(t_data *data, char *str, int error_code, int flag) +{ + if (flag) + perror(str); + else + printf("%s\n", str); + data->error_code = error_code; + return (FALSE); +} + +void program_error_exit(char *str) +{ + perror(str); + exit(errno); +} diff --git a/srcs/utils/utils.c b/srcs/utils/free.c similarity index 72% rename from srcs/utils/utils.c rename to srcs/utils/free.c index 6ec563d..c1a3e31 100644 --- a/srcs/utils/utils.c +++ b/srcs/utils/free.c @@ -1,38 +1,20 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* utils.c :+: :+: :+: */ +/* free.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/12 19:40:44 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 12:43:59 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 14:57:44 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -t_bool error_back_readline(t_data *data, char *str, int error_code, int flag); -void program_error_exit(char *str); void input_free(t_data *data); void data_free(t_data *data); -t_bool error_back_readline(t_data *data, char *str, int error_code, int flag) -{ - if (flag) - perror(str); - else - printf("%s\n", str); - data->error_code = error_code; - return (FALSE); -} - -void program_error_exit(char *str) -{ - perror(str); - exit(errno); -} - void input_free(t_data *data) { int i; From 58834abbbf3d5e45805a32a4540c16bc7128911d Mon Sep 17 00:00:00 2001 From: eunwoo Date: Thu, 17 Aug 2023 16:59:37 +0900 Subject: [PATCH 46/57] . --- minishell | Bin 91112 -> 0 bytes objs/Libft/ft_calloc.o | Bin 776 -> 0 bytes objs/Libft/ft_isalnum.o | Bin 760 -> 0 bytes objs/Libft/ft_isalpha.o | Bin 680 -> 0 bytes objs/Libft/ft_isdigit.o | Bin 664 -> 0 bytes objs/Libft/ft_itoa.o | Bin 1276 -> 0 bytes objs/Libft/ft_memset.o | Bin 700 -> 0 bytes objs/Libft/ft_putendl_fd.o | Bin 876 -> 0 bytes objs/Libft/ft_split.o | Bin 1776 -> 0 bytes objs/Libft/ft_strdup.o | Bin 972 -> 0 bytes objs/Libft/ft_strjoin.o | Bin 1072 -> 0 bytes objs/Libft/ft_strlcat.o | Bin 888 -> 0 bytes objs/Libft/ft_strlcpy.o | Bin 840 -> 0 bytes objs/Libft/ft_strlen.o | Bin 700 -> 0 bytes objs/Libft/ft_strncat.o | Bin 1112 -> 0 bytes objs/Libft/ft_strncmp.o | Bin 824 -> 0 bytes objs/Libft/ft_substr.o | Bin 1192 -> 0 bytes objs/builtin/builtin.o | Bin 1824 -> 0 bytes objs/builtin/ft_add_env_front.o | Bin 1540 -> 0 bytes objs/builtin/ft_atolong.o | Bin 1716 -> 0 bytes objs/builtin/ft_cd.o | Bin 2728 -> 0 bytes objs/builtin/ft_cnt_args.o | Bin 672 -> 0 bytes objs/builtin/ft_echo.o | Bin 1548 -> 0 bytes objs/builtin/ft_env.o | Bin 1056 -> 0 bytes objs/builtin/ft_exit.o | Bin 2528 -> 0 bytes objs/builtin/ft_export.o | Bin 1976 -> 0 bytes objs/builtin/ft_export_check.o | Bin 2404 -> 0 bytes objs/builtin/ft_export_print.o | Bin 2672 -> 0 bytes objs/builtin/ft_join_cmd.o | Bin 2292 -> 0 bytes objs/builtin/ft_pwd.o | Bin 1088 -> 0 bytes objs/builtin/ft_unset.o | Bin 1136 -> 0 bytes objs/builtin/ft_update_env_cd.o | Bin 1256 -> 0 bytes objs/builtin/ft_update_env_export.o | Bin 2612 -> 0 bytes objs/execute/child.o | Bin 2448 -> 0 bytes objs/execute/execve.o | Bin 2400 -> 0 bytes objs/execute/execve_utils.o | Bin 1776 -> 0 bytes objs/execute/file.o | Bin 1068 -> 0 bytes objs/execute/parent.o | Bin 1168 -> 0 bytes objs/execute/path.o | Bin 2484 -> 0 bytes objs/execute/pipe.o | Bin 1984 -> 0 bytes objs/init/init.o | Bin 1748 -> 0 bytes objs/input/get_input.o | Bin 1680 -> 0 bytes objs/lexer/expand.o | Bin 2052 -> 0 bytes objs/lexer/expand_check.o | Bin 2724 -> 0 bytes objs/lexer/lexer.o | Bin 2516 -> 0 bytes objs/lexer/lexer_utils.o | Bin 1228 -> 0 bytes objs/lexer/quote.o | Bin 2620 -> 0 bytes objs/lexer/tokenizer.o | Bin 2076 -> 0 bytes objs/minishell.o | Bin 956 -> 0 bytes objs/parser/parser.o | Bin 1660 -> 0 bytes objs/parser/syntax.o | Bin 2800 -> 0 bytes objs/redirect/heredoc.o | Bin 2520 -> 0 bytes objs/redirect/heredoc_parser.o | Bin 2824 -> 0 bytes objs/redirect/redirect.o | Bin 1616 -> 0 bytes objs/signal/signal.o | Bin 1856 -> 0 bytes objs/utils/env.o | Bin 2308 -> 0 bytes objs/utils/error.o | Bin 2756 -> 0 bytes objs/utils/free.o | Bin 1180 -> 0 bytes objs/utils/list.o | Bin 1460 -> 0 bytes objs/utils/list_clear.o | Bin 1028 -> 0 bytes objs/utils/temp.o | Bin 3032 -> 0 bytes objs/utils/tree.o | Bin 1684 -> 0 bytes 62 files changed, 0 insertions(+), 0 deletions(-) delete mode 100755 minishell delete mode 100644 objs/Libft/ft_calloc.o delete mode 100644 objs/Libft/ft_isalnum.o delete mode 100644 objs/Libft/ft_isalpha.o delete mode 100644 objs/Libft/ft_isdigit.o delete mode 100644 objs/Libft/ft_itoa.o delete mode 100644 objs/Libft/ft_memset.o delete mode 100644 objs/Libft/ft_putendl_fd.o delete mode 100644 objs/Libft/ft_split.o delete mode 100644 objs/Libft/ft_strdup.o delete mode 100644 objs/Libft/ft_strjoin.o delete mode 100644 objs/Libft/ft_strlcat.o delete mode 100644 objs/Libft/ft_strlcpy.o delete mode 100644 objs/Libft/ft_strlen.o delete mode 100644 objs/Libft/ft_strncat.o delete mode 100644 objs/Libft/ft_strncmp.o delete mode 100644 objs/Libft/ft_substr.o delete mode 100644 objs/builtin/builtin.o delete mode 100644 objs/builtin/ft_add_env_front.o delete mode 100644 objs/builtin/ft_atolong.o delete mode 100644 objs/builtin/ft_cd.o delete mode 100644 objs/builtin/ft_cnt_args.o delete mode 100644 objs/builtin/ft_echo.o delete mode 100644 objs/builtin/ft_env.o delete mode 100644 objs/builtin/ft_exit.o delete mode 100644 objs/builtin/ft_export.o delete mode 100644 objs/builtin/ft_export_check.o delete mode 100644 objs/builtin/ft_export_print.o delete mode 100644 objs/builtin/ft_join_cmd.o delete mode 100644 objs/builtin/ft_pwd.o delete mode 100644 objs/builtin/ft_unset.o delete mode 100644 objs/builtin/ft_update_env_cd.o delete mode 100644 objs/builtin/ft_update_env_export.o delete mode 100644 objs/execute/child.o delete mode 100644 objs/execute/execve.o delete mode 100644 objs/execute/execve_utils.o delete mode 100644 objs/execute/file.o delete mode 100644 objs/execute/parent.o delete mode 100644 objs/execute/path.o delete mode 100644 objs/execute/pipe.o delete mode 100644 objs/init/init.o delete mode 100644 objs/input/get_input.o delete mode 100644 objs/lexer/expand.o delete mode 100644 objs/lexer/expand_check.o delete mode 100644 objs/lexer/lexer.o delete mode 100644 objs/lexer/lexer_utils.o delete mode 100644 objs/lexer/quote.o delete mode 100644 objs/lexer/tokenizer.o delete mode 100644 objs/minishell.o delete mode 100644 objs/parser/parser.o delete mode 100644 objs/parser/syntax.o delete mode 100644 objs/redirect/heredoc.o delete mode 100644 objs/redirect/heredoc_parser.o delete mode 100644 objs/redirect/redirect.o delete mode 100644 objs/signal/signal.o delete mode 100644 objs/utils/env.o delete mode 100644 objs/utils/error.o delete mode 100644 objs/utils/free.o delete mode 100644 objs/utils/list.o delete mode 100644 objs/utils/list_clear.o delete mode 100644 objs/utils/temp.o delete mode 100644 objs/utils/tree.o diff --git a/minishell b/minishell deleted file mode 100755 index 9d181f1c00ce5d110762a817c4bba0c92946f7b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91112 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 diff --git a/objs/Libft/ft_calloc.o b/objs/Libft/ft_calloc.o deleted file mode 100644 index 8b630e61f0b50b71f097b3c7bb455805383d8d2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 776 zcmb7BF-yZh6n?4FingYMgMwlP*A6;4DjK-Kf=Gofa)y{tp=m`^EJC4B6hjw(g8x9r z&MMT+)iH|@LBUCigZf_Xjz+=3k9_yu_wL?zFUiBl>t_Z)8v$I9qsSg51`;uYTqgYo z?q&T^o>3Y-fk?gt&V8rpi(KfESuPE=%3PU{AI)-^0>Fnvn}P!8cHKL$Y@au3$NRNC z&NtT89>t0jhKws{LbF_Bl%vMBavSG!D%?G^JV#VG|2f~e@{w^@`lu?A%g^fc$Uq>#7>XDJis* zEzp{IEuYPdUErw&tj{9LUjpjC!|G)IEVY(P%Rc%hc)T!&5x+x$%Ba)it0!)wG$A4T YO9OX(?m6C(;{*4sYPD|1C0nHM4T&sd0{{R3 diff --git a/objs/Libft/ft_isalnum.o b/objs/Libft/ft_isalnum.o deleted file mode 100644 index beb024fb43c977a5ff07b8d7ec035a1071eac39f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 760 zcmb7CJxjw-6uqg^inb<$gMvZ_hb~>592G4@a1g2BB9G7y6RnmF<;GA^&_iMi!w@$&gaR-6=75QiKQtbJJ!rgz$_4+ zrB6~C;NU|!e=YS--~v4AhciQl!LNju#Rk_Y;0rB26=5w9{?UT83t1GZUBCwTS#Y;C)9C-!H9B z8|SIDTw3b#V0>p$2cxXWX>d9R))S}k|Cq3$PI^*xUpdEBXW#KfTL*5lG1Q)Iaqk~* Cq*RFj diff --git a/objs/Libft/ft_isalpha.o b/objs/Libft/ft_isalpha.o deleted file mode 100644 index da20b0195bfc3228a1611cc01e4a7ae55c359431..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SOFEk0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7kxfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw$ z%29yPOc1v;0BNXGfh+`wk5A2rPb*5yO@)ZX$D_J01FF;kMnlbmav8W87+^}kLPkJR z0*JwO@pCb-0Wk=GECq>oK;1C|NDBb@K>Z8>K#UAPdZBJb7AA@v>e2bMv-U@G?GH!( z9+1^QRuq4q2!xf$-y;TLRq^-p09nUf|A1_I35qfx8%Q#AyZ(ti3}S!*G+r>A12PZ< z7^{L97%K!A1$fvwCID5b0L5g0xZ*zqz~Ys`kx!tF$(ff8qzMXu%Gp2$^CO!cpH>o| NS)7+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z4ETG*fLeeoOa6WyAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag<#WTt0=Qwad2 CK0yZn diff --git a/objs/Libft/ft_itoa.o b/objs/Libft/ft_itoa.o deleted file mode 100644 index f99951707e6d3e44c5bc413fec64ca3decbb3f38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1276 zcma)5&ubGw6rR-B2CYfJ7Agn^^dLy2h!+onu^AYl0g)=blp$`@bfHa3y1^g>8d4?8 z67bqT!JByVBE?GETTk9|5jGHE4*^pNjo+J{jfq9@k@x2P_}=&444ac*KhCBY3teC^ z&@ePI0h542u0b1A_=n6B7IIskK@3htN_-?zTDgkl`+mH{mzVy;fmhSBh>v=gVH8K0 z?F1M)r8Ks!l3B>>q?F@)0nbHUe@_=25xwp(1HR(sR@Sg&x$w#?tV+3<9v0yQZ}3Pb zKY))YD_Bl*jZsROTbFC4>}Jky_^ z-@qRDv16F~IML6ZLP@A6P{NNbN`U{6=feIj>YapL?F)nVh0R^zR9%-^ZQgZwx4s_| zM(;BXQdvM+qF!yW*qdqOMDyVT)KrPkZph|6)ZL)&@YW%lZ{H-WN;j{PtI|nfa(4is zxoxDGGCpp1!N<8`?-Mg!*E2674@%)m4n!g9WXI{5v*+qF z8XbE5jD;%kP<(nS@(!q5$X|!fozbp?f#zo{6^*~0ShzB&`v{kYdK#zaoWnf<2A_12 zu=w6)@A_wwzEwyv0fVuMmQH%ID4gI%ci_e-){?+E5-NW*W^$`k%;WzibEQ(TBy$zh aV$vvBa@EX}yJkrvyRlI;lxteWEc*>BSM#X= diff --git a/objs/Libft/ft_memset.o b/objs/Libft/ft_memset.o deleted file mode 100644 index a58395d4b75244653f309add6ecc5517919e15df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 700 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%H~)KfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1; z%29yQ7EBPg%mC6*rvh0B5FekK5ua9+n41a_i;qWjUjtOB1C)+{ng``Fa5FGuz}O(# z2#6(s7;G0m7Xup*g8;}IX`og2z^@m5N>w|9JFCD)3fxH(Uod-P{5B>)Nk51ng9?d@(_*-OvMt8XarF|cG zbe{5PJOr{GsQp0)ej!|B`_%H;6XZ6-|Wtk3N`S}%r`spy?IZcKHtBhM4=Ia14e;Z7%m0C=7A=E_`@Eh zzQi-IfJ2iQtjDIcWz;M`_jxXx&;9ZsGbCX>p8b#ravAh+)cWwus+P?oDQZ2a7wE`Z z)Cv;mAEK;xa(sGlXldI#FPjCeH#el!3nd{biERk*nX$3wBcxT1ODFU$ZpOIHqHtJo9x5hB=nuc@hUFF(6iG1frAT9zT>i4gikGBFY#mVgku>v?sK%J_gsMEbIgR}TF2vC;8U%vyu3q z5D&YygIILR4H*eWQIC#pgP$zDtE3Q-s2EE0k4D@Ld-=`D>@Tw3s;nnnc8sy8wd?4|WE&4;K5`BPa>+B=z2}YA zuBv&XvPu<9tz>DX?3}{&YMxj)C^xkN&!!7ZooWQer*E%;ffLH6OF)S?(1M3@D^%d7 zQalHIQM2)6Xj9;pfmY!PpAOk>VT%fX4fM_rT~=EsDUa>sXBz9<+qG)u22&^Lrg2L{ z9pA0cx;k}A`n-;Y0;bjCB?n4ZEp1)RyN#T4**KS}**GBhRk^;zm1S;*s>KgmTU(Z9 zyG&&NHkuDN4LcVuBMIEK!XgSg-ED`8AstY`smdM8+idJ@Hg@rWla;nHu0f zF}vG=U#@OwlDSvU>Lk6m^Ihk&8hs(=b8B05#|^kq-7Qzwn3vw#yTS(=6qS!5AUm7F zq3h|9WcD_B-FLRUw4r~#Bh{HzK36>rX_RQw`ogb(CqVM8`~%7XV)9YRPwSoz!7@1d z={?YG(ksYzC;!u5G2x|YUlmQ*x;0VjHkLjUF5H+17!p|%o}CEWQf%6-nDU>;r1o`Y z>R%~p#U^S%=C1Qc+7!Kuq1iFvxoMvkKmPpWZ1-$|NdK#Rr^g;?l-d74nPwqV7#kk> zhFdR?e+JC{NzJ|sntNFIGVo?Rr+p3>yDTk&v7gd>8b6){L#8wV#%fC-iF41vc{tWy z!|4hWzdKePd!5Gn?h~&Ej2B&T>wCm?zqWz5!=CTgeD<2;_oOdVh<>1%%<542(3}Jy~ zV7U=2MHp}i*5Srq@IZRg%mI=dn#9I>46OsV8N_j%FWJjWr+E_nkbw1=+reOGxt5_V zb_uk0HUqy}UzLK^!+MF%fQvm-{DCRRxF;3pdFvY$C(w=hlWP5u){D1JnjFY?7Ns~1 zJ(hffMOs6WTDxm{#jmWpG2zeoibA>}dP?*prSn8>_MH%b%kxjKPO;{Vn+X zdqwbb@Zi&JSQ^Y_!Q@gF`8>=AbDPtc>Qa)7Hp4#5ybCfxF z$3AWuyQ|u*F6Ez(aqs2)>!h`BhX|o$M_Y50e|Ak0WlojK(M|yyy1R|g{A}-ArWGpZ zOJ^c?^r_$P9|^yg=3}fBzxOXbD=ViQe$M203=H~l_Wp;5mCd0$;6vnH@n;QTLNe>= z9kQAQt1vd2dxc$BQJ;dnKgO6q@-FG-g~E%Gh4HNLmf>+PrMvLB)5&>w&`Ve1yfi5u zj_X;@^QkFj;ySknxQsQ`9>nRK^oH-P;(cn@_dQ>`&1yh;CD8a+J@%^gB(Aw}=u~Po H&msB^D6y^p diff --git a/objs/Libft/ft_strlcat.o b/objs/Libft/ft_strlcat.o deleted file mode 100644 index 1a44b8f2d409487dbcfa82492673fcda67ba14d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 888 zcma)5ze^)Q6rS}*6i?k1EEFs(J5G3iWsMT#^B8&F6YER5gF&S)$IKlt{&_q}=FyujrC>G8RPF{_o~1Ga$| zlnjHwAUH|&2bj^le>$2Po{UJo1S#G0o*U+2J;&$g-fELQ>V*7gmr)qBkk-b2QZSG* zwXwdLOu2F=v%8vEl5+Zo=~1leVpzulOlX%$eDtafTiwQf=@q%Wm0VAUij?p7bM#P5 z4+PrJ%zt5Q#pDzxzyYu^W_Pg&NT5qekLlmFh)6Z&*$mhWnl)_JKa(ef`Y*hPm{12* zp>_hH5@q2ZR0A3oiWgA?rYHy>!W1vtzx$}|^MYvQWgM$j{)R#k0*pW(jWHaL(rSvA z#;=4Q5A4f6?}=r3-ahPy?(>q$dAYiZm%JLY|6FGi`4gT$x9p>Kv@6lj6>H_huN*lE z6%S4vxZ{>4t(tWzXZ3oW8h4G=Xp;i12B{{z+t|Vl#troQA;)*1r3lvkEVK3;%jxdu zJjJOIXhUG}8J7U&{jqPo&T-54o(K&AUqKv?(*J=XX^0V!+4RxqL2N4V@Rwb=?QX55 KlJ0As&af9Gnwnhz diff --git a/objs/Libft/ft_strlcpy.o b/objs/Libft/ft_strlcpy.o deleted file mode 100644 index 98c68f0743316b5bc1f76fa4c587c67bf9078b5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 840 zcma)4Jxjw-6uqh17QYg~LBXMegNsm|1Q$gEZ?GUz!9^aWRur^~ruYFxr7EUfT*TGU zpWr0*195ZIv5Sy`f@5*8o}0YbI0#-ix%ZrR-?=v-PoM8!5hAUL@Bo^DD=uOHq8Aup z{znX`vlo?p4o_mRFNc&?X4~>=k0;H!WP|(Ftt!}$cVPq9x|#OXk(;DUudS}9(w59+ zx0bUDQcg_<&mR?useBRgc8U6aL{J(bWoAh(ZlqQ-o+jn*{T$UgrgB;NDN1cbOMcCH z80Z1q-St)q0~|b*bpv~F9Yi?-{h5afDZ*gJgKZKogggsjkrM%<5 zhp^2TQOH+FKk9&)D1q8$t-1$NW%r@7C?y>Ix~uR>C+4$$$m{V9O+PO~D4Nfgnts&6 z{iA$TGBM#s9Nh4}!cI6v0~#g=w2u?kDx#&1z`RQJj0?0qG3iNbw+{tiZgxb>DQ{*rY(D|W) XzfXYTM_#n#rnRw>Uf=ntGg(}!*iUF| z3>q9;gXZ8l1dh^>eaCm78WHrtchC2od+xd4%jd^eoXD6W9AFfD6p;pjB`_oY4?OAq ztDXrxc9Kx`3Ya~&<^?+NSv!{<`%pPr$Uez3LX;XK4Z&PEDWB#G9-mh(jw*-D+gp?O zjy7psGm#+69jcBBH3qX=;$k&lc7q=C&wLF%x~^+Z@6(oMiAtfCx(Y6W!@tZKih%<8 zRQmTi#{+5-9`9)voP@m9Str~7()+6Qu3Gh;>e#+KP|bRe%SvQf*R4nwU7>`K=Q;rZ^^!UuH9=jF#27dWeJ^%m! diff --git a/objs/Libft/ft_strncat.o b/objs/Libft/ft_strncat.o deleted file mode 100644 index 2318428921b28eff1eba07002006d7a98fc9dcc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1112 zcmb7DL2DC16rOEsy4cpuA%zMaDtJ&Z5cDEcp`rtGP!MS$7a8KZZ3F2hY<4jSfx@bE z4F!+-FT8q@f?|pV-9rvJ_7EWfg&c#2#_#RUrrUxCAH03<%{Slo-tNr)`1AXCmN9Lb z;Q^n4>r;3v!(kWUy9E5hY6`nb99U9AlaZ4inUt>8aN|6#*LZR5q)xKAlpb;4VX$)q z&afQ{iAibJU8ihsss$-e>m@o77kh5f3#LqsJ6VBVb-PwFUFq4+%l0!VAKagSNV00K zWwm$=8U|#3iTi`oFd=f}g_wRS-dQC<3n^toMZ995Ul2bwb)_#;XNN z+k8aggF`A>&0(J^VLt2$?I7SsEq>(hYr-6TqETWn;9V$mp)gN-_wKw;pf>Lyg$^G= zqO)^bN5?Cvl{YyZV3)w%oZj*}{#PyVI)iWH@p#g`%|lXY@oTj`& zX1@gga13o&a!=Xa3)$CG_ZBjW_Yo1>^L0d=SKda%SuYmjm|sD}k>?R;UuF@}NKJ7) zUMDy*x<4tHT|QG2md2T^In_@vCGO8j-US(@Y(%f_-}SrKTKDwV29 G4gUhX9Y5Z#L!#jm@{s&93 z5KGZQut?6zlxYN02$m`#@l9?niHP99%e;9zGy67N?(41GDumG_@B=ghH$*}Jq7N9O z`j7C>^4#Os*eM9KmqKehnzTLc)r)dzv0nS^nF;M9FSTeE2Q?0&bz~#Hxe~GUPGWaG zv8wgVbmMuRixB6_fak@6A+`#o9$H6ZdTnbZ9`!V>fBO62)(Oro@8eQ*2odu+du^2e#ly;ZQO^Fma&}&o6E3KX1ebYa)Y2Wf zRhij>avs&;T?J9?Ir}V%v~5} zx&;lzx%#NrY>hveDS9z4WOeAtnJpCuSywIePWI>4Dz_MhwFguq~0 J5s7b7&o}l;ioyT@ diff --git a/objs/Libft/ft_substr.o b/objs/Libft/ft_substr.o deleted file mode 100644 index ca036a4033848a9a967e5fea655e093d382688ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1192 zcmZ`&&ubGw6rQd95j1sku%Mt2!9zg;(Ss;fi0Hx;8VK5;7a7u+Hi0$?+YJV#pv0C; zgV>AUKOpFTAP7yW(o_#NC&@7vApr%29HNJ&-^{gxNKIkW)B|y1a57TjBN4(%&1Qiw!SESj;EgxxSa-Ujb+?BYO`x4pv@O4L?GKmxTpAUptJ3Q_XBT!#;kNwBwHlXI zyFePXmd9bC06sP|YJ7~&gSu_9PH}@5)*4J-_Y(Hv#=AaLHR|vg;2P7PKY`n0x>Uhv zb$&hEEE;9KK)(~@_89uM*H`$x#Rs@KKXE+ZXvQv^f(* zdxMv9^;!9Q_F08yo0CR8RGbO6UUs`(XMWU#>${^K+73g1jy(9Z5L->6yf5k=6UBg> zQjzxf4%6~J&F7u)(4D$~{8?z^0Q*3kcff9*^lgmXn(VzL;1wwDLEr-{?$Fd5ShNT7 zb{x2;?0IEj2p^w<)!{gD5soWl{-KyKH_k-X%q-zuh=gfoOp(Z^EG8B$v6@@JgSK7E QTu!8WZalWUoQZ?u5DAag=>Px# diff --git a/objs/builtin/builtin.o b/objs/builtin/builtin.o deleted file mode 100644 index 189e89f290f924ceba8b176131909d6cd1985ac2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1824 zcma)7&ubG=5S}z?8*O!0w9Hvk_tuIG;T;U6`;vQFIsb?xYZxhW-Yz zSyTxbaFQ|3ilA{Q0O^^wI3Qjg|U^o zpe$U5{U*-Ao+a1(++VS(D^}&3X;sT>Rt@^_#AVc4<~vyB8kIU3 zelIrfhu8U#K^&`M@?$RJAzPVzoZt%<#f-OQa--lygZUNZm-$g!y0bIz8_bu?#I>|C z`AEUF2JoLRMk04(}OM7&q;4?2!0=dKR`Il+chVdGi6f_Anty;;H$>n<7@VA5%U9VhE z7=Ggw%Joje-=P??P$8w0yA1#MrjYJYQ1zQ%`xMyvaNYm-lDo{~F$u}dcVthJW9Meb zDdjyXEKE|-op(II!pt0udmD*T&heF~pM&(sbwv7UcboVwMULGWrC7;~nZ4b~$KW1- ze-E_(*Y8kNeWJ75%?BOlxA6e5FmDK&*^oTdr-gSCgPb5r_rM}Iy^0=qj`T-ZOh@`P zEZ!ph92TRUc40wH55Oj24T<}Hpcms6Sj79@Df~*|X9_=2cvj&lg)b<4M&Z2*?^HMi zi&o+1vAqh+y|tWHSl{a?a3oATB~i@#DCYZ)VjjsTzSx8hHeo(*lush-2_A&d%DIqR yObl=2#PAOP53W63kW8K`;glR(+$iR6d3iT<^N2AOb0_SaW8c(KkuAD5TGJnzye~ii diff --git a/objs/builtin/ft_add_env_front.o b/objs/builtin/ft_add_env_front.o deleted file mode 100644 index 9b8bb34f6b74ecf9d618bfabe1ab551bce6ca743..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1540 zcmb7E&ubGw6rR*JO>1p(P^cm{2f-d(EZzk}4a~t}l@>$@lQr2ik#y5;H#Ud?C04pD zLJwZN`44#U;z3ZbMUP%{l3s)aEc6&WM8CKDCQVa&@WGpJ-tYHjhWY+`zdI^KKU=AabH-cQ;1m6Tq+BfaW@^p;xEPj_UamJspH3&UyDrmu`Kg zDL&E2x=xGgpqCc+GC_4--T2sZY19uy{6&h?KDzhOy`RPeRQVf*X&!dsSDW6K{=`!> zRiJ1Gd1+*So=U<(C3j~tJMrnTUwt->dItsR3S>}wlU`waCTM`->2y#(6$|>Hlk&%; z7wJh}B(w9-TrVO()1z<`T));4uCnkh#AEg(Ywn(4Kg;ovC-+38mWU)KMq}HExeWb9 zaIE_$Ag(V&YBKS1Xzq-DL*$3+5)16def-m}48JD(aX-iWy70jpHTHq{Ka3wh)G|H* zW5D-7yybJRfy0oW197@W7KpYD{!)yqkU_>xEYL@jjDSGS0w-b6=XZ%^eO`3gao9CI zz@|?WYXdUb`t5fH_$I+bPoF3NJ8 qileMrDRjc0Xy?q{zHHfubu3G$oMV};738!lc_>gXXO_#AocIgzNe&JG diff --git a/objs/builtin/ft_atolong.o b/objs/builtin/ft_atolong.o deleted file mode 100644 index 88851a1b652e0fc8b979ec1ffab66a019ef7f093..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1716 zcma)6T}YEr7(O$9W~paVkwK(HP!TgLgMuI|!^8gUUfSGtBk8-#K5-{Gpef^PcB@pYxpeyxZC5U*9(> z7<24nm@rB)W@*uY0XvFuneZ-_r;V_b=GYjTjD}7#DZ{?8Ffo-$*=gMBw9%%2TcXya zN40z@V++yzVBsdxf_Db2-YUjwm(>mii_#9$XOCDmR3)2h*r1be^ z->_%MXXCB)wdjk?sx+&Ej(s-@9bn9_Q3*XPmG05mpir1B^d->tpfU%!- zV33h64cbe!>egcQ|JEhqUxoRtNyMW$5s$2hq>-WBNh3{iNh4K&i3GBbBk2`NiMWvy z2_u(iPnipjcza5Cm-+lvmz6a0j8D8GRw9}qmhiTx_a^f57m&^a=Y{#9se6&vGpk?mXdbnA{BjMuj^yZ&6uWMoy$epFT^t{6G~gc|-&EY?69=Z#f!1r1vg=2``xszNMj ztW(Wddb?O-W(i}xdr|jC>o;Gt?5EN{50aSO5{sQdtVn-uGrPR^L3Cn~xv82RoksUbKcwQ!asMWBjJX`HstV^*sGLOn7{-frdOwANu8*&ZREh8Sj7B=%+@pPR#^625TY$#q2)|Ty{H;u%Y=IOe(>CJ(ItGS=Sqg?kL z?ddr6 diff --git a/objs/builtin/ft_cd.o b/objs/builtin/ft_cd.o deleted file mode 100644 index 7dfb1564cb09b72c1a9df5fec58dc4bccb2ea7fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2728 zcmb7GVQ3sh6rR+kxh75SM2js5*?_eLS&2$O1C^-RGGMeZG+31|IrsK*N0Pg^w`Zer zCFOe3WjV^>1Tu5gULJaiRj97f3^SY{)6~rUe`w_-;=v^U&a8e@a#wQ)+(3szO zeJ~XrZ|0DSr$yGrSSnl-K8kq^Q@)C5D?5ZqgEl4o0`j;UxO|wg6(IcCASMmkiYEC| zu17Hc?-=I(ZC+gO=6<2dm#kIt|C*xSpr}&hzE$DHLWM<3v;!}nHgQ7A6j)Ur^ck2D z%os0D$3W{MT7ZD%o|YYIq2gP=NVm0@LPDcI#gOr)B9d9$VA0Fet1?`Wukc`aRa$&& zbFJQ>0)xqxtWC;2ur_(|X7|Wq^5JObWiqg6CzJJFS|3D(JdiJ#2MiT%aDTq?&-OO= z=T-=Uc?sp7Gk6o%h*-;~l!63;q?db65Mk%ADC1Hrok!4jj5pH` z++UKLaKE%nUiT<3N~B(ot;wuZ<@qYse(6U%Z_s;FYDGbyg^(GPiQ<tH~14j`K9YHMoUp>1G(mxZqiAOEXt_Sw&bkt7X$r*Bg? zUl;s!eP3>4phNxdQCnwx4zY0R=hp-S#AI5 z4)#8}BrzUTu*d&irDsiV4zZ@`SX1msOJo+T2cW+n^9nkRhR&a{r#fP9A9$u6*QFf9 zqbdhC6;Ic(FK+_8)W3?S>)Dt0E_hcpPuI0C?>cy=wp2V_-yYr&>c{WId=`kKI(ia_ zpObkX5O=iMruFn^Li#F5r2iEd0WJf{?^~^()AFal4%jaOapjvXkoFnZcKZLsU14tF zEOAz+Zv%<>lu-Tn3PnXpsw%$Or;*8vk#Zgvb`BEoUqtSg-9w8um`Cvbb%PA*3tAWKy; zo}S1%SSLM!&#Od!DqLplNvs95aeEvdLwv23LYAwDsYwNWDb56PrBh5!Hn diff --git a/objs/builtin/ft_cnt_args.o b/objs/builtin/ft_cnt_args.o deleted file mode 100644 index 8ed69ebd551cee8a96f9d7712945fb16907dffed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 672 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SO68j0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAajHfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw! z%29yQ5=;=cQ~+tHQ-Lf5h>uUrh)*j@%uR)e#mA$%F9E950ZLmy&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW1~+jtM|o0LTaGX9xgdWB}3&bt|$kQS4BU&Zi!owLgx# zegUcX=yv_#(QLuM-y#d-b-R9PKET-N`o*K$_lHO0K@O0LPTwCdum1o4A1E1n7^DXb zpz(p>3=yb2V^t6XV}$^t01rFI1fVJvptuYWHvmln0a$!8IPwX!F*)}MqF;=_$p}MEz2QA$`Ck?{>>q~pGh)~|udKV&Th?n7 z3@7Iq#d+5##%tTO;pnctVQtjyVb}76mhbjKx@R~8XxF{!*LuBPC8S~H2r%RWa-QF9 zI6g9JEkqP;`Fz-m6v!@0i+5gPlDDD}9uU6)v6ZU{ZJB|S4M6Ktyyn~EKG zt7|05KijD25SLA08m$~8bP7%Og|qKLJWwz34)YzT_i(?m_)sYLsYFh+t1CcV!u~n< z$RFr}@%IaHw=43z<=)9Q?jzhF++!T;I21PpTxmDp+naA6UngELyj!tWM0`$tKo8|> zh?K8#UgSK12)VH bgfvqLb5bU!#wUcF#b0MO$x%+FGoZ+c(g~toxfi|xoCET2HI7pakdTkc`4Dr|z}sLAMn63O zsv*6Cqt(Oz+&|Rmo*sWyIvpM8%mJ1ZP}kYeo`{D|or%sylU$_E?s&9oHC|npOeUGA zuHP;$LvB$~kJ{AP$@ia}L$TPG$M(kqn}aedQ)kYh9)DC%K6t@KOI;bX)csHm*4>`! z`p-NS#;W7To|}a6^Wtj6lFU00gQ+-Ul=WhTtf6h$Cl~7PP$lo>0$~3tqI^fReA<3J zck7hgvBV~T@@4?WZ_s>f_#PPd+q_fgv)91*NtzeI^I(wl)nuTCEGCYDE0QkFXqmT~ zZ_Q|VAJsf@H(}fq$-)u-DM^0h1_`(0wE;xzdE8;Q*N!<#Vk(NddDYX<57_N@h<*c> CvyNf_ diff --git a/objs/builtin/ft_exit.o b/objs/builtin/ft_exit.o deleted file mode 100644 index f0a8f19bc152ca7102e94e997fb77c63fb4029e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2528 zcmb7GO>7%Q6dtD~HKENKk%%IJlBzwlM2lP}B@QG~fG%1I0#)0fawtROY?`$356+qz zkfl@`Lsm;52P9BWm5@*c2d)TEFa%`if%X81Ll2e+C_zRtCId6cET;U*Nih2_z=hiqMOOM1YIiN8= zQ*BI1@uiw2pEB89jE(z!(h;=%XyPce7S@bLLX(pJ4Dx7&j^2q}p)sDFKqH~4sL@!; z6_Ece!>0SI>6F8!o2#0hfi~EQ7BszVXqnhd*H|{a+_ErSW2tDAXg;%OR4DA^mI7Ly zs>z%ih+yZA76j7ERb1nyWbkrTFSBHN!^_@K$#+RY)A>4lc5&<>tz(AR*nE9HZf4bV zhnL-eyb)Nt`;AU z(iC3qrfdAHyhN4-S!PK%T%&{qF>PiVKsi-5xIsU2zR_zs)i&*oQ{6*JPxlA02d2W4 zM_XtME`;Ie`$>Ddy&>S-?$h4d3un<-!;`HLpvL?G7LEv2jc2UYpSIQ^^L5H0QGafx zg8iv1P*JNbFsjADDDC4H^bpQkwbaIU()e1v_(dv;rS5z^qx7h;s?9mzk_Y`9dg7pC zLnYJem(@bGG}FIbL>~A73e63?0JT7uMSZTc%$0)#z)9Dbdn7Xw5c^$Pc?r9MgX=uI zXk{nt7N++_BHi7+k#P6J(PKTmy~m>AD6`V(WExyG$;&RyvPtHZ^@xmYiQiD3_a$yi ze3~vCNVim5;sq67+#ycyAxYrXlPr)81wwoG1n0qW2tK;!-}@Wug{b@)d#p9|deam8 za6Jkk9LkrmHHlN}*cLYl*#3VcPOWEK+&jQsQ8=}(ZE>Fi_ld%(^=-jj*d^{{{Yhxt zwR*p_+q zg2qp8!Grj2AxFah0!{cIp~2Js4K!Xo{WE3128~avuBt}ouxT89l4;zK!aWF$3qXGW z8ebfJ8X8kIzo_(}(w#~}iTIn)tpNJ2_{H+B54zk2#nat$t3>h@D%><*kcTY dR_p>7@4Wp=%Btf^CSW14^T~+>kHtqB`wv%L3L5|b diff --git a/objs/builtin/ft_export.o b/objs/builtin/ft_export.o deleted file mode 100644 index 73483d45bb1184f4f332b002735b9a4c1e843457..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1976 zcmb7EO=uHQ5T0nQ@ppqLs0htLLC}>}iV7k`bYcCe6tSQOd8WzMR@)@qZZwJkVXbyu z3Lf+l}|6)Gg4w1*yoRO>hU-p2gcg9Eek=Kp&$yZhzmkKdb#A{z-0 za2t4r4{(Bxxg636BsG}w^D>n(@SOte8B?)oOxPC3v{>rHh^33%DESrdS zu&Iq6OOJdCk;;zbk|{^zGxvuwX(2A3ulG-@I$_dd6k{y$c3Brk6(O^Pum;6|ogA@3 zy%FDGb&(nACIYVTZfx2{G#I*A9tZCQ2V>E;QahN5o3cFt9DJ`BhBOU{eCh==ab0H4 zft5oXpP$iCn?-mBJz8+Yy3tcv6LXRA$!J z)|wmn#;WOl>b&`J;F#9&gkwqTpa8#Dtj-xLYyo8Md6bX7Q3a;BTZl!pah{EDthl9! zXRIg}!>v|6qZd3kKWZK4N!F9|sA3)f%2iM-5jXupR9&D4vx;<;Ouq-tEvA1V?mmdo zgt4TJ@2a&1m_m%SSF;m6OV5p^X`sN%K$ZTw2%Z@i@giu1W~UnZ<)RI0B8n|7nBE+K z)ke9%qx3%11FQ50;|qb;IKjVfG zS5R>Z??2;SA};Y;)>F7!;vV2f(nh3TQSuBVekFQ0B(UjwAn{h}pK%v_==ys|d@Fh< zWEAo>dSEO1BS?hmSxC6_6Oi~9>HN8Z^jmnq-kwl0t|UZY?}FTkfD#)(r@^d;d*RKq z9`0d3jvDKV_*kdXvnHKqQSX1#q>nb~e4qOGLruETq~B=LNu&m?)Lmg^?vWUClC~qP zLN04NBnBFeV~(9kC1Flw9FeqdkCC{O9m*ibCXus;V3mm?Yo{&P^0{=8T l7CI$iM_J^g^SSUiY-MUFM)S#G5^3w+P#URH8?Y^l{s3n=n63Z- diff --git a/objs/builtin/ft_export_check.o b/objs/builtin/ft_export_check.o deleted file mode 100644 index 3b65a7f015991d07362b819ff754a7cdb358a655..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2404 zcmbVNUuaup6#p`3m(99cWyARgdKE{768|AG>jF`C;XYUx-3l_C-?HSUxh}oQZf<4~ zf`yxmW}(st1%2zIkNTkaAa$~_fG=)u;!|lWBoHBw-8x%;=ic*WNwdlH!1>O1{{7DR z{@m~WcIU6{eL_SY5g5RG!O=Y!bTH^?@B%p=K!ry`$4it0QaUgNG2szO=~;7LI1lyH z#s{bG>1wt}jerP`a=!w|Fd6oWc@m1GOcg!Xc4pWhWj~(6k?jAT`&9Ydu2RuoDnDCD zraW14KCzv&l<%MDIx*>RU(0MfG9(0qe)MI7Vykf-=_r(6$;BY8ZE+iWY4I0y}0sETWtQP&e+H{&oHAwTw23 zlkHtk!{ER+p)`yQ5>#7TiTbytR(ZawALE5Zvk9L^Uc&G?1!TMo$-YB<&DHbY5j_^{!K)y(y_D-VyGKU|7xUWG+W>8?Cekz zJxN-1oRR92P5+mOnYyK|43GG?xdxSX#KEU&9IQQXk!9?Rw}L@GtXg_+c0~;13>8_#WgxhgX0o z7K(xVL!n(nKAjSgxsk}o@V@90qF#jkIq=CX93qJO7vi0RBbWEQ_qcldDDDJ!ljC?D z_l?UTZu##JkNdrE9KE~0KSbP5h#T1s@pyd$c&D&`=ry(byha1lN05Qe=Tl@| z-G?_>SLgpO>*_o|gWdxtrgrJHu3kTVrM>!vT{^9&*Dqu$Yo#to%ef?E27mKHI_X)Y z%J5SWvf$=t@MD&i>*ifpZBHc?a;2i0mz=cao=>^~id{_RoYJiFSr<#m90A#mmr+KC T{`L6fTQqu-QVQ85+7tf(8Epto diff --git a/objs/builtin/ft_export_print.o b/objs/builtin/ft_export_print.o deleted file mode 100644 index 0e3c966fe21a476fe853897ba27187b42bd773cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2672 zcmb7GU1(cX96#B*E^b{DWYrCY#^GcyS6dyphX(4$g(Db0m*Iosn%>;5)wD^Ido>mc z)!Rw0mr4cag9z@ih!1<&+=I^A4O>NM`qqaIf>cOAK}V3Vsqyze=iH=Cy9WtNQ@3PO%M#jFbj5mbo`uR7{+#gfuBc|d|zi^DN%*n zWWrx|ESEBE!x?{PbUbYs&p+D~Vi8t}TvW_H_@hwg!;GmCY;$QC)`&5jPmNj9pgq0? z<*%&#m6Sh4vV)9`1Z%>_F^^!1Rzwc4PD~oKDe!LHuxBq}(jXn06feap zEwT6?BgwsAx%*om_onL0dW|f(uh+Rh80DV6F4x6qg#_+mh@16mh=>Uq3T5t2m09F` z7un6leS{)JRnmuSokeDzpruc~ibtfKpD1%PS>s;EniLF%X*1ucxj%$Fr&e8RG#cEW zDhJzCKva}%uyAkmoxMK4OZ?0FChhJ{ZL-LP#gmPNP~<$7r@Dp*gj8yziY>5*UiT9< z_xq41p4?pH?m!7aUxboK-b~cEKd>S+lQnkG#nO)fy$H0n+u>VI--{5{yZtf4<;&V=g&m~m{=HgdSwM(+M?$ib<8Yefh z`S%Ntq#yshrB=N!VEf53MD(^%9;){SqPh5Fi@mkUa${ew;m~<{t@B<{eyeSikH}2 z*2@%uDs4G(?Qqz=9goa(gX!yK5p=nF6V98IY%NL=TI1fT*bFttDMc|KfLZ@v$RE)K zHTM(PEL3fY$WsN!FF0dDPBy+nf2R!@zn`eUOqOaWRTyDu%gm(mR!l3#V(fS!e(cx* z0mlns(e~2#j?z-EBe|5%MMWG$yD;Qa@d!$a^NZx|kT24U3ge7~9rBpEAHKbd{IKM+ z(BvyDRE&nAUHilH@bWPDbdQ|6L#=N#RQ!xR)gAp{&ohUD>w)y}_h2QZr}EfUF9W@+ ze@lNVpI!Anf!_2#QcvZztKK){PwA=rcIf?#{P7aiE-SpC@LeEUq;&z2i*^TfB>YU_ z#|meGhroXih+ofyqTf{X8AZRS=*JXI_c4Aw4@uPa0`aocQm8HN8tr8u?SC0LAO!6z zAXwTLKnyL12d*aVRUi((_5zUnodV*D*G>S#z-b`tI^R$@s4%7wAmm>HyP>#942(}P zi4M+}4LSlkI4?0p2j{C_(Eu^%I|Ay>@pT(b{n#r1u#MK+=-1n5x{J5k_q5UPx6!1# zRi7ETeD)l^Ck!i}&*lxQIBGLv*ft8z5I%&k%v+X`Hq4P!-pCOnhp!_Wdbw=gHnRD& zMM}`O^Jym+EXU2U<~n1IGuT_^TZT2^q%zD%TW^o1t$-2^hlORPU>8Owt+q`joU9FA Wfi@g+hK4dAC@f)OrZSnV$^HXkeP=cR diff --git a/objs/builtin/ft_join_cmd.o b/objs/builtin/ft_join_cmd.o deleted file mode 100644 index 88463bb3b4e95ef924d2a1118f25ad80e4290765..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2292 zcmb7FPly{;7=P)m+f>_~C|mr4ut5a{nX(EVgcefUfhQU)(#2kuXLd5XNt>O7G|{vW zjLt@OIu!Pxs5cKDy!0Y?E6c8}rZ?A%dRW*wtdKy2IRuQ0?)v-Qyy>RN_TWd}eDC}B z`~JL{m!Eh4+&juxY>eT7HI5ZOf=3by^fcBA86HCG6aadOVnC4$Oh!wYnGhALRw0j& zgt%y2x)@0Z{52{BM0gb2o?vW}6yvNxEFvMytCe!zUQ~)SN>=4YaH!8L zE|oH7MO5t%^LAE()7-KnQlI&GHpTd$yp*_kbu!txr=^Loy1o(wGW8Z)yo?XBqqB+u{SgI8+|C?sH z`v-TrN$%GB+^hH7gy0%I&*(YpF>dzP2vusiYqYsjZ!@iV96EmUOb=CtCPZ?t+CK2} z$oFn??#{v~ZF-qNnKpf%F_kYt`C3Mg^uX*hZTTE+Jp(wYq*I$hmL~@^+^fYU`k2wX zUmiBxOC#b<;HCSW@AmiiQ8*GOka#d(O7`bggO<@9$obb{8PKQy%DMthI@c0x#n{%G zTIB205={GiV>VDJ?_e$}DeJYM(Ho4p4ZuMR?zDIK)-Vxy+kqLIHqNWdH_$K-<<76p}yR7o(T&;(sba>cHLi{pJHyc%gtTxj{iMa zT4!%hVh0#h>cJBV&*$K5T1EiaurV{;Yn+bbq|Od#w6&?YvzyeGPmU;$Y0YC$dPaaZ z$u)xTmBN{IZpm{Bka|_U4>QsEaCf$i(FL+68MoCkb^ya#hEL2hw%iS8W8Y10IrQ3G zhOR>fbQo|m?Q3hN!#9P@O}b+|!h`fi zzY%*w*}s2?eM;fSuD{D-wL~m&{Ahd?C@(<&EZP1+SD=jYV`nE5pB_1P0@s!#^22A# zxbjndu*3Wc@LN@Ws-HvsK7-$v|Au*0Ux)hLhM%weRDUCWW4K&#C+fdp4)_lBufXxs ze?*VyLB9>&8mM4j<-_Rz~kVzkc0f+0f$O|101)TekRnPd=VU1u>LqWNN?Z) zzlrx1Pbr>M98B8b!zS^F&VNbCJ~+|qSY(gR_bnwy=XnD%)fmx7*bIp5+K~Lkko?|| zJU=8qHzc1LlIgn{%*Vu{RT21W7N%WcqEs#};!jXm<#MqstXdwr1!=dhFeqCsMezm8X7DUkE23a!7N9O$787R9GOq~B&Pu<_MPQjr NppG)eTYd=$w>{dkM;xVZPQLC>(jaTKCDh_YpIa%zgVill$hX7niqm#__!w zUTi*W7tF|uzptQlrP^)K`EIrEn<+g*mE7@^mJGa0%7;TO*W z%P_2*hB4vN<(z*p=g;SS;ZE|2J7K$yf674^wnGm3%}8R+R#YQ=;2^*mac5(dxE@5l NAbh{Nw$}F1>kmg`l&1gy diff --git a/objs/builtin/ft_unset.o b/objs/builtin/ft_unset.o deleted file mode 100644 index 7fb58f256fac422ff1e51e2882f6af8cc9429169..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1136 zcma)5&ubG=5Pqq(4gSg=JVa0kC?14dRIt!XO1tn57DXBmq&(N%S5s*=%XU*!p%@4V z%Od3H)xW_@&$du+>doUGDnwB5SUfa-^WNKajT9W1{pOpQ_s#6DkH3B#&oWjz#c+X7 z!*?mD!C{x+bHq=u$ENnhV8)@z$Vrz>h)DJ#9c#W~KV134v*?`(NRM`zg8=D(^a(N( z!tJyJ$BjhSf4=T}Lfl=-YJ|InGz<=>^ezGP5Rw_tL1KpDMCd*iEp~?sQ*6JQ@mD@`l znXf8O=O4kX6Y3XDYw5)UR_a+L>)dR42$gHdUxts4u{F%-Gq!NSdNs9pK6}R0w*+tK zwy~M>Pv2Yg;1$;20H=XnAjZ@;fTw{?Al_a51`yiyD?oh5^%@X;Y8+t&yn-OJJBIg7 z;vTS2R&kL(ny6o&;Pn3%`<)5Sg!H#W)Dcb?I@?UF(GRsLBNe%Rg#6P@kWfnD3Ag2h oB8WmJx`F3JQXTd>-6tDT)wEhD+np_`4=J5zopoQhZ4a}51Lg&@cK`qY diff --git a/objs/builtin/ft_update_env_cd.o b/objs/builtin/ft_update_env_cd.o deleted file mode 100644 index 430ce8f372567701e7b57733e2f16bc7628e9d43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1256 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 diff --git a/objs/execute/execve.o b/objs/execute/execve.o deleted file mode 100644 index 3021b3d82f0950c1f9adaf0ee7b93c9b76c16cf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2400 zcmb7GO>7%Q6rL?^>e4oAej)`_DF$(fgtjtBMJW*EKwV7*mPl0#F4bhSUdO9!>}YLM zQ^``Kbr8$Ss7P?)j^M(bBGE!BLQgH+sDxAwNRDtNAF3++hVSjpI`$e4JZ0va_cL$4 znfEry&EN0-eTXsT0fq@9fss6bDUAVn4C7sL{D;iZ2FNV!fkZlTG8)p&gs7X%Iz@yc z#QEHt=Ob+&vqS_!`DpLb1Y?hrA;C5XA`!x<)g7y{A`S6;QJ#a+Uyc@1mvp0a;Ad3V z)^(#U8kLJyr6|N}rw2|fxa74YjqAuqrVK7AT_Y)lFw3Ik=xb)UA&GIk>xux=F>|d5I0-!$FVYuww;^@lRgaxd4Fmq0}Bj-TsuKacyJ&G?Jc?l;P*TWaTt zfC@cVqw5#?e*Ru?JH)!z6ff7``F3w_4_WR6TfGH5WAv`>_4I|U(g}5@O{X$-W`qy- z8hx+O^YUFk*Q2-R{#%(B&P=PFSA!#o4C6+=$E_Q|+bZAjg9&nZ+W`f4m#H24s^~=C zIVsQ`SJKeGpf(9Yf~S$y$RpojZWNI3hcMswo&wV2X7|*dy7@eExUDW8`XQ`PSZcm7 z>ClZojMI1LQ1%vO^G{-CSE-dHyU;*=O_hi!2esH4UmD`T&E9>^vIep?1%rPTACc%>rB4t8Hqkcy1mPb6KyI;T#BE zA412CNYG}mxS@5-zacHxLLBoGPZH(QIi@sIO6usL`46T3p469sN%$9m_?cS3gjd#Hl=^+#4TaNsK#KbbNO3oSDs&6@Fz^fzqWz2s zer*eQ1o#mU6g4UiWC``wxI>KyPbtW$AR$Uln%Px}JFl#ll#-yRFSBkdjkZKyMV!2`2b*sWe z&04AGHWQ_)v&ux-bj)Ja5G7k*VaRG4jk<|F)kdW*)~$7{ZL6{>mxf)fnQ|TSSk{r- kG4&#%5L>JYW34zyG^*6_?}u%Mwi0;jwp}$sA`uVv4_4pKW&i*H diff --git a/objs/execute/execve_utils.o b/objs/execute/execve_utils.o deleted file mode 100644 index fd9d0f049ede85e1456c9b6c2653e0189ab36ef0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1776 zcmb7ETWb?R6rQxPjhA*KR8Ud64_+TqqEM)yklF^eVnIvAyp(CW*))r35;lo$g+O5& zH3XsH9}s==C+LG9E!a2x0Y2nKXeB}(M2ghL@9fUhByAB7oH_HI%Qt7vZ1U;X_nltG zeBBHS)DI1GVNs!wQ_yD=I6%Tw2)RTx5Q)LbNQsYx^MYX)yuF8~qp|6~Sne(h9^#|g z*dfOHDd=ZQWTbGe=L?pZnHLVu+xaBVfQa9fjR-7`k#y)!&o1QRdVv=+kIYPh^V{RQ zL2M$TU{*L&;G?Urqdzf%HcHNo6i-_51;Z=o?C+(>UJ-ojf=@tpl(CfDlf4Q(33Z=B zIl_9NBt%308u~a4o9kh02^RJ24zyLMPg11(x7^bzUp1$$YL!w$t45&_6&ipBwMw+6 zIi(s?mTBAw*SxSD*r0M+nTec&a5Vfl)+{4FlCU5`vkB2#ErJlGBgsd+CjG^XRE1{ zPa_k=TiWyCi|FeejrT1zD7tPh(W;Z6moTpuTnlQJ&qlaEH^wKy==Iu`JE5G ziss*hlevpGA{!5mXUjC3P2mW-ju~>eZQqP1)TEg<)P#}OEi+fhTErn`)!Wd7+T^o9 zuROaaz9c+v4v5R&x$p55^VvaP@K|qP1vTf8e+C-)jSeB=e8xumgHO7~`s8nc^2VVX zB2V%eLUW?WAh`U7qm3DYw4g2Z!0GhHwIaXcygQS7%==nYG;fV$y{w@gQVva-kkYHkrEqb@%k|&=+4_C8%%;As zrzM>v$}P2Z4eMDzT{BP67{I|F<^4_cF$V5}r@^>S_kd#XS%!Ll(KtfBAd;^l{%$AH zKqRfMNFAVJ0}};gI&nI2G$3 zIL|jz2f9*Ljka_2P9jDye30GG34!{4(zbnX+*949J01CN5MV2r$U z6O7rGY%o5n$}(SsHVfTe(K>$*_g1h~UeuF^e12!qC+US@Bb2M5A2cD_KGs%H_k(4U VZoTo?1JyitSuXi?&Uq`#=@+x7s51Zn diff --git a/objs/execute/parent.o b/objs/execute/parent.o deleted file mode 100644 index 484742223947e21d228976bc7266cf2e09f86612..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1168 zcmb7D&ubG=5PqAsX{yy-#YzONIatUg5cN_OA*C*?ppeEEdXZ;HHqAnsgzSa}AvCa! zG%NuR9{g)+{Q(~R@fYYpFsP724#7j?H@k1+Cg8!3%$u1v-+VihY(D({bu!PGG{bPf zW?_*Kju;HM1Usa{Kk!o2;?x89IW!p==@B@$^oHfdUcRYrZ~o2wC?3$G-eU|#IuL4+ z^TBz}v}#6qM_h0|spsn~h@;IVKPG?0EVPN|~~H0R+^bM7adji~)b zy7f`+zCc0iHv29^l;fJSpgCJ$W|CSi6V;5*i$s$?-I3(>c~`3cdKg(5(Jdr9Ypagh zx4-P$!+rVSrblp7CLdgLNh;J*NxL!2#tIIR8HI=pYgq{VRF{LFIc=u(zSBP@(Zbhx(wfJyfWWppHC52wJV5bMLwN)dca-d(S<;KHqcB zJ-PJOpTGZeK#0ga0vpx{R&*b>Bo^oqtoO(;gyg-(FitTbD+5!|B0M6c0>2cPvyo@q zxtWe^PuD3C5aCg59v}%)jEKv`EGgv`gTj37JS&vy#j`juw%_JFZ9J!IMdar#F67f* zpq6r%=5yziIyKcc;!x$hK4oPCc%(WS6@sCAAeHj7DpN==_$Ht~zbrRqi}BX>8$1@p z{X%5znfS9<)CYYPvHQe+EF$_S>F1EgVes*TLVN&@cyStwh+=5bCn;CB{%@LWc#mK&i=axpuQ1 zT5bW2iUCFq=2rc2EiBgz@}}E@Eb7K(dCO?w2mh8Vf0aD5vBvqvO}i zYINQIqqaZ)+2%2g!)*@T?edqAio0EZe|L9Ra??949$H^((`|C1xRFxAd_J6pa1t{! zna~(CKf3sphfVe{Lq!#saiU4BU!<)A#tzN$-Sn9eXnK3-8cXjO zzQ>+o&G$p>N&10-el%=PynZxcyFSGJfYFP{8!w4SDISR*IuKn0$`jB(idFgxwSqW* zAtp!TSN6Sd7|*9B@|&X5j`8C<2KrrqTbBK}o`HTJ!!P-_!Q;9H`h5<+pV*J<+v9fy zPYj-DM}gx7ac05MvIp;Ai$Y!p$J_1DLq+-tY#`?@dO-GD;FuWa3vlv#8yv5Xa|s+h za1MeK?k<8T{#S64e`fg`mN!`b1RNnPHE5ci$$T%`+>@*gRJs%7xTs;D4bhr pA9LP9`~2GCd`_q$M*!n&QO649Wqt2;J{SFT!OOCcDfqq+{{q2O@*w~K diff --git a/objs/execute/pipe.o b/objs/execute/pipe.o deleted file mode 100644 index db42057667a26414acb8eb92bb534f06be99cd7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1984 zcmbVNOKVe65I(7~4O&eU3lW3{ks6Rnts9|;scrBm2DG%$O*z)vvtY*9)}XHwDl0z2C4*>w(ce94}$&F$Ld(4UrAOwMWwV&SY>J~oMC>`?Fw_e*uflyq zbVEsKQS#Ga(|IQ`+yNrrL_l3=NmBbx>VbclOv%C*seknq@)cRgmSth8Xapt2nb%%weP1k2J8MyR5f98!BHqwjkWkd9p==Pc4ndZp%Gxj?>uqOMZwgZYeQRw^x3qJD+JRaFj*aFKo}C8aTiCv;M3S=89GZuGmcNbSca^=Gz)wh@}}%R(2Y`K5jZ=VI>Q@m2asT10)@GqZJnHXVV7kBb@-1Dew z>=-_4rVwu&y8FxGaUXx=#lXw$TRiUP08iorgxZ5+K(yZ155%W$a192ggAvA2#y-ZU z=-Eke#t|U#os1u`HpQO<$)94p!Ttac)NUUmz_c#|-3Zv{OlLy2eXf4C0jBg}M7S=u z+U#p>HgTKzLM2m)1^h3la4MBZscLgE8h^l3Gs^S%jM8Rf Nv4kenTsAo@egh_!nG*m2 diff --git a/objs/init/init.o b/objs/init/init.o deleted file mode 100644 index 2db55111e74652c2feeb0c292f0e11f80582456c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1748 zcmb7EOKTHR6h5haYIP!1tSEFAE{YKGfmozMstpX-LXj$N%59oVnqWE!X<~yY6sL+q z5Cz@25#012=*kBzv^(ua+*t&nLWC}ZVB>dY&LnAU79KeFyuS0@bLVkC{r6$G-PQ_F_Kn)jNm| zbFrNk+4!PVY(Ae$S+kN*YB!(HgLYTG@c|n|#;s+*mzm2(V|i7u7E)GRsj<;o5zYsh zYf+M0;A6^VY#?XcMX8jTREb=4&h#3Z=L-w^t?(s5(m3J)qNJ2ua}H}i)Ez_HPn}Q} zrs4cL=HN`SlPC>~ewu(b3eU+3$bZWX!}(#@<)Go*uNY2Y`#lfx&cL$8Tt;ae>3~s+ zR1ABFw1>T%d~*37U;;p;G-Q+t+g@z12B%gMr?r74?kC~beg3sbxe5W{c4@q9e+)R| zWh1s>*u$SmTZ*B>qj4gej4@&;mxkB>75lzdqUb8U@eX5p+QX z^sTuZKOgY!_NqR$q797J=5x>Qon5aJ?0xpd8ldT{+CbPpZv)?84c_8ep78-^tNtU!{XmNG7F1eFEk|i^O8R*`7-vv8A4xRxo-oO z`<7w55kH5;JsBENpJHujiu`q6)V-0|5Se8>zj{Wy?Nn)Fo&WzvJgG!prRVdOxj-tL%go|xRAw%h$tkm# w%9Ap!J1S+dm$DKWakHtcDK6S^;l~SEQtsl>MdNWb6OG+=>0{A!I)kg>FAa?!+W-In diff --git a/objs/input/get_input.o b/objs/input/get_input.o deleted file mode 100644 index eb6e18489ff1354c75d80d6bd52d5c3a5521fb17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1680 zcmb7E&ubG=5T30~n`+w)T7RL?6?*7pMMba(g@|3)g9VX_Udm%lHqFv>8dJ+ULUWA6GkfW5^_|4{RlWy_gz`U7n-n{S4oA-9V?(ZFT z6Dg+%1GEzw?ZBWxA(x@cJn;`nb1r09+5m%-SecJS2+uBfO}~jJjHeSV9C+{KUd+d9 z*D%C*vXd6r1R_Kt@8ukKN(O{D&KK~UmGj^DfNdhnJ&J&Db|z~jJTd1!cif~955|rr z;cUpd;xf1cKBkOCh$PoBN+ImDNad^;EsU3-ei`a% z>VmTHrX1H$M?VL;&@&jUr-zIoye3f2@8#fs%44(q%PiG2vs|p3tD|qhx5E@>WxQ^d z6|-X0&C&>|OIJ9!I=X~}n;U-0XWqMP)MP#qDas0G7DO3k4Timbg3(hyal~NPd6Nn{A`U5uYzHUQ<5}L`(Zx{DTr-p4(LyFP@m|iL0--cyh(qT}MA~ zk5uKGtQfV@hJwCT-!~eK*Y!oN-(ypSClZA&u;U<29cOl8Dan z5#%%SJvnI2IIT9ZM6HYg=_)TCky3~$vEJ_J8nT8EzY6{N2Sq|8KheGZ*vpRleRz(( zaNZd7`(ZOr?sFoqfgG&S_h5Tqf574<^)1*=*pIMik-iSw2m1;ZtB*Bj^&rl_8M?MoS;7!fK}i?*lmNvuc{rd zgs=$VyCKZ=wy%E@!bS)eLUtt=|X6%BUL&VDE*`_>^$$N>6Z2@>W+ZNK#;^*z9 PNaSoQnQ>ejshFj|@QD?g diff --git a/objs/lexer/expand.o b/objs/lexer/expand.o deleted file mode 100644 index 5afc400e7e9de1321e58468475d15bb332ab1431..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2052 zcmb7FPiPcZ7=IIE+*r-*K_M24d$8caDX~TIps==%yn~^l1_TK&>+Hl`x|v;fXY5i4 zN+*$wgRO_2da?A>LJuOIdJs)S*OT$&>dC{FY(OFQBx+56-@Z55-HAc`;G5t3{(tZ9 zJbeA)-3G?AbqpVHFF4VIPYMj$2A(0q8uS|lf_701D3Xzr5mP=QAzZua%CVGBnx{^- zby@PhFvLzuybO(oSCp?K)k=CTDPkz-+s(fsal#( z7|SVB3%C@LRSkw69YGXLuXa}G9 zfc@*$_IB{+D@ITD!vnM4-AY}0Pd3o#?v}fWS)kwHCb#G*j!7T3Mef2g_J*8622Rtc=RL)R`9xbVHjNSnbjtwj})5 zBCY>&FFoTeTs9Z}(DZ4X6SlZdPAry{Yc(F+`;`m^sd&#wb(aJmz9%IjHY7ZcXUM-ka zBAvn`NH?iA*T0({ouh_2XnX6z$ZOM~W+|y>H>6TYZI5S4^I#487Uin_aGYt?q?X*Y zA#oKkJE7kWo_~uOgH(OS4h&hO=v~5*G}1uC^`#U7TJm||01PQG(Iqg+&y@TtWL=HPPVae#$f$0o z{CiBs9J}mvpM|&b9Om0 zWW7?PKj+yMH(zujQ^A(Qd?izGyot!IQnIalroe>loEH^4Q?_!EDJ#x-Mb~EHtnCVi jem3~$*!Y(1QXykuAUm*~EW)d$453t^B|BTR&_4SgDCDWI diff --git a/objs/lexer/expand_check.o b/objs/lexer/expand_check.o deleted file mode 100644 index 7be3b9b554056d4a42677db1366b1a51fb4a47af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2724 zcmb7G|7#pY6rZiJxvNR%qAe;aIYZI@a?prM!D26%g+)B9($GjL+heow4zG9D+#Vi< zXkhQkZ5AOvRQ$F6=6@iFgqlhl^@mnLaz7Mu6@*-Ap@?8iW8>%T%v^I{R`9{wH*em1 zpLy@i?9SfUy7zF9G3_yi2Y3J+*@H(M40;w^CqoEL?-ho_6a!K^Fc~r75t*iAR~#`G z`bmBI-uS)eF+lr>;!l>(UQcpFaMXO4DWZt zy?ey)=I-sjCTa+orcrst#Hr(%zoVhy7N3k<9pJZ=7SUS}- ztmq_P9*9i1o5y)=5%H9)Upe|HS6>(D_+=!DWWD*DhIbvct;(#R`{h+{r8`N~9IWAw zxGS1r{m7S($rhjxZz4wP`*H%*L-E0R%<;sYa0CAAI@1xVtr0*VlM;R74V}kI?T> zz|R7fCHd#qlJ)Z1qQ3T(#%pv^TKn-pbEp`-(fV>{XD3(#OKQA2))(toEU4Js1jdWP zL+$%ToYvlb5ABWE>?$zY``z6iQM)CU5uFM)A0zg8dKUVPlXr*vc)t>bGh#UfX2hk@2giYzBC8_=-WRLxD>g)F{{HFgAezLwEzb^)YyDBjai7!s# zDM)Ns;!pGicUa;MBwBdzYe~!aHII43|lsego=zogr>Rh}e zb#=}rl#cp{Y%tv0WOnKGF8$Lkonm*#zuu(}cj?TWb6>Te<&M9@qJYOz2HXP?{JcW;)pHV}A+A{?!0LnUr Nv>24qxnd^G{slk9VPgOQ diff --git a/objs/lexer/lexer.o b/objs/lexer/lexer.o deleted file mode 100644 index 67b54eb83126d43f1ef32bb98317bf57cb56a4cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2516 zcmb7FUx*t;7@ySZHPQAag(Bxa8p?tAu%(JQz_V|#xLJ0sU9+AHw2q(c9s}TypvYh3m72By;Yo+%WOY@fX`sq+d_^OUm)51^3 zRW2f_;zE2tt0b~4w_q)l?Il-9Eo(5poZjbU?KFwJ!o88`F~$m7CD99*CoyDM_@itb zgMbz#c>#GG0nVlv`y3el>`e>;iW@x-nEY>;75;tU{c%e8=X)*l9{IOv6294PncZE0 z2+W=cSdi~}KP3EoS2(}crqhhqpCr5Bd{1nywZ-OaS8V3*N$1Wj<<=HKHL1b{W?T5J zkVd>v;hT4`07fp|%BAJf-i=dduk+(IVxsv8f9-+rXAvmBt&8X}&dQ!EUDMs}yuRj%|I>8%{OBD(bAhBS!tv3ICjKdUfybRUz zw`9$tF7WM%3)hm;k@oo86}k_;`MZj^5EC&IpIwSK`p2V}Lanw{yrVMSaNZEI4oyNH zzyd#xP8m`EZ7-YP4Qe{nd%H!Rtn&>`MD2G5ncR1Y+=pv-dHtCfi&TzZx=AJ z{reV}I9?WBPsPyN{s&y!)c zK~`smo&GE{^?HmqCX`;M(cha|doLtibo9X0el(fepdO9T9HmD$)JEyi5_6;UCwM(K zN9wXXo9>oV|`15%^5eRG9&2YHnR=9@1y@>n`uCeukp~()#iKI>!H) zHcqU+%@WmgB7OK!@?+ReLH;yGbBCVL-Cdm@V>1)!iw9mig5Qh;vO}A($-k7H&U0To zdfHb0R(3kyeeEv6F8hzN(|JE+_w5*CXcprO><>+5d;koQ@eXhbxQn`wejFH|@c?_m zXEZU9`~oocV7vi*7v|C(v%gideRYIlZ@{(P&oPrJJy`o(@r)j6) hI)gNYQzqepPT939E|x31n3acHnrD_D9z4j!69*4V?8Y^b#283=A!AnFhNCxchEt=#h$p>z^kUM6n)KKJq0V&YK^tsz(s^&bnQ!KO`*zds`@fF{0JJlJ z3wl5LHU&C5+GX@H!ac0i7Z-joM`4@^0hf62Z_h0I@NMVAnh(r8RnG7~=|&c{sf@D{ce?faY1@S|jx8 zR%A9Td!jBXBT0W>H$G^_rne`8i%9FPr3~@r3l(3Pd+#){aTXc1VO%1!?tj!mvtE1O zYPGtXKm->~OEn&HM9}E;(U=Qk9yiM0)mu_u>K`0Dv zBe}f@L+1Oy7oYTTRwUFvY{M7lo3wqnG!+t1=!=lm+4}p=IrmT71bpVmr2r2rVD2&nUucCwFyYuq;iZMdwC~z#A^iE zuny^8T{qo)xW&0)dw-%~wD`(%P^#VY*ge6UBXN6=W%%cJGmUC%)o6W*pph=|3Mx57a*~}3=%#)dj5mx8ULWnd|Af9@8>_}fkj6{WobFc@MJjk} zK_`aSOI}1*-6`a&D_-#2{MM0+NG}WtSG{05xAx^lgp-QyUqmzpAIeqi%o>FplM+r3-T6kLWMIZf5{nZ*&^qBwc0p<8> zAO8`(RqW$;Sge+eB?nK%Zz2kn{CUj#4{_KS8b4#%q2wngE}Yh%KWUeP-TI!g(|Po? zqwm_Kzm=WNr>EU5*m>Gc=hf5hJHq#mil_5CW>-MR0&Ds+)B!Khv;~S%rO$&xmA-?I zDe3=G^-Es?CH`yFfM^1g{5G%`mg#pvG152iAd}0QW;9J{3L^DyfDXYhg-L@xcf@;| zKdX8FoC@GMbpE;0tDAU#SXe|@xsLLukLa10sfeY@V%aKIn7CeDsFXytGB>}(#FDUP sOV)>Y78jYAKE%z?FH{+SXvzh~bLA`ZC7+vKsD2P~rP{S(d780*0rIPoSpWb4 diff --git a/objs/lexer/tokenizer.o b/objs/lexer/tokenizer.o deleted file mode 100644 index d8eea7b2859c79139300c74af450e1b1a5995302..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2076 zcmb7F&1(}u6rX5Y*N?hU6ciPM2cq&*W#TEv%DAI_RGNzlY4aOvHHdw?$aE%xi zp`Zs3o&_)BQ9M+%O2A9~6M88mP$3r~h+n@qGn;N>BlyVMx9{us-n^OFEPwy{Ya3&+ ztqc!vAK2J}M*<8w2!2G49(0ltKqo1Oq}GASh_%Xu@SHi1A`}TRIeu+2)Yj!{hyzKv zmj@WzMeaUUArX=gcFA+I`5W5MjThn|UD9B`e$hgg=@@}mxK&Kso+#(9!y}mv2dnpp8i_= z9gTaDPJD>k=Kg#eE` zmZbY*Y;<@0;g<7*;rEW>#=vtwRh;f~)3_Ys62DZO?swC;r-Y~Dbl-o)En{5|ShT7LqGgJI<$u^ej(5E?(oUzqBn%`I-3OB%&U;Af;r=DH4k5|IQ?;PerVwq{Ns|xl*y&uZU^DgyOL~^{ diff --git a/objs/minishell.o b/objs/minishell.o deleted file mode 100644 index 6a0d20dc2e031313b7abb2bae4f6e60084dab0b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 956 zcmb7CF-s$15S^$O<5QQZO zmi`P&|ACcUo6Kd?c;O%>Fc4l_?_WOT-`#4CH>L)ya0pL_b4nRx* z-^ITXP0cs8Cia*~0+}np>^n6-(ve@8Ut4+cv8t+&d9uq%Uo;2iUtA;1T-+&@?V`_t z_s8`%m=}L0-`CXSlna<6yR^W%D%49bJKMZju}e;rV}8Bgv6lW&F6%tCG)%M|YvHfJ zIMDr8<|Cy63Hhkx?;wW2Wh}J_Mn4sRWJs?-&hfpmYQihCcauAte~{L&-Zo)yXTsH% zX#_2ESifjVzEN*?*)%j^8cP=@%#Xj$?zJhi{{i*amz_>0QLJ6p=Sa)E=g|MCNBx|p zF_o#^WlGhusqDz$&=IPpkpBW043dcN0p&ks5Blat)7tk73~kw99HF%U#t~Y1FwV*P z2F5sR28@NRNign_1(JL^2hKpmAu?e}`jS4=<3IO!{T{MW%z~2r(>IWz8uDz7xISb-UV?sKrHfa8I8Azde4I diff --git a/objs/parser/parser.o b/objs/parser/parser.o deleted file mode 100644 index 09b55135c73b78758a7e6d8dabba74536bae5f55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1660 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 Z6!Hcbl*mJif;s3DkT5_ diff --git a/objs/redirect/heredoc_parser.o b/objs/redirect/heredoc_parser.o deleted file mode 100644 index b67bcc70ab29394435a2857110a6e7dc4d730747..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2824 zcmb7GU1%d!6uwz&H`TTiW!J4guoe2S502D7tgGv$*pd5Spq7nPu};Hux(T#NOf%gg z1Parx9mh)X2YvKO-KSjyp(|3e+p^miv4YULAO?w$K$R-{P^-K3J9F zd(Qptx#yfalkazazkQgoz#R+^^d|J+Av`+K(e6i|BgFwN)GQPyXbqY#gOgDwK5Dw2 zHK(#-EaWrV;F+rIkKUFGh>wOnLB<{?WfPkw@SCn16WL56c~(y7`d&Vt2g|*7QTi!G zCf)T#_-CZX(=j8fTgh{YXVeC#Zw}(>K&A2|AiH(~= zS?^!BTvQNhHi%#mpWp6gEbfm9A4l&%_fnzU#hTHn(WW#XhaU=X5Yv}{SkL;=sgdi{ zX)SFlR$}l!T9iA#aeFh&o!mBetSu+H$>&dvgSJF0+|df$&J~z4Gf1MF+v2WO;I6iX z6&u{Sjzw$2)P?L?Yuvf&$@Vr=W>3mRzC{6qt5S%p@@K9nv&V!m+3;0ztEK6Ftm{xZKu$BPS937u*#ilUsL9)6tBT+H+R$HcC`&B_oIlf2$&1e zwXjTtmkj5hT1B0BEQo7fFuA!Bghe6PEB!;u)rgHQ$ar=8`KEv>ZJ{kM9VwTgfu= z)i}%23+#k~KwyIu*PvGy_Dc8AvY(@d`#BNpp%waE)@$bjeGWseZXp)F2OE#&xf=m- zw7`vfm8B=|v2U|EZC#mp8Ubsd?DUi(Iph%djTVv4may{CweXy^{*Jc(ML?OQi&B1~ znhxK(QAWr~H)LN8IH7WaO3KSG<<=_6U{`kQQ7y;SrwbVt3VLAxx1QsOcwd+L?$ zn~1+Co4w_LYqxHu2w{X9IaUX$vZxs7W)Y6%I)9*@FObjK!-o~ClCAuKl0pJ zuNI>V*|ioce$eTg5gC-|^PTki>LO=E`%-}STJ+}#^HS&%ntl2$ITIIl`}D)|ZQgdk z`m}smA3H#QMD8DWYk&o&LV-~0;ot&n$@PcOFYO>uXwrYidfP+i553Ulf2PQ;51s!b z?BqEb+Ks`k|6gGz&(qNEL)d*H?c}){+I<7N>05$No^PMsWRv%eQO^SLJyHKaJW$W- zFF=wnOZg%Yp*;FN5NA_Q0`XIi;z9QBL5WY7>Hx{^Sv+X|5g_rj0)xOCh#fwW>UTg? zocb-0?7x!oXF#&IfwcY&p;yB|{M27@Cfes`Ag#LqL{mS&16N&jfy8eCiHG7y_zJKU z_@a~_1hzrG4@f-IK=3yYOAJfwlnC(j^o?$ZVV)+?PNS3T*Wt%f9tJ73^XR1a>kNA` z1+w2#7}SXD^*VXFPX4@3K2ayXTqhHEEkC^pYvsv0nc`KeXZmPX$3L{B5z8|DTqcn< zNo0E5%$Or7Lr=#t6DDL~He#jyVbU1K*f)FAGAFW$RMOXunHZYMNqxeMWsJC_X1Xz! onlPE3F=HcRi6lm&852*RCS#_@Vn)q`IhBqjM?BU^E=U=JT(gn_(dW zdjx*qLHH|LMBuPv@M(&7u^1J?zA(p+(NmD~wot0pue0{wUo`tII;Gjc>H9j$7+^(&@_eG#fRW z$NgsX06L$DbgKpzqjZgQpniM&_=evN*s{Lr#+W09InJ6V8^jm?J`c|73<_A(wt$tr zxB{PZJiaXg)rr8wfv~ZJ8k&dRNa8mx2aKOD#MSYMCnGasm`oe-X5p*MV;z6x z<-jX$di_|>5br!rJ19hS3W!fKdIE@VFG_C#&y0S8Ho_c`cu64f?gEK7!~2IhAL95K zo{eRczHwMIfgjq6FamUZ6gZ9z|6H-uv44)I5u21`vw%IJxI7Tw8i=O{Vxdw6Rj8DU tm9i>1scgxy%Q~0M_owWPV?XGj6pBt>C_7hp=m7L)I-A2fRVm_6?+@!?ISK#( diff --git a/objs/signal/signal.o b/objs/signal/signal.o deleted file mode 100644 index 66ff5dd80389879014dd0975ef85189e57fd29df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1856 zcmah~O-LI-6rNbC*1yf6mX`h~rGJ;SDp+hmu-L#JDil%hBIBBDlEux&?rv%<2$sa+ z8bUqv;JLk6@Zix?4JcK5X^%Y>dJsI+TMJTJ)9>w0bd5?M&V2LD``+6(Z+7G7-@E&@ zj0MgxOc>P|byb+!FkqK3=E!l16-f)bBe2YolhL4jWSrY-#`e}89}Eu<9`f>POgxM7 zQS1(;3*@Y3GX!PhJYw0VX2it?=STCE^V}5vc{-raM7ak$$d^h^C=r{djY-Xja{lD; zffI{z4`#&X3i46P#j^)zJd%=gHNj)1l2pBb%KF?M!?h~%wd0)r5*rvx2$u_;m@i_u z?UCwP4F(xKl=fFqM>BA-hOs3e;@MLSzu^&XPrXRL=l|;=+1Zw}KSt#|9>kcOXR;IC zbEcQG)5`%VcbWDIJ>4j;qqswgHLBDJFS(?nBp1>v?lQYql4hv_SKxVza=w2{e))Z^ zR4U0%|CY1qe3T1AhXFZy4Lgd?rd;Tvkkc~xs>}E9$q%-qS@eU+*^SYWbvH!kFV5)&#qLV2Irt9quh9jeYTEPk zbju&8In+SkBL-8cwxnWAwJByiom36ms%IHnHIt#vuKSUco-yzJA@j7@*Z~h|4 zJrCX2#qalCAjWQ;;%^rb^uEE4#h>@~S>VM03uJ~U)&)~)W_JP z=HRQUz9zZ`GSZ>_Y-Zoni8@cz>Cnvyov8Oj-5cl@gih3bOgD@g(Y{bvU@s7VSFdA2 zZJ`z*ey>8!KwMeNFXTK2z6-1aZUf2x4M_eCU^V!AAijv6w?NAC8rTG!2a@hNun~M% z_`^Vao1uq-hk%rq&PRIsZYkd=kV@+n*d`F*?)L#D2#AnLG_Wq;|CHe5BcooDzkI&~ z;3AaVjC$zjw=4Lw3ZARr6zh+VR`Bi$PUrUPuT^lyO`V%+RI?^@Ws32HVnlV7TUuN* zY{u=lYU2}OT+L`iBbI6_wr$c9E^ir0XnIsc!o#^`E0J*?NsRNDqUnsX8H$IDPvF0a g9b;TGG@Fkpmg<&}GPt2ma$PgP{TbqE#l#{10XIY;hyVZp diff --git a/objs/utils/env.o b/objs/utils/env.o deleted file mode 100644 index e9270b9c5a2aa1566af3184edc8469edce511076..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2308 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 RFT;N?O@-b{vc!eh{}-@E!0rG5 diff --git a/objs/utils/list.o b/objs/utils/list.o deleted file mode 100644 index 1d4c29aa9f61ff612cf35137f60a6007f68f6488..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1460 zcmaJ>L2DCH5PqpK4cfX96{-lyL9jy8gQp4#DRyB61ELl55MH*)rU|A=NVYZ<0+mGR z5(EVg{se!5Ck;gC(I4O?7a;+K9C8RA8ozlv8xw6Dm^U-;`{sM|Hn08q>*w*j5WZ6a z3)~M6&S8nbVVB{D1kAAa#Dy($^lE4da?&G{(zdF$o4fU<{$%q{?PX8-EYhRi78a%9 z7Y81PqLitMUCtG@c~i=1Jx}K}<1grf6UO6?cc53?DVZr-?iTiPg|w9SH^v~6B+qrg zn}^UN$&NRl5L1#;T3MMXn>&`<@b`Qj*89kMLFi15cvgrkLn_?Fx&&8k+8GgmlhL8H zFL2QSLK2ZaEBeI)_@vm+I+MtHw2Kh1{xdG~;OU^{#tp zbIm)w3pU|h!&wg^M;-5ji<2XXc4k!zH_#;9^PL)Pn>4N95UqRGBh|va&UNO}zDqu)etqLr3f5IaKzzjI2sviH1 zstSwD*fL+S3)Y^O=FN&NWT{--#=i$?mCMDlw5mDmxl}WqmRn}(nO9eG`y%Z8q$VCVqOuyMTFG(9p2j+eA&3td(?0b8DcXK~al$awd@D%(9 z2YEPb8UCF4KkP(mmx7j~C$V#1Hm!Xx@J(!Zsrarm;WoOJfcx<*0UA8uT#AkutZ7}{ z-#e&Oef_E4d|%(z`t?g&V;l-82>wi(Sx(RoA)A09T6?>Cr%~DSEdO&pdk4FwObUJM zw{dEL$d+QoGpspyd@asHO2gUsP|kms{a3)J;Mh-Z;M2xhcDdT=(tqPkxBbfvua(NkPp6_F(*rkKSkpe6@G!_hzc?-jxk=6H z!mcWJoK=!}@_)~>G2TsXyEwq81N3}ivI93NWRUK;QEOm(_gL4z7>!2pcbq|r`ND3# z+=)Z8d^0d}b;qKSXP&7qNj-7+mJ)$Vs7LdeW2pFzR^X@iI2b1ViC$#Y*W|`xTK2Jy ze?(W{h|f9tH;FNsRZ%v5y#7OwvhfAPSS22E`+>EY~i( zaxU>$`r=rC)$BuFK=Ej5J|@HqE^G>Ikt$MKLqevPhOG;xBQTlEy;NY_4%gA;Ga>$+2)|idTqDDB@5z8;dYMhr8#1c%%?Gu`C#1hM z@Ym+UG0M#?4bq<|8Xu|lYLwL4Al(a*I-;a_qc~rMNZ^RtzK@qUM74YZwS9__SM0>0 z%AqJ+^|_FVV)~``%JKESt?g|F`ug((s<-t^w85vuZm$E+QhGzB ze?1Za7oG#0-#5T%Kft;Q&>snaZ@@D$gSLGG)KT@N^zSMF=;0F)R44L^$XXuG8##vL zf5K8;$H&42$kc0bd0~w3g_&51-j{_<`DMq2xs%>#Y?I4unAM)UxG|k-XEJ$b?_$4& zU_URtQT;ZC%GJK#_HSooGp%h<$osk6JB&sCR+nxi5~+x|j%^!7$DVb@Z71SMCB#5x zFlpciqub~xB}D(|%ONzH9vm7?4~!)Z;m#NBZlfo`lXGg)6PRF2j0}yWlZIW+ms|uK z_rt@yGojfjyI@R%v@;u*Jl#eyU$h0!9eX_Q*f}>yLgk>6>QRPsYRw#u3O*l8S#vXF zsTxwzE?uVyjK&D0+ zKMjpfs)pAe*&jd?Z;kP%j8_>iGcGcoV0@nOFyrSKcQ8K6_z>e?u?g+>Gc@gYlkt~~ zKVtj=<09ic;}OO~jFXHz7&kF~gdSmf{Bvm9?-Ry17*h|){~F_07$+HbFm7c`H;ecW zP(^b diff --git a/objs/utils/tree.o b/objs/utils/tree.o deleted file mode 100644 index 910682cebc822d38d73f52a774999198de8895c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1684 zcmbtU&1(};5TDfAhFZ-E7ODu%LBUHTh>8~>!3N&JLMaXOQl9H((*)8cY&RH$LZMZ< zEJ6_v9{mf%n?0#eAxA+x^ys0&1}fyxLy+3~o89+ns>Tl-m^a@uzn!^e!36JLrQBP%2sfd#rUl1e9g36SzowUUMNU;d;Bm6 z#ZU#y%6S9*_|czXfNFiDrIdC_79DfmjtYLnx301`RKE??PnmRrsHAn4SHPp-@G25R zGyrDeHtc@`9K7!|mQ{d6JxzkUiE%QkE9(yZQO^tSlUUhF3U8_7)puVrj#p_M0hbCd z7l@UmfD#Xe*?e^K0}{fJpW7AwMBrsdAv(g(2f`a-k7#D&VQr)vkze_FFgr94Rl|~$?r?u&4;(*w0eLOfg5dKozuWxJI zTgVT9XG?h5By`vln3#>DF+ZfA+XJHX>}K(DVr-QMP+}}Y|BcT$iqH60e8ykl3-1ft z>fmPhQ)pesfv3bpL@QA`kH;3^_nOgWu%+N-w5}j{&PsSMcg@8T??6*6Qo`3#`&cSJ zJ?;@VR7J1&3l*Q~QGX`#Q|$f}#TrJ;7#@tTqvitq=fRU-0U4xmQ1+DZu)kfVnp2&_ ze@)tsQ+1@>D7z$G$F`+eC`hL~SL(Jac2S#F#Wo$4YB{#)+7g~3;V)_1I9+L(l}gnj F`UZ$8M Date: Thu, 17 Aug 2023 18:41:44 +0900 Subject: [PATCH 47/57] . --- minishell | Bin 0 -> 91112 bytes objs/Libft/ft_calloc.o | Bin 0 -> 776 bytes objs/Libft/ft_isalnum.o | Bin 0 -> 760 bytes objs/Libft/ft_isalpha.o | Bin 0 -> 680 bytes objs/Libft/ft_isdigit.o | Bin 0 -> 664 bytes objs/Libft/ft_itoa.o | Bin 0 -> 1276 bytes objs/Libft/ft_memset.o | Bin 0 -> 700 bytes objs/Libft/ft_putendl_fd.o | Bin 0 -> 876 bytes objs/Libft/ft_split.o | Bin 0 -> 1776 bytes objs/Libft/ft_strdup.o | Bin 0 -> 972 bytes objs/Libft/ft_strjoin.o | Bin 0 -> 1072 bytes objs/Libft/ft_strlcat.o | Bin 0 -> 888 bytes objs/Libft/ft_strlcpy.o | Bin 0 -> 840 bytes objs/Libft/ft_strlen.o | Bin 0 -> 700 bytes objs/Libft/ft_strncat.o | Bin 0 -> 1112 bytes objs/Libft/ft_strncmp.o | Bin 0 -> 824 bytes objs/Libft/ft_substr.o | Bin 0 -> 1192 bytes objs/builtin/builtin.o | Bin 0 -> 1824 bytes objs/builtin/ft_add_env_front.o | Bin 0 -> 1540 bytes objs/builtin/ft_atolong.o | Bin 0 -> 1716 bytes objs/builtin/ft_cd.o | Bin 0 -> 2728 bytes objs/builtin/ft_cnt_args.o | Bin 0 -> 672 bytes objs/builtin/ft_echo.o | Bin 0 -> 1548 bytes objs/builtin/ft_env.o | Bin 0 -> 1056 bytes objs/builtin/ft_exit.o | Bin 0 -> 2528 bytes objs/builtin/ft_export.o | Bin 0 -> 1976 bytes objs/builtin/ft_export_check.o | Bin 0 -> 2404 bytes objs/builtin/ft_export_print.o | Bin 0 -> 2672 bytes objs/builtin/ft_join_cmd.o | Bin 0 -> 2292 bytes objs/builtin/ft_pwd.o | Bin 0 -> 1088 bytes objs/builtin/ft_unset.o | Bin 0 -> 1136 bytes objs/builtin/ft_update_env_cd.o | Bin 0 -> 1256 bytes objs/builtin/ft_update_env_export.o | Bin 0 -> 2612 bytes objs/execute/child.o | Bin 0 -> 2448 bytes objs/execute/execve.o | Bin 0 -> 2400 bytes objs/execute/execve_utils.o | Bin 0 -> 1776 bytes objs/execute/file.o | Bin 0 -> 1068 bytes objs/execute/parent.o | Bin 0 -> 1168 bytes objs/execute/path.o | Bin 0 -> 2484 bytes objs/execute/pipe.o | Bin 0 -> 1984 bytes objs/init/init.o | Bin 0 -> 1748 bytes objs/input/get_input.o | Bin 0 -> 1680 bytes objs/lexer/expand.o | Bin 0 -> 2052 bytes objs/lexer/expand_check.o | Bin 0 -> 2724 bytes objs/lexer/lexer.o | Bin 0 -> 2516 bytes objs/lexer/lexer_utils.o | Bin 0 -> 1228 bytes objs/lexer/quote.o | Bin 0 -> 2620 bytes objs/lexer/tokenizer.o | Bin 0 -> 2076 bytes objs/minishell.o | Bin 0 -> 956 bytes objs/parser/parser.o | Bin 0 -> 1660 bytes objs/parser/syntax.o | Bin 0 -> 2800 bytes objs/redirect/heredoc.o | Bin 0 -> 2520 bytes objs/redirect/heredoc_parser.o | Bin 0 -> 2824 bytes objs/redirect/redirect.o | Bin 0 -> 1616 bytes objs/signal/signal.o | Bin 0 -> 1856 bytes objs/utils/env.o | Bin 0 -> 2308 bytes objs/utils/error.o | Bin 0 -> 2756 bytes objs/utils/free.o | Bin 0 -> 1180 bytes objs/utils/list.o | Bin 0 -> 1460 bytes objs/utils/list_clear.o | Bin 0 -> 1028 bytes objs/utils/temp.o | Bin 0 -> 3032 bytes objs/utils/tree.o | Bin 0 -> 1684 bytes srcs/Libft/ft_calloc.c | 2 +- srcs/execute/child.c | 2 +- srcs/init/init.c | 2 +- srcs/utils/env.c | 4 ++-- 66 files changed, 5 insertions(+), 5 deletions(-) create mode 100755 minishell create mode 100644 objs/Libft/ft_calloc.o create mode 100644 objs/Libft/ft_isalnum.o create mode 100644 objs/Libft/ft_isalpha.o create mode 100644 objs/Libft/ft_isdigit.o create mode 100644 objs/Libft/ft_itoa.o create mode 100644 objs/Libft/ft_memset.o create mode 100644 objs/Libft/ft_putendl_fd.o create mode 100644 objs/Libft/ft_split.o create mode 100644 objs/Libft/ft_strdup.o create mode 100644 objs/Libft/ft_strjoin.o create mode 100644 objs/Libft/ft_strlcat.o create mode 100644 objs/Libft/ft_strlcpy.o create mode 100644 objs/Libft/ft_strlen.o create mode 100644 objs/Libft/ft_strncat.o create mode 100644 objs/Libft/ft_strncmp.o create mode 100644 objs/Libft/ft_substr.o create mode 100644 objs/builtin/builtin.o create mode 100644 objs/builtin/ft_add_env_front.o create mode 100644 objs/builtin/ft_atolong.o create mode 100644 objs/builtin/ft_cd.o create mode 100644 objs/builtin/ft_cnt_args.o create mode 100644 objs/builtin/ft_echo.o create mode 100644 objs/builtin/ft_env.o create mode 100644 objs/builtin/ft_exit.o create mode 100644 objs/builtin/ft_export.o create mode 100644 objs/builtin/ft_export_check.o create mode 100644 objs/builtin/ft_export_print.o create mode 100644 objs/builtin/ft_join_cmd.o create mode 100644 objs/builtin/ft_pwd.o create mode 100644 objs/builtin/ft_unset.o create mode 100644 objs/builtin/ft_update_env_cd.o create mode 100644 objs/builtin/ft_update_env_export.o create mode 100644 objs/execute/child.o create mode 100644 objs/execute/execve.o create mode 100644 objs/execute/execve_utils.o create mode 100644 objs/execute/file.o create mode 100644 objs/execute/parent.o create mode 100644 objs/execute/path.o create mode 100644 objs/execute/pipe.o create mode 100644 objs/init/init.o create mode 100644 objs/input/get_input.o create mode 100644 objs/lexer/expand.o create mode 100644 objs/lexer/expand_check.o create mode 100644 objs/lexer/lexer.o create mode 100644 objs/lexer/lexer_utils.o create mode 100644 objs/lexer/quote.o create mode 100644 objs/lexer/tokenizer.o create mode 100644 objs/minishell.o create mode 100644 objs/parser/parser.o create mode 100644 objs/parser/syntax.o create mode 100644 objs/redirect/heredoc.o create mode 100644 objs/redirect/heredoc_parser.o create mode 100644 objs/redirect/redirect.o create mode 100644 objs/signal/signal.o create mode 100644 objs/utils/env.o create mode 100644 objs/utils/error.o create mode 100644 objs/utils/free.o create mode 100644 objs/utils/list.o create mode 100644 objs/utils/list_clear.o create mode 100644 objs/utils/temp.o create mode 100644 objs/utils/tree.o diff --git a/minishell b/minishell new file mode 100755 index 0000000000000000000000000000000000000000..868fb49918b855e370be55ee27ef523b3ace49ef GIT binary patch literal 91112 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 literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_calloc.o b/objs/Libft/ft_calloc.o new file mode 100644 index 0000000000000000000000000000000000000000..8b630e61f0b50b71f097b3c7bb455805383d8d2a GIT binary patch literal 776 zcmb7BF-yZh6n?4FingYMgMwlP*A6;4DjK-Kf=Gofa)y{tp=m`^EJC4B6hjw(g8x9r z&MMT+)iH|@LBUCigZf_Xjz+=3k9_yu_wL?zFUiBl>t_Z)8v$I9qsSg51`;uYTqgYo z?q&T^o>3Y-fk?gt&V8rpi(KfESuPE=%3PU{AI)-^0>Fnvn}P!8cHKL$Y@au3$NRNC z&NtT89>t0jhKws{LbF_Bl%vMBavSG!D%?G^JV#VG|2f~e@{w^@`lu?A%g^fc$Uq>#7>XDJis* zEzp{IEuYPdUErw&tj{9LUjpjC!|G)IEVY(P%Rc%hc)T!&5x+x$%Ba)it0!)wG$A4T YO9OX(?m6C(;{*4sYPD|1C0nHM4T&sd0{{R3 literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_isalnum.o b/objs/Libft/ft_isalnum.o new file mode 100644 index 0000000000000000000000000000000000000000..beb024fb43c977a5ff07b8d7ec035a1071eac39f GIT binary patch literal 760 zcmb7CJxjw-6uqg^inb<$gMvZ_hb~>592G4@a1g2BB9G7y6RnmF<;GA^&_iMi!w@$&gaR-6=75QiKQtbJJ!rgz$_4+ zrB6~C;NU|!e=YS--~v4AhciQl!LNju#Rk_Y;0rB26=5w9{?UT83t1GZUBCwTS#Y;C)9C-!H9B z8|SIDTw3b#V0>p$2cxXWX>d9R))S}k|Cq3$PI^*xUpdEBXW#KfTL*5lG1Q)Iaqk~* Cq*RFj literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_isalpha.o b/objs/Libft/ft_isalpha.o new file mode 100644 index 0000000000000000000000000000000000000000..da20b0195bfc3228a1611cc01e4a7ae55c359431 GIT binary patch literal 680 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SOFEk0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7kxfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw$ z%29yPOc1v;0BNXGfh+`wk5A2rPb*5yO@)ZX$D_J01FF;kMnlbmav8W87+^}kLPkJR z0*JwO@pCb-0Wk=GECq>oK;1C|NDBb@K>Z8>K#UAPdZBJb7AA@v>e2bMv-U@G?GH!( z9+1^QRuq4q2!xf$-y;TLRq^-p09nUf|A1_I35qfx8%Q#AyZ(ti3}S!*G+r>A12PZ< z7^{L97%K!A1$fvwCID5b0L5g0xZ*zqz~Ys`kx!tF$(ff8qzMXu%Gp2$^CO!cpH>o| NS)7+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z4ETG*fLeeoOa6WyAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag<#WTt0=Qwad2 CK0yZn literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_itoa.o b/objs/Libft/ft_itoa.o new file mode 100644 index 0000000000000000000000000000000000000000..f99951707e6d3e44c5bc413fec64ca3decbb3f38 GIT binary patch literal 1276 zcma)5&ubGw6rR-B2CYfJ7Agn^^dLy2h!+onu^AYl0g)=blp$`@bfHa3y1^g>8d4?8 z67bqT!JByVBE?GETTk9|5jGHE4*^pNjo+J{jfq9@k@x2P_}=&444ac*KhCBY3teC^ z&@ePI0h542u0b1A_=n6B7IIskK@3htN_-?zTDgkl`+mH{mzVy;fmhSBh>v=gVH8K0 z?F1M)r8Ks!l3B>>q?F@)0nbHUe@_=25xwp(1HR(sR@Sg&x$w#?tV+3<9v0yQZ}3Pb zKY))YD_Bl*jZsROTbFC4>}Jky_^ z-@qRDv16F~IML6ZLP@A6P{NNbN`U{6=feIj>YapL?F)nVh0R^zR9%-^ZQgZwx4s_| zM(;BXQdvM+qF!yW*qdqOMDyVT)KrPkZph|6)ZL)&@YW%lZ{H-WN;j{PtI|nfa(4is zxoxDGGCpp1!N<8`?-Mg!*E2674@%)m4n!g9WXI{5v*+qF z8XbE5jD;%kP<(nS@(!q5$X|!fozbp?f#zo{6^*~0ShzB&`v{kYdK#zaoWnf<2A_12 zu=w6)@A_wwzEwyv0fVuMmQH%ID4gI%ci_e-){?+E5-NW*W^$`k%;WzibEQ(TBy$zh aV$vvBa@EX}yJkrvyRlI;lxteWEc*>BSM#X= literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_memset.o b/objs/Libft/ft_memset.o new file mode 100644 index 0000000000000000000000000000000000000000..a58395d4b75244653f309add6ecc5517919e15df GIT binary patch literal 700 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%H~)KfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1; z%29yQ7EBPg%mC6*rvh0B5FekK5ua9+n41a_i;qWjUjtOB1C)+{ng``Fa5FGuz}O(# z2#6(s7;G0m7Xup*g8;}IX`og2z^@m5N>w|9JFCD)3fxH(Uod-P{5B>)Nk51ng9?d@(_*-OvMt8XarF|cG zbe{5PJOr{GsQp0)ej!|B`_%H;6XZ6-|Wtk3N`S}%r`spy?IZcKHtBhM4=Ia14e;Z7%m0C=7A=E_`@Eh zzQi-IfJ2iQtjDIcWz;M`_jxXx&;9ZsGbCX>p8b#ravAh+)cWwus+P?oDQZ2a7wE`Z z)Cv;mAEK;xa(sGlXldI#FPjCeH#el!3nd{biERk*nX$3wBcxT1ODFU$ZpOIHqHtJo9x5hB=nuc@hUFF(6iG1frAT9zT>i4gikGBFY#mVgku>v?sK%J_gsMEbIgR}TF2vC;8U%vyu3q z5D&YygIILR4H*eWQIC#pgP$zDtE3Q-s2EE0k4D@Ld-=`D>@Tw3s;nnnc8sy8wd?4|WE&4;K5`BPa>+B=z2}YA zuBv&XvPu<9tz>DX?3}{&YMxj)C^xkN&!!7ZooWQer*E%;ffLH6OF)S?(1M3@D^%d7 zQalHIQM2)6Xj9;pfmY!PpAOk>VT%fX4fM_rT~=EsDUa>sXBz9<+qG)u22&^Lrg2L{ z9pA0cx;k}A`n-;Y0;bjCB?n4ZEp1)RyN#T4**KS}**GBhRk^;zm1S;*s>KgmTU(Z9 zyG&&NHkuDN4LcVuBMIEK!XgSg-ED`8AstY`smdM8+idJ@Hg@rWla;nHu0f zF}vG=U#@OwlDSvU>Lk6m^Ihk&8hs(=b8B05#|^kq-7Qzwn3vw#yTS(=6qS!5AUm7F zq3h|9WcD_B-FLRUw4r~#Bh{HzK36>rX_RQw`ogb(CqVM8`~%7XV)9YRPwSoz!7@1d z={?YG(ksYzC;!u5G2x|YUlmQ*x;0VjHkLjUF5H+17!p|%o}CEWQf%6-nDU>;r1o`Y z>R%~p#U^S%=C1Qc+7!Kuq1iFvxoMvkKmPpWZ1-$|NdK#Rr^g;?l-d74nPwqV7#kk> zhFdR?e+JC{NzJ|sntNFIGVo?Rr+p3>yDTk&v7gd>8b6){L#8wV#%fC-iF41vc{tWy z!|4hWzdKePd!5Gn?h~&Ej2B&T>wCm?zqWz5!=CTgeD<2;_oOdVh<>1%%<542(3}Jy~ zV7U=2MHp}i*5Srq@IZRg%mI=dn#9I>46OsV8N_j%FWJjWr+E_nkbw1=+reOGxt5_V zb_uk0HUqy}UzLK^!+MF%fQvm-{DCRRxF;3pdFvY$C(w=hlWP5u){D1JnjFY?7Ns~1 zJ(hffMOs6WTDxm{#jmWpG2zeoibA>}dP?*prSn8>_MH%b%kxjKPO;{Vn+X zdqwbb@Zi&JSQ^Y_!Q@gF`8>=AbDPtc>Qa)7Hp4#5ybCfxF z$3AWuyQ|u*F6Ez(aqs2)>!h`BhX|o$M_Y50e|Ak0WlojK(M|yyy1R|g{A}-ArWGpZ zOJ^c?^r_$P9|^yg=3}fBzxOXbD=ViQe$M203=H~l_Wp;5mCd0$;6vnH@n;QTLNe>= z9kQAQt1vd2dxc$BQJ;dnKgO6q@-FG-g~E%Gh4HNLmf>+PrMvLB)5&>w&`Ve1yfi5u zj_X;@^QkFj;ySknxQsQ`9>nRK^oH-P;(cn@_dQ>`&1yh;CD8a+J@%^gB(Aw}=u~Po H&msB^D6y^p literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_strlcat.o b/objs/Libft/ft_strlcat.o new file mode 100644 index 0000000000000000000000000000000000000000..1a44b8f2d409487dbcfa82492673fcda67ba14d7 GIT binary patch literal 888 zcma)5ze^)Q6rS}*6i?k1EEFs(J5G3iWsMT#^B8&F6YER5gF&S)$IKlt{&_q}=FyujrC>G8RPF{_o~1Ga$| zlnjHwAUH|&2bj^le>$2Po{UJo1S#G0o*U+2J;&$g-fELQ>V*7gmr)qBkk-b2QZSG* zwXwdLOu2F=v%8vEl5+Zo=~1leVpzulOlX%$eDtafTiwQf=@q%Wm0VAUij?p7bM#P5 z4+PrJ%zt5Q#pDzxzyYu^W_Pg&NT5qekLlmFh)6Z&*$mhWnl)_JKa(ef`Y*hPm{12* zp>_hH5@q2ZR0A3oiWgA?rYHy>!W1vtzx$}|^MYvQWgM$j{)R#k0*pW(jWHaL(rSvA z#;=4Q5A4f6?}=r3-ahPy?(>q$dAYiZm%JLY|6FGi`4gT$x9p>Kv@6lj6>H_huN*lE z6%S4vxZ{>4t(tWzXZ3oW8h4G=Xp;i12B{{z+t|Vl#troQA;)*1r3lvkEVK3;%jxdu zJjJOIXhUG}8J7U&{jqPo&T-54o(K&AUqKv?(*J=XX^0V!+4RxqL2N4V@Rwb=?QX55 KlJ0As&af9Gnwnhz literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_strlcpy.o b/objs/Libft/ft_strlcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..98c68f0743316b5bc1f76fa4c587c67bf9078b5f GIT binary patch literal 840 zcma)4Jxjw-6uqh17QYg~LBXMegNsm|1Q$gEZ?GUz!9^aWRur^~ruYFxr7EUfT*TGU zpWr0*195ZIv5Sy`f@5*8o}0YbI0#-ix%ZrR-?=v-PoM8!5hAUL@Bo^DD=uOHq8Aup z{znX`vlo?p4o_mRFNc&?X4~>=k0;H!WP|(Ftt!}$cVPq9x|#OXk(;DUudS}9(w59+ zx0bUDQcg_<&mR?useBRgc8U6aL{J(bWoAh(ZlqQ-o+jn*{T$UgrgB;NDN1cbOMcCH z80Z1q-St)q0~|b*bpv~F9Yi?-{h5afDZ*gJgKZKogggsjkrM%<5 zhp^2TQOH+FKk9&)D1q8$t-1$NW%r@7C?y>Ix~uR>C+4$$$m{V9O+PO~D4Nfgnts&6 z{iA$TGBM#s9Nh4}!cI6v0~#g=w2u?kDx#&1z`RQJj0?0qG3iNbw+{tiZgxb>DQ{*rY(D|W) XzfXYTM_#n#rnRw>Uf=ntGg(}!*iUF| z3>q9;gXZ8l1dh^>eaCm78WHrtchC2od+xd4%jd^eoXD6W9AFfD6p;pjB`_oY4?OAq ztDXrxc9Kx`3Ya~&<^?+NSv!{<`%pPr$Uez3LX;XK4Z&PEDWB#G9-mh(jw*-D+gp?O zjy7psGm#+69jcBBH3qX=;$k&lc7q=C&wLF%x~^+Z@6(oMiAtfCx(Y6W!@tZKih%<8 zRQmTi#{+5-9`9)voP@m9Str~7()+6Qu3Gh;>e#+KP|bRe%SvQf*R4nwU7>`K=Q;rZ^^!UuH9=jF#27dWeJ^%m! literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_strncat.o b/objs/Libft/ft_strncat.o new file mode 100644 index 0000000000000000000000000000000000000000..2318428921b28eff1eba07002006d7a98fc9dcc6 GIT binary patch literal 1112 zcmb7DL2DC16rOEsy4cpuA%zMaDtJ&Z5cDEcp`rtGP!MS$7a8KZZ3F2hY<4jSfx@bE z4F!+-FT8q@f?|pV-9rvJ_7EWfg&c#2#_#RUrrUxCAH03<%{Slo-tNr)`1AXCmN9Lb z;Q^n4>r;3v!(kWUy9E5hY6`nb99U9AlaZ4inUt>8aN|6#*LZR5q)xKAlpb;4VX$)q z&afQ{iAibJU8ihsss$-e>m@o77kh5f3#LqsJ6VBVb-PwFUFq4+%l0!VAKagSNV00K zWwm$=8U|#3iTi`oFd=f}g_wRS-dQC<3n^toMZ995Ul2bwb)_#;XNN z+k8aggF`A>&0(J^VLt2$?I7SsEq>(hYr-6TqETWn;9V$mp)gN-_wKw;pf>Lyg$^G= zqO)^bN5?Cvl{YyZV3)w%oZj*}{#PyVI)iWH@p#g`%|lXY@oTj`& zX1@gga13o&a!=Xa3)$CG_ZBjW_Yo1>^L0d=SKda%SuYmjm|sD}k>?R;UuF@}NKJ7) zUMDy*x<4tHT|QG2md2T^In_@vCGO8j-US(@Y(%f_-}SrKTKDwV29 G4gUhX9Y5Z#L!#jm@{s&93 z5KGZQut?6zlxYN02$m`#@l9?niHP99%e;9zGy67N?(41GDumG_@B=ghH$*}Jq7N9O z`j7C>^4#Os*eM9KmqKehnzTLc)r)dzv0nS^nF;M9FSTeE2Q?0&bz~#Hxe~GUPGWaG zv8wgVbmMuRixB6_fak@6A+`#o9$H6ZdTnbZ9`!V>fBO62)(Oro@8eQ*2odu+du^2e#ly;ZQO^Fma&}&o6E3KX1ebYa)Y2Wf zRhij>avs&;T?J9?Ir}V%v~5} zx&;lzx%#NrY>hveDS9z4WOeAtnJpCuSywIePWI>4Dz_MhwFguq~0 J5s7b7&o}l;ioyT@ literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_substr.o b/objs/Libft/ft_substr.o new file mode 100644 index 0000000000000000000000000000000000000000..ca036a4033848a9a967e5fea655e093d382688ea GIT binary patch literal 1192 zcmZ`&&ubGw6rQd95j1sku%Mt2!9zg;(Ss;fi0Hx;8VK5;7a7u+Hi0$?+YJV#pv0C; zgV>AUKOpFTAP7yW(o_#NC&@7vApr%29HNJ&-^{gxNKIkW)B|y1a57TjBN4(%&1Qiw!SESj;EgxxSa-Ujb+?BYO`x4pv@O4L?GKmxTpAUptJ3Q_XBT!#;kNwBwHlXI zyFePXmd9bC06sP|YJ7~&gSu_9PH}@5)*4J-_Y(Hv#=AaLHR|vg;2P7PKY`n0x>Uhv zb$&hEEE;9KK)(~@_89uM*H`$x#Rs@KKXE+ZXvQv^f(* zdxMv9^;!9Q_F08yo0CR8RGbO6UUs`(XMWU#>${^K+73g1jy(9Z5L->6yf5k=6UBg> zQjzxf4%6~J&F7u)(4D$~{8?z^0Q*3kcff9*^lgmXn(VzL;1wwDLEr-{?$Fd5ShNT7 zb{x2;?0IEj2p^w<)!{gD5soWl{-KyKH_k-X%q-zuh=gfoOp(Z^EG8B$v6@@JgSK7E QTu!8WZalWUoQZ?u5DAag=>Px# literal 0 HcmV?d00001 diff --git a/objs/builtin/builtin.o b/objs/builtin/builtin.o new file mode 100644 index 0000000000000000000000000000000000000000..189e89f290f924ceba8b176131909d6cd1985ac2 GIT binary patch literal 1824 zcma)7&ubG=5S}z?8*O!0w9Hvk_tuIG;T;U6`;vQFIsb?xYZxhW-Yz zSyTxbaFQ|3ilA{Q0O^^wI3Qjg|U^o zpe$U5{U*-Ao+a1(++VS(D^}&3X;sT>Rt@^_#AVc4<~vyB8kIU3 zelIrfhu8U#K^&`M@?$RJAzPVzoZt%<#f-OQa--lygZUNZm-$g!y0bIz8_bu?#I>|C z`AEUF2JoLRMk04(}OM7&q;4?2!0=dKR`Il+chVdGi6f_Anty;;H$>n<7@VA5%U9VhE z7=Ggw%Joje-=P??P$8w0yA1#MrjYJYQ1zQ%`xMyvaNYm-lDo{~F$u}dcVthJW9Meb zDdjyXEKE|-op(II!pt0udmD*T&heF~pM&(sbwv7UcboVwMULGWrC7;~nZ4b~$KW1- ze-E_(*Y8kNeWJ75%?BOlxA6e5FmDK&*^oTdr-gSCgPb5r_rM}Iy^0=qj`T-ZOh@`P zEZ!ph92TRUc40wH55Oj24T<}Hpcms6Sj79@Df~*|X9_=2cvj&lg)b<4M&Z2*?^HMi zi&o+1vAqh+y|tWHSl{a?a3oATB~i@#DCYZ)VjjsTzSx8hHeo(*lush-2_A&d%DIqR yObl=2#PAOP53W63kW8K`;glR(+$iR6d3iT<^N2AOb0_SaW8c(KkuAD5TGJnzye~ii literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_add_env_front.o b/objs/builtin/ft_add_env_front.o new file mode 100644 index 0000000000000000000000000000000000000000..9b8bb34f6b74ecf9d618bfabe1ab551bce6ca743 GIT binary patch literal 1540 zcmb7E&ubGw6rR*JO>1p(P^cm{2f-d(EZzk}4a~t}l@>$@lQr2ik#y5;H#Ud?C04pD zLJwZN`44#U;z3ZbMUP%{l3s)aEc6&WM8CKDCQVa&@WGpJ-tYHjhWY+`zdI^KKU=AabH-cQ;1m6Tq+BfaW@^p;xEPj_UamJspH3&UyDrmu`Kg zDL&E2x=xGgpqCc+GC_4--T2sZY19uy{6&h?KDzhOy`RPeRQVf*X&!dsSDW6K{=`!> zRiJ1Gd1+*So=U<(C3j~tJMrnTUwt->dItsR3S>}wlU`waCTM`->2y#(6$|>Hlk&%; z7wJh}B(w9-TrVO()1z<`T));4uCnkh#AEg(Ywn(4Kg;ovC-+38mWU)KMq}HExeWb9 zaIE_$Ag(V&YBKS1Xzq-DL*$3+5)16def-m}48JD(aX-iWy70jpHTHq{Ka3wh)G|H* zW5D-7yybJRfy0oW197@W7KpYD{!)yqkU_>xEYL@jjDSGS0w-b6=XZ%^eO`3gao9CI zz@|?WYXdUb`t5fH_$I+bPoF3NJ8 qileMrDRjc0Xy?q{zHHfubu3G$oMV};738!lc_>gXXO_#AocIgzNe&JG literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_atolong.o b/objs/builtin/ft_atolong.o new file mode 100644 index 0000000000000000000000000000000000000000..88851a1b652e0fc8b979ec1ffab66a019ef7f093 GIT binary patch literal 1716 zcma)6T}YEr7(O$9W~paVkwK(HP!TgLgMuI|!^8gUUfSGtBk8-#K5-{Gpef^PcB@pYxpeyxZC5U*9(> z7<24nm@rB)W@*uY0XvFuneZ-_r;V_b=GYjTjD}7#DZ{?8Ffo-$*=gMBw9%%2TcXya zN40z@V++yzVBsdxf_Db2-YUjwm(>mii_#9$XOCDmR3)2h*r1be^ z->_%MXXCB)wdjk?sx+&Ej(s-@9bn9_Q3*XPmG05mpir1B^d->tpfU%!- zV33h64cbe!>egcQ|JEhqUxoRtNyMW$5s$2hq>-WBNh3{iNh4K&i3GBbBk2`NiMWvy z2_u(iPnipjcza5Cm-+lvmz6a0j8D8GRw9}qmhiTx_a^f57m&^a=Y{#9se6&vGpk?mXdbnA{BjMuj^yZ&6uWMoy$epFT^t{6G~gc|-&EY?69=Z#f!1r1vg=2``xszNMj ztW(Wddb?O-W(i}xdr|jC>o;Gt?5EN{50aSO5{sQdtVn-uGrPR^L3Cn~xv82RoksUbKcwQ!asMWBjJX`HstV^*sGLOn7{-frdOwANu8*&ZREh8Sj7B=%+@pPR#^625TY$#q2)|Ty{H;u%Y=IOe(>CJ(ItGS=Sqg?kL z?ddr6 literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_cd.o b/objs/builtin/ft_cd.o new file mode 100644 index 0000000000000000000000000000000000000000..7dfb1564cb09b72c1a9df5fec58dc4bccb2ea7fe GIT binary patch literal 2728 zcmb7GVQ3sh6rR+kxh75SM2js5*?_eLS&2$O1C^-RGGMeZG+31|IrsK*N0Pg^w`Zer zCFOe3WjV^>1Tu5gULJaiRj97f3^SY{)6~rUe`w_-;=v^U&a8e@a#wQ)+(3szO zeJ~XrZ|0DSr$yGrSSnl-K8kq^Q@)C5D?5ZqgEl4o0`j;UxO|wg6(IcCASMmkiYEC| zu17Hc?-=I(ZC+gO=6<2dm#kIt|C*xSpr}&hzE$DHLWM<3v;!}nHgQ7A6j)Ur^ck2D z%os0D$3W{MT7ZD%o|YYIq2gP=NVm0@LPDcI#gOr)B9d9$VA0Fet1?`Wukc`aRa$&& zbFJQ>0)xqxtWC;2ur_(|X7|Wq^5JObWiqg6CzJJFS|3D(JdiJ#2MiT%aDTq?&-OO= z=T-=Uc?sp7Gk6o%h*-;~l!63;q?db65Mk%ADC1Hrok!4jj5pH` z++UKLaKE%nUiT<3N~B(ot;wuZ<@qYse(6U%Z_s;FYDGbyg^(GPiQ<tH~14j`K9YHMoUp>1G(mxZqiAOEXt_Sw&bkt7X$r*Bg? zUl;s!eP3>4phNxdQCnwx4zY0R=hp-S#AI5 z4)#8}BrzUTu*d&irDsiV4zZ@`SX1msOJo+T2cW+n^9nkRhR&a{r#fP9A9$u6*QFf9 zqbdhC6;Ic(FK+_8)W3?S>)Dt0E_hcpPuI0C?>cy=wp2V_-yYr&>c{WId=`kKI(ia_ zpObkX5O=iMruFn^Li#F5r2iEd0WJf{?^~^()AFal4%jaOapjvXkoFnZcKZLsU14tF zEOAz+Zv%<>lu-Tn3PnXpsw%$Or;*8vk#Zgvb`BEoUqtSg-9w8um`Cvbb%PA*3tAWKy; zo}S1%SSLM!&#Od!DqLplNvs95aeEvdLwv23LYAwDsYwNWDb56PrBh5!Hn literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_cnt_args.o b/objs/builtin/ft_cnt_args.o new file mode 100644 index 0000000000000000000000000000000000000000..8ed69ebd551cee8a96f9d7712945fb16907dffed GIT binary patch literal 672 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SO68j0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAajHfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw! z%29yQ5=;=cQ~+tHQ-Lf5h>uUrh)*j@%uR)e#mA$%F9E950ZLmy&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW1~+jtM|o0LTaGX9xgdWB}3&bt|$kQS4BU&Zi!owLgx# zegUcX=yv_#(QLuM-y#d-b-R9PKET-N`o*K$_lHO0K@O0LPTwCdum1o4A1E1n7^DXb zpz(p>3=yb2V^t6XV}$^t01rFI1fVJvptuYWHvmln0a$!8IPwX!F*)}MqF;=_$p}MEz2QA$`Ck?{>>q~pGh)~|udKV&Th?n7 z3@7Iq#d+5##%tTO;pnctVQtjyVb}76mhbjKx@R~8XxF{!*LuBPC8S~H2r%RWa-QF9 zI6g9JEkqP;`Fz-m6v!@0i+5gPlDDD}9uU6)v6ZU{ZJB|S4M6Ktyyn~EKG zt7|05KijD25SLA08m$~8bP7%Og|qKLJWwz34)YzT_i(?m_)sYLsYFh+t1CcV!u~n< z$RFr}@%IaHw=43z<=)9Q?jzhF++!T;I21PpTxmDp+naA6UngELyj!tWM0`$tKo8|> zh?K8#UgSK12)VH bgfvqLb5bU!#wUcF#b0MO$x%+FGoZ+c(g~toxfi|xoCET2HI7pakdTkc`4Dr|z}sLAMn63O zsv*6Cqt(Oz+&|Rmo*sWyIvpM8%mJ1ZP}kYeo`{D|or%sylU$_E?s&9oHC|npOeUGA zuHP;$LvB$~kJ{AP$@ia}L$TPG$M(kqn}aedQ)kYh9)DC%K6t@KOI;bX)csHm*4>`! z`p-NS#;W7To|}a6^Wtj6lFU00gQ+-Ul=WhTtf6h$Cl~7PP$lo>0$~3tqI^fReA<3J zck7hgvBV~T@@4?WZ_s>f_#PPd+q_fgv)91*NtzeI^I(wl)nuTCEGCYDE0QkFXqmT~ zZ_Q|VAJsf@H(}fq$-)u-DM^0h1_`(0wE;xzdE8;Q*N!<#Vk(NddDYX<57_N@h<*c> CvyNf_ literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_exit.o b/objs/builtin/ft_exit.o new file mode 100644 index 0000000000000000000000000000000000000000..f0a8f19bc152ca7102e94e997fb77c63fb4029e1 GIT binary patch literal 2528 zcmb7GO>7%Q6dtD~HKENKk%%IJlBzwlM2lP}B@QG~fG%1I0#)0fawtROY?`$356+qz zkfl@`Lsm;52P9BWm5@*c2d)TEFa%`if%X81Ll2e+C_zRtCId6cET;U*Nih2_z=hiqMOOM1YIiN8= zQ*BI1@uiw2pEB89jE(z!(h;=%XyPce7S@bLLX(pJ4Dx7&j^2q}p)sDFKqH~4sL@!; z6_Ece!>0SI>6F8!o2#0hfi~EQ7BszVXqnhd*H|{a+_ErSW2tDAXg;%OR4DA^mI7Ly zs>z%ih+yZA76j7ERb1nyWbkrTFSBHN!^_@K$#+RY)A>4lc5&<>tz(AR*nE9HZf4bV zhnL-eyb)Nt`;AU z(iC3qrfdAHyhN4-S!PK%T%&{qF>PiVKsi-5xIsU2zR_zs)i&*oQ{6*JPxlA02d2W4 zM_XtME`;Ie`$>Ddy&>S-?$h4d3un<-!;`HLpvL?G7LEv2jc2UYpSIQ^^L5H0QGafx zg8iv1P*JNbFsjADDDC4H^bpQkwbaIU()e1v_(dv;rS5z^qx7h;s?9mzk_Y`9dg7pC zLnYJem(@bGG}FIbL>~A73e63?0JT7uMSZTc%$0)#z)9Dbdn7Xw5c^$Pc?r9MgX=uI zXk{nt7N++_BHi7+k#P6J(PKTmy~m>AD6`V(WExyG$;&RyvPtHZ^@xmYiQiD3_a$yi ze3~vCNVim5;sq67+#ycyAxYrXlPr)81wwoG1n0qW2tK;!-}@Wug{b@)d#p9|deam8 za6Jkk9LkrmHHlN}*cLYl*#3VcPOWEK+&jQsQ8=}(ZE>Fi_ld%(^=-jj*d^{{{Yhxt zwR*p_+q zg2qp8!Grj2AxFah0!{cIp~2Js4K!Xo{WE3128~avuBt}ouxT89l4;zK!aWF$3qXGW z8ebfJ8X8kIzo_(}(w#~}iTIn)tpNJ2_{H+B54zk2#nat$t3>h@D%><*kcTY dR_p>7@4Wp=%Btf^CSW14^T~+>kHtqB`wv%L3L5|b literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_export.o b/objs/builtin/ft_export.o new file mode 100644 index 0000000000000000000000000000000000000000..73483d45bb1184f4f332b002735b9a4c1e843457 GIT binary patch literal 1976 zcmb7EO=uHQ5T0nQ@ppqLs0htLLC}>}iV7k`bYcCe6tSQOd8WzMR@)@qZZwJkVXbyu z3Lf+l}|6)Gg4w1*yoRO>hU-p2gcg9Eek=Kp&$yZhzmkKdb#A{z-0 za2t4r4{(Bxxg636BsG}w^D>n(@SOte8B?)oOxPC3v{>rHh^33%DESrdS zu&Iq6OOJdCk;;zbk|{^zGxvuwX(2A3ulG-@I$_dd6k{y$c3Brk6(O^Pum;6|ogA@3 zy%FDGb&(nACIYVTZfx2{G#I*A9tZCQ2V>E;QahN5o3cFt9DJ`BhBOU{eCh==ab0H4 zft5oXpP$iCn?-mBJz8+Yy3tcv6LXRA$!J z)|wmn#;WOl>b&`J;F#9&gkwqTpa8#Dtj-xLYyo8Md6bX7Q3a;BTZl!pah{EDthl9! zXRIg}!>v|6qZd3kKWZK4N!F9|sA3)f%2iM-5jXupR9&D4vx;<;Ouq-tEvA1V?mmdo zgt4TJ@2a&1m_m%SSF;m6OV5p^X`sN%K$ZTw2%Z@i@giu1W~UnZ<)RI0B8n|7nBE+K z)ke9%qx3%11FQ50;|qb;IKjVfG zS5R>Z??2;SA};Y;)>F7!;vV2f(nh3TQSuBVekFQ0B(UjwAn{h}pK%v_==ys|d@Fh< zWEAo>dSEO1BS?hmSxC6_6Oi~9>HN8Z^jmnq-kwl0t|UZY?}FTkfD#)(r@^d;d*RKq z9`0d3jvDKV_*kdXvnHKqQSX1#q>nb~e4qOGLruETq~B=LNu&m?)Lmg^?vWUClC~qP zLN04NBnBFeV~(9kC1Flw9FeqdkCC{O9m*ibCXus;V3mm?Yo{&P^0{=8T l7CI$iM_J^g^SSUiY-MUFM)S#G5^3w+P#URH8?Y^l{s3n=n63Z- literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_export_check.o b/objs/builtin/ft_export_check.o new file mode 100644 index 0000000000000000000000000000000000000000..3b65a7f015991d07362b819ff754a7cdb358a655 GIT binary patch literal 2404 zcmbVNUuaup6#p`3m(99cWyARgdKE{768|AG>jF`C;XYUx-3l_C-?HSUxh}oQZf<4~ zf`yxmW}(st1%2zIkNTkaAa$~_fG=)u;!|lWBoHBw-8x%;=ic*WNwdlH!1>O1{{7DR z{@m~WcIU6{eL_SY5g5RG!O=Y!bTH^?@B%p=K!ry`$4it0QaUgNG2szO=~;7LI1lyH z#s{bG>1wt}jerP`a=!w|Fd6oWc@m1GOcg!Xc4pWhWj~(6k?jAT`&9Ydu2RuoDnDCD zraW14KCzv&l<%MDIx*>RU(0MfG9(0qe)MI7Vykf-=_r(6$;BY8ZE+iWY4I0y}0sETWtQP&e+H{&oHAwTw23 zlkHtk!{ER+p)`yQ5>#7TiTbytR(ZawALE5Zvk9L^Uc&G?1!TMo$-YB<&DHbY5j_^{!K)y(y_D-VyGKU|7xUWG+W>8?Cekz zJxN-1oRR92P5+mOnYyK|43GG?xdxSX#KEU&9IQQXk!9?Rw}L@GtXg_+c0~;13>8_#WgxhgX0o z7K(xVL!n(nKAjSgxsk}o@V@90qF#jkIq=CX93qJO7vi0RBbWEQ_qcldDDDJ!ljC?D z_l?UTZu##JkNdrE9KE~0KSbP5h#T1s@pyd$c&D&`=ry(byha1lN05Qe=Tl@| z-G?_>SLgpO>*_o|gWdxtrgrJHu3kTVrM>!vT{^9&*Dqu$Yo#to%ef?E27mKHI_X)Y z%J5SWvf$=t@MD&i>*ifpZBHc?a;2i0mz=cao=>^~id{_RoYJiFSr<#m90A#mmr+KC T{`L6fTQqu-QVQ85+7tf(8Epto literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_export_print.o b/objs/builtin/ft_export_print.o new file mode 100644 index 0000000000000000000000000000000000000000..0e3c966fe21a476fe853897ba27187b42bd773cc GIT binary patch literal 2672 zcmb7GU1(cX96#B*E^b{DWYrCY#^GcyS6dyphX(4$g(Db0m*Iosn%>;5)wD^Ido>mc z)!Rw0mr4cag9z@ih!1<&+=I^A4O>NM`qqaIf>cOAK}V3Vsqyze=iH=Cy9WtNQ@3PO%M#jFbj5mbo`uR7{+#gfuBc|d|zi^DN%*n zWWrx|ESEBE!x?{PbUbYs&p+D~Vi8t}TvW_H_@hwg!;GmCY;$QC)`&5jPmNj9pgq0? z<*%&#m6Sh4vV)9`1Z%>_F^^!1Rzwc4PD~oKDe!LHuxBq}(jXn06feap zEwT6?BgwsAx%*om_onL0dW|f(uh+Rh80DV6F4x6qg#_+mh@16mh=>Uq3T5t2m09F` z7un6leS{)JRnmuSokeDzpruc~ibtfKpD1%PS>s;EniLF%X*1ucxj%$Fr&e8RG#cEW zDhJzCKva}%uyAkmoxMK4OZ?0FChhJ{ZL-LP#gmPNP~<$7r@Dp*gj8yziY>5*UiT9< z_xq41p4?pH?m!7aUxboK-b~cEKd>S+lQnkG#nO)fy$H0n+u>VI--{5{yZtf4<;&V=g&m~m{=HgdSwM(+M?$ib<8Yefh z`S%Ntq#yshrB=N!VEf53MD(^%9;){SqPh5Fi@mkUa${ew;m~<{t@B<{eyeSikH}2 z*2@%uDs4G(?Qqz=9goa(gX!yK5p=nF6V98IY%NL=TI1fT*bFttDMc|KfLZ@v$RE)K zHTM(PEL3fY$WsN!FF0dDPBy+nf2R!@zn`eUOqOaWRTyDu%gm(mR!l3#V(fS!e(cx* z0mlns(e~2#j?z-EBe|5%MMWG$yD;Qa@d!$a^NZx|kT24U3ge7~9rBpEAHKbd{IKM+ z(BvyDRE&nAUHilH@bWPDbdQ|6L#=N#RQ!xR)gAp{&ohUD>w)y}_h2QZr}EfUF9W@+ ze@lNVpI!Anf!_2#QcvZztKK){PwA=rcIf?#{P7aiE-SpC@LeEUq;&z2i*^TfB>YU_ z#|meGhroXih+ofyqTf{X8AZRS=*JXI_c4Aw4@uPa0`aocQm8HN8tr8u?SC0LAO!6z zAXwTLKnyL12d*aVRUi((_5zUnodV*D*G>S#z-b`tI^R$@s4%7wAmm>HyP>#942(}P zi4M+}4LSlkI4?0p2j{C_(Eu^%I|Ay>@pT(b{n#r1u#MK+=-1n5x{J5k_q5UPx6!1# zRi7ETeD)l^Ck!i}&*lxQIBGLv*ft8z5I%&k%v+X`Hq4P!-pCOnhp!_Wdbw=gHnRD& zMM}`O^Jym+EXU2U<~n1IGuT_^TZT2^q%zD%TW^o1t$-2^hlORPU>8Owt+q`joU9FA Wfi@g+hK4dAC@f)OrZSnV$^HXkeP=cR literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_join_cmd.o b/objs/builtin/ft_join_cmd.o new file mode 100644 index 0000000000000000000000000000000000000000..88463bb3b4e95ef924d2a1118f25ad80e4290765 GIT binary patch literal 2292 zcmb7FPly{;7=P)m+f>_~C|mr4ut5a{nX(EVgcefUfhQU)(#2kuXLd5XNt>O7G|{vW zjLt@OIu!Pxs5cKDy!0Y?E6c8}rZ?A%dRW*wtdKy2IRuQ0?)v-Qyy>RN_TWd}eDC}B z`~JL{m!Eh4+&juxY>eT7HI5ZOf=3by^fcBA86HCG6aadOVnC4$Oh!wYnGhALRw0j& zgt%y2x)@0Z{52{BM0gb2o?vW}6yvNxEFvMytCe!zUQ~)SN>=4YaH!8L zE|oH7MO5t%^LAE()7-KnQlI&GHpTd$yp*_kbu!txr=^Loy1o(wGW8Z)yo?XBqqB+u{SgI8+|C?sH z`v-TrN$%GB+^hH7gy0%I&*(YpF>dzP2vusiYqYsjZ!@iV96EmUOb=CtCPZ?t+CK2} z$oFn??#{v~ZF-qNnKpf%F_kYt`C3Mg^uX*hZTTE+Jp(wYq*I$hmL~@^+^fYU`k2wX zUmiBxOC#b<;HCSW@AmiiQ8*GOka#d(O7`bggO<@9$obb{8PKQy%DMthI@c0x#n{%G zTIB205={GiV>VDJ?_e$}DeJYM(Ho4p4ZuMR?zDIK)-Vxy+kqLIHqNWdH_$K-<<76p}yR7o(T&;(sba>cHLi{pJHyc%gtTxj{iMa zT4!%hVh0#h>cJBV&*$K5T1EiaurV{;Yn+bbq|Od#w6&?YvzyeGPmU;$Y0YC$dPaaZ z$u)xTmBN{IZpm{Bka|_U4>QsEaCf$i(FL+68MoCkb^ya#hEL2hw%iS8W8Y10IrQ3G zhOR>fbQo|m?Q3hN!#9P@O}b+|!h`fi zzY%*w*}s2?eM;fSuD{D-wL~m&{Ahd?C@(<&EZP1+SD=jYV`nE5pB_1P0@s!#^22A# zxbjndu*3Wc@LN@Ws-HvsK7-$v|Au*0Ux)hLhM%weRDUCWW4K&#C+fdp4)_lBufXxs ze?*VyLB9>&8mM4j<-_Rz~kVzkc0f+0f$O|101)TekRnPd=VU1u>LqWNN?Z) zzlrx1Pbr>M98B8b!zS^F&VNbCJ~+|qSY(gR_bnwy=XnD%)fmx7*bIp5+K~Lkko?|| zJU=8qHzc1LlIgn{%*Vu{RT21W7N%WcqEs#};!jXm<#MqstXdwr1!=dhFeqCsMezm8X7DUkE23a!7N9O$787R9GOq~B&Pu<_MPQjr NppG)eTYd=$w>{dkM;xVZPQLC>(jaTKCDh_YpIa%zgVill$hX7niqm#__!w zUTi*W7tF|uzptQlrP^)K`EIrEn<+g*mE7@^mJGa0%7;TO*W z%P_2*hB4vN<(z*p=g;SS;ZE|2J7K$yf674^wnGm3%}8R+R#YQ=;2^*mac5(dxE@5l NAbh{Nw$}F1>kmg`l&1gy literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_unset.o b/objs/builtin/ft_unset.o new file mode 100644 index 0000000000000000000000000000000000000000..7fb58f256fac422ff1e51e2882f6af8cc9429169 GIT binary patch literal 1136 zcma)5&ubG=5Pqq(4gSg=JVa0kC?14dRIt!XO1tn57DXBmq&(N%S5s*=%XU*!p%@4V z%Od3H)xW_@&$du+>doUGDnwB5SUfa-^WNKajT9W1{pOpQ_s#6DkH3B#&oWjz#c+X7 z!*?mD!C{x+bHq=u$ENnhV8)@z$Vrz>h)DJ#9c#W~KV134v*?`(NRM`zg8=D(^a(N( z!tJyJ$BjhSf4=T}Lfl=-YJ|InGz<=>^ezGP5Rw_tL1KpDMCd*iEp~?sQ*6JQ@mD@`l znXf8O=O4kX6Y3XDYw5)UR_a+L>)dR42$gHdUxts4u{F%-Gq!NSdNs9pK6}R0w*+tK zwy~M>Pv2Yg;1$;20H=XnAjZ@;fTw{?Al_a51`yiyD?oh5^%@X;Y8+t&yn-OJJBIg7 z;vTS2R&kL(ny6o&;Pn3%`<)5Sg!H#W)Dcb?I@?UF(GRsLBNe%Rg#6P@kWfnD3Ag2h oB8WmJx`F3JQXTd>-6tDT)wEhD+np_`4=J5zopoQhZ4a}51Lg&@cK`qY literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_update_env_cd.o b/objs/builtin/ft_update_env_cd.o new file mode 100644 index 0000000000000000000000000000000000000000..430ce8f372567701e7b57733e2f16bc7628e9d43 GIT binary patch literal 1256 zcmah|&ui2`6rQbhyJ&S6w6cPSf`YvS7R6)5VhbZE6zPH>GQ?!IyI`{+o75mI3aio( z3O#xD&k&C)C|>N%9`_8ppQ2kyqv!(&@!JF^>{N`n5^6BUIgBivuM;I39G_*E_ zWgZGS3*Dl`KcuU23)BPAJ~$aE@sSAO%h1p5++SO{v-a25)-PocANB5Fuvv;tvnK>v zgs=v_*K^iYK#0S9nulf}IZq#05H;>30>1u+Yg)btoQFNf7UJgeBnhLYzH?p$Ti_$g z6pKn7q7*`QMaMHYWZqDoZ$UL(Q+%t6Pr2+kj#Ar%m!M5()>c2ps!$Tzl;Zp7uK`0G znhQifTZI;ddP((}6m$Qx+dTThN8egJ8t(HbNO{yw_-L52`cv8pX2R;v=%)Dg;zvM2 zj66nl9Hg&l+dLAjj8QyB@tHyakK0L>|GJe$Q51(w&52h-rM`;pvxAqQ&H6W%C4grKdqd~ zquZ+^Y{mZ5N z)sla)7j^6HaAg%_4d}x_u6BZBsDsumaA7Notk4JNF(fxjU7N%-SL5Jf zb_xhyC>AJO6*a z|2zNr&&^GLzWe9>y+Xtu5%|E^jS=64j|2wnNsLcu;Q=jgS2C+=~bK|Yro zxTr5(SSY5_W$EPKpUY>YJaekIh{*;E)q~)W5ES|%E(A;WNlIzwWVV!AuysPTz6v*{ z$$E9xV^=&bL@t;UzJM`?p{~MsOblU=(WVq%MIHNrD~}3s6^MNCItCeSMT2swR!|?> zW-R}A%ll)(^4+fGI~~iPX<0S5(;_85xk>Yyv#H#pH!VN8fk@Y?IU6d3K*Mu4g>i{4 zlb1SHjYOs!no@H$w|%%r(aY9ypb~6od218ru4SJy#;dfy$gXgGlT@GY+_9EV9LDto zd$&CIPRzJ;64dL-4rN%iWYoNjGK zpAu(iwU<<`+f~Y57osoeh@vW0-)&m{bu@{OZc^VN)}(IuKlN&AKR=k+(3$H&M;gdk z59c6-YHy(fli?2V`4fHj<4lM@L5^ zQCwP6m*}k}&RsLcMY#XH=Y#gwyR9jKB+99bsYKPfS3*&2h!)~tzPq8Du>DwItr0W< zJ6rzLSbH{{yZqu&H2FJfv@VNT5L8=+#Mia>D)ZcRtgS}G>E?Moi7p&h^Y%ftBR$j< zoS=tSlOk7PjGq!gKl;Bf+x>VaR6UEhE!@hK-UIp%)s0@k?R{Dp0^Fw^FI0bj#0iku zKG#Sc?6W$1e`_3E=ZO1&^#s2aW12URKS3{1*i{V!>(q3z*u^(QtTGZC*|#^o0@gE# zJ%y3`7vEGE*Du7>@W{uzPVUF+R2lJb9iquRKF5x{dGNlyr}g+eJMw6+k^eN0&$T1( zd+@r<V@$RFa#QTf!Hjwx?fyDoc{W=hT zqgD1DAg!MP;y1v20tiX-AM}!Re*=>4uZ%wciT5Fp^ou~sKh6Fz_74Dww}rD3?;9X~ znar<&*kbfkAnAUjeUpB#$$txoRP$vZe&Wp|K$uDYZ{Y6CB_P&^-e#O+OfUk}Iyhn& zA9V`AUd2#8Ex=yGAU}8xFR~vzcl6pfn2V{XVuV~lubHs_S;W5*@#%RB^D_~@5b=*i zd?C-8A^M2gc<=+K8juKVeCOtbh8D5kT^FhPPt&eB^B{}VV)Dx{`}oxq(IqjTZw$d z`BKJoc-4NVU}rghd8}>3VnX({AeAoik!l4)${9OSa&F~$uAG^-L_oa1t1{o$GG9yP zlOns9v3$5Dd;;7D4qkBjS&{%%z8X&c{MO80#!S1F1 z2n3^E+hWSn5pwn^3uSeafz36hB|(wic}uZ5u-+SK}roDZ|K=R1bEnz0U4rZngzZ7Ud}!{)oHO#DjI@J6vQ6igd* zLNwG$D2+!%^PwU2gZI-#dV_(-rT4?t{#cZ~Cx{KZZny6T<c$`6U_>Ct;#5a5L%~>eRZ@zW{F* z?C0W*3s_=HQLfh9Yh;wP&=|{KPVer@7uG`Sv_HyMjVzRdtjX9g8-b#624SLSDC*Zx1gA#-5lDXD0`aBlpG)~uAkL0n1mfb*-;ny3fW44k0HU>{^nZ$Q z8i>?ABN8=1&AQ^J4O3Os4&f`ZFGUbi9P$0uBVXfTx+a%voNxvV}4}!BB?8 zc+TPY-C&#ZC33b*K2t5sIR#rvxng;i@rvc}QpU+Mo|&o0mB=ZyVg9*{Q#fNuhoFO; q$aBVGJX_@Ed^V`~cCla!K}5=$JXf_%RC6-U!1$}LjisM{lKlsSX3z!z literal 0 HcmV?d00001 diff --git a/objs/execute/execve.o b/objs/execute/execve.o new file mode 100644 index 0000000000000000000000000000000000000000..3021b3d82f0950c1f9adaf0ee7b93c9b76c16cf1 GIT binary patch literal 2400 zcmb7GO>7%Q6rL?^>e4oAej)`_DF$(fgtjtBMJW*EKwV7*mPl0#F4bhSUdO9!>}YLM zQ^``Kbr8$Ss7P?)j^M(bBGE!BLQgH+sDxAwNRDtNAF3++hVSjpI`$e4JZ0va_cL$4 znfEry&EN0-eTXsT0fq@9fss6bDUAVn4C7sL{D;iZ2FNV!fkZlTG8)p&gs7X%Iz@yc z#QEHt=Ob+&vqS_!`DpLb1Y?hrA;C5XA`!x<)g7y{A`S6;QJ#a+Uyc@1mvp0a;Ad3V z)^(#U8kLJyr6|N}rw2|fxa74YjqAuqrVK7AT_Y)lFw3Ik=xb)UA&GIk>xux=F>|d5I0-!$FVYuww;^@lRgaxd4Fmq0}Bj-TsuKacyJ&G?Jc?l;P*TWaTt zfC@cVqw5#?e*Ru?JH)!z6ff7``F3w_4_WR6TfGH5WAv`>_4I|U(g}5@O{X$-W`qy- z8hx+O^YUFk*Q2-R{#%(B&P=PFSA!#o4C6+=$E_Q|+bZAjg9&nZ+W`f4m#H24s^~=C zIVsQ`SJKeGpf(9Yf~S$y$RpojZWNI3hcMswo&wV2X7|*dy7@eExUDW8`XQ`PSZcm7 z>ClZojMI1LQ1%vO^G{-CSE-dHyU;*=O_hi!2esH4UmD`T&E9>^vIep?1%rPTACc%>rB4t8Hqkcy1mPb6KyI;T#BE zA412CNYG}mxS@5-zacHxLLBoGPZH(QIi@sIO6usL`46T3p469sN%$9m_?cS3gjd#Hl=^+#4TaNsK#KbbNO3oSDs&6@Fz^fzqWz2s zer*eQ1o#mU6g4UiWC``wxI>KyPbtW$AR$Uln%Px}JFl#ll#-yRFSBkdjkZKyMV!2`2b*sWe z&04AGHWQ_)v&ux-bj)Ja5G7k*VaRG4jk<|F)kdW*)~$7{ZL6{>mxf)fnQ|TSSk{r- kG4&#%5L>JYW34zyG^*6_?}u%Mwi0;jwp}$sA`uVv4_4pKW&i*H literal 0 HcmV?d00001 diff --git a/objs/execute/execve_utils.o b/objs/execute/execve_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..fd9d0f049ede85e1456c9b6c2653e0189ab36ef0 GIT binary patch literal 1776 zcmb7ETWb?R6rQxPjhA*KR8Ud64_+TqqEM)yklF^eVnIvAyp(CW*))r35;lo$g+O5& zH3XsH9}s==C+LG9E!a2x0Y2nKXeB}(M2ghL@9fUhByAB7oH_HI%Qt7vZ1U;X_nltG zeBBHS)DI1GVNs!wQ_yD=I6%Tw2)RTx5Q)LbNQsYx^MYX)yuF8~qp|6~Sne(h9^#|g z*dfOHDd=ZQWTbGe=L?pZnHLVu+xaBVfQa9fjR-7`k#y)!&o1QRdVv=+kIYPh^V{RQ zL2M$TU{*L&;G?Urqdzf%HcHNo6i-_51;Z=o?C+(>UJ-ojf=@tpl(CfDlf4Q(33Z=B zIl_9NBt%308u~a4o9kh02^RJ24zyLMPg11(x7^bzUp1$$YL!w$t45&_6&ipBwMw+6 zIi(s?mTBAw*SxSD*r0M+nTec&a5Vfl)+{4FlCU5`vkB2#ErJlGBgsd+CjG^XRE1{ zPa_k=TiWyCi|FeejrT1zD7tPh(W;Z6moTpuTnlQJ&qlaEH^wKy==Iu`JE5G ziss*hlevpGA{!5mXUjC3P2mW-ju~>eZQqP1)TEg<)P#}OEi+fhTErn`)!Wd7+T^o9 zuROaaz9c+v4v5R&x$p55^VvaP@K|qP1vTf8e+C-)jSeB=e8xumgHO7~`s8nc^2VVX zB2V%eLUW?WAh`U7qm3DYw4g2Z!0GhHwIaXcygQS7%==nYG;fV$y{w@gQVva-kkYHkrEqb@%k|&=+4_C8%%;As zrzM>v$}P2Z4eMDzT{BP67{I|F<^4_cF$V5}r@^>S_kd#XS%!Ll(KtfBAd;^l{%$AH zKqRfMNFAVJ0}};gI&nI2G$3 zIL|jz2f9*Ljka_2P9jDye30GG34!{4(zbnX+*949J01CN5MV2r$U z6O7rGY%o5n$}(SsHVfTe(K>$*_g1h~UeuF^e12!qC+US@Bb2M5A2cD_KGs%H_k(4U VZoTo?1JyitSuXi?&Uq`#=@+x7s51Zn literal 0 HcmV?d00001 diff --git a/objs/execute/parent.o b/objs/execute/parent.o new file mode 100644 index 0000000000000000000000000000000000000000..484742223947e21d228976bc7266cf2e09f86612 GIT binary patch literal 1168 zcmb7D&ubG=5PqAsX{yy-#YzONIatUg5cN_OA*C*?ppeEEdXZ;HHqAnsgzSa}AvCa! zG%NuR9{g)+{Q(~R@fYYpFsP724#7j?H@k1+Cg8!3%$u1v-+VihY(D({bu!PGG{bPf zW?_*Kju;HM1Usa{Kk!o2;?x89IW!p==@B@$^oHfdUcRYrZ~o2wC?3$G-eU|#IuL4+ z^TBz}v}#6qM_h0|spsn~h@;IVKPG?0EVPN|~~H0R+^bM7adji~)b zy7f`+zCc0iHv29^l;fJSpgCJ$W|CSi6V;5*i$s$?-I3(>c~`3cdKg(5(Jdr9Ypagh zx4-P$!+rVSrblp7CLdgLNh;J*NxL!2#tIIR8HI=pYgq{VRF{LFIc=u(zSBP@(Zbhx(wfJyfWWppHC52wJV5bMLwN)dca-d(S<;KHqcB zJ-PJOpTGZeK#0ga0vpx{R&*b>Bo^oqtoO(;gyg-(FitTbD+5!|B0M6c0>2cPvyo@q zxtWe^PuD3C5aCg59v}%)jEKv`EGgv`gTj37JS&vy#j`juw%_JFZ9J!IMdar#F67f* zpq6r%=5yziIyKcc;!x$hK4oPCc%(WS6@sCAAeHj7DpN==_$Ht~zbrRqi}BX>8$1@p z{X%5znfS9<)CYYPvHQe+EF$_S>F1EgVes*TLVN&@cyStwh+=5bCn;CB{%@LWc#mK&i=axpuQ1 zT5bW2iUCFq=2rc2EiBgz@}}E@Eb7K(dCO?w2mh8Vf0aD5vBvqvO}i zYINQIqqaZ)+2%2g!)*@T?edqAio0EZe|L9Ra??949$H^((`|C1xRFxAd_J6pa1t{! zna~(CKf3sphfVe{Lq!#saiU4BU!<)A#tzN$-Sn9eXnK3-8cXjO zzQ>+o&G$p>N&10-el%=PynZxcyFSGJfYFP{8!w4SDISR*IuKn0$`jB(idFgxwSqW* zAtp!TSN6Sd7|*9B@|&X5j`8C<2KrrqTbBK}o`HTJ!!P-_!Q;9H`h5<+pV*J<+v9fy zPYj-DM}gx7ac05MvIp;Ai$Y!p$J_1DLq+-tY#`?@dO-GD;FuWa3vlv#8yv5Xa|s+h za1MeK?k<8T{#S64e`fg`mN!`b1RNnPHE5ci$$T%`+>@*gRJs%7xTs;D4bhr pA9LP9`~2GCd`_q$M*!n&QO649Wqt2;J{SFT!OOCcDfqq+{{q2O@*w~K literal 0 HcmV?d00001 diff --git a/objs/execute/pipe.o b/objs/execute/pipe.o new file mode 100644 index 0000000000000000000000000000000000000000..db42057667a26414acb8eb92bb534f06be99cd7c GIT binary patch literal 1984 zcmbVNOKVe65I(7~4O&eU3lW3{ks6Rnts9|;scrBm2DG%$O*z)vvtY*9)}XHwDl0z2C4*>w(ce94}$&F$Ld(4UrAOwMWwV&SY>J~oMC>`?Fw_e*uflyq zbVEsKQS#Ga(|IQ`+yNrrL_l3=NmBbx>VbclOv%C*seknq@)cRgmSth8Xapt2nb%%weP1k2J8MyR5f98!BHqwjkWkd9p==Pc4ndZp%Gxj?>uqOMZwgZYeQRw^x3qJD+JRaFj*aFKo}C8aTiCv;M3S=89GZuGmcNbSca^=Gz)wh@}}%R(2Y`K5jZ=VI>Q@m2asT10)@GqZJnHXVV7kBb@-1Dew z>=-_4rVwu&y8FxGaUXx=#lXw$TRiUP08iorgxZ5+K(yZ155%W$a192ggAvA2#y-ZU z=-Eke#t|U#os1u`HpQO<$)94p!Ttac)NUUmz_c#|-3Zv{OlLy2eXf4C0jBg}M7S=u z+U#p>HgTKzLM2m)1^h3la4MBZscLgE8h^l3Gs^S%jM8Rf Nv4kenTsAo@egh_!nG*m2 literal 0 HcmV?d00001 diff --git a/objs/init/init.o b/objs/init/init.o new file mode 100644 index 0000000000000000000000000000000000000000..2db55111e74652c2feeb0c292f0e11f80582456c GIT binary patch literal 1748 zcmb7EOKTHR6h5haYIP!1tSEFAE{YKGfmozMstpX-LXj$N%59oVnqWE!X<~yY6sL+q z5Cz@25#012=*kBzv^(ua+*t&nLWC}ZVB>dY&LnAU79KeFyuS0@bLVkC{r6$G-PQ_F_Kn)jNm| zbFrNk+4!PVY(Ae$S+kN*YB!(HgLYTG@c|n|#;s+*mzm2(V|i7u7E)GRsj<;o5zYsh zYf+M0;A6^VY#?XcMX8jTREb=4&h#3Z=L-w^t?(s5(m3J)qNJ2ua}H}i)Ez_HPn}Q} zrs4cL=HN`SlPC>~ewu(b3eU+3$bZWX!}(#@<)Go*uNY2Y`#lfx&cL$8Tt;ae>3~s+ zR1ABFw1>T%d~*37U;;p;G-Q+t+g@z12B%gMr?r74?kC~beg3sbxe5W{c4@q9e+)R| zWh1s>*u$SmTZ*B>qj4gej4@&;mxkB>75lzdqUb8U@eX5p+QX z^sTuZKOgY!_NqR$q797J=5x>Qon5aJ?0xpd8ldT{+CbPpZv)?84c_8ep78-^tNtU!{XmNG7F1eFEk|i^O8R*`7-vv8A4xRxo-oO z`<7w55kH5;JsBENpJHujiu`q6)V-0|5Se8>zj{Wy?Nn)Fo&WzvJgG!prRVdOxj-tL%go|xRAw%h$tkm# w%9Ap!J1S+dm$DKWakHtcDK6S^;l~SEQtsl>MdNWb6OG+=>0{A!I)kg>FAa?!+W-In literal 0 HcmV?d00001 diff --git a/objs/input/get_input.o b/objs/input/get_input.o new file mode 100644 index 0000000000000000000000000000000000000000..eb6e18489ff1354c75d80d6bd52d5c3a5521fb17 GIT binary patch literal 1680 zcmb7E&ubG=5T30~n`+w)T7RL?6?*7pMMba(g@|3)g9VX_Udm%lHqFv>8dJ+ULUWA6GkfW5^_|4{RlWy_gz`U7n-n{S4oA-9V?(ZFT z6Dg+%1GEzw?ZBWxA(x@cJn;`nb1r09+5m%-SecJS2+uBfO}~jJjHeSV9C+{KUd+d9 z*D%C*vXd6r1R_Kt@8ukKN(O{D&KK~UmGj^DfNdhnJ&J&Db|z~jJTd1!cif~955|rr z;cUpd;xf1cKBkOCh$PoBN+ImDNad^;EsU3-ei`a% z>VmTHrX1H$M?VL;&@&jUr-zIoye3f2@8#fs%44(q%PiG2vs|p3tD|qhx5E@>WxQ^d z6|-X0&C&>|OIJ9!I=X~}n;U-0XWqMP)MP#qDas0G7DO3k4Timbg3(hyal~NPd6Nn{A`U5uYzHUQ<5}L`(Zx{DTr-p4(LyFP@m|iL0--cyh(qT}MA~ zk5uKGtQfV@hJwCT-!~eK*Y!oN-(ypSClZA&u;U<29cOl8Dan z5#%%SJvnI2IIT9ZM6HYg=_)TCky3~$vEJ_J8nT8EzY6{N2Sq|8KheGZ*vpRleRz(( zaNZd7`(ZOr?sFoqfgG&S_h5Tqf574<^)1*=*pIMik-iSw2m1;ZtB*Bj^&rl_8M?MoS;7!fK}i?*lmNvuc{rd zgs=$VyCKZ=wy%E@!bS)eLUtt=|X6%BUL&VDE*`_>^$$N>6Z2@>W+ZNK#;^*z9 PNaSoQnQ>ejshFj|@QD?g literal 0 HcmV?d00001 diff --git a/objs/lexer/expand.o b/objs/lexer/expand.o new file mode 100644 index 0000000000000000000000000000000000000000..5afc400e7e9de1321e58468475d15bb332ab1431 GIT binary patch literal 2052 zcmb7FPiPcZ7=IIE+*r-*K_M24d$8caDX~TIps==%yn~^l1_TK&>+Hl`x|v;fXY5i4 zN+*$wgRO_2da?A>LJuOIdJs)S*OT$&>dC{FY(OFQBx+56-@Z55-HAc`;G5t3{(tZ9 zJbeA)-3G?AbqpVHFF4VIPYMj$2A(0q8uS|lf_701D3Xzr5mP=QAzZua%CVGBnx{^- zby@PhFvLzuybO(oSCp?K)k=CTDPkz-+s(fsal#( z7|SVB3%C@LRSkw69YGXLuXa}G9 zfc@*$_IB{+D@ITD!vnM4-AY}0Pd3o#?v}fWS)kwHCb#G*j!7T3Mef2g_J*8622Rtc=RL)R`9xbVHjNSnbjtwj})5 zBCY>&FFoTeTs9Z}(DZ4X6SlZdPAry{Yc(F+`;`m^sd&#wb(aJmz9%IjHY7ZcXUM-ka zBAvn`NH?iA*T0({ouh_2XnX6z$ZOM~W+|y>H>6TYZI5S4^I#487Uin_aGYt?q?X*Y zA#oKkJE7kWo_~uOgH(OS4h&hO=v~5*G}1uC^`#U7TJm||01PQG(Iqg+&y@TtWL=HPPVae#$f$0o z{CiBs9J}mvpM|&b9Om0 zWW7?PKj+yMH(zujQ^A(Qd?izGyot!IQnIalroe>loEH^4Q?_!EDJ#x-Mb~EHtnCVi jem3~$*!Y(1QXykuAUm*~EW)d$453t^B|BTR&_4SgDCDWI literal 0 HcmV?d00001 diff --git a/objs/lexer/expand_check.o b/objs/lexer/expand_check.o new file mode 100644 index 0000000000000000000000000000000000000000..7be3b9b554056d4a42677db1366b1a51fb4a47af GIT binary patch literal 2724 zcmb7G|7#pY6rZiJxvNR%qAe;aIYZI@a?prM!D26%g+)B9($GjL+heow4zG9D+#Vi< zXkhQkZ5AOvRQ$F6=6@iFgqlhl^@mnLaz7Mu6@*-Ap@?8iW8>%T%v^I{R`9{wH*em1 zpLy@i?9SfUy7zF9G3_yi2Y3J+*@H(M40;w^CqoEL?-ho_6a!K^Fc~r75t*iAR~#`G z`bmBI-uS)eF+lr>;!l>(UQcpFaMXO4DWZt zy?ey)=I-sjCTa+orcrst#Hr(%zoVhy7N3k<9pJZ=7SUS}- ztmq_P9*9i1o5y)=5%H9)Upe|HS6>(D_+=!DWWD*DhIbvct;(#R`{h+{r8`N~9IWAw zxGS1r{m7S($rhjxZz4wP`*H%*L-E0R%<;sYa0CAAI@1xVtr0*VlM;R74V}kI?T> zz|R7fCHd#qlJ)Z1qQ3T(#%pv^TKn-pbEp`-(fV>{XD3(#OKQA2))(toEU4Js1jdWP zL+$%ToYvlb5ABWE>?$zY``z6iQM)CU5uFM)A0zg8dKUVPlXr*vc)t>bGh#UfX2hk@2giYzBC8_=-WRLxD>g)F{{HFgAezLwEzb^)YyDBjai7!s# zDM)Ns;!pGicUa;MBwBdzYe~!aHII43|lsego=zogr>Rh}e zb#=}rl#cp{Y%tv0WOnKGF8$Lkonm*#zuu(}cj?TWb6>Te<&M9@qJYOz2HXP?{JcW;)pHV}A+A{?!0LnUr Nv>24qxnd^G{slk9VPgOQ literal 0 HcmV?d00001 diff --git a/objs/lexer/lexer.o b/objs/lexer/lexer.o new file mode 100644 index 0000000000000000000000000000000000000000..67b54eb83126d43f1ef32bb98317bf57cb56a4cd GIT binary patch literal 2516 zcmb7FUx*t;7@ySZHPQAag(Bxa8p?tAu%(JQz_V|#xLJ0sU9+AHw2q(c9s}TypvYh3m72By;Yo+%WOY@fX`sq+d_^OUm)51^3 zRW2f_;zE2tt0b~4w_q)l?Il-9Eo(5poZjbU?KFwJ!o88`F~$m7CD99*CoyDM_@itb zgMbz#c>#GG0nVlv`y3el>`e>;iW@x-nEY>;75;tU{c%e8=X)*l9{IOv6294PncZE0 z2+W=cSdi~}KP3EoS2(}crqhhqpCr5Bd{1nywZ-OaS8V3*N$1Wj<<=HKHL1b{W?T5J zkVd>v;hT4`07fp|%BAJf-i=dduk+(IVxsv8f9-+rXAvmBt&8X}&dQ!EUDMs}yuRj%|I>8%{OBD(bAhBS!tv3ICjKdUfybRUz zw`9$tF7WM%3)hm;k@oo86}k_;`MZj^5EC&IpIwSK`p2V}Lanw{yrVMSaNZEI4oyNH zzyd#xP8m`EZ7-YP4Qe{nd%H!Rtn&>`MD2G5ncR1Y+=pv-dHtCfi&TzZx=AJ z{reV}I9?WBPsPyN{s&y!)c zK~`smo&GE{^?HmqCX`;M(cha|doLtibo9X0el(fepdO9T9HmD$)JEyi5_6;UCwM(K zN9wXXo9>oV|`15%^5eRG9&2YHnR=9@1y@>n`uCeukp~()#iKI>!H) zHcqU+%@WmgB7OK!@?+ReLH;yGbBCVL-Cdm@V>1)!iw9mig5Qh;vO}A($-k7H&U0To zdfHb0R(3kyeeEv6F8hzN(|JE+_w5*CXcprO><>+5d;koQ@eXhbxQn`wejFH|@c?_m zXEZU9`~oocV7vi*7v|C(v%gideRYIlZ@{(P&oPrJJy`o(@r)j6) hI)gNYQzqepPT939E|x31n3acHnrD_D9z4j!69*4V?8Y^b#283=A!AnFhNCxchEt=#h$p>z^kUM6n)KKJq0V&YK^tsz(s^&bnQ!KO`*zds`@fF{0JJlJ z3wl5LHU&C5+GX@H!ac0i7Z-joM`4@^0hf62Z_h0I@NMVAnh(r8RnG7~=|&c{sf@D{ce?faY1@S|jx8 zR%A9Td!jBXBT0W>H$G^_rne`8i%9FPr3~@r3l(3Pd+#){aTXc1VO%1!?tj!mvtE1O zYPGtXKm->~OEn&HM9}E;(U=Qk9yiM0)mu_u>K`0Dv zBe}f@L+1Oy7oYTTRwUFvY{M7lo3wqnG!+t1=!=lm+4}p=IrmT71bpVmr2r2rVD2&nUucCwFyYuq;iZMdwC~z#A^iE zuny^8T{qo)xW&0)dw-%~wD`(%P^#VY*ge6UBXN6=W%%cJGmUC%)o6W*pph=|3Mx57a*~}3=%#)dj5mx8ULWnd|Af9@8>_}fkj6{WobFc@MJjk} zK_`aSOI}1*-6`a&D_-#2{MM0+NG}WtSG{05xAx^lgp-QyUqmzpAIeqi%o>FplM+r3-T6kLWMIZf5{nZ*&^qBwc0p<8> zAO8`(RqW$;Sge+eB?nK%Zz2kn{CUj#4{_KS8b4#%q2wngE}Yh%KWUeP-TI!g(|Po? zqwm_Kzm=WNr>EU5*m>Gc=hf5hJHq#mil_5CW>-MR0&Ds+)B!Khv;~S%rO$&xmA-?I zDe3=G^-Es?CH`yFfM^1g{5G%`mg#pvG152iAd}0QW;9J{3L^DyfDXYhg-L@xcf@;| zKdX8FoC@GMbpE;0tDAU#SXe|@xsLLukLa10sfeY@V%aKIn7CeDsFXytGB>}(#FDUP sOV)>Y78jYAKE%z?FH{+SXvzh~bLA`ZC7+vKsD2P~rP{S(d780*0rIPoSpWb4 literal 0 HcmV?d00001 diff --git a/objs/lexer/tokenizer.o b/objs/lexer/tokenizer.o new file mode 100644 index 0000000000000000000000000000000000000000..d8eea7b2859c79139300c74af450e1b1a5995302 GIT binary patch literal 2076 zcmb7F&1(}u6rX5Y*N?hU6ciPM2cq&*W#TEv%DAI_RGNzlY4aOvHHdw?$aE%xi zp`Zs3o&_)BQ9M+%O2A9~6M88mP$3r~h+n@qGn;N>BlyVMx9{us-n^OFEPwy{Ya3&+ ztqc!vAK2J}M*<8w2!2G49(0ltKqo1Oq}GASh_%Xu@SHi1A`}TRIeu+2)Yj!{hyzKv zmj@WzMeaUUArX=gcFA+I`5W5MjThn|UD9B`e$hgg=@@}mxK&Kso+#(9!y}mv2dnpp8i_= z9gTaDPJD>k=Kg#eE` zmZbY*Y;<@0;g<7*;rEW>#=vtwRh;f~)3_Ys62DZO?swC;r-Y~Dbl-o)En{5|ShT7LqGgJI<$u^ej(5E?(oUzqBn%`I-3OB%&U;Af;r=DH4k5|IQ?;PerVwq{Ns|xl*y&uZU^DgyOL~^{ literal 0 HcmV?d00001 diff --git a/objs/minishell.o b/objs/minishell.o new file mode 100644 index 0000000000000000000000000000000000000000..6a0d20dc2e031313b7abb2bae4f6e60084dab0b8 GIT binary patch literal 956 zcmb7CF-s$15S^$O<5QQZO zmi`P&|ACcUo6Kd?c;O%>Fc4l_?_WOT-`#4CH>L)ya0pL_b4nRx* z-^ITXP0cs8Cia*~0+}np>^n6-(ve@8Ut4+cv8t+&d9uq%Uo;2iUtA;1T-+&@?V`_t z_s8`%m=}L0-`CXSlna<6yR^W%D%49bJKMZju}e;rV}8Bgv6lW&F6%tCG)%M|YvHfJ zIMDr8<|Cy63Hhkx?;wW2Wh}J_Mn4sRWJs?-&hfpmYQihCcauAte~{L&-Zo)yXTsH% zX#_2ESifjVzEN*?*)%j^8cP=@%#Xj$?zJhi{{i*amz_>0QLJ6p=Sa)E=g|MCNBx|p zF_o#^WlGhusqDz$&=IPpkpBW043dcN0p&ks5Blat)7tk73~kw99HF%U#t~Y1FwV*P z2F5sR28@NRNign_1(JL^2hKpmAu?e}`jS4=<3IO!{T{MW%z~2r(>IWz8uDz7xISb-UV?sKrHfa8I8Azde4I literal 0 HcmV?d00001 diff --git a/objs/parser/parser.o b/objs/parser/parser.o new file mode 100644 index 0000000000000000000000000000000000000000..09b55135c73b78758a7e6d8dabba74536bae5f55 GIT binary patch literal 1660 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 Z6!Hcbl*mJif;s3DkT5_ literal 0 HcmV?d00001 diff --git a/objs/redirect/heredoc_parser.o b/objs/redirect/heredoc_parser.o new file mode 100644 index 0000000000000000000000000000000000000000..b67bcc70ab29394435a2857110a6e7dc4d730747 GIT binary patch literal 2824 zcmb7GU1%d!6uwz&H`TTiW!J4guoe2S502D7tgGv$*pd5Spq7nPu};Hux(T#NOf%gg z1Parx9mh)X2YvKO-KSjyp(|3e+p^miv4YULAO?w$K$R-{P^-K3J9F zd(Qptx#yfalkazazkQgoz#R+^^d|J+Av`+K(e6i|BgFwN)GQPyXbqY#gOgDwK5Dw2 zHK(#-EaWrV;F+rIkKUFGh>wOnLB<{?WfPkw@SCn16WL56c~(y7`d&Vt2g|*7QTi!G zCf)T#_-CZX(=j8fTgh{YXVeC#Zw}(>K&A2|AiH(~= zS?^!BTvQNhHi%#mpWp6gEbfm9A4l&%_fnzU#hTHn(WW#XhaU=X5Yv}{SkL;=sgdi{ zX)SFlR$}l!T9iA#aeFh&o!mBetSu+H$>&dvgSJF0+|df$&J~z4Gf1MF+v2WO;I6iX z6&u{Sjzw$2)P?L?Yuvf&$@Vr=W>3mRzC{6qt5S%p@@K9nv&V!m+3;0ztEK6Ftm{xZKu$BPS937u*#ilUsL9)6tBT+H+R$HcC`&B_oIlf2$&1e zwXjTtmkj5hT1B0BEQo7fFuA!Bghe6PEB!;u)rgHQ$ar=8`KEv>ZJ{kM9VwTgfu= z)i}%23+#k~KwyIu*PvGy_Dc8AvY(@d`#BNpp%waE)@$bjeGWseZXp)F2OE#&xf=m- zw7`vfm8B=|v2U|EZC#mp8Ubsd?DUi(Iph%djTVv4may{CweXy^{*Jc(ML?OQi&B1~ znhxK(QAWr~H)LN8IH7WaO3KSG<<=_6U{`kQQ7y;SrwbVt3VLAxx1QsOcwd+L?$ zn~1+Co4w_LYqxHu2w{X9IaUX$vZxs7W)Y6%I)9*@FObjK!-o~ClCAuKl0pJ zuNI>V*|ioce$eTg5gC-|^PTki>LO=E`%-}STJ+}#^HS&%ntl2$ITIIl`}D)|ZQgdk z`m}smA3H#QMD8DWYk&o&LV-~0;ot&n$@PcOFYO>uXwrYidfP+i553Ulf2PQ;51s!b z?BqEb+Ks`k|6gGz&(qNEL)d*H?c}){+I<7N>05$No^PMsWRv%eQO^SLJyHKaJW$W- zFF=wnOZg%Yp*;FN5NA_Q0`XIi;z9QBL5WY7>Hx{^Sv+X|5g_rj0)xOCh#fwW>UTg? zocb-0?7x!oXF#&IfwcY&p;yB|{M27@Cfes`Ag#LqL{mS&16N&jfy8eCiHG7y_zJKU z_@a~_1hzrG4@f-IK=3yYOAJfwlnC(j^o?$ZVV)+?PNS3T*Wt%f9tJ73^XR1a>kNA` z1+w2#7}SXD^*VXFPX4@3K2ayXTqhHEEkC^pYvsv0nc`KeXZmPX$3L{B5z8|DTqcn< zNo0E5%$Or7Lr=#t6DDL~He#jyVbU1K*f)FAGAFW$RMOXunHZYMNqxeMWsJC_X1Xz! onlPE3F=HcRi6lm&852*RCS#_@Vn)q`IhBqjM?BU^E=U=JT(gn_(dW zdjx*qLHH|LMBuPv@M(&7u^1J?zA(p+(NmD~wot0pue0{wUo`tII;Gjc>H9j$7+^(&@_eG#fRW z$NgsX06L$DbgKpzqjZgQpniM&_=evN*s{Lr#+W09InJ6V8^jm?J`c|73<_A(wt$tr zxB{PZJiaXg)rr8wfv~ZJ8k&dRNa8mx2aKOD#MSYMCnGasm`oe-X5p*MV;z6x z<-jX$di_|>5br!rJ19hS3W!fKdIE@VFG_C#&y0S8Ho_c`cu64f?gEK7!~2IhAL95K zo{eRczHwMIfgjq6FamUZ6gZ9z|6H-uv44)I5u21`vw%IJxI7Tw8i=O{Vxdw6Rj8DU tm9i>1scgxy%Q~0M_owWPV?XGj6pBt>C_7hp=m7L)I-A2fRVm_6?+@!?ISK#( literal 0 HcmV?d00001 diff --git a/objs/signal/signal.o b/objs/signal/signal.o new file mode 100644 index 0000000000000000000000000000000000000000..66ff5dd80389879014dd0975ef85189e57fd29df GIT binary patch literal 1856 zcmah~O-LI-6rNbC*1yf6mX`h~rGJ;SDp+hmu-L#JDil%hBIBBDlEux&?rv%<2$sa+ z8bUqv;JLk6@Zix?4JcK5X^%Y>dJsI+TMJTJ)9>w0bd5?M&V2LD``+6(Z+7G7-@E&@ zj0MgxOc>P|byb+!FkqK3=E!l16-f)bBe2YolhL4jWSrY-#`e}89}Eu<9`f>POgxM7 zQS1(;3*@Y3GX!PhJYw0VX2it?=STCE^V}5vc{-raM7ak$$d^h^C=r{djY-Xja{lD; zffI{z4`#&X3i46P#j^)zJd%=gHNj)1l2pBb%KF?M!?h~%wd0)r5*rvx2$u_;m@i_u z?UCwP4F(xKl=fFqM>BA-hOs3e;@MLSzu^&XPrXRL=l|;=+1Zw}KSt#|9>kcOXR;IC zbEcQG)5`%VcbWDIJ>4j;qqswgHLBDJFS(?nBp1>v?lQYql4hv_SKxVza=w2{e))Z^ zR4U0%|CY1qe3T1AhXFZy4Lgd?rd;Tvkkc~xs>}E9$q%-qS@eU+*^SYWbvH!kFV5)&#qLV2Irt9quh9jeYTEPk zbju&8In+SkBL-8cwxnWAwJByiom36ms%IHnHIt#vuKSUco-yzJA@j7@*Z~h|4 zJrCX2#qalCAjWQ;;%^rb^uEE4#h>@~S>VM03uJ~U)&)~)W_JP z=HRQUz9zZ`GSZ>_Y-Zoni8@cz>Cnvyov8Oj-5cl@gih3bOgD@g(Y{bvU@s7VSFdA2 zZJ`z*ey>8!KwMeNFXTK2z6-1aZUf2x4M_eCU^V!AAijv6w?NAC8rTG!2a@hNun~M% z_`^Vao1uq-hk%rq&PRIsZYkd=kV@+n*d`F*?)L#D2#AnLG_Wq;|CHe5BcooDzkI&~ z;3AaVjC$zjw=4Lw3ZARr6zh+VR`Bi$PUrUPuT^lyO`V%+RI?^@Ws32HVnlV7TUuN* zY{u=lYU2}OT+L`iBbI6_wr$c9E^ir0XnIsc!o#^`E0J*?NsRNDqUnsX8H$IDPvF0a g9b;TGG@Fkpmg<&}GPt2ma$PgP{TbqE#l#{10XIY;hyVZp literal 0 HcmV?d00001 diff --git a/objs/utils/env.o b/objs/utils/env.o new file mode 100644 index 0000000000000000000000000000000000000000..7db67a4fea4f183be125f2190913128bf14e5e9f GIT binary patch literal 2308 zcmah~UuauZ7(bb{&1Sb7WRobOMI8EI_D2w9wvgd29MM3P7588{yWZX`Vfp7xGGirB zNH==96cp4)LG(p@*@MUs8IBIRhk|hrBM*7V!^B)r=!+0WxA^<+IVbIIJN)Q(zw`b7 zcY5;sy?-7|Fcy1^;R754#`obf1q3_|Tp`6HV1*n2FOv^I^N7g^m6{1ra~d_WkRZfa z^W0g@ZBvs90Z=^hy*kd=lOz~pOGGpXVOMKzzH~teqVaT`CzQVUxb~D(l{*q5Ub$GY z?3$>TKFOCBgn0MNNQuL&s%uFJ8;D1uG@4XBJ`_?2CnvJ5Rdl37w7#~AcTL3`sCbHH zs5__6L|+9af#E8Q18f{fKuJk{9(5R?vvJ0L0;RrZfjfcfB-At6sr$e49QXd@t-ll8 zYYwJ(10}an@|Dn+RE;F}>m6>-ZGfK(k^>ARje$hwF{S4L9}K(R zf2idiTI-?YiN(b`F9*Uc?T6cp$~C!~b_4LHB3IUnm;C!JIh>u0cx(~02d zNC;h~$Njg_O)QKd%^=zjOL#PUVSXf}<@n|n8k?G5Q~Ny;_9HJ&LM^D{W4*t{xIMTY zhs$2&<1+oMRqJLKGsF<-_Jx0mz!PcL?6&4iSp`2=8fxL%d3R-JFSdnc&9INGY7V(1WF^`4!d8@iLTYyDmz1Ra2>)4n7y$oDvdjOll(X34`z+Q- z#1fMe@y}sJ+kY0A*rK5hhpIltP9I8K+4t5#JjWrB-5KCHWvA-g(~d4#`o4^(>fO`s zOW5_5ovM46-6Y;k{C}msMt_GuzW~MGk*r9t5SHN&X7x82Iy`2sNHobV^Z>P)={M z0Rs)5;`RRWir4!lQ?l3l`w;vNclKR`{~^ME72%r^{#1m2FTx*-@MeUsNBCzVJQGgo zlBku1<+|3VlB?i%y2eDsEnmP7qHtWd> Ci|8-_ literal 0 HcmV?d00001 diff --git a/objs/utils/error.o b/objs/utils/error.o new file mode 100644 index 0000000000000000000000000000000000000000..fd201f1a21893ce5b5f8559f782849b6a1139112 GIT binary patch literal 2756 zcmb7GU1%It6u$Xw8r$q@4JZg1#flG3jbb4bBB^$D5VwTd1q+sOx;vY!?#?8$Gc*xa zBT0(G7zyZ$^uhX|C@SW`hazIFEo~9B`?wE+`yy;G!ah`3{Qu7VNp>gegNMEI-E+=& z&OP_e*}Hr5_h0|s!&pxr!vmuqW2hGo4FhsF#vA1L4_O}&jt40QqIBeBG$7aLX=cm5S8!&e!8AMbsXXVU|6N(9ikIao z74>D^(wvp`&A>TZaB`;k?6GYpCP}%G3(`0-$QYH{7-CGO?nr5x_NXaTf-E6^UUsh(SV&l0CT>gAnE~fQV<)7$g)!gO;RP$@hOH zV}w5&%Uk0{SZNty&TMWeY1%rb4VGBlPt)tE z7O^)!B_*nKtk6))Re7;}sj4wR$7o!xW6Rf-w~l=Ec)k~SzEu4hPfMrLOAcHKbeAEN><#*^XZx zX6=5aIWT*L>^4F3?D+ucvF<^T+vQ`S;MH`>hE)0Mk=Ir`ero2s0h@f5m zX}WwN_X^nMzf;&*&nqWb&qA^%xo^+VI#~C^ehFmg17Xi$S3#HmG=&KAN?hGa$j9}Ux8PbJh{JJyb|`0TJ<~-ce-u?aii%E z0nwlOK_HHBlrC1X{|E&?rTR@^0{Ar$m!bZdw7&_2=*vKSMi=lPo+I_=r2Yhu;&f?0 z0HnAPsW-)&(0>8KH2S^NZ%DliLZ(8C z;(h=Zx*LeE`ZEQcI7+DZ+Vu}&`tg{4DyH8T)9sl4Nlc%N>2ooCA*M6a_B_`!=kVXk zX8?Bwe`2JO?hj_>eG`AZidk!W{*qg8U;>>74pT_G{h}NK@cKB z7zF3S1CWiK67mnp()5omrUy{?Pe}^`9{3Cag_V0lGCGEUPItC6$|1Sfj6yd zyF2Zqmg&9Lqh@PM>pN?{M(A}UlOc3ymJp&-j$?3%)@ei6JIPM!^W*cid9H>l3&nbz z(u}@jsjFB^aJ#K|O3cE^=uqNIm}3Um0A2&q9q+>PM!n=T_y5{`)&Ht`KO@zDdZ0{v zpk_iysQ%zPDOqM9iE^>2=6GV6?v``BEFTr*C1sAw8Bi=gh=(JXiHE&+K|dZUvyLHd zRj#iViZ3sW#breq8LHYk8gA^{gMRE|pPkNdH9s+NKJR^q9=xw#DPDX|Ly3RxYh-EM zYwsV?xqde>KDJ6$1j{!U@YnXN5WhK;C)CezJ$Q0Y1l=fz&di0cpt1!1JiL8KzsP9B z`a-PEM=z#so}J}=)VBt&y0(#IezI>Fns^f{i$J`Km5}o<=qLUo;~U1uj7`SdzykW{ zeOetL>6C$xvf~ggBQGNG_g>^2VC^zil*dMKKA)e+g|26M`(akwPLqz%Stm_3$IVuI RFT;N?O@-b{vc!eh{}-@E!0rG5 literal 0 HcmV?d00001 diff --git a/objs/utils/list.o b/objs/utils/list.o new file mode 100644 index 0000000000000000000000000000000000000000..1d4c29aa9f61ff612cf35137f60a6007f68f6488 GIT binary patch literal 1460 zcmaJ>L2DCH5PqpK4cfX96{-lyL9jy8gQp4#DRyB61ELl55MH*)rU|A=NVYZ<0+mGR z5(EVg{se!5Ck;gC(I4O?7a;+K9C8RA8ozlv8xw6Dm^U-;`{sM|Hn08q>*w*j5WZ6a z3)~M6&S8nbVVB{D1kAAa#Dy($^lE4da?&G{(zdF$o4fU<{$%q{?PX8-EYhRi78a%9 z7Y81PqLitMUCtG@c~i=1Jx}K}<1grf6UO6?cc53?DVZr-?iTiPg|w9SH^v~6B+qrg zn}^UN$&NRl5L1#;T3MMXn>&`<@b`Qj*89kMLFi15cvgrkLn_?Fx&&8k+8GgmlhL8H zFL2QSLK2ZaEBeI)_@vm+I+MtHw2Kh1{xdG~;OU^{#tp zbIm)w3pU|h!&wg^M;-5ji<2XXc4k!zH_#;9^PL)Pn>4N95UqRGBh|va&UNO}zDqu)etqLr3f5IaKzzjI2sviH1 zstSwD*fL+S3)Y^O=FN&NWT{--#=i$?mCMDlw5mDmxl}WqmRn}(nO9eG`y%Z8q$VCVqOuyMTFG(9p2j+eA&3td(?0b8DcXK~al$awd@D%(9 z2YEPb8UCF4KkP(mmx7j~C$V#1Hm!Xx@J(!Zsrarm;WoOJfcx<*0UA8uT#AkutZ7}{ z-#e&Oef_E4d|%(z`t?g&V;l-82>wi(Sx(RoA)A09T6?>Cr%~DSEdO&pdk4FwObUJM zw{dEL$d+QoGpspyd@asHO2gUsP|kms{a3)J;Mh-Z;M2xhcDdT=(tqPkxBbfvua(NkPp6_F(*rkKSkpe6@G!_hzc?-jxk=6H z!mcWJoK=!}@_)~>G2TsXyEwq81N3}ivI93NWRUK;QEOm(_gL4z7>!2pcbq|r`ND3# z+=)Z8d^0d}b;qKSXP&7qNj-7+mJ)$Vs7LdeW2pFzR^X@iI2b1ViC$#Y*W|`xTK2Jy ze?(W{h|f9tH;FNsRZ%v5y#7OwvhfAPSS22E`+>EY~i( zaxU>$`r=rC)$BuFK=Ej5J|@HqE^G>Ikt$MKLqevPhOG;xBQTlEy;NY_4%gA;Ga>$+2)|idTqDDB@5z8;dYMhr8#1c%%?Gu`C#1hM z@Ym+UG0M#?4bq<|8Xu|lYLwL4Al(a*I-;a_qc~rMNZ^RtzK@qUM74YZwS9__SM0>0 z%AqJ+^|_FVV)~``%JKESt?g|F`ug((s<-t^w85vuZm$E+QhGzB ze?1Za7oG#0-#5T%Kft;Q&>snaZ@@D$gSLGG)KT@N^zSMF=;0F)R44L^$XXuG8##vL zf5K8;$H&42$kc0bd0~w3g_&51-j{_<`DMq2xs%>#Y?I4unAM)UxG|k-XEJ$b?_$4& zU_URtQT;ZC%GJK#_HSooGp%h<$osk6JB&sCR+nxi5~+x|j%^!7$DVb@Z71SMCB#5x zFlpciqub~xB}D(|%ONzH9vm7?4~!)Z;m#NBZlfo`lXGg)6PRF2j0}yWlZIW+ms|uK z_rt@yGojfjyI@R%v@;u*Jl#eyU$h0!9eX_Q*f}>yLgk>6>QRPsYRw#u3O*l8S#vXF zsTxwzE?uVyjK&D0+ zKMjpfs)pAe*&jd?Z;kP%j8_>iGcGcoV0@nOFyrSKcQ8K6_z>e?u?g+>Gc@gYlkt~~ zKVtj=<09ic;}OO~jFXHz7&kF~gdSmf{Bvm9?-Ry17*h|){~F_07$+HbFm7c`H;ecW zP(^b literal 0 HcmV?d00001 diff --git a/objs/utils/tree.o b/objs/utils/tree.o new file mode 100644 index 0000000000000000000000000000000000000000..910682cebc822d38d73f52a774999198de8895c8 GIT binary patch literal 1684 zcmbtU&1(};5TDfAhFZ-E7ODu%LBUHTh>8~>!3N&JLMaXOQl9H((*)8cY&RH$LZMZ< zEJ6_v9{mf%n?0#eAxA+x^ys0&1}fyxLy+3~o89+ns>Tl-m^a@uzn!^e!36JLrQBP%2sfd#rUl1e9g36SzowUUMNU;d;Bm6 z#ZU#y%6S9*_|czXfNFiDrIdC_79DfmjtYLnx301`RKE??PnmRrsHAn4SHPp-@G25R zGyrDeHtc@`9K7!|mQ{d6JxzkUiE%QkE9(yZQO^tSlUUhF3U8_7)puVrj#p_M0hbCd z7l@UmfD#Xe*?e^K0}{fJpW7AwMBrsdAv(g(2f`a-k7#D&VQr)vkze_FFgr94Rl|~$?r?u&4;(*w0eLOfg5dKozuWxJI zTgVT9XG?h5By`vln3#>DF+ZfA+XJHX>}K(DVr-QMP+}}Y|BcT$iqH60e8ykl3-1ft z>fmPhQ)pesfv3bpL@QA`kH;3^_nOgWu%+N-w5}j{&PsSMcg@8T??6*6Qo`3#`&cSJ zJ?;@VR7J1&3l*Q~QGX`#Q|$f}#TrJ;7#@tTqvitq=fRU-0U4xmQ1+DZu)kfVnp2&_ ze@)tsQ+1@>D7z$G$F`+eC`hL~SL(Jac2S#F#Wo$4YB{#)+7g~3;V)_1I9+L(l}gnj F`UZ$8M +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/12 18:35:23 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 13:32:33 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 17:47:28 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/execute/child.c b/srcs/execute/child.c index 259936e..516826e 100644 --- a/srcs/execute/child.c +++ b/srcs/execute/child.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:36:58 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 16:40:49 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 18:38:44 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/init/init.c b/srcs/init/init.c index 35fc6c6..a388442 100644 --- a/srcs/init/init.c +++ b/srcs/init/init.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:52 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 13:30:40 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 18:31:07 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/utils/env.c b/srcs/utils/env.c index 2659c86..cddd0e2 100644 --- a/srcs/utils/env.c +++ b/srcs/utils/env.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 06:38:21 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 15:36:02 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 18:38:38 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -90,7 +90,7 @@ char **env_to_array(t_data *data) int cnt; cnt = ft_lstsize(data->envs); - array = (char **)ft_calloc(cnt, sizeof(char *)); + array = (char **)ft_calloc(cnt + 1, sizeof(char *)); if (!array) program_error_exit("bash"); i = -1; From 81140e134a8bd83532479bbd5f695b4be4064e6a Mon Sep 17 00:00:00 2001 From: eunwoo Date: Thu, 17 Aug 2023 18:42:08 +0900 Subject: [PATCH 48/57] . --- minishell | Bin 91112 -> 0 bytes objs/Libft/ft_calloc.o | Bin 776 -> 0 bytes objs/Libft/ft_isalnum.o | Bin 760 -> 0 bytes objs/Libft/ft_isalpha.o | Bin 680 -> 0 bytes objs/Libft/ft_isdigit.o | Bin 664 -> 0 bytes objs/Libft/ft_itoa.o | Bin 1276 -> 0 bytes objs/Libft/ft_memset.o | Bin 700 -> 0 bytes objs/Libft/ft_putendl_fd.o | Bin 876 -> 0 bytes objs/Libft/ft_split.o | Bin 1776 -> 0 bytes objs/Libft/ft_strdup.o | Bin 972 -> 0 bytes objs/Libft/ft_strjoin.o | Bin 1072 -> 0 bytes objs/Libft/ft_strlcat.o | Bin 888 -> 0 bytes objs/Libft/ft_strlcpy.o | Bin 840 -> 0 bytes objs/Libft/ft_strlen.o | Bin 700 -> 0 bytes objs/Libft/ft_strncat.o | Bin 1112 -> 0 bytes objs/Libft/ft_strncmp.o | Bin 824 -> 0 bytes objs/Libft/ft_substr.o | Bin 1192 -> 0 bytes objs/builtin/builtin.o | Bin 1824 -> 0 bytes objs/builtin/ft_add_env_front.o | Bin 1540 -> 0 bytes objs/builtin/ft_atolong.o | Bin 1716 -> 0 bytes objs/builtin/ft_cd.o | Bin 2728 -> 0 bytes objs/builtin/ft_cnt_args.o | Bin 672 -> 0 bytes objs/builtin/ft_echo.o | Bin 1548 -> 0 bytes objs/builtin/ft_env.o | Bin 1056 -> 0 bytes objs/builtin/ft_exit.o | Bin 2528 -> 0 bytes objs/builtin/ft_export.o | Bin 1976 -> 0 bytes objs/builtin/ft_export_check.o | Bin 2404 -> 0 bytes objs/builtin/ft_export_print.o | Bin 2672 -> 0 bytes objs/builtin/ft_join_cmd.o | Bin 2292 -> 0 bytes objs/builtin/ft_pwd.o | Bin 1088 -> 0 bytes objs/builtin/ft_unset.o | Bin 1136 -> 0 bytes objs/builtin/ft_update_env_cd.o | Bin 1256 -> 0 bytes objs/builtin/ft_update_env_export.o | Bin 2612 -> 0 bytes objs/execute/child.o | Bin 2448 -> 0 bytes objs/execute/execve.o | Bin 2400 -> 0 bytes objs/execute/execve_utils.o | Bin 1776 -> 0 bytes objs/execute/file.o | Bin 1068 -> 0 bytes objs/execute/parent.o | Bin 1168 -> 0 bytes objs/execute/path.o | Bin 2484 -> 0 bytes objs/execute/pipe.o | Bin 1984 -> 0 bytes objs/init/init.o | Bin 1748 -> 0 bytes objs/input/get_input.o | Bin 1680 -> 0 bytes objs/lexer/expand.o | Bin 2052 -> 0 bytes objs/lexer/expand_check.o | Bin 2724 -> 0 bytes objs/lexer/lexer.o | Bin 2516 -> 0 bytes objs/lexer/lexer_utils.o | Bin 1228 -> 0 bytes objs/lexer/quote.o | Bin 2620 -> 0 bytes objs/lexer/tokenizer.o | Bin 2076 -> 0 bytes objs/minishell.o | Bin 956 -> 0 bytes objs/parser/parser.o | Bin 1660 -> 0 bytes objs/parser/syntax.o | Bin 2800 -> 0 bytes objs/redirect/heredoc.o | Bin 2520 -> 0 bytes objs/redirect/heredoc_parser.o | Bin 2824 -> 0 bytes objs/redirect/redirect.o | Bin 1616 -> 0 bytes objs/signal/signal.o | Bin 1856 -> 0 bytes objs/utils/env.o | Bin 2308 -> 0 bytes objs/utils/error.o | Bin 2756 -> 0 bytes objs/utils/free.o | Bin 1180 -> 0 bytes objs/utils/list.o | Bin 1460 -> 0 bytes objs/utils/list_clear.o | Bin 1028 -> 0 bytes objs/utils/temp.o | Bin 3032 -> 0 bytes objs/utils/tree.o | Bin 1684 -> 0 bytes 62 files changed, 0 insertions(+), 0 deletions(-) delete mode 100755 minishell delete mode 100644 objs/Libft/ft_calloc.o delete mode 100644 objs/Libft/ft_isalnum.o delete mode 100644 objs/Libft/ft_isalpha.o delete mode 100644 objs/Libft/ft_isdigit.o delete mode 100644 objs/Libft/ft_itoa.o delete mode 100644 objs/Libft/ft_memset.o delete mode 100644 objs/Libft/ft_putendl_fd.o delete mode 100644 objs/Libft/ft_split.o delete mode 100644 objs/Libft/ft_strdup.o delete mode 100644 objs/Libft/ft_strjoin.o delete mode 100644 objs/Libft/ft_strlcat.o delete mode 100644 objs/Libft/ft_strlcpy.o delete mode 100644 objs/Libft/ft_strlen.o delete mode 100644 objs/Libft/ft_strncat.o delete mode 100644 objs/Libft/ft_strncmp.o delete mode 100644 objs/Libft/ft_substr.o delete mode 100644 objs/builtin/builtin.o delete mode 100644 objs/builtin/ft_add_env_front.o delete mode 100644 objs/builtin/ft_atolong.o delete mode 100644 objs/builtin/ft_cd.o delete mode 100644 objs/builtin/ft_cnt_args.o delete mode 100644 objs/builtin/ft_echo.o delete mode 100644 objs/builtin/ft_env.o delete mode 100644 objs/builtin/ft_exit.o delete mode 100644 objs/builtin/ft_export.o delete mode 100644 objs/builtin/ft_export_check.o delete mode 100644 objs/builtin/ft_export_print.o delete mode 100644 objs/builtin/ft_join_cmd.o delete mode 100644 objs/builtin/ft_pwd.o delete mode 100644 objs/builtin/ft_unset.o delete mode 100644 objs/builtin/ft_update_env_cd.o delete mode 100644 objs/builtin/ft_update_env_export.o delete mode 100644 objs/execute/child.o delete mode 100644 objs/execute/execve.o delete mode 100644 objs/execute/execve_utils.o delete mode 100644 objs/execute/file.o delete mode 100644 objs/execute/parent.o delete mode 100644 objs/execute/path.o delete mode 100644 objs/execute/pipe.o delete mode 100644 objs/init/init.o delete mode 100644 objs/input/get_input.o delete mode 100644 objs/lexer/expand.o delete mode 100644 objs/lexer/expand_check.o delete mode 100644 objs/lexer/lexer.o delete mode 100644 objs/lexer/lexer_utils.o delete mode 100644 objs/lexer/quote.o delete mode 100644 objs/lexer/tokenizer.o delete mode 100644 objs/minishell.o delete mode 100644 objs/parser/parser.o delete mode 100644 objs/parser/syntax.o delete mode 100644 objs/redirect/heredoc.o delete mode 100644 objs/redirect/heredoc_parser.o delete mode 100644 objs/redirect/redirect.o delete mode 100644 objs/signal/signal.o delete mode 100644 objs/utils/env.o delete mode 100644 objs/utils/error.o delete mode 100644 objs/utils/free.o delete mode 100644 objs/utils/list.o delete mode 100644 objs/utils/list_clear.o delete mode 100644 objs/utils/temp.o delete mode 100644 objs/utils/tree.o diff --git a/minishell b/minishell deleted file mode 100755 index 868fb49918b855e370be55ee27ef523b3ace49ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91112 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 diff --git a/objs/Libft/ft_calloc.o b/objs/Libft/ft_calloc.o deleted file mode 100644 index 8b630e61f0b50b71f097b3c7bb455805383d8d2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 776 zcmb7BF-yZh6n?4FingYMgMwlP*A6;4DjK-Kf=Gofa)y{tp=m`^EJC4B6hjw(g8x9r z&MMT+)iH|@LBUCigZf_Xjz+=3k9_yu_wL?zFUiBl>t_Z)8v$I9qsSg51`;uYTqgYo z?q&T^o>3Y-fk?gt&V8rpi(KfESuPE=%3PU{AI)-^0>Fnvn}P!8cHKL$Y@au3$NRNC z&NtT89>t0jhKws{LbF_Bl%vMBavSG!D%?G^JV#VG|2f~e@{w^@`lu?A%g^fc$Uq>#7>XDJis* zEzp{IEuYPdUErw&tj{9LUjpjC!|G)IEVY(P%Rc%hc)T!&5x+x$%Ba)it0!)wG$A4T YO9OX(?m6C(;{*4sYPD|1C0nHM4T&sd0{{R3 diff --git a/objs/Libft/ft_isalnum.o b/objs/Libft/ft_isalnum.o deleted file mode 100644 index beb024fb43c977a5ff07b8d7ec035a1071eac39f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 760 zcmb7CJxjw-6uqg^inb<$gMvZ_hb~>592G4@a1g2BB9G7y6RnmF<;GA^&_iMi!w@$&gaR-6=75QiKQtbJJ!rgz$_4+ zrB6~C;NU|!e=YS--~v4AhciQl!LNju#Rk_Y;0rB26=5w9{?UT83t1GZUBCwTS#Y;C)9C-!H9B z8|SIDTw3b#V0>p$2cxXWX>d9R))S}k|Cq3$PI^*xUpdEBXW#KfTL*5lG1Q)Iaqk~* Cq*RFj diff --git a/objs/Libft/ft_isalpha.o b/objs/Libft/ft_isalpha.o deleted file mode 100644 index da20b0195bfc3228a1611cc01e4a7ae55c359431..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SOFEk0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7kxfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw$ z%29yPOc1v;0BNXGfh+`wk5A2rPb*5yO@)ZX$D_J01FF;kMnlbmav8W87+^}kLPkJR z0*JwO@pCb-0Wk=GECq>oK;1C|NDBb@K>Z8>K#UAPdZBJb7AA@v>e2bMv-U@G?GH!( z9+1^QRuq4q2!xf$-y;TLRq^-p09nUf|A1_I35qfx8%Q#AyZ(ti3}S!*G+r>A12PZ< z7^{L97%K!A1$fvwCID5b0L5g0xZ*zqz~Ys`kx!tF$(ff8qzMXu%Gp2$^CO!cpH>o| NS)7+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z4ETG*fLeeoOa6WyAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag<#WTt0=Qwad2 CK0yZn diff --git a/objs/Libft/ft_itoa.o b/objs/Libft/ft_itoa.o deleted file mode 100644 index f99951707e6d3e44c5bc413fec64ca3decbb3f38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1276 zcma)5&ubGw6rR-B2CYfJ7Agn^^dLy2h!+onu^AYl0g)=blp$`@bfHa3y1^g>8d4?8 z67bqT!JByVBE?GETTk9|5jGHE4*^pNjo+J{jfq9@k@x2P_}=&444ac*KhCBY3teC^ z&@ePI0h542u0b1A_=n6B7IIskK@3htN_-?zTDgkl`+mH{mzVy;fmhSBh>v=gVH8K0 z?F1M)r8Ks!l3B>>q?F@)0nbHUe@_=25xwp(1HR(sR@Sg&x$w#?tV+3<9v0yQZ}3Pb zKY))YD_Bl*jZsROTbFC4>}Jky_^ z-@qRDv16F~IML6ZLP@A6P{NNbN`U{6=feIj>YapL?F)nVh0R^zR9%-^ZQgZwx4s_| zM(;BXQdvM+qF!yW*qdqOMDyVT)KrPkZph|6)ZL)&@YW%lZ{H-WN;j{PtI|nfa(4is zxoxDGGCpp1!N<8`?-Mg!*E2674@%)m4n!g9WXI{5v*+qF z8XbE5jD;%kP<(nS@(!q5$X|!fozbp?f#zo{6^*~0ShzB&`v{kYdK#zaoWnf<2A_12 zu=w6)@A_wwzEwyv0fVuMmQH%ID4gI%ci_e-){?+E5-NW*W^$`k%;WzibEQ(TBy$zh aV$vvBa@EX}yJkrvyRlI;lxteWEc*>BSM#X= diff --git a/objs/Libft/ft_memset.o b/objs/Libft/ft_memset.o deleted file mode 100644 index a58395d4b75244653f309add6ecc5517919e15df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 700 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%H~)KfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zA1; z%29yQ7EBPg%mC6*rvh0B5FekK5ua9+n41a_i;qWjUjtOB1C)+{ng``Fa5FGuz}O(# z2#6(s7;G0m7Xup*g8;}IX`og2z^@m5N>w|9JFCD)3fxH(Uod-P{5B>)Nk51ng9?d@(_*-OvMt8XarF|cG zbe{5PJOr{GsQp0)ej!|B`_%H;6XZ6-|Wtk3N`S}%r`spy?IZcKHtBhM4=Ia14e;Z7%m0C=7A=E_`@Eh zzQi-IfJ2iQtjDIcWz;M`_jxXx&;9ZsGbCX>p8b#ravAh+)cWwus+P?oDQZ2a7wE`Z z)Cv;mAEK;xa(sGlXldI#FPjCeH#el!3nd{biERk*nX$3wBcxT1ODFU$ZpOIHqHtJo9x5hB=nuc@hUFF(6iG1frAT9zT>i4gikGBFY#mVgku>v?sK%J_gsMEbIgR}TF2vC;8U%vyu3q z5D&YygIILR4H*eWQIC#pgP$zDtE3Q-s2EE0k4D@Ld-=`D>@Tw3s;nnnc8sy8wd?4|WE&4;K5`BPa>+B=z2}YA zuBv&XvPu<9tz>DX?3}{&YMxj)C^xkN&!!7ZooWQer*E%;ffLH6OF)S?(1M3@D^%d7 zQalHIQM2)6Xj9;pfmY!PpAOk>VT%fX4fM_rT~=EsDUa>sXBz9<+qG)u22&^Lrg2L{ z9pA0cx;k}A`n-;Y0;bjCB?n4ZEp1)RyN#T4**KS}**GBhRk^;zm1S;*s>KgmTU(Z9 zyG&&NHkuDN4LcVuBMIEK!XgSg-ED`8AstY`smdM8+idJ@Hg@rWla;nHu0f zF}vG=U#@OwlDSvU>Lk6m^Ihk&8hs(=b8B05#|^kq-7Qzwn3vw#yTS(=6qS!5AUm7F zq3h|9WcD_B-FLRUw4r~#Bh{HzK36>rX_RQw`ogb(CqVM8`~%7XV)9YRPwSoz!7@1d z={?YG(ksYzC;!u5G2x|YUlmQ*x;0VjHkLjUF5H+17!p|%o}CEWQf%6-nDU>;r1o`Y z>R%~p#U^S%=C1Qc+7!Kuq1iFvxoMvkKmPpWZ1-$|NdK#Rr^g;?l-d74nPwqV7#kk> zhFdR?e+JC{NzJ|sntNFIGVo?Rr+p3>yDTk&v7gd>8b6){L#8wV#%fC-iF41vc{tWy z!|4hWzdKePd!5Gn?h~&Ej2B&T>wCm?zqWz5!=CTgeD<2;_oOdVh<>1%%<542(3}Jy~ zV7U=2MHp}i*5Srq@IZRg%mI=dn#9I>46OsV8N_j%FWJjWr+E_nkbw1=+reOGxt5_V zb_uk0HUqy}UzLK^!+MF%fQvm-{DCRRxF;3pdFvY$C(w=hlWP5u){D1JnjFY?7Ns~1 zJ(hffMOs6WTDxm{#jmWpG2zeoibA>}dP?*prSn8>_MH%b%kxjKPO;{Vn+X zdqwbb@Zi&JSQ^Y_!Q@gF`8>=AbDPtc>Qa)7Hp4#5ybCfxF z$3AWuyQ|u*F6Ez(aqs2)>!h`BhX|o$M_Y50e|Ak0WlojK(M|yyy1R|g{A}-ArWGpZ zOJ^c?^r_$P9|^yg=3}fBzxOXbD=ViQe$M203=H~l_Wp;5mCd0$;6vnH@n;QTLNe>= z9kQAQt1vd2dxc$BQJ;dnKgO6q@-FG-g~E%Gh4HNLmf>+PrMvLB)5&>w&`Ve1yfi5u zj_X;@^QkFj;ySknxQsQ`9>nRK^oH-P;(cn@_dQ>`&1yh;CD8a+J@%^gB(Aw}=u~Po H&msB^D6y^p diff --git a/objs/Libft/ft_strlcat.o b/objs/Libft/ft_strlcat.o deleted file mode 100644 index 1a44b8f2d409487dbcfa82492673fcda67ba14d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 888 zcma)5ze^)Q6rS}*6i?k1EEFs(J5G3iWsMT#^B8&F6YER5gF&S)$IKlt{&_q}=FyujrC>G8RPF{_o~1Ga$| zlnjHwAUH|&2bj^le>$2Po{UJo1S#G0o*U+2J;&$g-fELQ>V*7gmr)qBkk-b2QZSG* zwXwdLOu2F=v%8vEl5+Zo=~1leVpzulOlX%$eDtafTiwQf=@q%Wm0VAUij?p7bM#P5 z4+PrJ%zt5Q#pDzxzyYu^W_Pg&NT5qekLlmFh)6Z&*$mhWnl)_JKa(ef`Y*hPm{12* zp>_hH5@q2ZR0A3oiWgA?rYHy>!W1vtzx$}|^MYvQWgM$j{)R#k0*pW(jWHaL(rSvA z#;=4Q5A4f6?}=r3-ahPy?(>q$dAYiZm%JLY|6FGi`4gT$x9p>Kv@6lj6>H_huN*lE z6%S4vxZ{>4t(tWzXZ3oW8h4G=Xp;i12B{{z+t|Vl#troQA;)*1r3lvkEVK3;%jxdu zJjJOIXhUG}8J7U&{jqPo&T-54o(K&AUqKv?(*J=XX^0V!+4RxqL2N4V@Rwb=?QX55 KlJ0As&af9Gnwnhz diff --git a/objs/Libft/ft_strlcpy.o b/objs/Libft/ft_strlcpy.o deleted file mode 100644 index 98c68f0743316b5bc1f76fa4c587c67bf9078b5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 840 zcma)4Jxjw-6uqh17QYg~LBXMegNsm|1Q$gEZ?GUz!9^aWRur^~ruYFxr7EUfT*TGU zpWr0*195ZIv5Sy`f@5*8o}0YbI0#-ix%ZrR-?=v-PoM8!5hAUL@Bo^DD=uOHq8Aup z{znX`vlo?p4o_mRFNc&?X4~>=k0;H!WP|(Ftt!}$cVPq9x|#OXk(;DUudS}9(w59+ zx0bUDQcg_<&mR?useBRgc8U6aL{J(bWoAh(ZlqQ-o+jn*{T$UgrgB;NDN1cbOMcCH z80Z1q-St)q0~|b*bpv~F9Yi?-{h5afDZ*gJgKZKogggsjkrM%<5 zhp^2TQOH+FKk9&)D1q8$t-1$NW%r@7C?y>Ix~uR>C+4$$$m{V9O+PO~D4Nfgnts&6 z{iA$TGBM#s9Nh4}!cI6v0~#g=w2u?kDx#&1z`RQJj0?0qG3iNbw+{tiZgxb>DQ{*rY(D|W) XzfXYTM_#n#rnRw>Uf=ntGg(}!*iUF| z3>q9;gXZ8l1dh^>eaCm78WHrtchC2od+xd4%jd^eoXD6W9AFfD6p;pjB`_oY4?OAq ztDXrxc9Kx`3Ya~&<^?+NSv!{<`%pPr$Uez3LX;XK4Z&PEDWB#G9-mh(jw*-D+gp?O zjy7psGm#+69jcBBH3qX=;$k&lc7q=C&wLF%x~^+Z@6(oMiAtfCx(Y6W!@tZKih%<8 zRQmTi#{+5-9`9)voP@m9Str~7()+6Qu3Gh;>e#+KP|bRe%SvQf*R4nwU7>`K=Q;rZ^^!UuH9=jF#27dWeJ^%m! diff --git a/objs/Libft/ft_strncat.o b/objs/Libft/ft_strncat.o deleted file mode 100644 index 2318428921b28eff1eba07002006d7a98fc9dcc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1112 zcmb7DL2DC16rOEsy4cpuA%zMaDtJ&Z5cDEcp`rtGP!MS$7a8KZZ3F2hY<4jSfx@bE z4F!+-FT8q@f?|pV-9rvJ_7EWfg&c#2#_#RUrrUxCAH03<%{Slo-tNr)`1AXCmN9Lb z;Q^n4>r;3v!(kWUy9E5hY6`nb99U9AlaZ4inUt>8aN|6#*LZR5q)xKAlpb;4VX$)q z&afQ{iAibJU8ihsss$-e>m@o77kh5f3#LqsJ6VBVb-PwFUFq4+%l0!VAKagSNV00K zWwm$=8U|#3iTi`oFd=f}g_wRS-dQC<3n^toMZ995Ul2bwb)_#;XNN z+k8aggF`A>&0(J^VLt2$?I7SsEq>(hYr-6TqETWn;9V$mp)gN-_wKw;pf>Lyg$^G= zqO)^bN5?Cvl{YyZV3)w%oZj*}{#PyVI)iWH@p#g`%|lXY@oTj`& zX1@gga13o&a!=Xa3)$CG_ZBjW_Yo1>^L0d=SKda%SuYmjm|sD}k>?R;UuF@}NKJ7) zUMDy*x<4tHT|QG2md2T^In_@vCGO8j-US(@Y(%f_-}SrKTKDwV29 G4gUhX9Y5Z#L!#jm@{s&93 z5KGZQut?6zlxYN02$m`#@l9?niHP99%e;9zGy67N?(41GDumG_@B=ghH$*}Jq7N9O z`j7C>^4#Os*eM9KmqKehnzTLc)r)dzv0nS^nF;M9FSTeE2Q?0&bz~#Hxe~GUPGWaG zv8wgVbmMuRixB6_fak@6A+`#o9$H6ZdTnbZ9`!V>fBO62)(Oro@8eQ*2odu+du^2e#ly;ZQO^Fma&}&o6E3KX1ebYa)Y2Wf zRhij>avs&;T?J9?Ir}V%v~5} zx&;lzx%#NrY>hveDS9z4WOeAtnJpCuSywIePWI>4Dz_MhwFguq~0 J5s7b7&o}l;ioyT@ diff --git a/objs/Libft/ft_substr.o b/objs/Libft/ft_substr.o deleted file mode 100644 index ca036a4033848a9a967e5fea655e093d382688ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1192 zcmZ`&&ubGw6rQd95j1sku%Mt2!9zg;(Ss;fi0Hx;8VK5;7a7u+Hi0$?+YJV#pv0C; zgV>AUKOpFTAP7yW(o_#NC&@7vApr%29HNJ&-^{gxNKIkW)B|y1a57TjBN4(%&1Qiw!SESj;EgxxSa-Ujb+?BYO`x4pv@O4L?GKmxTpAUptJ3Q_XBT!#;kNwBwHlXI zyFePXmd9bC06sP|YJ7~&gSu_9PH}@5)*4J-_Y(Hv#=AaLHR|vg;2P7PKY`n0x>Uhv zb$&hEEE;9KK)(~@_89uM*H`$x#Rs@KKXE+ZXvQv^f(* zdxMv9^;!9Q_F08yo0CR8RGbO6UUs`(XMWU#>${^K+73g1jy(9Z5L->6yf5k=6UBg> zQjzxf4%6~J&F7u)(4D$~{8?z^0Q*3kcff9*^lgmXn(VzL;1wwDLEr-{?$Fd5ShNT7 zb{x2;?0IEj2p^w<)!{gD5soWl{-KyKH_k-X%q-zuh=gfoOp(Z^EG8B$v6@@JgSK7E QTu!8WZalWUoQZ?u5DAag=>Px# diff --git a/objs/builtin/builtin.o b/objs/builtin/builtin.o deleted file mode 100644 index 189e89f290f924ceba8b176131909d6cd1985ac2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1824 zcma)7&ubG=5S}z?8*O!0w9Hvk_tuIG;T;U6`;vQFIsb?xYZxhW-Yz zSyTxbaFQ|3ilA{Q0O^^wI3Qjg|U^o zpe$U5{U*-Ao+a1(++VS(D^}&3X;sT>Rt@^_#AVc4<~vyB8kIU3 zelIrfhu8U#K^&`M@?$RJAzPVzoZt%<#f-OQa--lygZUNZm-$g!y0bIz8_bu?#I>|C z`AEUF2JoLRMk04(}OM7&q;4?2!0=dKR`Il+chVdGi6f_Anty;;H$>n<7@VA5%U9VhE z7=Ggw%Joje-=P??P$8w0yA1#MrjYJYQ1zQ%`xMyvaNYm-lDo{~F$u}dcVthJW9Meb zDdjyXEKE|-op(II!pt0udmD*T&heF~pM&(sbwv7UcboVwMULGWrC7;~nZ4b~$KW1- ze-E_(*Y8kNeWJ75%?BOlxA6e5FmDK&*^oTdr-gSCgPb5r_rM}Iy^0=qj`T-ZOh@`P zEZ!ph92TRUc40wH55Oj24T<}Hpcms6Sj79@Df~*|X9_=2cvj&lg)b<4M&Z2*?^HMi zi&o+1vAqh+y|tWHSl{a?a3oATB~i@#DCYZ)VjjsTzSx8hHeo(*lush-2_A&d%DIqR yObl=2#PAOP53W63kW8K`;glR(+$iR6d3iT<^N2AOb0_SaW8c(KkuAD5TGJnzye~ii diff --git a/objs/builtin/ft_add_env_front.o b/objs/builtin/ft_add_env_front.o deleted file mode 100644 index 9b8bb34f6b74ecf9d618bfabe1ab551bce6ca743..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1540 zcmb7E&ubGw6rR*JO>1p(P^cm{2f-d(EZzk}4a~t}l@>$@lQr2ik#y5;H#Ud?C04pD zLJwZN`44#U;z3ZbMUP%{l3s)aEc6&WM8CKDCQVa&@WGpJ-tYHjhWY+`zdI^KKU=AabH-cQ;1m6Tq+BfaW@^p;xEPj_UamJspH3&UyDrmu`Kg zDL&E2x=xGgpqCc+GC_4--T2sZY19uy{6&h?KDzhOy`RPeRQVf*X&!dsSDW6K{=`!> zRiJ1Gd1+*So=U<(C3j~tJMrnTUwt->dItsR3S>}wlU`waCTM`->2y#(6$|>Hlk&%; z7wJh}B(w9-TrVO()1z<`T));4uCnkh#AEg(Ywn(4Kg;ovC-+38mWU)KMq}HExeWb9 zaIE_$Ag(V&YBKS1Xzq-DL*$3+5)16def-m}48JD(aX-iWy70jpHTHq{Ka3wh)G|H* zW5D-7yybJRfy0oW197@W7KpYD{!)yqkU_>xEYL@jjDSGS0w-b6=XZ%^eO`3gao9CI zz@|?WYXdUb`t5fH_$I+bPoF3NJ8 qileMrDRjc0Xy?q{zHHfubu3G$oMV};738!lc_>gXXO_#AocIgzNe&JG diff --git a/objs/builtin/ft_atolong.o b/objs/builtin/ft_atolong.o deleted file mode 100644 index 88851a1b652e0fc8b979ec1ffab66a019ef7f093..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1716 zcma)6T}YEr7(O$9W~paVkwK(HP!TgLgMuI|!^8gUUfSGtBk8-#K5-{Gpef^PcB@pYxpeyxZC5U*9(> z7<24nm@rB)W@*uY0XvFuneZ-_r;V_b=GYjTjD}7#DZ{?8Ffo-$*=gMBw9%%2TcXya zN40z@V++yzVBsdxf_Db2-YUjwm(>mii_#9$XOCDmR3)2h*r1be^ z->_%MXXCB)wdjk?sx+&Ej(s-@9bn9_Q3*XPmG05mpir1B^d->tpfU%!- zV33h64cbe!>egcQ|JEhqUxoRtNyMW$5s$2hq>-WBNh3{iNh4K&i3GBbBk2`NiMWvy z2_u(iPnipjcza5Cm-+lvmz6a0j8D8GRw9}qmhiTx_a^f57m&^a=Y{#9se6&vGpk?mXdbnA{BjMuj^yZ&6uWMoy$epFT^t{6G~gc|-&EY?69=Z#f!1r1vg=2``xszNMj ztW(Wddb?O-W(i}xdr|jC>o;Gt?5EN{50aSO5{sQdtVn-uGrPR^L3Cn~xv82RoksUbKcwQ!asMWBjJX`HstV^*sGLOn7{-frdOwANu8*&ZREh8Sj7B=%+@pPR#^625TY$#q2)|Ty{H;u%Y=IOe(>CJ(ItGS=Sqg?kL z?ddr6 diff --git a/objs/builtin/ft_cd.o b/objs/builtin/ft_cd.o deleted file mode 100644 index 7dfb1564cb09b72c1a9df5fec58dc4bccb2ea7fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2728 zcmb7GVQ3sh6rR+kxh75SM2js5*?_eLS&2$O1C^-RGGMeZG+31|IrsK*N0Pg^w`Zer zCFOe3WjV^>1Tu5gULJaiRj97f3^SY{)6~rUe`w_-;=v^U&a8e@a#wQ)+(3szO zeJ~XrZ|0DSr$yGrSSnl-K8kq^Q@)C5D?5ZqgEl4o0`j;UxO|wg6(IcCASMmkiYEC| zu17Hc?-=I(ZC+gO=6<2dm#kIt|C*xSpr}&hzE$DHLWM<3v;!}nHgQ7A6j)Ur^ck2D z%os0D$3W{MT7ZD%o|YYIq2gP=NVm0@LPDcI#gOr)B9d9$VA0Fet1?`Wukc`aRa$&& zbFJQ>0)xqxtWC;2ur_(|X7|Wq^5JObWiqg6CzJJFS|3D(JdiJ#2MiT%aDTq?&-OO= z=T-=Uc?sp7Gk6o%h*-;~l!63;q?db65Mk%ADC1Hrok!4jj5pH` z++UKLaKE%nUiT<3N~B(ot;wuZ<@qYse(6U%Z_s;FYDGbyg^(GPiQ<tH~14j`K9YHMoUp>1G(mxZqiAOEXt_Sw&bkt7X$r*Bg? zUl;s!eP3>4phNxdQCnwx4zY0R=hp-S#AI5 z4)#8}BrzUTu*d&irDsiV4zZ@`SX1msOJo+T2cW+n^9nkRhR&a{r#fP9A9$u6*QFf9 zqbdhC6;Ic(FK+_8)W3?S>)Dt0E_hcpPuI0C?>cy=wp2V_-yYr&>c{WId=`kKI(ia_ zpObkX5O=iMruFn^Li#F5r2iEd0WJf{?^~^()AFal4%jaOapjvXkoFnZcKZLsU14tF zEOAz+Zv%<>lu-Tn3PnXpsw%$Or;*8vk#Zgvb`BEoUqtSg-9w8um`Cvbb%PA*3tAWKy; zo}S1%SSLM!&#Od!DqLplNvs95aeEvdLwv23LYAwDsYwNWDb56PrBh5!Hn diff --git a/objs/builtin/ft_cnt_args.o b/objs/builtin/ft_cnt_args.o deleted file mode 100644 index 8ed69ebd551cee8a96f9d7712945fb16907dffed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 672 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SO68j0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAajHfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw! z%29yQ5=;=cQ~+tHQ-Lf5h>uUrh)*j@%uR)e#mA$%F9E950ZLmy&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW1~+jtM|o0LTaGX9xgdWB}3&bt|$kQS4BU&Zi!owLgx# zegUcX=yv_#(QLuM-y#d-b-R9PKET-N`o*K$_lHO0K@O0LPTwCdum1o4A1E1n7^DXb zpz(p>3=yb2V^t6XV}$^t01rFI1fVJvptuYWHvmln0a$!8IPwX!F*)}MqF;=_$p}MEz2QA$`Ck?{>>q~pGh)~|udKV&Th?n7 z3@7Iq#d+5##%tTO;pnctVQtjyVb}76mhbjKx@R~8XxF{!*LuBPC8S~H2r%RWa-QF9 zI6g9JEkqP;`Fz-m6v!@0i+5gPlDDD}9uU6)v6ZU{ZJB|S4M6Ktyyn~EKG zt7|05KijD25SLA08m$~8bP7%Og|qKLJWwz34)YzT_i(?m_)sYLsYFh+t1CcV!u~n< z$RFr}@%IaHw=43z<=)9Q?jzhF++!T;I21PpTxmDp+naA6UngELyj!tWM0`$tKo8|> zh?K8#UgSK12)VH bgfvqLb5bU!#wUcF#b0MO$x%+FGoZ+c(g~toxfi|xoCET2HI7pakdTkc`4Dr|z}sLAMn63O zsv*6Cqt(Oz+&|Rmo*sWyIvpM8%mJ1ZP}kYeo`{D|or%sylU$_E?s&9oHC|npOeUGA zuHP;$LvB$~kJ{AP$@ia}L$TPG$M(kqn}aedQ)kYh9)DC%K6t@KOI;bX)csHm*4>`! z`p-NS#;W7To|}a6^Wtj6lFU00gQ+-Ul=WhTtf6h$Cl~7PP$lo>0$~3tqI^fReA<3J zck7hgvBV~T@@4?WZ_s>f_#PPd+q_fgv)91*NtzeI^I(wl)nuTCEGCYDE0QkFXqmT~ zZ_Q|VAJsf@H(}fq$-)u-DM^0h1_`(0wE;xzdE8;Q*N!<#Vk(NddDYX<57_N@h<*c> CvyNf_ diff --git a/objs/builtin/ft_exit.o b/objs/builtin/ft_exit.o deleted file mode 100644 index f0a8f19bc152ca7102e94e997fb77c63fb4029e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2528 zcmb7GO>7%Q6dtD~HKENKk%%IJlBzwlM2lP}B@QG~fG%1I0#)0fawtROY?`$356+qz zkfl@`Lsm;52P9BWm5@*c2d)TEFa%`if%X81Ll2e+C_zRtCId6cET;U*Nih2_z=hiqMOOM1YIiN8= zQ*BI1@uiw2pEB89jE(z!(h;=%XyPce7S@bLLX(pJ4Dx7&j^2q}p)sDFKqH~4sL@!; z6_Ece!>0SI>6F8!o2#0hfi~EQ7BszVXqnhd*H|{a+_ErSW2tDAXg;%OR4DA^mI7Ly zs>z%ih+yZA76j7ERb1nyWbkrTFSBHN!^_@K$#+RY)A>4lc5&<>tz(AR*nE9HZf4bV zhnL-eyb)Nt`;AU z(iC3qrfdAHyhN4-S!PK%T%&{qF>PiVKsi-5xIsU2zR_zs)i&*oQ{6*JPxlA02d2W4 zM_XtME`;Ie`$>Ddy&>S-?$h4d3un<-!;`HLpvL?G7LEv2jc2UYpSIQ^^L5H0QGafx zg8iv1P*JNbFsjADDDC4H^bpQkwbaIU()e1v_(dv;rS5z^qx7h;s?9mzk_Y`9dg7pC zLnYJem(@bGG}FIbL>~A73e63?0JT7uMSZTc%$0)#z)9Dbdn7Xw5c^$Pc?r9MgX=uI zXk{nt7N++_BHi7+k#P6J(PKTmy~m>AD6`V(WExyG$;&RyvPtHZ^@xmYiQiD3_a$yi ze3~vCNVim5;sq67+#ycyAxYrXlPr)81wwoG1n0qW2tK;!-}@Wug{b@)d#p9|deam8 za6Jkk9LkrmHHlN}*cLYl*#3VcPOWEK+&jQsQ8=}(ZE>Fi_ld%(^=-jj*d^{{{Yhxt zwR*p_+q zg2qp8!Grj2AxFah0!{cIp~2Js4K!Xo{WE3128~avuBt}ouxT89l4;zK!aWF$3qXGW z8ebfJ8X8kIzo_(}(w#~}iTIn)tpNJ2_{H+B54zk2#nat$t3>h@D%><*kcTY dR_p>7@4Wp=%Btf^CSW14^T~+>kHtqB`wv%L3L5|b diff --git a/objs/builtin/ft_export.o b/objs/builtin/ft_export.o deleted file mode 100644 index 73483d45bb1184f4f332b002735b9a4c1e843457..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1976 zcmb7EO=uHQ5T0nQ@ppqLs0htLLC}>}iV7k`bYcCe6tSQOd8WzMR@)@qZZwJkVXbyu z3Lf+l}|6)Gg4w1*yoRO>hU-p2gcg9Eek=Kp&$yZhzmkKdb#A{z-0 za2t4r4{(Bxxg636BsG}w^D>n(@SOte8B?)oOxPC3v{>rHh^33%DESrdS zu&Iq6OOJdCk;;zbk|{^zGxvuwX(2A3ulG-@I$_dd6k{y$c3Brk6(O^Pum;6|ogA@3 zy%FDGb&(nACIYVTZfx2{G#I*A9tZCQ2V>E;QahN5o3cFt9DJ`BhBOU{eCh==ab0H4 zft5oXpP$iCn?-mBJz8+Yy3tcv6LXRA$!J z)|wmn#;WOl>b&`J;F#9&gkwqTpa8#Dtj-xLYyo8Md6bX7Q3a;BTZl!pah{EDthl9! zXRIg}!>v|6qZd3kKWZK4N!F9|sA3)f%2iM-5jXupR9&D4vx;<;Ouq-tEvA1V?mmdo zgt4TJ@2a&1m_m%SSF;m6OV5p^X`sN%K$ZTw2%Z@i@giu1W~UnZ<)RI0B8n|7nBE+K z)ke9%qx3%11FQ50;|qb;IKjVfG zS5R>Z??2;SA};Y;)>F7!;vV2f(nh3TQSuBVekFQ0B(UjwAn{h}pK%v_==ys|d@Fh< zWEAo>dSEO1BS?hmSxC6_6Oi~9>HN8Z^jmnq-kwl0t|UZY?}FTkfD#)(r@^d;d*RKq z9`0d3jvDKV_*kdXvnHKqQSX1#q>nb~e4qOGLruETq~B=LNu&m?)Lmg^?vWUClC~qP zLN04NBnBFeV~(9kC1Flw9FeqdkCC{O9m*ibCXus;V3mm?Yo{&P^0{=8T l7CI$iM_J^g^SSUiY-MUFM)S#G5^3w+P#URH8?Y^l{s3n=n63Z- diff --git a/objs/builtin/ft_export_check.o b/objs/builtin/ft_export_check.o deleted file mode 100644 index 3b65a7f015991d07362b819ff754a7cdb358a655..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2404 zcmbVNUuaup6#p`3m(99cWyARgdKE{768|AG>jF`C;XYUx-3l_C-?HSUxh}oQZf<4~ zf`yxmW}(st1%2zIkNTkaAa$~_fG=)u;!|lWBoHBw-8x%;=ic*WNwdlH!1>O1{{7DR z{@m~WcIU6{eL_SY5g5RG!O=Y!bTH^?@B%p=K!ry`$4it0QaUgNG2szO=~;7LI1lyH z#s{bG>1wt}jerP`a=!w|Fd6oWc@m1GOcg!Xc4pWhWj~(6k?jAT`&9Ydu2RuoDnDCD zraW14KCzv&l<%MDIx*>RU(0MfG9(0qe)MI7Vykf-=_r(6$;BY8ZE+iWY4I0y}0sETWtQP&e+H{&oHAwTw23 zlkHtk!{ER+p)`yQ5>#7TiTbytR(ZawALE5Zvk9L^Uc&G?1!TMo$-YB<&DHbY5j_^{!K)y(y_D-VyGKU|7xUWG+W>8?Cekz zJxN-1oRR92P5+mOnYyK|43GG?xdxSX#KEU&9IQQXk!9?Rw}L@GtXg_+c0~;13>8_#WgxhgX0o z7K(xVL!n(nKAjSgxsk}o@V@90qF#jkIq=CX93qJO7vi0RBbWEQ_qcldDDDJ!ljC?D z_l?UTZu##JkNdrE9KE~0KSbP5h#T1s@pyd$c&D&`=ry(byha1lN05Qe=Tl@| z-G?_>SLgpO>*_o|gWdxtrgrJHu3kTVrM>!vT{^9&*Dqu$Yo#to%ef?E27mKHI_X)Y z%J5SWvf$=t@MD&i>*ifpZBHc?a;2i0mz=cao=>^~id{_RoYJiFSr<#m90A#mmr+KC T{`L6fTQqu-QVQ85+7tf(8Epto diff --git a/objs/builtin/ft_export_print.o b/objs/builtin/ft_export_print.o deleted file mode 100644 index 0e3c966fe21a476fe853897ba27187b42bd773cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2672 zcmb7GU1(cX96#B*E^b{DWYrCY#^GcyS6dyphX(4$g(Db0m*Iosn%>;5)wD^Ido>mc z)!Rw0mr4cag9z@ih!1<&+=I^A4O>NM`qqaIf>cOAK}V3Vsqyze=iH=Cy9WtNQ@3PO%M#jFbj5mbo`uR7{+#gfuBc|d|zi^DN%*n zWWrx|ESEBE!x?{PbUbYs&p+D~Vi8t}TvW_H_@hwg!;GmCY;$QC)`&5jPmNj9pgq0? z<*%&#m6Sh4vV)9`1Z%>_F^^!1Rzwc4PD~oKDe!LHuxBq}(jXn06feap zEwT6?BgwsAx%*om_onL0dW|f(uh+Rh80DV6F4x6qg#_+mh@16mh=>Uq3T5t2m09F` z7un6leS{)JRnmuSokeDzpruc~ibtfKpD1%PS>s;EniLF%X*1ucxj%$Fr&e8RG#cEW zDhJzCKva}%uyAkmoxMK4OZ?0FChhJ{ZL-LP#gmPNP~<$7r@Dp*gj8yziY>5*UiT9< z_xq41p4?pH?m!7aUxboK-b~cEKd>S+lQnkG#nO)fy$H0n+u>VI--{5{yZtf4<;&V=g&m~m{=HgdSwM(+M?$ib<8Yefh z`S%Ntq#yshrB=N!VEf53MD(^%9;){SqPh5Fi@mkUa${ew;m~<{t@B<{eyeSikH}2 z*2@%uDs4G(?Qqz=9goa(gX!yK5p=nF6V98IY%NL=TI1fT*bFttDMc|KfLZ@v$RE)K zHTM(PEL3fY$WsN!FF0dDPBy+nf2R!@zn`eUOqOaWRTyDu%gm(mR!l3#V(fS!e(cx* z0mlns(e~2#j?z-EBe|5%MMWG$yD;Qa@d!$a^NZx|kT24U3ge7~9rBpEAHKbd{IKM+ z(BvyDRE&nAUHilH@bWPDbdQ|6L#=N#RQ!xR)gAp{&ohUD>w)y}_h2QZr}EfUF9W@+ ze@lNVpI!Anf!_2#QcvZztKK){PwA=rcIf?#{P7aiE-SpC@LeEUq;&z2i*^TfB>YU_ z#|meGhroXih+ofyqTf{X8AZRS=*JXI_c4Aw4@uPa0`aocQm8HN8tr8u?SC0LAO!6z zAXwTLKnyL12d*aVRUi((_5zUnodV*D*G>S#z-b`tI^R$@s4%7wAmm>HyP>#942(}P zi4M+}4LSlkI4?0p2j{C_(Eu^%I|Ay>@pT(b{n#r1u#MK+=-1n5x{J5k_q5UPx6!1# zRi7ETeD)l^Ck!i}&*lxQIBGLv*ft8z5I%&k%v+X`Hq4P!-pCOnhp!_Wdbw=gHnRD& zMM}`O^Jym+EXU2U<~n1IGuT_^TZT2^q%zD%TW^o1t$-2^hlORPU>8Owt+q`joU9FA Wfi@g+hK4dAC@f)OrZSnV$^HXkeP=cR diff --git a/objs/builtin/ft_join_cmd.o b/objs/builtin/ft_join_cmd.o deleted file mode 100644 index 88463bb3b4e95ef924d2a1118f25ad80e4290765..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2292 zcmb7FPly{;7=P)m+f>_~C|mr4ut5a{nX(EVgcefUfhQU)(#2kuXLd5XNt>O7G|{vW zjLt@OIu!Pxs5cKDy!0Y?E6c8}rZ?A%dRW*wtdKy2IRuQ0?)v-Qyy>RN_TWd}eDC}B z`~JL{m!Eh4+&juxY>eT7HI5ZOf=3by^fcBA86HCG6aadOVnC4$Oh!wYnGhALRw0j& zgt%y2x)@0Z{52{BM0gb2o?vW}6yvNxEFvMytCe!zUQ~)SN>=4YaH!8L zE|oH7MO5t%^LAE()7-KnQlI&GHpTd$yp*_kbu!txr=^Loy1o(wGW8Z)yo?XBqqB+u{SgI8+|C?sH z`v-TrN$%GB+^hH7gy0%I&*(YpF>dzP2vusiYqYsjZ!@iV96EmUOb=CtCPZ?t+CK2} z$oFn??#{v~ZF-qNnKpf%F_kYt`C3Mg^uX*hZTTE+Jp(wYq*I$hmL~@^+^fYU`k2wX zUmiBxOC#b<;HCSW@AmiiQ8*GOka#d(O7`bggO<@9$obb{8PKQy%DMthI@c0x#n{%G zTIB205={GiV>VDJ?_e$}DeJYM(Ho4p4ZuMR?zDIK)-Vxy+kqLIHqNWdH_$K-<<76p}yR7o(T&;(sba>cHLi{pJHyc%gtTxj{iMa zT4!%hVh0#h>cJBV&*$K5T1EiaurV{;Yn+bbq|Od#w6&?YvzyeGPmU;$Y0YC$dPaaZ z$u)xTmBN{IZpm{Bka|_U4>QsEaCf$i(FL+68MoCkb^ya#hEL2hw%iS8W8Y10IrQ3G zhOR>fbQo|m?Q3hN!#9P@O}b+|!h`fi zzY%*w*}s2?eM;fSuD{D-wL~m&{Ahd?C@(<&EZP1+SD=jYV`nE5pB_1P0@s!#^22A# zxbjndu*3Wc@LN@Ws-HvsK7-$v|Au*0Ux)hLhM%weRDUCWW4K&#C+fdp4)_lBufXxs ze?*VyLB9>&8mM4j<-_Rz~kVzkc0f+0f$O|101)TekRnPd=VU1u>LqWNN?Z) zzlrx1Pbr>M98B8b!zS^F&VNbCJ~+|qSY(gR_bnwy=XnD%)fmx7*bIp5+K~Lkko?|| zJU=8qHzc1LlIgn{%*Vu{RT21W7N%WcqEs#};!jXm<#MqstXdwr1!=dhFeqCsMezm8X7DUkE23a!7N9O$787R9GOq~B&Pu<_MPQjr NppG)eTYd=$w>{dkM;xVZPQLC>(jaTKCDh_YpIa%zgVill$hX7niqm#__!w zUTi*W7tF|uzptQlrP^)K`EIrEn<+g*mE7@^mJGa0%7;TO*W z%P_2*hB4vN<(z*p=g;SS;ZE|2J7K$yf674^wnGm3%}8R+R#YQ=;2^*mac5(dxE@5l NAbh{Nw$}F1>kmg`l&1gy diff --git a/objs/builtin/ft_unset.o b/objs/builtin/ft_unset.o deleted file mode 100644 index 7fb58f256fac422ff1e51e2882f6af8cc9429169..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1136 zcma)5&ubG=5Pqq(4gSg=JVa0kC?14dRIt!XO1tn57DXBmq&(N%S5s*=%XU*!p%@4V z%Od3H)xW_@&$du+>doUGDnwB5SUfa-^WNKajT9W1{pOpQ_s#6DkH3B#&oWjz#c+X7 z!*?mD!C{x+bHq=u$ENnhV8)@z$Vrz>h)DJ#9c#W~KV134v*?`(NRM`zg8=D(^a(N( z!tJyJ$BjhSf4=T}Lfl=-YJ|InGz<=>^ezGP5Rw_tL1KpDMCd*iEp~?sQ*6JQ@mD@`l znXf8O=O4kX6Y3XDYw5)UR_a+L>)dR42$gHdUxts4u{F%-Gq!NSdNs9pK6}R0w*+tK zwy~M>Pv2Yg;1$;20H=XnAjZ@;fTw{?Al_a51`yiyD?oh5^%@X;Y8+t&yn-OJJBIg7 z;vTS2R&kL(ny6o&;Pn3%`<)5Sg!H#W)Dcb?I@?UF(GRsLBNe%Rg#6P@kWfnD3Ag2h oB8WmJx`F3JQXTd>-6tDT)wEhD+np_`4=J5zopoQhZ4a}51Lg&@cK`qY diff --git a/objs/builtin/ft_update_env_cd.o b/objs/builtin/ft_update_env_cd.o deleted file mode 100644 index 430ce8f372567701e7b57733e2f16bc7628e9d43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1256 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 diff --git a/objs/execute/execve.o b/objs/execute/execve.o deleted file mode 100644 index 3021b3d82f0950c1f9adaf0ee7b93c9b76c16cf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2400 zcmb7GO>7%Q6rL?^>e4oAej)`_DF$(fgtjtBMJW*EKwV7*mPl0#F4bhSUdO9!>}YLM zQ^``Kbr8$Ss7P?)j^M(bBGE!BLQgH+sDxAwNRDtNAF3++hVSjpI`$e4JZ0va_cL$4 znfEry&EN0-eTXsT0fq@9fss6bDUAVn4C7sL{D;iZ2FNV!fkZlTG8)p&gs7X%Iz@yc z#QEHt=Ob+&vqS_!`DpLb1Y?hrA;C5XA`!x<)g7y{A`S6;QJ#a+Uyc@1mvp0a;Ad3V z)^(#U8kLJyr6|N}rw2|fxa74YjqAuqrVK7AT_Y)lFw3Ik=xb)UA&GIk>xux=F>|d5I0-!$FVYuww;^@lRgaxd4Fmq0}Bj-TsuKacyJ&G?Jc?l;P*TWaTt zfC@cVqw5#?e*Ru?JH)!z6ff7``F3w_4_WR6TfGH5WAv`>_4I|U(g}5@O{X$-W`qy- z8hx+O^YUFk*Q2-R{#%(B&P=PFSA!#o4C6+=$E_Q|+bZAjg9&nZ+W`f4m#H24s^~=C zIVsQ`SJKeGpf(9Yf~S$y$RpojZWNI3hcMswo&wV2X7|*dy7@eExUDW8`XQ`PSZcm7 z>ClZojMI1LQ1%vO^G{-CSE-dHyU;*=O_hi!2esH4UmD`T&E9>^vIep?1%rPTACc%>rB4t8Hqkcy1mPb6KyI;T#BE zA412CNYG}mxS@5-zacHxLLBoGPZH(QIi@sIO6usL`46T3p469sN%$9m_?cS3gjd#Hl=^+#4TaNsK#KbbNO3oSDs&6@Fz^fzqWz2s zer*eQ1o#mU6g4UiWC``wxI>KyPbtW$AR$Uln%Px}JFl#ll#-yRFSBkdjkZKyMV!2`2b*sWe z&04AGHWQ_)v&ux-bj)Ja5G7k*VaRG4jk<|F)kdW*)~$7{ZL6{>mxf)fnQ|TSSk{r- kG4&#%5L>JYW34zyG^*6_?}u%Mwi0;jwp}$sA`uVv4_4pKW&i*H diff --git a/objs/execute/execve_utils.o b/objs/execute/execve_utils.o deleted file mode 100644 index fd9d0f049ede85e1456c9b6c2653e0189ab36ef0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1776 zcmb7ETWb?R6rQxPjhA*KR8Ud64_+TqqEM)yklF^eVnIvAyp(CW*))r35;lo$g+O5& zH3XsH9}s==C+LG9E!a2x0Y2nKXeB}(M2ghL@9fUhByAB7oH_HI%Qt7vZ1U;X_nltG zeBBHS)DI1GVNs!wQ_yD=I6%Tw2)RTx5Q)LbNQsYx^MYX)yuF8~qp|6~Sne(h9^#|g z*dfOHDd=ZQWTbGe=L?pZnHLVu+xaBVfQa9fjR-7`k#y)!&o1QRdVv=+kIYPh^V{RQ zL2M$TU{*L&;G?Urqdzf%HcHNo6i-_51;Z=o?C+(>UJ-ojf=@tpl(CfDlf4Q(33Z=B zIl_9NBt%308u~a4o9kh02^RJ24zyLMPg11(x7^bzUp1$$YL!w$t45&_6&ipBwMw+6 zIi(s?mTBAw*SxSD*r0M+nTec&a5Vfl)+{4FlCU5`vkB2#ErJlGBgsd+CjG^XRE1{ zPa_k=TiWyCi|FeejrT1zD7tPh(W;Z6moTpuTnlQJ&qlaEH^wKy==Iu`JE5G ziss*hlevpGA{!5mXUjC3P2mW-ju~>eZQqP1)TEg<)P#}OEi+fhTErn`)!Wd7+T^o9 zuROaaz9c+v4v5R&x$p55^VvaP@K|qP1vTf8e+C-)jSeB=e8xumgHO7~`s8nc^2VVX zB2V%eLUW?WAh`U7qm3DYw4g2Z!0GhHwIaXcygQS7%==nYG;fV$y{w@gQVva-kkYHkrEqb@%k|&=+4_C8%%;As zrzM>v$}P2Z4eMDzT{BP67{I|F<^4_cF$V5}r@^>S_kd#XS%!Ll(KtfBAd;^l{%$AH zKqRfMNFAVJ0}};gI&nI2G$3 zIL|jz2f9*Ljka_2P9jDye30GG34!{4(zbnX+*949J01CN5MV2r$U z6O7rGY%o5n$}(SsHVfTe(K>$*_g1h~UeuF^e12!qC+US@Bb2M5A2cD_KGs%H_k(4U VZoTo?1JyitSuXi?&Uq`#=@+x7s51Zn diff --git a/objs/execute/parent.o b/objs/execute/parent.o deleted file mode 100644 index 484742223947e21d228976bc7266cf2e09f86612..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1168 zcmb7D&ubG=5PqAsX{yy-#YzONIatUg5cN_OA*C*?ppeEEdXZ;HHqAnsgzSa}AvCa! zG%NuR9{g)+{Q(~R@fYYpFsP724#7j?H@k1+Cg8!3%$u1v-+VihY(D({bu!PGG{bPf zW?_*Kju;HM1Usa{Kk!o2;?x89IW!p==@B@$^oHfdUcRYrZ~o2wC?3$G-eU|#IuL4+ z^TBz}v}#6qM_h0|spsn~h@;IVKPG?0EVPN|~~H0R+^bM7adji~)b zy7f`+zCc0iHv29^l;fJSpgCJ$W|CSi6V;5*i$s$?-I3(>c~`3cdKg(5(Jdr9Ypagh zx4-P$!+rVSrblp7CLdgLNh;J*NxL!2#tIIR8HI=pYgq{VRF{LFIc=u(zSBP@(Zbhx(wfJyfWWppHC52wJV5bMLwN)dca-d(S<;KHqcB zJ-PJOpTGZeK#0ga0vpx{R&*b>Bo^oqtoO(;gyg-(FitTbD+5!|B0M6c0>2cPvyo@q zxtWe^PuD3C5aCg59v}%)jEKv`EGgv`gTj37JS&vy#j`juw%_JFZ9J!IMdar#F67f* zpq6r%=5yziIyKcc;!x$hK4oPCc%(WS6@sCAAeHj7DpN==_$Ht~zbrRqi}BX>8$1@p z{X%5znfS9<)CYYPvHQe+EF$_S>F1EgVes*TLVN&@cyStwh+=5bCn;CB{%@LWc#mK&i=axpuQ1 zT5bW2iUCFq=2rc2EiBgz@}}E@Eb7K(dCO?w2mh8Vf0aD5vBvqvO}i zYINQIqqaZ)+2%2g!)*@T?edqAio0EZe|L9Ra??949$H^((`|C1xRFxAd_J6pa1t{! zna~(CKf3sphfVe{Lq!#saiU4BU!<)A#tzN$-Sn9eXnK3-8cXjO zzQ>+o&G$p>N&10-el%=PynZxcyFSGJfYFP{8!w4SDISR*IuKn0$`jB(idFgxwSqW* zAtp!TSN6Sd7|*9B@|&X5j`8C<2KrrqTbBK}o`HTJ!!P-_!Q;9H`h5<+pV*J<+v9fy zPYj-DM}gx7ac05MvIp;Ai$Y!p$J_1DLq+-tY#`?@dO-GD;FuWa3vlv#8yv5Xa|s+h za1MeK?k<8T{#S64e`fg`mN!`b1RNnPHE5ci$$T%`+>@*gRJs%7xTs;D4bhr pA9LP9`~2GCd`_q$M*!n&QO649Wqt2;J{SFT!OOCcDfqq+{{q2O@*w~K diff --git a/objs/execute/pipe.o b/objs/execute/pipe.o deleted file mode 100644 index db42057667a26414acb8eb92bb534f06be99cd7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1984 zcmbVNOKVe65I(7~4O&eU3lW3{ks6Rnts9|;scrBm2DG%$O*z)vvtY*9)}XHwDl0z2C4*>w(ce94}$&F$Ld(4UrAOwMWwV&SY>J~oMC>`?Fw_e*uflyq zbVEsKQS#Ga(|IQ`+yNrrL_l3=NmBbx>VbclOv%C*seknq@)cRgmSth8Xapt2nb%%weP1k2J8MyR5f98!BHqwjkWkd9p==Pc4ndZp%Gxj?>uqOMZwgZYeQRw^x3qJD+JRaFj*aFKo}C8aTiCv;M3S=89GZuGmcNbSca^=Gz)wh@}}%R(2Y`K5jZ=VI>Q@m2asT10)@GqZJnHXVV7kBb@-1Dew z>=-_4rVwu&y8FxGaUXx=#lXw$TRiUP08iorgxZ5+K(yZ155%W$a192ggAvA2#y-ZU z=-Eke#t|U#os1u`HpQO<$)94p!Ttac)NUUmz_c#|-3Zv{OlLy2eXf4C0jBg}M7S=u z+U#p>HgTKzLM2m)1^h3la4MBZscLgE8h^l3Gs^S%jM8Rf Nv4kenTsAo@egh_!nG*m2 diff --git a/objs/init/init.o b/objs/init/init.o deleted file mode 100644 index 2db55111e74652c2feeb0c292f0e11f80582456c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1748 zcmb7EOKTHR6h5haYIP!1tSEFAE{YKGfmozMstpX-LXj$N%59oVnqWE!X<~yY6sL+q z5Cz@25#012=*kBzv^(ua+*t&nLWC}ZVB>dY&LnAU79KeFyuS0@bLVkC{r6$G-PQ_F_Kn)jNm| zbFrNk+4!PVY(Ae$S+kN*YB!(HgLYTG@c|n|#;s+*mzm2(V|i7u7E)GRsj<;o5zYsh zYf+M0;A6^VY#?XcMX8jTREb=4&h#3Z=L-w^t?(s5(m3J)qNJ2ua}H}i)Ez_HPn}Q} zrs4cL=HN`SlPC>~ewu(b3eU+3$bZWX!}(#@<)Go*uNY2Y`#lfx&cL$8Tt;ae>3~s+ zR1ABFw1>T%d~*37U;;p;G-Q+t+g@z12B%gMr?r74?kC~beg3sbxe5W{c4@q9e+)R| zWh1s>*u$SmTZ*B>qj4gej4@&;mxkB>75lzdqUb8U@eX5p+QX z^sTuZKOgY!_NqR$q797J=5x>Qon5aJ?0xpd8ldT{+CbPpZv)?84c_8ep78-^tNtU!{XmNG7F1eFEk|i^O8R*`7-vv8A4xRxo-oO z`<7w55kH5;JsBENpJHujiu`q6)V-0|5Se8>zj{Wy?Nn)Fo&WzvJgG!prRVdOxj-tL%go|xRAw%h$tkm# w%9Ap!J1S+dm$DKWakHtcDK6S^;l~SEQtsl>MdNWb6OG+=>0{A!I)kg>FAa?!+W-In diff --git a/objs/input/get_input.o b/objs/input/get_input.o deleted file mode 100644 index eb6e18489ff1354c75d80d6bd52d5c3a5521fb17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1680 zcmb7E&ubG=5T30~n`+w)T7RL?6?*7pMMba(g@|3)g9VX_Udm%lHqFv>8dJ+ULUWA6GkfW5^_|4{RlWy_gz`U7n-n{S4oA-9V?(ZFT z6Dg+%1GEzw?ZBWxA(x@cJn;`nb1r09+5m%-SecJS2+uBfO}~jJjHeSV9C+{KUd+d9 z*D%C*vXd6r1R_Kt@8ukKN(O{D&KK~UmGj^DfNdhnJ&J&Db|z~jJTd1!cif~955|rr z;cUpd;xf1cKBkOCh$PoBN+ImDNad^;EsU3-ei`a% z>VmTHrX1H$M?VL;&@&jUr-zIoye3f2@8#fs%44(q%PiG2vs|p3tD|qhx5E@>WxQ^d z6|-X0&C&>|OIJ9!I=X~}n;U-0XWqMP)MP#qDas0G7DO3k4Timbg3(hyal~NPd6Nn{A`U5uYzHUQ<5}L`(Zx{DTr-p4(LyFP@m|iL0--cyh(qT}MA~ zk5uKGtQfV@hJwCT-!~eK*Y!oN-(ypSClZA&u;U<29cOl8Dan z5#%%SJvnI2IIT9ZM6HYg=_)TCky3~$vEJ_J8nT8EzY6{N2Sq|8KheGZ*vpRleRz(( zaNZd7`(ZOr?sFoqfgG&S_h5Tqf574<^)1*=*pIMik-iSw2m1;ZtB*Bj^&rl_8M?MoS;7!fK}i?*lmNvuc{rd zgs=$VyCKZ=wy%E@!bS)eLUtt=|X6%BUL&VDE*`_>^$$N>6Z2@>W+ZNK#;^*z9 PNaSoQnQ>ejshFj|@QD?g diff --git a/objs/lexer/expand.o b/objs/lexer/expand.o deleted file mode 100644 index 5afc400e7e9de1321e58468475d15bb332ab1431..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2052 zcmb7FPiPcZ7=IIE+*r-*K_M24d$8caDX~TIps==%yn~^l1_TK&>+Hl`x|v;fXY5i4 zN+*$wgRO_2da?A>LJuOIdJs)S*OT$&>dC{FY(OFQBx+56-@Z55-HAc`;G5t3{(tZ9 zJbeA)-3G?AbqpVHFF4VIPYMj$2A(0q8uS|lf_701D3Xzr5mP=QAzZua%CVGBnx{^- zby@PhFvLzuybO(oSCp?K)k=CTDPkz-+s(fsal#( z7|SVB3%C@LRSkw69YGXLuXa}G9 zfc@*$_IB{+D@ITD!vnM4-AY}0Pd3o#?v}fWS)kwHCb#G*j!7T3Mef2g_J*8622Rtc=RL)R`9xbVHjNSnbjtwj})5 zBCY>&FFoTeTs9Z}(DZ4X6SlZdPAry{Yc(F+`;`m^sd&#wb(aJmz9%IjHY7ZcXUM-ka zBAvn`NH?iA*T0({ouh_2XnX6z$ZOM~W+|y>H>6TYZI5S4^I#487Uin_aGYt?q?X*Y zA#oKkJE7kWo_~uOgH(OS4h&hO=v~5*G}1uC^`#U7TJm||01PQG(Iqg+&y@TtWL=HPPVae#$f$0o z{CiBs9J}mvpM|&b9Om0 zWW7?PKj+yMH(zujQ^A(Qd?izGyot!IQnIalroe>loEH^4Q?_!EDJ#x-Mb~EHtnCVi jem3~$*!Y(1QXykuAUm*~EW)d$453t^B|BTR&_4SgDCDWI diff --git a/objs/lexer/expand_check.o b/objs/lexer/expand_check.o deleted file mode 100644 index 7be3b9b554056d4a42677db1366b1a51fb4a47af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2724 zcmb7G|7#pY6rZiJxvNR%qAe;aIYZI@a?prM!D26%g+)B9($GjL+heow4zG9D+#Vi< zXkhQkZ5AOvRQ$F6=6@iFgqlhl^@mnLaz7Mu6@*-Ap@?8iW8>%T%v^I{R`9{wH*em1 zpLy@i?9SfUy7zF9G3_yi2Y3J+*@H(M40;w^CqoEL?-ho_6a!K^Fc~r75t*iAR~#`G z`bmBI-uS)eF+lr>;!l>(UQcpFaMXO4DWZt zy?ey)=I-sjCTa+orcrst#Hr(%zoVhy7N3k<9pJZ=7SUS}- ztmq_P9*9i1o5y)=5%H9)Upe|HS6>(D_+=!DWWD*DhIbvct;(#R`{h+{r8`N~9IWAw zxGS1r{m7S($rhjxZz4wP`*H%*L-E0R%<;sYa0CAAI@1xVtr0*VlM;R74V}kI?T> zz|R7fCHd#qlJ)Z1qQ3T(#%pv^TKn-pbEp`-(fV>{XD3(#OKQA2))(toEU4Js1jdWP zL+$%ToYvlb5ABWE>?$zY``z6iQM)CU5uFM)A0zg8dKUVPlXr*vc)t>bGh#UfX2hk@2giYzBC8_=-WRLxD>g)F{{HFgAezLwEzb^)YyDBjai7!s# zDM)Ns;!pGicUa;MBwBdzYe~!aHII43|lsego=zogr>Rh}e zb#=}rl#cp{Y%tv0WOnKGF8$Lkonm*#zuu(}cj?TWb6>Te<&M9@qJYOz2HXP?{JcW;)pHV}A+A{?!0LnUr Nv>24qxnd^G{slk9VPgOQ diff --git a/objs/lexer/lexer.o b/objs/lexer/lexer.o deleted file mode 100644 index 67b54eb83126d43f1ef32bb98317bf57cb56a4cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2516 zcmb7FUx*t;7@ySZHPQAag(Bxa8p?tAu%(JQz_V|#xLJ0sU9+AHw2q(c9s}TypvYh3m72By;Yo+%WOY@fX`sq+d_^OUm)51^3 zRW2f_;zE2tt0b~4w_q)l?Il-9Eo(5poZjbU?KFwJ!o88`F~$m7CD99*CoyDM_@itb zgMbz#c>#GG0nVlv`y3el>`e>;iW@x-nEY>;75;tU{c%e8=X)*l9{IOv6294PncZE0 z2+W=cSdi~}KP3EoS2(}crqhhqpCr5Bd{1nywZ-OaS8V3*N$1Wj<<=HKHL1b{W?T5J zkVd>v;hT4`07fp|%BAJf-i=dduk+(IVxsv8f9-+rXAvmBt&8X}&dQ!EUDMs}yuRj%|I>8%{OBD(bAhBS!tv3ICjKdUfybRUz zw`9$tF7WM%3)hm;k@oo86}k_;`MZj^5EC&IpIwSK`p2V}Lanw{yrVMSaNZEI4oyNH zzyd#xP8m`EZ7-YP4Qe{nd%H!Rtn&>`MD2G5ncR1Y+=pv-dHtCfi&TzZx=AJ z{reV}I9?WBPsPyN{s&y!)c zK~`smo&GE{^?HmqCX`;M(cha|doLtibo9X0el(fepdO9T9HmD$)JEyi5_6;UCwM(K zN9wXXo9>oV|`15%^5eRG9&2YHnR=9@1y@>n`uCeukp~()#iKI>!H) zHcqU+%@WmgB7OK!@?+ReLH;yGbBCVL-Cdm@V>1)!iw9mig5Qh;vO}A($-k7H&U0To zdfHb0R(3kyeeEv6F8hzN(|JE+_w5*CXcprO><>+5d;koQ@eXhbxQn`wejFH|@c?_m zXEZU9`~oocV7vi*7v|C(v%gideRYIlZ@{(P&oPrJJy`o(@r)j6) hI)gNYQzqepPT939E|x31n3acHnrD_D9z4j!69*4V?8Y^b#283=A!AnFhNCxchEt=#h$p>z^kUM6n)KKJq0V&YK^tsz(s^&bnQ!KO`*zds`@fF{0JJlJ z3wl5LHU&C5+GX@H!ac0i7Z-joM`4@^0hf62Z_h0I@NMVAnh(r8RnG7~=|&c{sf@D{ce?faY1@S|jx8 zR%A9Td!jBXBT0W>H$G^_rne`8i%9FPr3~@r3l(3Pd+#){aTXc1VO%1!?tj!mvtE1O zYPGtXKm->~OEn&HM9}E;(U=Qk9yiM0)mu_u>K`0Dv zBe}f@L+1Oy7oYTTRwUFvY{M7lo3wqnG!+t1=!=lm+4}p=IrmT71bpVmr2r2rVD2&nUucCwFyYuq;iZMdwC~z#A^iE zuny^8T{qo)xW&0)dw-%~wD`(%P^#VY*ge6UBXN6=W%%cJGmUC%)o6W*pph=|3Mx57a*~}3=%#)dj5mx8ULWnd|Af9@8>_}fkj6{WobFc@MJjk} zK_`aSOI}1*-6`a&D_-#2{MM0+NG}WtSG{05xAx^lgp-QyUqmzpAIeqi%o>FplM+r3-T6kLWMIZf5{nZ*&^qBwc0p<8> zAO8`(RqW$;Sge+eB?nK%Zz2kn{CUj#4{_KS8b4#%q2wngE}Yh%KWUeP-TI!g(|Po? zqwm_Kzm=WNr>EU5*m>Gc=hf5hJHq#mil_5CW>-MR0&Ds+)B!Khv;~S%rO$&xmA-?I zDe3=G^-Es?CH`yFfM^1g{5G%`mg#pvG152iAd}0QW;9J{3L^DyfDXYhg-L@xcf@;| zKdX8FoC@GMbpE;0tDAU#SXe|@xsLLukLa10sfeY@V%aKIn7CeDsFXytGB>}(#FDUP sOV)>Y78jYAKE%z?FH{+SXvzh~bLA`ZC7+vKsD2P~rP{S(d780*0rIPoSpWb4 diff --git a/objs/lexer/tokenizer.o b/objs/lexer/tokenizer.o deleted file mode 100644 index d8eea7b2859c79139300c74af450e1b1a5995302..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2076 zcmb7F&1(}u6rX5Y*N?hU6ciPM2cq&*W#TEv%DAI_RGNzlY4aOvHHdw?$aE%xi zp`Zs3o&_)BQ9M+%O2A9~6M88mP$3r~h+n@qGn;N>BlyVMx9{us-n^OFEPwy{Ya3&+ ztqc!vAK2J}M*<8w2!2G49(0ltKqo1Oq}GASh_%Xu@SHi1A`}TRIeu+2)Yj!{hyzKv zmj@WzMeaUUArX=gcFA+I`5W5MjThn|UD9B`e$hgg=@@}mxK&Kso+#(9!y}mv2dnpp8i_= z9gTaDPJD>k=Kg#eE` zmZbY*Y;<@0;g<7*;rEW>#=vtwRh;f~)3_Ys62DZO?swC;r-Y~Dbl-o)En{5|ShT7LqGgJI<$u^ej(5E?(oUzqBn%`I-3OB%&U;Af;r=DH4k5|IQ?;PerVwq{Ns|xl*y&uZU^DgyOL~^{ diff --git a/objs/minishell.o b/objs/minishell.o deleted file mode 100644 index 6a0d20dc2e031313b7abb2bae4f6e60084dab0b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 956 zcmb7CF-s$15S^$O<5QQZO zmi`P&|ACcUo6Kd?c;O%>Fc4l_?_WOT-`#4CH>L)ya0pL_b4nRx* z-^ITXP0cs8Cia*~0+}np>^n6-(ve@8Ut4+cv8t+&d9uq%Uo;2iUtA;1T-+&@?V`_t z_s8`%m=}L0-`CXSlna<6yR^W%D%49bJKMZju}e;rV}8Bgv6lW&F6%tCG)%M|YvHfJ zIMDr8<|Cy63Hhkx?;wW2Wh}J_Mn4sRWJs?-&hfpmYQihCcauAte~{L&-Zo)yXTsH% zX#_2ESifjVzEN*?*)%j^8cP=@%#Xj$?zJhi{{i*amz_>0QLJ6p=Sa)E=g|MCNBx|p zF_o#^WlGhusqDz$&=IPpkpBW043dcN0p&ks5Blat)7tk73~kw99HF%U#t~Y1FwV*P z2F5sR28@NRNign_1(JL^2hKpmAu?e}`jS4=<3IO!{T{MW%z~2r(>IWz8uDz7xISb-UV?sKrHfa8I8Azde4I diff --git a/objs/parser/parser.o b/objs/parser/parser.o deleted file mode 100644 index 09b55135c73b78758a7e6d8dabba74536bae5f55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1660 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 Z6!Hcbl*mJif;s3DkT5_ diff --git a/objs/redirect/heredoc_parser.o b/objs/redirect/heredoc_parser.o deleted file mode 100644 index b67bcc70ab29394435a2857110a6e7dc4d730747..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2824 zcmb7GU1%d!6uwz&H`TTiW!J4guoe2S502D7tgGv$*pd5Spq7nPu};Hux(T#NOf%gg z1Parx9mh)X2YvKO-KSjyp(|3e+p^miv4YULAO?w$K$R-{P^-K3J9F zd(Qptx#yfalkazazkQgoz#R+^^d|J+Av`+K(e6i|BgFwN)GQPyXbqY#gOgDwK5Dw2 zHK(#-EaWrV;F+rIkKUFGh>wOnLB<{?WfPkw@SCn16WL56c~(y7`d&Vt2g|*7QTi!G zCf)T#_-CZX(=j8fTgh{YXVeC#Zw}(>K&A2|AiH(~= zS?^!BTvQNhHi%#mpWp6gEbfm9A4l&%_fnzU#hTHn(WW#XhaU=X5Yv}{SkL;=sgdi{ zX)SFlR$}l!T9iA#aeFh&o!mBetSu+H$>&dvgSJF0+|df$&J~z4Gf1MF+v2WO;I6iX z6&u{Sjzw$2)P?L?Yuvf&$@Vr=W>3mRzC{6qt5S%p@@K9nv&V!m+3;0ztEK6Ftm{xZKu$BPS937u*#ilUsL9)6tBT+H+R$HcC`&B_oIlf2$&1e zwXjTtmkj5hT1B0BEQo7fFuA!Bghe6PEB!;u)rgHQ$ar=8`KEv>ZJ{kM9VwTgfu= z)i}%23+#k~KwyIu*PvGy_Dc8AvY(@d`#BNpp%waE)@$bjeGWseZXp)F2OE#&xf=m- zw7`vfm8B=|v2U|EZC#mp8Ubsd?DUi(Iph%djTVv4may{CweXy^{*Jc(ML?OQi&B1~ znhxK(QAWr~H)LN8IH7WaO3KSG<<=_6U{`kQQ7y;SrwbVt3VLAxx1QsOcwd+L?$ zn~1+Co4w_LYqxHu2w{X9IaUX$vZxs7W)Y6%I)9*@FObjK!-o~ClCAuKl0pJ zuNI>V*|ioce$eTg5gC-|^PTki>LO=E`%-}STJ+}#^HS&%ntl2$ITIIl`}D)|ZQgdk z`m}smA3H#QMD8DWYk&o&LV-~0;ot&n$@PcOFYO>uXwrYidfP+i553Ulf2PQ;51s!b z?BqEb+Ks`k|6gGz&(qNEL)d*H?c}){+I<7N>05$No^PMsWRv%eQO^SLJyHKaJW$W- zFF=wnOZg%Yp*;FN5NA_Q0`XIi;z9QBL5WY7>Hx{^Sv+X|5g_rj0)xOCh#fwW>UTg? zocb-0?7x!oXF#&IfwcY&p;yB|{M27@Cfes`Ag#LqL{mS&16N&jfy8eCiHG7y_zJKU z_@a~_1hzrG4@f-IK=3yYOAJfwlnC(j^o?$ZVV)+?PNS3T*Wt%f9tJ73^XR1a>kNA` z1+w2#7}SXD^*VXFPX4@3K2ayXTqhHEEkC^pYvsv0nc`KeXZmPX$3L{B5z8|DTqcn< zNo0E5%$Or7Lr=#t6DDL~He#jyVbU1K*f)FAGAFW$RMOXunHZYMNqxeMWsJC_X1Xz! onlPE3F=HcRi6lm&852*RCS#_@Vn)q`IhBqjM?BU^E=U=JT(gn_(dW zdjx*qLHH|LMBuPv@M(&7u^1J?zA(p+(NmD~wot0pue0{wUo`tII;Gjc>H9j$7+^(&@_eG#fRW z$NgsX06L$DbgKpzqjZgQpniM&_=evN*s{Lr#+W09InJ6V8^jm?J`c|73<_A(wt$tr zxB{PZJiaXg)rr8wfv~ZJ8k&dRNa8mx2aKOD#MSYMCnGasm`oe-X5p*MV;z6x z<-jX$di_|>5br!rJ19hS3W!fKdIE@VFG_C#&y0S8Ho_c`cu64f?gEK7!~2IhAL95K zo{eRczHwMIfgjq6FamUZ6gZ9z|6H-uv44)I5u21`vw%IJxI7Tw8i=O{Vxdw6Rj8DU tm9i>1scgxy%Q~0M_owWPV?XGj6pBt>C_7hp=m7L)I-A2fRVm_6?+@!?ISK#( diff --git a/objs/signal/signal.o b/objs/signal/signal.o deleted file mode 100644 index 66ff5dd80389879014dd0975ef85189e57fd29df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1856 zcmah~O-LI-6rNbC*1yf6mX`h~rGJ;SDp+hmu-L#JDil%hBIBBDlEux&?rv%<2$sa+ z8bUqv;JLk6@Zix?4JcK5X^%Y>dJsI+TMJTJ)9>w0bd5?M&V2LD``+6(Z+7G7-@E&@ zj0MgxOc>P|byb+!FkqK3=E!l16-f)bBe2YolhL4jWSrY-#`e}89}Eu<9`f>POgxM7 zQS1(;3*@Y3GX!PhJYw0VX2it?=STCE^V}5vc{-raM7ak$$d^h^C=r{djY-Xja{lD; zffI{z4`#&X3i46P#j^)zJd%=gHNj)1l2pBb%KF?M!?h~%wd0)r5*rvx2$u_;m@i_u z?UCwP4F(xKl=fFqM>BA-hOs3e;@MLSzu^&XPrXRL=l|;=+1Zw}KSt#|9>kcOXR;IC zbEcQG)5`%VcbWDIJ>4j;qqswgHLBDJFS(?nBp1>v?lQYql4hv_SKxVza=w2{e))Z^ zR4U0%|CY1qe3T1AhXFZy4Lgd?rd;Tvkkc~xs>}E9$q%-qS@eU+*^SYWbvH!kFV5)&#qLV2Irt9quh9jeYTEPk zbju&8In+SkBL-8cwxnWAwJByiom36ms%IHnHIt#vuKSUco-yzJA@j7@*Z~h|4 zJrCX2#qalCAjWQ;;%^rb^uEE4#h>@~S>VM03uJ~U)&)~)W_JP z=HRQUz9zZ`GSZ>_Y-Zoni8@cz>Cnvyov8Oj-5cl@gih3bOgD@g(Y{bvU@s7VSFdA2 zZJ`z*ey>8!KwMeNFXTK2z6-1aZUf2x4M_eCU^V!AAijv6w?NAC8rTG!2a@hNun~M% z_`^Vao1uq-hk%rq&PRIsZYkd=kV@+n*d`F*?)L#D2#AnLG_Wq;|CHe5BcooDzkI&~ z;3AaVjC$zjw=4Lw3ZARr6zh+VR`Bi$PUrUPuT^lyO`V%+RI?^@Ws32HVnlV7TUuN* zY{u=lYU2}OT+L`iBbI6_wr$c9E^ir0XnIsc!o#^`E0J*?NsRNDqUnsX8H$IDPvF0a g9b;TGG@Fkpmg<&}GPt2ma$PgP{TbqE#l#{10XIY;hyVZp diff --git a/objs/utils/env.o b/objs/utils/env.o deleted file mode 100644 index 7db67a4fea4f183be125f2190913128bf14e5e9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2308 zcmah~UuauZ7(bb{&1Sb7WRobOMI8EI_D2w9wvgd29MM3P7588{yWZX`Vfp7xGGirB zNH==96cp4)LG(p@*@MUs8IBIRhk|hrBM*7V!^B)r=!+0WxA^<+IVbIIJN)Q(zw`b7 zcY5;sy?-7|Fcy1^;R754#`obf1q3_|Tp`6HV1*n2FOv^I^N7g^m6{1ra~d_WkRZfa z^W0g@ZBvs90Z=^hy*kd=lOz~pOGGpXVOMKzzH~teqVaT`CzQVUxb~D(l{*q5Ub$GY z?3$>TKFOCBgn0MNNQuL&s%uFJ8;D1uG@4XBJ`_?2CnvJ5Rdl37w7#~AcTL3`sCbHH zs5__6L|+9af#E8Q18f{fKuJk{9(5R?vvJ0L0;RrZfjfcfB-At6sr$e49QXd@t-ll8 zYYwJ(10}an@|Dn+RE;F}>m6>-ZGfK(k^>ARje$hwF{S4L9}K(R zf2idiTI-?YiN(b`F9*Uc?T6cp$~C!~b_4LHB3IUnm;C!JIh>u0cx(~02d zNC;h~$Njg_O)QKd%^=zjOL#PUVSXf}<@n|n8k?G5Q~Ny;_9HJ&LM^D{W4*t{xIMTY zhs$2&<1+oMRqJLKGsF<-_Jx0mz!PcL?6&4iSp`2=8fxL%d3R-JFSdnc&9INGY7V(1WF^`4!d8@iLTYyDmz1Ra2>)4n7y$oDvdjOll(X34`z+Q- z#1fMe@y}sJ+kY0A*rK5hhpIltP9I8K+4t5#JjWrB-5KCHWvA-g(~d4#`o4^(>fO`s zOW5_5ovM46-6Y;k{C}msMt_GuzW~MGk*r9t5SHN&X7x82Iy`2sNHobV^Z>P)={M z0Rs)5;`RRWir4!lQ?l3l`w;vNclKR`{~^ME72%r^{#1m2FTx*-@MeUsNBCzVJQGgo zlBku1<+|3VlB?i%y2eDsEnmP7qHtWd> Ci|8-_ diff --git a/objs/utils/error.o b/objs/utils/error.o deleted file mode 100644 index fd201f1a21893ce5b5f8559f782849b6a1139112..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2756 zcmb7GU1%It6u$Xw8r$q@4JZg1#flG3jbb4bBB^$D5VwTd1q+sOx;vY!?#?8$Gc*xa zBT0(G7zyZ$^uhX|C@SW`hazIFEo~9B`?wE+`yy;G!ah`3{Qu7VNp>gegNMEI-E+=& z&OP_e*}Hr5_h0|s!&pxr!vmuqW2hGo4FhsF#vA1L4_O}&jt40QqIBeBG$7aLX=cm5S8!&e!8AMbsXXVU|6N(9ikIao z74>D^(wvp`&A>TZaB`;k?6GYpCP}%G3(`0-$QYH{7-CGO?nr5x_NXaTf-E6^UUsh(SV&l0CT>gAnE~fQV<)7$g)!gO;RP$@hOH zV}w5&%Uk0{SZNty&TMWeY1%rb4VGBlPt)tE z7O^)!B_*nKtk6))Re7;}sj4wR$7o!xW6Rf-w~l=Ec)k~SzEu4hPfMrLOAcHKbeAEN><#*^XZx zX6=5aIWT*L>^4F3?D+ucvF<^T+vQ`S;MH`>hE)0Mk=Ir`ero2s0h@f5m zX}WwN_X^nMzf;&*&nqWb&qA^%xo^+VI#~C^ehFmg17Xi$S3#HmG=&KAN?hGa$j9}Ux8PbJh{JJyb|`0TJ<~-ce-u?aii%E z0nwlOK_HHBlrC1X{|E&?rTR@^0{Ar$m!bZdw7&_2=*vKSMi=lPo+I_=r2Yhu;&f?0 z0HnAPsW-)&(0>8KH2S^NZ%DliLZ(8C z;(h=Zx*LeE`ZEQcI7+DZ+Vu}&`tg{4DyH8T)9sl4Nlc%N>2ooCA*M6a_B_`!=kVXk zX8?Bwe`2JO?hj_>eG`AZidk!W{*qg8U;>>74pT_G{h}NK@cKB z7zF3S1CWiK67mnp()5omrUy{?Pe}^`9{3Cag_V0lGCGEUPItC6$|1Sfj6yd zyF2Zqmg&9Lqh@PM>pN?{M(A}UlOc3ymJp&-j$?3%)@ei6JIPM!^W*cid9H>l3&nbz z(u}@jsjFB^aJ#K|O3cE^=uqNIm}3Um0A2&q9q+>PM!n=T_y5{`)&Ht`KO@zDdZ0{v zpk_iysQ%zPDOqM9iE^>2=6GV6?v``BEFTr*C1sAw8Bi=gh=(JXiHE&+K|dZUvyLHd zRj#iViZ3sW#breq8LHYk8gA^{gMRE|pPkNdH9s+NKJR^q9=xw#DPDX|Ly3RxYh-EM zYwsV?xqde>KDJ6$1j{!U@YnXN5WhK;C)CezJ$Q0Y1l=fz&di0cpt1!1JiL8KzsP9B z`a-PEM=z#so}J}=)VBt&y0(#IezI>Fns^f{i$J`Km5}o<=qLUo;~U1uj7`SdzykW{ zeOetL>6C$xvf~ggBQGNG_g>^2VC^zil*dMKKA)e+g|26M`(akwPLqz%Stm_3$IVuI RFT;N?O@-b{vc!eh{}-@E!0rG5 diff --git a/objs/utils/list.o b/objs/utils/list.o deleted file mode 100644 index 1d4c29aa9f61ff612cf35137f60a6007f68f6488..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1460 zcmaJ>L2DCH5PqpK4cfX96{-lyL9jy8gQp4#DRyB61ELl55MH*)rU|A=NVYZ<0+mGR z5(EVg{se!5Ck;gC(I4O?7a;+K9C8RA8ozlv8xw6Dm^U-;`{sM|Hn08q>*w*j5WZ6a z3)~M6&S8nbVVB{D1kAAa#Dy($^lE4da?&G{(zdF$o4fU<{$%q{?PX8-EYhRi78a%9 z7Y81PqLitMUCtG@c~i=1Jx}K}<1grf6UO6?cc53?DVZr-?iTiPg|w9SH^v~6B+qrg zn}^UN$&NRl5L1#;T3MMXn>&`<@b`Qj*89kMLFi15cvgrkLn_?Fx&&8k+8GgmlhL8H zFL2QSLK2ZaEBeI)_@vm+I+MtHw2Kh1{xdG~;OU^{#tp zbIm)w3pU|h!&wg^M;-5ji<2XXc4k!zH_#;9^PL)Pn>4N95UqRGBh|va&UNO}zDqu)etqLr3f5IaKzzjI2sviH1 zstSwD*fL+S3)Y^O=FN&NWT{--#=i$?mCMDlw5mDmxl}WqmRn}(nO9eG`y%Z8q$VCVqOuyMTFG(9p2j+eA&3td(?0b8DcXK~al$awd@D%(9 z2YEPb8UCF4KkP(mmx7j~C$V#1Hm!Xx@J(!Zsrarm;WoOJfcx<*0UA8uT#AkutZ7}{ z-#e&Oef_E4d|%(z`t?g&V;l-82>wi(Sx(RoA)A09T6?>Cr%~DSEdO&pdk4FwObUJM zw{dEL$d+QoGpspyd@asHO2gUsP|kms{a3)J;Mh-Z;M2xhcDdT=(tqPkxBbfvua(NkPp6_F(*rkKSkpe6@G!_hzc?-jxk=6H z!mcWJoK=!}@_)~>G2TsXyEwq81N3}ivI93NWRUK;QEOm(_gL4z7>!2pcbq|r`ND3# z+=)Z8d^0d}b;qKSXP&7qNj-7+mJ)$Vs7LdeW2pFzR^X@iI2b1ViC$#Y*W|`xTK2Jy ze?(W{h|f9tH;FNsRZ%v5y#7OwvhfAPSS22E`+>EY~i( zaxU>$`r=rC)$BuFK=Ej5J|@HqE^G>Ikt$MKLqevPhOG;xBQTlEy;NY_4%gA;Ga>$+2)|idTqDDB@5z8;dYMhr8#1c%%?Gu`C#1hM z@Ym+UG0M#?4bq<|8Xu|lYLwL4Al(a*I-;a_qc~rMNZ^RtzK@qUM74YZwS9__SM0>0 z%AqJ+^|_FVV)~``%JKESt?g|F`ug((s<-t^w85vuZm$E+QhGzB ze?1Za7oG#0-#5T%Kft;Q&>snaZ@@D$gSLGG)KT@N^zSMF=;0F)R44L^$XXuG8##vL zf5K8;$H&42$kc0bd0~w3g_&51-j{_<`DMq2xs%>#Y?I4unAM)UxG|k-XEJ$b?_$4& zU_URtQT;ZC%GJK#_HSooGp%h<$osk6JB&sCR+nxi5~+x|j%^!7$DVb@Z71SMCB#5x zFlpciqub~xB}D(|%ONzH9vm7?4~!)Z;m#NBZlfo`lXGg)6PRF2j0}yWlZIW+ms|uK z_rt@yGojfjyI@R%v@;u*Jl#eyU$h0!9eX_Q*f}>yLgk>6>QRPsYRw#u3O*l8S#vXF zsTxwzE?uVyjK&D0+ zKMjpfs)pAe*&jd?Z;kP%j8_>iGcGcoV0@nOFyrSKcQ8K6_z>e?u?g+>Gc@gYlkt~~ zKVtj=<09ic;}OO~jFXHz7&kF~gdSmf{Bvm9?-Ry17*h|){~F_07$+HbFm7c`H;ecW zP(^b diff --git a/objs/utils/tree.o b/objs/utils/tree.o deleted file mode 100644 index 910682cebc822d38d73f52a774999198de8895c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1684 zcmbtU&1(};5TDfAhFZ-E7ODu%LBUHTh>8~>!3N&JLMaXOQl9H((*)8cY&RH$LZMZ< zEJ6_v9{mf%n?0#eAxA+x^ys0&1}fyxLy+3~o89+ns>Tl-m^a@uzn!^e!36JLrQBP%2sfd#rUl1e9g36SzowUUMNU;d;Bm6 z#ZU#y%6S9*_|czXfNFiDrIdC_79DfmjtYLnx301`RKE??PnmRrsHAn4SHPp-@G25R zGyrDeHtc@`9K7!|mQ{d6JxzkUiE%QkE9(yZQO^tSlUUhF3U8_7)puVrj#p_M0hbCd z7l@UmfD#Xe*?e^K0}{fJpW7AwMBrsdAv(g(2f`a-k7#D&VQr)vkze_FFgr94Rl|~$?r?u&4;(*w0eLOfg5dKozuWxJI zTgVT9XG?h5By`vln3#>DF+ZfA+XJHX>}K(DVr-QMP+}}Y|BcT$iqH60e8ykl3-1ft z>fmPhQ)pesfv3bpL@QA`kH;3^_nOgWu%+N-w5}j{&PsSMcg@8T??6*6Qo`3#`&cSJ zJ?;@VR7J1&3l*Q~QGX`#Q|$f}#TrJ;7#@tTqvitq=fRU-0U4xmQ1+DZu)kfVnp2&_ ze@)tsQ+1@>D7z$G$F`+eC`hL~SL(Jac2S#F#Wo$4YB{#)+7g~3;V)_1I9+L(l}gnj F`UZ$8M Date: Thu, 17 Aug 2023 19:59:06 +0900 Subject: [PATCH 49/57] . --- .DS_Store | Bin 6148 -> 6148 bytes incs/minishell.h | 5 +++-- incs/struct.h | 5 ++--- incs/utils.h | 6 +++--- minishell | Bin 0 -> 91224 bytes objs/Libft/ft_calloc.o | Bin 0 -> 804 bytes objs/Libft/ft_isalnum.o | Bin 0 -> 788 bytes objs/Libft/ft_isalpha.o | Bin 0 -> 680 bytes objs/Libft/ft_isdigit.o | Bin 0 -> 664 bytes objs/Libft/ft_itoa.o | Bin 0 -> 1304 bytes objs/Libft/ft_memset.o | Bin 0 -> 728 bytes objs/Libft/ft_putendl_fd.o | Bin 0 -> 904 bytes objs/Libft/ft_split.o | Bin 0 -> 1804 bytes objs/Libft/ft_strdup.o | Bin 0 -> 1000 bytes objs/Libft/ft_strjoin.o | Bin 0 -> 1100 bytes objs/Libft/ft_strlcat.o | Bin 0 -> 916 bytes objs/Libft/ft_strlcpy.o | Bin 0 -> 868 bytes objs/Libft/ft_strlen.o | Bin 0 -> 728 bytes objs/Libft/ft_strncat.o | Bin 0 -> 1140 bytes objs/Libft/ft_strncmp.o | Bin 0 -> 852 bytes objs/Libft/ft_substr.o | Bin 0 -> 1220 bytes objs/builtin/builtin.o | Bin 0 -> 1852 bytes objs/builtin/ft_add_env_front.o | Bin 0 -> 1568 bytes objs/builtin/ft_atolong.o | Bin 0 -> 1744 bytes objs/builtin/ft_cd.o | Bin 0 -> 2756 bytes objs/builtin/ft_cnt_args.o | Bin 0 -> 700 bytes objs/builtin/ft_echo.o | Bin 0 -> 1576 bytes objs/builtin/ft_env.o | Bin 0 -> 1084 bytes objs/builtin/ft_exit.o | Bin 0 -> 2588 bytes objs/builtin/ft_export.o | Bin 0 -> 2004 bytes objs/builtin/ft_export_check.o | Bin 0 -> 2440 bytes objs/builtin/ft_export_print.o | Bin 0 -> 2700 bytes objs/builtin/ft_join_cmd.o | Bin 0 -> 2320 bytes objs/builtin/ft_pwd.o | Bin 0 -> 1116 bytes objs/builtin/ft_unset.o | Bin 0 -> 1164 bytes objs/builtin/ft_update_env_cd.o | Bin 0 -> 1284 bytes objs/builtin/ft_update_env_export.o | Bin 0 -> 2640 bytes objs/execute/child.o | Bin 0 -> 2476 bytes objs/execute/execve.o | Bin 0 -> 2428 bytes objs/execute/execve_utils.o | Bin 0 -> 1812 bytes objs/execute/file.o | Bin 0 -> 1104 bytes objs/execute/parent.o | Bin 0 -> 1212 bytes objs/execute/path.o | Bin 0 -> 2512 bytes objs/execute/pipe.o | Bin 0 -> 2012 bytes objs/init/init.o | Bin 0 -> 1776 bytes objs/input/get_input.o | Bin 0 -> 1692 bytes objs/lexer/expand.o | Bin 0 -> 2080 bytes objs/lexer/expand_check.o | Bin 0 -> 2760 bytes objs/lexer/lexer.o | Bin 0 -> 2544 bytes objs/lexer/lexer_utils.o | Bin 0 -> 1256 bytes objs/lexer/quote.o | Bin 0 -> 2648 bytes objs/lexer/tokenizer.o | Bin 0 -> 2104 bytes objs/minishell.o | Bin 0 -> 1020 bytes objs/parser/parser.o | Bin 0 -> 1688 bytes objs/parser/syntax.o | Bin 0 -> 2828 bytes objs/redirect/heredoc.o | Bin 0 -> 2572 bytes objs/redirect/heredoc_parser.o | Bin 0 -> 2860 bytes objs/redirect/redirect.o | Bin 0 -> 1644 bytes objs/signal/signal.o | Bin 0 -> 1972 bytes objs/utils/env.o | Bin 0 -> 2336 bytes objs/utils/error.o | Bin 0 -> 2792 bytes objs/utils/free.o | Bin 0 -> 1208 bytes objs/utils/list.o | Bin 0 -> 1488 bytes objs/utils/list_clear.o | Bin 0 -> 1056 bytes objs/utils/temp.o | Bin 0 -> 3060 bytes objs/utils/tree.o | Bin 0 -> 1712 bytes srcs/Libft/ft_calloc.c | 2 +- srcs/builtin/ft_exit.c | 13 +++++++------ srcs/builtin/ft_export_check.c | 6 +++--- srcs/execute/child.c | 2 +- srcs/execute/execve_utils.c | 6 +++--- srcs/execute/file.c | 6 +++--- srcs/execute/parent.c | 8 ++++---- srcs/init/init.c | 2 +- srcs/lexer/expand_check.c | 6 +++--- srcs/minishell.c | 6 +++--- srcs/redirect/heredoc.c | 10 +++++----- srcs/redirect/heredoc_parser.c | 7 ++++--- srcs/signal/signal.c | 7 ++++--- srcs/utils/env.c | 4 ++-- srcs/utils/error.c | 9 +++++---- 81 files changed, 57 insertions(+), 53 deletions(-) create mode 100755 minishell create mode 100644 objs/Libft/ft_calloc.o create mode 100644 objs/Libft/ft_isalnum.o create mode 100644 objs/Libft/ft_isalpha.o create mode 100644 objs/Libft/ft_isdigit.o create mode 100644 objs/Libft/ft_itoa.o create mode 100644 objs/Libft/ft_memset.o create mode 100644 objs/Libft/ft_putendl_fd.o create mode 100644 objs/Libft/ft_split.o create mode 100644 objs/Libft/ft_strdup.o create mode 100644 objs/Libft/ft_strjoin.o create mode 100644 objs/Libft/ft_strlcat.o create mode 100644 objs/Libft/ft_strlcpy.o create mode 100644 objs/Libft/ft_strlen.o create mode 100644 objs/Libft/ft_strncat.o create mode 100644 objs/Libft/ft_strncmp.o create mode 100644 objs/Libft/ft_substr.o create mode 100644 objs/builtin/builtin.o create mode 100644 objs/builtin/ft_add_env_front.o create mode 100644 objs/builtin/ft_atolong.o create mode 100644 objs/builtin/ft_cd.o create mode 100644 objs/builtin/ft_cnt_args.o create mode 100644 objs/builtin/ft_echo.o create mode 100644 objs/builtin/ft_env.o create mode 100644 objs/builtin/ft_exit.o create mode 100644 objs/builtin/ft_export.o create mode 100644 objs/builtin/ft_export_check.o create mode 100644 objs/builtin/ft_export_print.o create mode 100644 objs/builtin/ft_join_cmd.o create mode 100644 objs/builtin/ft_pwd.o create mode 100644 objs/builtin/ft_unset.o create mode 100644 objs/builtin/ft_update_env_cd.o create mode 100644 objs/builtin/ft_update_env_export.o create mode 100644 objs/execute/child.o create mode 100644 objs/execute/execve.o create mode 100644 objs/execute/execve_utils.o create mode 100644 objs/execute/file.o create mode 100644 objs/execute/parent.o create mode 100644 objs/execute/path.o create mode 100644 objs/execute/pipe.o create mode 100644 objs/init/init.o create mode 100644 objs/input/get_input.o create mode 100644 objs/lexer/expand.o create mode 100644 objs/lexer/expand_check.o create mode 100644 objs/lexer/lexer.o create mode 100644 objs/lexer/lexer_utils.o create mode 100644 objs/lexer/quote.o create mode 100644 objs/lexer/tokenizer.o create mode 100644 objs/minishell.o create mode 100644 objs/parser/parser.o create mode 100644 objs/parser/syntax.o create mode 100644 objs/redirect/heredoc.o create mode 100644 objs/redirect/heredoc_parser.o create mode 100644 objs/redirect/redirect.o create mode 100644 objs/signal/signal.o create mode 100644 objs/utils/env.o create mode 100644 objs/utils/error.o create mode 100644 objs/utils/free.o create mode 100644 objs/utils/list.o create mode 100644 objs/utils/list_clear.o create mode 100644 objs/utils/temp.o create mode 100644 objs/utils/tree.o diff --git a/.DS_Store b/.DS_Store index c8c2522e2b05a510e1091563b86bcac4f58dee6e..9a0a70dde31b9f09919d8d3aa583cc0ffdcbcced 100644 GIT binary patch delta 151 zcmZoMXfc@J&&WD4U^gS{WFAIoR$m4N2FuAhjN0+LL9G8!0AzDAfZXHI@{QcivnP*#9}fl(7p2Ma?!LlQ$4Lou4V=^%BJV;GfrLAI@g*|B*dqaxd8 Ic8sAx2K&i6jM}WH!K`hJ%3!heo9{7dvQ2D=+RV=J GmmdI(%?`Q% diff --git a/incs/minishell.h b/incs/minishell.h index 427a8f9..235d382 100644 --- a/incs/minishell.h +++ b/incs/minishell.h @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* minishell.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:05:33 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 13:05:26 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 18:55:59 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,5 +30,6 @@ # include "utils.h" # include "message.h" # include "libft.h" +int error_code; #endif \ No newline at end of file diff --git a/incs/struct.h b/incs/struct.h index fc57ab4..745ece9 100644 --- a/incs/struct.h +++ b/incs/struct.h @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* struct.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:24:15 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 21:54:25 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 18:26:32 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -99,7 +99,6 @@ typedef struct s_data t_leaf *root; t_pipe *pipe; t_info *info; - int error_code; char *abs_home; }t_data; diff --git a/incs/utils.h b/incs/utils.h index ab49e89..329a41a 100644 --- a/incs/utils.h +++ b/incs/utils.h @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* utils.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:32:09 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 15:09:33 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 18:37:01 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,7 +18,7 @@ void error_print(char *cmd, char *option, int flag); void check_errortype(char *str, int flag); t_bool error_back_readline(t_data *data, \ - char *str, int error_code, int flag); + char *str, int error_code_b, int flag); void program_error_exit(char *str); void env_print(t_data *data); diff --git a/minishell b/minishell new file mode 100755 index 0000000000000000000000000000000000000000..ce2d5a3d9711e595a9f27cb392b6c3c3d12aa8db GIT binary patch literal 91224 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�*|J4c)0ftu+lw z+?@wsod@5duqW@I8-dn!Fkl z7_}h6qb7-{UN*VbOG=2;qIiK)lOe$;leUpc12T4F;-)r-(NmL_psq=45ZC|`x3X!* z_DtFf92?jR{2JIskPYZXiUIqh(Rv;gHGE4DTjFTZST>Ly#fgQ9jz??!VRM{dNYu}s zWN64-;)(u)1Idt62T5trNs{KsLDJ?NLeky|go%mfM$}BEgw;&i(!{}8cF=i@rYC0h zFvqb8Wg9U~M)L*73oOeqfIsdWU4>9_PMB13Oaztbn1+xgNpi@s;bj7GMwBIifU^8D z#H$GjC^K2tQeDpgm`yVzrfCh6Nt)p^CcGdw0ff1|5TSuJAZP#+CNz+Q5KWr#MU#|} zBGV>J&LobNY-C$NM7#NmlRm>f;&6lWh`1msB>49#a;4hiE1)%@a^_5@$|YY=qektcIU~W6#a>3`@TCz)b7wF%Uwb zJiX%Sr8&LAsVahth#kw3mmKjJ3Zi__EMK@@kIbSPvuF4^Kfte6$D9lzSe!lki|Rzs zATV&0(2=vi3okk|VchE00*@e2pRAEU2Mgg^ex= zs*=<&v6h;N=Nl0JsivH~8jF*S;YZhbF?^iL>xp#E@w}X_=j7;ty*+BrIb;WU9(&6DhG|(iDtA5O*UMJ^FKKS=4A?4$S4(~jnfk8mNvb2LFR~A+lXUP z!>^n)nK>wz6?oPcmE(2c6xCsCdk+5*FAY zR^H8OEPS!Fbxl)rbzEh|E;Wh6fZlouJ@1a1iOiF~2A)pQ%$jvXPXf`4c#PK{jK$$0 zxM8(9USHi>w>EAp6x*ef!i5_~e2sTRYvvI$=v}Ddz+v#*A{2r*8 zE$pcw$f}^S8iuUKwpI!+o5#gV*C~-0N7pQ_OiCWQZ5KG^fp2)4GT$(`YkB!V{{BBc CZo^Fg literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_calloc.o b/objs/Libft/ft_calloc.o new file mode 100644 index 0000000000000000000000000000000000000000..15da2d7723598418c806bd2e34b1cc7be5b77f03 GIT binary patch literal 804 zcmah{ze~eF6uwlcqOIxRprDw+(GEH}DjK-Kf=Gofa+WluLeol2u?PjBD26Wn3H}E< zc2=Qou8v)V3JOjV9Mtb6cQg*-N51zn@7>G0Jbu1?jWMQ;FbHrI?2=)Cz$~~*{vUXd z@hAC?^3jtKsV_kY&u)5=9r<~)kRSTWDoca<(JWU9#_*7HN=iWptL_{YEl)IR#|O2N z5L=rnN4g>%L+Uj&p;>OA<)~p>nZ|r}MU>s5V@DAoe$RKI`bfPm`>FcL;gMlz1#$)q z&(bGY5+u-}6z{^I?+c)ppi$4Z!8oXvsCF37{b%oT|CzU64eqzzx!)M@jyd4^wF##; zpknTueco>MnSPcgw`T?vep!H6{@|TfKUQ)Zm2`4_?&ks|0^Yti_U@=6g1k4mS`}q% zTAJF)4%3<$Et47>zrK|!H|f=d^1a8$Gq!9k>gi#$S`+JJ3COtA6%`dxCV=^%LI%lF;AclYl7c>MhMN)c%zgdZ>p+_K05uo+;5{XgtR z;!iRs@==o*T$fEL-){P$4*f!Yukh~R(KIbxR)!iv>KF^Vf1HLRN1qtb{J7=xIb4Wt_qt{Ph6THszjQ3377_g zwe)dH0&Kh}$FCuHf6w4$F!BdILk7mVjOYx*=>Pt^X6MChzZ;!auiNUqa#FiT`q>=B zP#}%KL%z=w-uS|xdChLVZ?^A^{W~6rncPpXtyq|*#L-T6NNXCJkxq?WV%9w3vw-^@ zT6Dj(HffwE)-y@T%Yw1boDRm3+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SOFEk0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7kxfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw$ z%29yPOc1v;0BNXGfh+`wk5A2rPb*5yO@)ZX$D_J01FF;kMnlbmav8W87+^}kLPkJR z0*JwO@pCb-0Wk=GECq>oK;1C|NDBb@K>Z8>K#UAPdZBJb7AA@v>e2bMv-U@G?GH!( z9+1^QRuq4q2!xf$-y;TLRq^-p09nUf|A1_I35qfx8%Q#AyZ(ti3}S!*G+r>A12PZ< z7^{L97%K!A1$fvwCID5b0L5g0xZ*zqz~Ys`kx!tF$(ff8qzMXu%Gp2$^CO!cpH>o| NS)7+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z4ETG*fLeeoOa6WyAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag<#WTt0=Qwad2 CK0yZn literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_itoa.o b/objs/Libft/ft_itoa.o new file mode 100644 index 0000000000000000000000000000000000000000..c5f4b98c5e4c555c2eb10b8a26156cb22cf513aa GIT binary patch literal 1304 zcmah}&ubGw6rR-D2CYrN7AgoX=)r@L;zc|Njm^LaEr?Xpk+p$w-NhL`ughIiVf;3w&|muOC?z-HZ6Bb`gu> z7-riMhIT2M~mruhQRr(JfLu_&cN_pnYuRaxQ^8-bEg zQ;OFx2c7jh_8IJ`XHTFcR1+!T&s+sT{wvRf`$JS)hFk6mlXr#7ec_dTp9)>x_ISIx z7ZYaZ6E#v%KpLW2Zm`7bF~mgu;REDUiqL+{^TqB*x)ky2SX4ewt6;I=l{;y-ldkUdGH5tw9zCi}j0>;m3pWtE zgeA%k#En+MoNpft$5mTV{bDTbCvI$miK+9u<=~LF$VKNs4}QqIbmr#sez-mf)8j4N zh|62To)5y&=Ywc!)b1DqAdh33{`f8rn%__a5|?*9-d);%k=;7|AdXQDq0WP%Bb6|E zEjx@9D>v>a|wv*4YKRo&PivR!s literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_memset.o b/objs/Libft/ft_memset.o new file mode 100644 index 0000000000000000000000000000000000000000..c7f67568526212aec1bc314171a52270e870f45a GIT binary patch literal 728 zcma)4F-t;G82z4!Mp-&E6f`*W3z{5@dT@sxL?{RmSJ5XnJPmu21c6e7HiwKHq)%8iEd-chC9mch7ep?>&Ehd_{?j8Nve$gLf>FAg}_a*#Cj9 zuD|FW-y@TloXe2XwHvOdJ)btS>8bbCz80LvcbOne&54GPvQTx7@&#AcD<_AQqLe$^ z!Tp>zNxh~*-d%36>Z?LcA*EfGrCQ#xy_%H2@7L6=8+y&^JZ)*7sO)QA*TH3QJS#p& z5s<+{xqb`5x{C*UoTptd2tMmGSpSdC2=yk^*+|ugLS+V`V~&I}`yFf8wqD@|LiI$e z_YDYT4aE6~;uot(zA~|G^@Vy8t$Uu1Yt3Ie7RrUVpFgYX&!#v@uTi$Y>;t zL@YXcjjlD+c}$Kc1OE4>&BerJXlo%72tj*Y5S>Jg;#UGHCa(EnTK!Z~A5rvVBQ=Y46l}be?4<-KkVhpyiaumsS;QGc)YBT+45<}L-~Yv?@n1~& zEp7Z#-S=wcQjL<8F1WldVhKt$6L@tKWa@tD!}t%z_o`KSBY+INs_}1C)=Xu77za1f ziSaYfjl3z}r?>CIpCo0ZW0OlQkWxYHY@K4KsaUGNyXOkGCXpKlv)>`2|DP5IQy1~2 zfrJzRTOfY_^eQ4|H?pL9F4WTqGNZ%6rT4G;!W#e4z)HOZ8<-!aJ@1W0N|qB(uzEvEi!ey0T`dSz5@1cD4$&hO1yy@sq>KNTLZfoch zxE5Yj$B#*$*U&)0v{E|fLfML~t*TSrM((*BoXgT291#2}T%YI40=L4I()-QLO3rw}P43EZ{f92&d3J1!MdI-r76l{*%;*f?8koYEaPE9+p!W%tnSzbtJL z<8ZhhS(IY{9XnFw`cZCGFW4r+pre1|%2%Aop}p<4{H$WNm7alX`!uMw_0FiRU24o^`LWkCB~}PR_Ht;z5ag+$TOS{8HS#hW z-oBFeuDqAvi0^193ya@+XazN73$TDfk6^(u^uWVg=-ve2Ytp{}i?NNGM_p|v z9I`=aVO;+*Y$F1b1VCD$V6J$$>nCZVR&;JN&ade9GOP z&qOkn7{qr}7^zeuC5+5)nu&q57){1#Wn>J0Nub$>e+4G=IM%cvES>5%lO7f`;wW(& R>4|>BjqA}^ETLmt_6KWDZg&6x literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_strdup.o b/objs/Libft/ft_strdup.o new file mode 100644 index 0000000000000000000000000000000000000000..e6204e0ead8c69eca6ccc054175bca65321d4e85 GIT binary patch literal 1000 zcma)4O=}ZT6upUQT54-jP^i#F1Q%TxC~oXVXd8=fp&+F~H*%Ryrfne2gvrFFg+L%E z4ujybD{<+s=t2d%^Dksmn1zDN;==aaH}9oQK=8tO=YF1f+<8C#{Q5gdl(|7TfE+ND z#ZdxacY$|O_=gQleo-E$Rp&l8zZ(fV%{0}~>vqVFfdwv?!TH=)9t z8L7R0yfiGu-9*K0$Xrc+Nr&R+2{Z>PI#vB|rB`3Koz}<}h|GVL?~K@O6J?GzDAOrs ziZhc_AJBCl`2}F*A~pLiX!Ta{ZMHHiI}>vNtgieNjQy0?z}W4b2Pv25z&YeWvcvp6 zZ~>0BM{p2k(W9-B#wJSleyyEE_j)`#78CD;j2B*an}@{Bz~9ANVlN2%fW1yFwDoGc WY2CWlAk*RcRZpi~r(XA6XkP-A>waDU literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_strjoin.o b/objs/Libft/ft_strjoin.o new file mode 100644 index 0000000000000000000000000000000000000000..728f1072535df12164cd6ec91597bf41bccebfed GIT binary patch literal 1100 zcmb7D&ubGw6rPPSU9_4UT2SaAiiaMI6i>YrDt2KG21G0LB4gZc+en%%+YJUG&=Qr5 zMerZ+fAHu@EdJ=tUVF?%u&_c7g26-M_cCwVjiBIzH}B{7?VG&G{;%&xV?sEm1P*8x z>Sk~hp^%Hv4i)|)54bi>7>JF*DM*QrM5#Dv#>O}CqPMho5?k*FJH$uW4hB0-xvbbC zV?`-{GmfhDRZb{1%4d0oSoBQM1yjP~9%sN8u5VQQST*X8tMz52ZY>-a$>DnzIXMkJ zqI`pcOCyv@1#4<0s;mbF@aKF*2F){{WIhhXSs~V}PxdVwjR?%zl_?YiJ6Rx`fuDzZYhCRssGku`|YzDV9v^LWEwH@i11WvSti_{-)jt>RW!+(R$XOXO=2v zAvJn-|Ev(3HfOvEUIeFW?io=630}&61wQC!2ahX=*cYo{9^55ojOGvgC$Fjar;2`6 zRJ=b@@ouW(+CU}yqm(-;mOT`yExIZ} zd5(8({`6~{;%|Q$?495ez`lRt_IdAB;m$&dOTbkS|3jJI10#D_FYzKbcboao3q>9P g7QoyXAHqhcABVxCMm_wK`%R(!AlMG@Qm^~sH{lYW9{>OV literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_strlcpy.o b/objs/Libft/ft_strlcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..ff3ef2fabdd3d7b58ead714025d2cffe7c2c503c GIT binary patch literal 868 zcmaJ+qpy1%(;3BA#;G$^Y4hkX)E^?7JqM%h`#0M0WT50U!BCd}9 z1ShEv#LZF1Ef$#yMz%?7a0HhljVg85o ztJtg3HIAOd;Jz$UI@Yce*a4q27v}1`X5A@+`|&Q^z;7L;LlyFsl!=Y?&837Rw^KW- zsic%sli~Q2BE3pqMuJ_MYW;}dsf(1>id?pr)~&!Nn<)mc@KE*}*n@8~hEE?f>S+cD3)eD!EgDYv$DSANo5;Km3O8LA?zSh~`J%|D zJ^yzI*L)S3bdmII8+wR5sB2bA2OuSGI#dw(X-~iD$b3@He9@12J+9F7ivk>{=F63) zXB#+;@N}%3?e~ o4^2`3VI;~45WZI^jEBAK$SucSOKk4_*j9?9W!oDz9%<5|Z&A98f&c&j literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_strlen.o b/objs/Libft/ft_strlen.o new file mode 100644 index 0000000000000000000000000000000000000000..0d510e1247c42e5483b7986b2a78f3a39dff8e02 GIT binary patch literal 728 zcma)4&r1SP5S}$tDQ$&16m;;=U(m@zhoTnVp&-J*OU#O{7^KFwkpzO!4-hXMJN9RE z6gqh98gvfUL*P+5WZ$@N)eb=)d^6uSJ8#~wyw|VK?>Lb$M+jgPd=`-bfi*BI{tt9@ z{Z03T9y3WOa|O(v)9?Zv_?(r`O?{|rEo7eTGC`DD6Ai&!tXIzqMUO9QSEscS^ZwrK zcUzl`&e=$?%OkR06>17*r^02oP<4VD^Y8syx^-LUyq>2mEfQ5iEqN1M1;=-p3lswd za;emxAVhZ&#N#|2g0qmbA!qCV(Z{O&q1w%X>RG<@tDEM4%)6Axo;8$GUv}(^QXOlc zItPAhD?#S%a!~Qryj-r@mfwFLjYeqlVTQ=VlNUKAu*Wg{rGb&SqNQ$mDHs+2ae(J#%Wrj_cN4JdBb< EKfSpnJ$6#~vaippawm(D=>n+jJWc2WDsH&3xa??!5i+=lAIhW7-tM z13C>&CGc2;LaspfDe(`fsN51^AW;lXMoN4nQaWbM3H>l$I31qJ#W1$8ubB7zobrZdo2BG zp4=865?TM4f@XctqevK!yFxqi_(_wWG!8Xk3_sB*VbbFrFm%8$N3{nl@1s#>tJ*%Xo;O73SJdp+Ioj@1rqwc9W^N|+ z7F9I+Rp^IPa6_Vd${t+GyiPovryY`fgkrb3DlGPuv%+|x0E<=UmSM5#91QI=xd5Av zO+ohsVFERQ+zewCF?MevzBUmPRg4ZlaK$cf;XX^#w#&9OYek32O-JG{vY5Z#M02EXnKiwG7L7K)Wt+9|rQg+Y-7Y-9;ZM2kc@PZU8=OvFnX8~=l) zScs*>La;DrWl9?%DFjQEV0?48m&8JF;N84=J2N|bO!@2WyNfZcgW&@Nfg2*j0BjJL zqWBN<&nha%kI|D6s4tn6R(j9!xEIIxN~{(8>{$`&N3%37$PSwvM9So5W-F1jX zBb$2E;Mr{IU+QO}lucB5J!?fQRsT-dL|K6n@QPF2|P7g6NkyaJDy zI}^8}7=01;gE%TRU~bOwCp+b3JvWXUkXX^L!;r4D)A*yFH$2htME$%3wZI=yP~hbY zP0x2Cp|;p6MF%7s(@%PiUaT4_b?nKG)@!3m7oGG@HJ{UroLU^C-SavQS&`RQ?})gj z_Qd_YzD9mP1={{H)AkI_=IIZ2MW2ni@C-w=FReE|JS#JVaBv0 z3?Ikv#rInADVH5%Ea};#FG5a2oHqR^8-ft% zP>N4t4!Y|qG!2e^7K8Xfy(B34Z_IJ|g_pj@xGZ*MzQg5Qt73HI4zCouTt@d=#KX4EOzzU^d;7P8&STt|N9+7B-GxiqR?SJmk{;}&)+(T@DcwK|tIw?G>8 zcFU@yygSsu!UU8F`icO}kjZp5%wO9RA&1k@8NY|PE_#sS(=|UBwHTczN zt88rRCHkEpcgN7TMna{ZETTW#jg<4-8^-oaO<$uw-M-|nE4|eu?)E``ifl|xqP@v0 z`Np*TKK-alv&~4O5h+hiwx9NTJ#T*0L>s#UK{^gYzmMH}Hy>X~qP!2a$3$@mCzPi> zxW%+WNDGY&2Wh9yA$}SXJHR=B_YT@9 zls>C86z$H?7_{!2=DZsZcsq63_3?Ev4&^I%Y`@P$&dM&~oe0yivX(FlDVvE!Tdd^g a@xWcvw$f&Xsft8)!F0ljcsiX;fd4n;oZHO+ literal 0 HcmV?d00001 diff --git a/objs/builtin/builtin.o b/objs/builtin/builtin.o new file mode 100644 index 0000000000000000000000000000000000000000..ee33aad81c012307d30c46413e7f86e04ff7ea27 GIT binary patch literal 1852 zcma)7&1(};5T7(@8*O!0w9Th;u%@+{|=FR-x`_0F`HzA*XeqZY+3WW&^ zGy;wGV2ME?BhYz1=py?#5VD73AOS{BV&!}+O4(-F_I)2uBqt{tIPfx(hx2jlWG~SW zA4cd7n?RH@X6<6mnvxBrTJr^YcF6gIpb^1RCP;_=jQn)rieamgHJ7u}N}U<|dkAM< z0ur+M9QnLY?<10k!d%vM&71$}pHJ16Qq^yIs#aM^EkN%dI*VM3d3`IwnJwH-M*+}+<`&UCHL;Vv(@2duP^TuoKq>X+VR_G+Vdd55&o1O@k5tJG7q z(n_^b4{6R$9P&kUlt(pkKl1`5kb5+Tf0?O;BwiyCgGQlxYN4$A!IgSgbNHbf`6~5@ z<}_ZRQt#EAO~UXK6=FefpXMBFISOhNB!ByB9|1dPuKyoja+`TPCLX!{j*K*!MmA4o zIcHO0E=?tC*0cc&`67&U1A)Gr;46`zgTLdi$fM8pXm5T{a(+>4LkrW%o~Fy)_k7S>EIp4Amgs%1F)Ee_%dqX7aRWw8-;xZ zi=6SNun|}b79$=XfyJ}MHCTiW{Xi|oOR$XJ34ST~iQq?qX9Q0PJ|*~=;O&Ap3y#5} zl=pdTO<=Aa$Wg(;y`Bc<*3h#jmwhaVh^MA0-1D0;-+wd4x3%C4ZFqMZ=Kh=GNo8!s zgW*|!PJ9;=#Ew5f?BV~yGNubYlc!9XWz$esOS$WI&H^eH^F{m(q)m^)AKlAm2}f?H#P_XC04pD zLJuDF=0D)Yiw8l$7Cm~+NqP|yu+U@hQ2o8xH))#MgAd;R-uK7MGT(pi9SjJOI3@4_ z_kxo>_+-GK^WaT#oInMN1&uQr9W@0p)gw|Wa4SJ9$NEg}{>-6nq*d-k^(c1>pCNMg zil+pIlycSrf5}^9gHlK9nL2&!e?tp)5Rcoopk8Tt#dZQ!_SToYyi&JswVe6R8GeoB+D>L}dm%N3ljnXDre7Qo<{F=A zi%+z&>C>P-n5Dt93{#(%H$JvQYSn#_dY&b7gy|zpALXzCb^eBB>W7m=<$Cy~v+yWw zr43D8msXCZs3knqa%W<0J2e*1YtE)tZJ{Aufz-V>=r3%J>j5aAP6z$7Nj(RhR5U2V zL|Y3JbK4K?wE_|hJ&FZ={l-SP!pgfCkNGofxqE{DEaxYl+!KjPI*}e8NNyqLGVB+@ z$%8+dxW5qDk@Sn6$us?&M{&3=G0ky2$3NqWh^uoP&vPv905QEnSbM-E@COk8tMvgm z2z(F3zkKc$5T|NA17a3y9*D6mep0Nf&_UKsd|>a-Faoqb4;+ERoZltZ&3Vyfr{FiV z3IS>lX4CW_)>#vx+ND!!N4mJvrB8P0*Sd6}76MgV3p{sSi*`P*T<$|Q{j_=xmt803tJPdKBqh<7V>|(Lxh`*W| B6FC3? literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_atolong.o b/objs/builtin/ft_atolong.o new file mode 100644 index 0000000000000000000000000000000000000000..79ac781508b5ba78858dfa8b9eaebf07bbb4cc60 GIT binary patch literal 1744 zcma)7T}YEr7=CA^tIV^g$RJW8sEC>UK|zpF9~>w_BEcIut~qt7o6M~w5QNW#YyA;j zblIhM{al$Bk{Qg4=;v-1UhF1tP&w#kg}I*hJLk(;D!uHS_dM_Woaemf-46Tk^XpO- zk!J&8!q|v0!Haqf*dC12jMuOtZ-iwH$HmYj9wtpn#Y01JW@=OFs?~PYMa%wGgPb??%g=Fm8i$09CsXZEr!z;v4tuz*!WP6*H#kYLqnL_;IW@t zFxXg^2k+%tR}>2TKh`Q!pQZh!QKp6qGL@K@87s&8GS(c+W~^)pCez5?OU%u4N~WxW zOk0I?bJm{rq?)rb_(@Ei^*KqqNMiIkv(m#kX31c4R!p7rE@%6YwTI_CBDrrpUhwz~kJERb-#Hc;b}|TRCp3OgE#NR<35d{jE_3-%HOdE|beQI9Fr^ zzB8)Mq3Ss)o=qcN1TISZZDae4s3WIeso^4e#Z4%RDX;xwv$(rUZ`63(OV3#Ag1GN1 z57vvvZxFp>EsW#p_*qbXhsn!L&bc@%KdwvBI!DCl3JJeR9xRsx-mGz<*IP0UbY7lj!AQ6eWi{#c{Xc|i_$ccB_s^uB0ARchT|B5B+dE=C|V9%prv(o-iCGJ-v zma!JO<~+Y$tT9vCT5O*&{W1C{PdN5n>mLJ2POOL}4T4oeXq+^YIi+NPxHS#-+l;_qJ@(lSrzUnIPLuejAd@sh+MSee}lBtjA ze2wpR#f5GBrrDT>uZ6~cX`ZQbRUSW_rX|hmz}m4@^d2KIWO%0TfAl87!PWea;8Cvs zy78Cc@!Rwtg@^e&Fd<*rWPH8xa8A4dz6J!h&saLx?dx`f-9DZJ7ECgB2_CRwqrv+% zHV94ydqTlp6}=IPb@fGWx;PQ(bOT*+6&~yicZcJo1_FbF>RMkQ(yIo;-4Rkq2IA4a SXr!A|C>D#x@PE)5BKi%FNPB|- literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_cd.o b/objs/builtin/ft_cd.o new file mode 100644 index 0000000000000000000000000000000000000000..fe80c9aae0c6d5402c44186de48cc62c6bd53115 GIT binary patch literal 2756 zcmb7GU1(fI6rRNVY?CIt{uEmfas$>DE*JL2NA)SDhSdiUjqI#HJEBdghU@C4;h zIp;fP&di*>cbEVEW4o2HhPxOZ7)=J`y2Z zd)ifVrJswQKewv~vji0ap?nlOiXx=t!RrVT>u%@^c3tNrilI)iv! zZlIz*D>FG2vs{r&Ur43nLJSU6otS*C>$<9qW#l8%2O-9E>OCoiu#+O;#3pSOP+#A9 zeK2L6Z>B}%(<*CcEE&uRAHz6`A+I9b##%5)Xi>5+ppJWhz<8_) z7!h8Wj)2xpG#?2|y{)^{eA$csD#O-a4hZ$}ltbp53Q1;RlZ7u+ugY|OuFU=6HR0 zdvmJ<{=9@z?`hn`mqe`AQ%phwLDEaT$BD3eSX6N_67ap^2C}XDdm{b>yC%Z#KgyeF z1@0}$MYva7p{RRR6ctiy$I|3hrqX-`bFcU#o;T>;lvz=bXdz(wC8BsGs>hdAabGqJ z_YdJvH~Eu4dBy8+hKpgW>&rR6bdyeMWKm`fw?4BP%Js4rjfqPJw$M;CBS2CgaGHNe#UsD4!W(MGlV!m6c?zvN-%*SNP# z&8fFcuHG_S@@(N))ebse>|*zPeT4eCRqlOL6WaWV%DPg$27egMornINqV4OZ-FhR~ zUpM0Q{=V3OphLayvA4*`;%l*NlJPUoM;Xof3@hGekZPneu93CfHf=wi?K57;7}=ba zG!m%^+sHUZJmuJyn{nQ3V`l~jhF%(AGy?fuO{o9&NJVQ;DbGHCkAADYqImoKv)cdB z9sK?Dl7u{@U|;-w%FY_zI?EcSBMp(mt)W@49)$e?j4S9g5?w!IPj^P%X?(T=uS+S! zqg@VdDW2ZPfxHRulK(26-p_%&_rSZVd3s+5@~(q-a$Duo``gDmi~ZwQZaxRZQ5`t} z?1X+l5N}DdUEAqnLiP$sWd98q0soOx}{S2hIuYmZpnx6t`Jvwv3i$Ge}1tP_fSAi(a9Mtw_wEbZqUJGWo*0*sM zw9XGe#F=wIxXcfM5c73BXnk9%%p3(${yyN{u=i@c3y5!*IRiv|%c#bFjfO^m^n=4X z@d)~u@{u0&E&X>OJ?PVd)`PxWh90IQT1J31D!W#vKVGM2>h$-O-q-{rnZ>Bh_e-6A zx=w$wPM@#SKd#f?uG8sTP`e%zRx*|zvqkmwz{Hf38N)vlVLML75%zS-Wg?Xoc$-*u zHcJs8OH(42n#kFhCtQKQTk+gfFil&NmW-iE0JO x4E_w^Kaq{6TH4CQF(0#C>q2~QvawvufeFjzrs6TzmU%5@2_QBxk+HB{_8(>zJ`n%_ literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_cnt_args.o b/objs/builtin/ft_cnt_args.o new file mode 100644 index 0000000000000000000000000000000000000000..15ad05a399a32f0b65e058fcc47bb6b6c4767b13 GIT binary patch literal 700 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SO68j0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAajHfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw! z%29yQ5=;=cQ~+tHQ-Lf5h>uUrh)*j@%uR)e#mA$%F9E950ZLmy&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW1~a0I?SU2^k;_)XxwA#K-`o7lx6=iD8F&bUyXyto?D^ z^$SS3N4M(_k7f%7{uWsvuiN!Y^8viqei1P0Q$W!K06!~H7ytkO literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_echo.o b/objs/builtin/ft_echo.o new file mode 100644 index 0000000000000000000000000000000000000000..0a9d2cbca3b4a1fb3209a5b1c373314d8c4c4b55 GIT binary patch literal 1576 zcma)6QA-q26ux7d4qDC%76p|H6-BUNA<;vDkpm+oNVwoj++>_}MO|fENrVMq*4SxS zknjie*h3FNAiX531^ZaXgX3p5I8g$rm&;9QC&YADr+1<~(Klj>% zP>u;K@CaOO!4iYR&cX|n_=m-)5O$SnU?E0NK~DY1q|90i*(dY%}<11)tDW#Q?$;{Y{6%-uQx5Dfd?)RSiF%%s_q{2PLoA5Jm z|5a%1q7_a?ZRq?Jbl@YZSZ*VtUJS#@h(k`bq?I3y-Tzy{aK0P%kEr3~YGvJ{!m?ha zV7R%OQJnXTVxqc32d?fp8}>%s8S?C!(DGeANv|1hKg#u5Q3AvhI zZMZ%&W-mk)ZTWmy3kYT>!Q$PQnB=W!qz8@Pps}5+3T>H*Qw>D>Q}pr2q}G#149-evE`DY;BPh)^RYLdsC=UukW1vyj+& zp>Ms0YI+fsMJ#1~n=ZYPZhT^E$?v(vkTj9dgphOiE6pZ3%IV3pC8U+f%x3VnI8Ivs01e?Vt^fc4 literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_env.o b/objs/builtin/ft_env.o new file mode 100644 index 0000000000000000000000000000000000000000..d60ed8e0298617985aed652623b873065810d243 GIT binary patch literal 1084 zcma)5&x_Mg5T4YvTYol(6%-Vnpddm$>`4m3E*i-}MPvm%$WW4W8?i}v&AN4=AXLN< z1pkx;{{#h(di3aFg$fFL6j{`7k{3-E1PA7Q^Sw9oyQhUi$vA|!UA7_w;EU! z9Cix+LJt06wmG{XHL!|9lf*?&j5!U)X&IM%&AGSsmse440@0J&%V722P{xXSx(%$-Dy*n6o9rtgSm_jcv<5y4ZS!EO{@d;r6f6s&_=I$L;5h ztH-L@Z6XKhod}4LckUa!2}DlkIuPIH#6{o&_!;0qAVBJx(okC#V~2n>O5Kt-P+Qp9 zk{d=O{nzv5zB-rpQs>0|lrcGyg%kWaX|d%+DfjgH2t)?~`|J&Rnv+yhnbb#t*0IL# Q;Ri*7%Q6ds2rH6_g&k%%IJYE*;@)gm`PBoRp!L>KJ=qX;EZIaE{2*(8SeN6wlW zkfjvIkkt~%fdeX+BBY8#IUsRB1qDNk3<%L40CDKS5&_wjkqpWqw1M!wnc2i~k^@hk z{pS75H}B2QuCLwt#4{unvAC+QJZHHXJd&8&YwBC=|ty4mDdGjybeAxjrti=)Y~XIx2E}IIuf_!fad&6 zwJ>GHmui!IN@aI3HtqEZyU`AziLKBMur@Rjnw0EWql?_}%~AjY#%G!mMM8jYn~ z&#m~h z0-Yvvakv*Ncf2Sf-CW%h)PVB^>0ovKhtbA^J|^j8{=d~{bF7bjY^&G z&V983N8wxN2hIHJ-0y5-W8;xOO?MbZ=4g9|IM*EGN0p!07E!V=RPUjw#EP!U6_t6b zg_P^(y6V+BkVPZn*t z)4v>oVen_|ZCXkq_8j?JgW6l|FqVvUJXw_jwwN!XY>3 z((21}s8#vm4we|L;}`T0=AGvyNaMH8i+4!X{%!8AYm}cbR<*?fnB+E}LQiaSG+Z{_ zA$eNpEX|+T%_Fz_2)P!A&j6O`WwAY1Dzqv>uuWUsy^|Kwocvf8Ri8fLZBuG7UmcD02wSu}zkgc0zh~_^&I=2QqGle@@&C z#`^Z~7nT3(J^XYJNqnz7$9&m)(auSX#i zcanPRGEUX8YaCs|L;uJ)RnM+*?;!4iic@v%8uvNkK2>q5z8!IK>@$`?4+D|&@YBFn z=tI)pbqt6rpx+Hd+4@ZcF*i>692&83R0t6MH-Q}p^v>hGO83s+^GcsXawH>Y6kk+2x=f>o z63VwhW#^^dLazuC!bbm*CVi?&r*C9q{KY2y*(SZWNuO=f8K1N{-Cxm(CTt!_Pt7tO zo8^g2oa4U?9BIqq6FfQ{N%NF2*yKn=<0(erJo%E9=Jwg7;DBewN-#mn6G@wRgd<`n wXOj41#8dcxWKS{>TG1D|cthAPr>q99WCEIS;P1}_`bhGHWGum>@d?KM1IDfmM*si- literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_export.o b/objs/builtin/ft_export.o new file mode 100644 index 0000000000000000000000000000000000000000..92fbea39459bcb3d3525a8e8dc9d1ec24572208b GIT binary patch literal 2004 zcmb7FO=uHQ5T4Xp<6k$3f{M@_6a-yqMN|+Wq6_O!MZ|(0hU-p2gcg9Eek=Kp&$yUFLD-+!+mimf6% zz@6YJJ|w}QZQ#SKuRwF02%1$fk&c?gtlT7oYZqOPlqAFjO@KRQH-%9yJTG)RfNnE!X6ewPWpx& z>CO0dtBXuYHxY0}cVp9fqT$HJazA)0I2?<%j=I21+?4Gp;OK@-Vn}Zwkx%EqOk9_l zb9n|b6Nmqx0n`6#df$3Yzx2cO3l%dcRVtkC8}p`Ds*v`8%X+1G(#E&ogn%Dmz>KlP zjjL8@G?1A}n7&a7jCp_Bn_l+&=e-)z53qltR52$Cvtc4vFaxD<$oK|?pd6l5lqpMuD+pdLMf)e;C@Q^*rEM(t0Sw@0V&b#v)q)nS1W#V_?*PDd`mxF>QP;EP=7; zm1DlKs9X%UR{ext@Lc|&^_(DCPtK!;c>pL^L9tZQ42p4efqu*?)>k%zemK{f!O5g| zCqa*m1#Ns&y*0oT6Qn(#e%!zC#8{XF3cL(d9c+l;nQ;+6hDK<1xT#-0-lV4D*wUQo z&j46`lyf{v|9vB{>R>p&2zb3i+w_|6+q{3T2E3<2sNwGB%!z^7x4iLaiSj*B+XRdO ziK%U)hxpQa@aQZ1?^U?WZ42cWp$g`=fm_vg&bE+VOTo@2Dl6@@lx_ZmvV2*=AARMo zR`73D^<#I>Qw(oZV#AvFQ`FoE`wsBb5@rrk_=t{mCmwbj--ypQB#y(l>D(_Fr*Qr= zZWM7v6{qn2GwvDUQom(Ag}W{84t_{FiS)Bd9)*lUKL81A`W8sMmHH>#1-~u&J4k%+ zdM_lt8T|!%;CEHO2Z>NU2ML#c5E9$c`Ev#7SMY$nE2U&oNr=$i2ic8)G8;fgz^q4m z;mxxi?O{8P8taPq*r3v*7M*9&=%18&2ksuyOQ|c3=w^$~_iN1G)uJ0M`lS|~L}u8| zTo-os7Kt%8?YP1&=5vlqVyNjj<~rF-8s<#a6=~<{7>R4Skt}i?5_x9?R+%Vrj%CAE z$XjXG=EB0t6$VFbbV|dHvdFOt`RF)mXX_|#7Sf|6Ec@1og;c2xIkrv0cAT7pKSj%? EKdA4X1ONa4 literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_export_check.o b/objs/builtin/ft_export_check.o new file mode 100644 index 0000000000000000000000000000000000000000..bcba98277c3a67ae73b1ec769ba08cb3f12866b7 GIT binary patch literal 2440 zcmbVOU5Fc16uw#4ZCbaTC@t0>=qQ#gEb$K!T^oqnfq8JDY`Y+$-cFOrW^8tnP9}8` zf(w(>-3}`&C`I1B!HD3Sz<|lF~Kj+;AQ0 zXSKJ_-qEAg5;X!MJj(qNAP31XEapi>BxR=TI+i`d1}XdTA{@#7@3_w>pWBU8^p`2l zmW+%mEB1$$ot5&fQ(Y$(9qwy|jYmg>2uyJy7`hKqN;5BWjxlS7348ln=8ainysHr& z>kkQ$=Vc&X#PcXPI11%}7y%PeQL>*vAES^>$Q4NBi__pdLf>x+NtUR%`{ zs~vr@($p8H*L1Ji6iS`S>Px8^Y)6w|b-&sS7Ty-THd(ytnow#_1Wx4o$X!akhJLzUCp&s(x~Z(b z^su)h7PJke_9*A;nMv3W$GuzQY2}Nb(hHT1E851_F{Ms(whrOpYfbN3Y*A~rzTMs3 zr6zikl=?U$`IAlW$C#e^O<5gHcsEo1?fgM#;Aoa^SM6?B>wR6pPFxZxw0prf}+?V^u zPyHYK^g?x8S=F|^E!m$=FDzfRprP|dIWOojp_+50qT^1eW5>(K%VQI&U367Ly<`-u ztZHRV+qH6*=^Pl0{+C!9Jffe&1?^HF{mR;n&@(D72KFbxr?+v4Ansp?*AFEw550L1pV@#Y?i6^7<9Lp{ z#uX5^@^^^G{oXb1bHx3AA93F!F0m8h@q7b#XRv=b_T+xd6o3zsR z=W{Bv9^H$VS�)8>~m?T89p}pDs29MH+2U$XcxQGMZ??935tGrPctob@*d<5q zC4bU*?PQY=cQ>gJ5XB?kiwN={3EJ5tK}e=)6`jKH=ouw2&8_jmIFBg(?vBt?qAIr` zM7-QcK5aRsJNnM>XvQ?3f3~5-CaM}auY^5_N2Sh28B-(J64Es7A#<>h9f>9@T9vJI9=#O#VSdsfutV#-RF2b$#tEh+x9tIWeO;nh6wv+s3 z5&=pPsv6ltx5BikCukc`tkNOr7bGj(O4YgFzAP2}QA!rLb?=9W@78Pc8yg!un5cwl zs$i6 z+VJ`o(b?rKb@VNY3VUz(#wrg|GI`KFq629sa=$3>rJd;q6rEk5C47< zk?a$nH_dAIh2kJpfr{QXDnjkvP&JbnZ;Ce`vP>KpbzC~%sMnsPRz;hGk80gh@Mlcx z?hpILWfk`qR$C9Xd7`o$Ty1rtqVL*LI6{9x9-VhRcKTW~$L4wBeE;Bns_G}#7K{p2 zphjEKt{#kfw-egb0SE)5B8slmZX$StlShkDM3%X~B$8p~xTP58190p83;mkpDuxXDosq>Do=V_VsD!H(;tc$^(ACXO80E8u8R zY~<^Pni2G!1RTm%np5mPsoAD4E6Fd?Zkv9NUR0n{61M5%>ih8RUGxW~oJGc8VUbcS z66@R(okf&~A*b)ii92-k8yl*A#-2J5`=ITa{o&_T5^4Zz!I!Q~hnT`w9K;XH37O@SMVTfq1X$oj`mt^*fj&;b#gzRyYmB z<ZWXKneO+K#24& zfFM1O2dD zDwWhc##m07BzpzVr?BKvXpgdSEFwxu`UdKtIbDo1_B}Y_*}GUoG)Gz#OSK-w`oA>8 z-9Na~NpiQ|<6gbjA^_LudPdh-k8!iNhQv&2xofnzQ*SYC`51Kk`k5}O3{8mSUbS`L z=aKL2?!9Ep7F`L|Na<_UX8s8?y zcgOuH8ld04hF+qWa2!)ILp^|}&#%vPqEKIM+RuaqAZa@AW;*U~&Mz^y+TrFdcgOzj zFRi_|C$R$zD)rzAh39i{HccY{Y}lBY?lw-xaZ+ddG}_u^+}TZPODBeuN3~_Tk)9FY zCb>osUMZYe`-VKH0I65ieVC5Uhr2T^j4qHp$+)eiu>%;^G<;&7vE^l^}ws{K>3of!_7@KM!H5wZ9ai%{R*s> zH%$Ya#<1leciNv&uycEQ_SRhHN{&+YQ6}8W*SJs3N=l$IK|^+5su_Dev<%r3>g!{N zena+#vj6xH`=r8;U3-tkYKd6l*pc`uP+oxkS+f0uu0R>($Ieb9J{>uC9G@*oSr>P4i}wz#!yCVV6opkT7t6w`<)NFGcH7LT zeRU4*Vcc9HV_z0|n*f-|S|8-IR=5v?vei-)U$ATj&r-D_3RY$w>at}qmB=h+u{U#; Yd0AL?R>oW^0@qv&1v6796iw9rAE8nI?f?J) literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_pwd.o b/objs/builtin/ft_pwd.o new file mode 100644 index 0000000000000000000000000000000000000000..96d1d45bf3452916c50a98a9f0d30f5a0c84ac19 GIT binary patch literal 1116 zcma)5OKTHR6h0Gc8f!IKw4$Ie_y9Md;6_~(Ejn1}6H$sI9vm9Kg-?Sw(IRhNL)NBIoT3CZuu`AmPt#ra%+yZTJFcVxzy z!x>JbKJHm+=tSRFQMy{`H0VkvT@|W`6Ufvn|w{dh@u43K0}M77vZzy!UpEk%9xW-+VLQ%$xo7@z;-|8OE#=3>Wwm ze20Px9Ci^tNBkIjWNKdwW*jpaIn5;#B9h%m$C@uY50?M%EP7`Gnn%0LVF1km=@Dcm zgcmg1t`~_;>)Be%7vj!hRwLXoq-JnX(7UuT4O$5J}Yrr~6CDCK+D;}p=wO}+r4pWTCx8)?ba{f`&^Bd+uKEAM}= z@Ob->$DN-%ap1KgPrCMy`g!aOd9poJBz6w=os@P>ob;cz@N)z#^~$giaktSOPC0$ZXc| zo=MyVj+IqB&RtzEOd0*d3H`MRPXF_Ge{+H}AzPaw3WOVm?iLfP^n-24NJU;NLjK7H zNGPT7h1YOH(T+kUI&I&Lq-yqq&f|5dYI<5Io57~kO~`~{5aRFkDHDmO!CFgrO&@#w E2E<^vkN^Mx literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_update_env_cd.o b/objs/builtin/ft_update_env_cd.o new file mode 100644 index 0000000000000000000000000000000000000000..aa60ead3b640ec25c3c4656c278fc025bde6b913 GIT binary patch literal 1284 zcma)5&ui2`6rNq{HfnVj{J{zy3JUfTSQL*Hi!F?xP^1fj$Pkm+?t)F0Y*H6-QCO7? zq0p0O{|xb{g5t&A>~Swb3Kin5C{(|fOx83Y^ue3&{ru)7GxPP=kNs)JN=FzL=oC~d zW0{3Q&O=9(_>Z(zZjO2&nGa4zN_-?jc(U)McIvMz-COzRXV!0J5Fhn!Vz3#CO|j<$ znFwL_Jhx-7s(=s&`7$1wf#f26U{2JylL+{nwXR`$!nYrHY)gpSi<2Y_O?~IA3O2w; zlra{SIzTCeY>Sp_tjV;YINzLVx}o@%6`yk13H-{;CcFZzLzA}ZaaMtn(54jML;o@0 z2tVy95dCZ!niuLN)$+kZ+D#sO=fm9w4+eWY@M9h{BR(9&tonksf*G;uOFAjOG5-Y+ z5it)@9s2P*+BS^@OJfv|QG6~}z{6&gZutvp@R`cogw|8l`UUGSM`dBU(PA?$pPpJBXnQ@7^|z oiEa7aEc{5?EFtJg!!_FoyHX;O^qYb%7 literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_update_env_export.o b/objs/builtin/ft_update_env_export.o new file mode 100644 index 0000000000000000000000000000000000000000..343e6ea504525b50837bcb0ba5b2d71067d21c49 GIT binary patch literal 2640 zcmb7GQD|FL7(S`BtGe}exUvee2He9yu6BZBsDsumaKROatk4JNF(fxjU7N()T#bW^ zm79szP?+L_FG65G`6PRB43**vD|;~vABr%@utEX~L59RRSHJ(9|E4!d_pqOye&_$s z_kZU<|GBxz&v*a4ze|YNBLe?01~G;Q@Gp)5dkW(dT6loXJ*pQDQ4TEhp($vP9+{Ly zyHwP3?VnD}o!<7t*)LQGjPxjX86wY6U{EX*geGNbsp!n-&T>G?ZoN>4<-|R%GtB35 zLl^a>@{5IJswmyu`}4W9lqXMg7BSgip=uZ$5`scs4hzB3U6NATS($N?i?&Yat*^w5 zsk2^{_1G0p2$2ovgfC!>W2mbz9v4FxWV9*8S5e0Zu=6io2mg2-JLUQy3TM zGI^v^i_Ar?Z;I**+&k9Fu>-iC zaPNli-H90&j)QtV(V`5il4x70nU?Y6zG46FvqqVkS4p(|)mV^dHE(TgZJ|n3=e8@e z`jj|Bqq(edy|z;J+Yo(8M-)}52439?uA@nObd&lHu{w1l_^DG<^ZEYFn$BDgJ5oc= zdNc>__+KWxF5mM5<>IuYp^c)_Xwzp}Ns2xVc*kLxB6Vm2bOupZ~PVodY;@+avf3j10^-#Rs&EO!145i5cpFIkn?T}!!+sTr zzp*m=E|Atw0`VPSJ_&@R`44(Yy1xNQ_gBUrfW-R{NcsgJ<-f-M5%%{2iMNHb67M@8 zzI)8eKx{GgDUftO(!NRG*W|wiM5_5R5MS};At218-y66)a~X*Bp|=^Q7~_lpwGNIL z!M`d6V6S2*pB7-RV~`&{hv(T3pF4W(8_dO2lrbW%pw~>)|E$Nqr2Turqe2vaq>AG!Ox>y zDvA00lFa3cvasMTDMwFISvz%(gHQ!K?G}_2rVDmXQSEo#lvW~$88o3iII$}#^-nOttW3Z^!AA6wzHDY^-8ISVvO8O+ z;%dTXrNbDA(2JgW@urZADCwcagjPXo5ehvhMo>tw!XA29BsTuOd2cqmllI`pe)D_Z z|L^^oxAW6Kf8W~2SnMu_2e=EIh~uGwK@Wn@kl_w=h5|rGDFzhE$jOMMnQ`t|u0tMz zIG;$pH4#d?c!(MSQ9g=Y>1OO9QgpF-f{-{j%T6h8zbzHfd|{sB(*FG2VWdFWZcB-L zg}Gwdba=&nH*aS+e|fZJ#9&W(eAy^o=m^6?|6U@Q$?M}x-FQ`Z2=iSjl!nwx;@eZmzDxNxmB+tSqOz$JGAO|5zp&JRH0 zSCK~gC3n2khKTU1Vd%Oxxwb6lhq<)ocNFt#L^@EJQm2!&rC<^rHs4ic;#V4mH-d$s zU|OK#qM>F?sXr>34-Luhy(_D+w7vT4?`!>m@BIJMVcfwV!StSGivMV6pa*LMfSQ*VJ%viQI_5Kky_&6H` zx6^Mzps97xhLpyHWsm(B9UD+Zz#jXGv}f*Mr#Fr$_TK9(=BhFEz`n#Xvh+ho_pQ2( zJpjr67#rzPKZ?J25Z7@)&BhVP3eu z^xuK_9sW_uYf_#B;)>8mfgrsPh`Uga195cpCgzAYN&i*id9iZ(S)dBN59|V-24b#y z9!PN$DbzmW20K%5=D0K~Aw+f(2(d-05jhu;>72Ct ze=6iS)+ivdwcDSI$e%=H`tND?|1u)e+tF_KBJxB;z7mlc4_-oE#J7P1!Oi1o<}7oD zm#j>_gjX_@Au*nHIKCrnbFN6vmdU3p`B^7#ODS6@%`jfJ99~R2ImXk|WjPW#g*MDT zn|AW2Ea?z*kQI4OSwOlR@RgClI8)%}TqdagP9bj#L1dBjdA4GksO+Sj{;^kI8%;g^ GB>NA&ztx8T literal 0 HcmV?d00001 diff --git a/objs/execute/execve.o b/objs/execute/execve.o new file mode 100644 index 0000000000000000000000000000000000000000..497c547df8d3e4deaa63526c811e372273e80961 GIT binary patch literal 2428 zcmb7GO>7%Q6dngRHMGr|pGW~!ia{JAp{)#3Q3?b(P*+odB~sO*muj+Euj5rVUdun! zRI(Il9n@uIR3tcYM{wmv4z!Sp&{GRHijc|yln7VyA*#Y}_}=cUW3S=BQ)a*U-h1=r z&Ac~BZvB4m@57A69$@%j#4!?M_@po(k7HaR!+*#uEr86>8c4_ylhKf7CPdw6*2yCf zAJT&5d_Lw>rw zTG8~nXp}FR<$@5epY9tm;WDp9sjMI#snR&4G!2Cm!YGMiRa-TJ1=0LIk&CX%c(-Ld zN!by`O5vRFIgBX`zZA+tY#f7xHYGhr9*+U9BpBNTVm*5UgM`-5AYa<{VT}JPdG7wq zooYi_p%_(6!#i~icH$$ap%hz*MIv0=`iV=hwr&GcV9^a>oRHXG!sl& zKT4rGbKfJsfv}mh)0~3!M1LdF#GyIvYh(`2UQAi1;_kdm9}Jn6^lnGInbP*XlcD#s z_YcnF+(=&BRHjjRdEOMA*KO=>WqSjWXSkc)mWO~x_O6%haW9ASolScSQ_fehQ@54Q zlYT06U5#xo-}7?2{^{WBT#vcg-p<$i`}>G;*I(++;~K+zb#A0CZWd1{({0+7Dbqvw zaJSKO^IbQ$?Pa@k_uP9c{ob9eP!? zBk!CP=#GsP_~+CnzKeg6vKl$WdywmS#QQFY_pKX4(xYnU)V{L*0%AC=ZCo@p8VXCz z7X%&H^HWtm-|puVO`gem*A*qT312MSB$yp4Wp z&p_j~=-#kTKImJzkoV|8T^qiDenocZZS^beWs(OqqbDGHwM|VGjm`aHE@`zAjD4Zw zLuk7p@!Jd8ajFjvwx!LAaZ}k<|mTx zjJh_-<(RM1i}moiOvH%%}mag*pO1Pa?| z!zvWKc@n{ce}Wzav7$Ho2YBd3XeB}qB0*~7_jYG$nzo1!-n{wVk8j@0%jWa1?;Bl= z1@%F_fklNvjzZ@tu!}^g5OS7kAQFR#Jj6$} ziM@;|6b!OiGEz9#izO?Qn-LDqxAIAzUJ<`88xdF>Bk9nep1)m4>Lp&z-OJ<*&c{YJ zgV@AG!IW^O!ADnLLVw~3wor0zrg_Rr-ZuS$_WquW>;=L1N$?5C_A{22d$JdxN1)y) zlzprdNzcEuPQFj|D}8h1VGH6u;qyOnqXt@r#-gqr_F8fpO{IDa zd7y1*PX^AQuQ%Pmuc<-N_0|&2y$XuasC&QnEhW|BKX#=0g4n;PoW*c!vr1o#$$q_V zYvnaOXoD$LOr5PdSiBoJwu(m^mk=Xz27^lVQmexbb}7|U(&N}6$ui{oXtGgP3p(!t zH7&RbC-WBniEIoUW6L$0P2mW8j!ANOZC^+=I`>6UrNb zu82I*$BubfQWY`v(Wj BO;Z2> literal 0 HcmV?d00001 diff --git a/objs/execute/file.o b/objs/execute/file.o new file mode 100644 index 0000000000000000000000000000000000000000..172798da3836f62102bd2bfb14ba7051e8ce5c00 GIT binary patch literal 1104 zcma)5&ubGw6n-0H8~oATLj{GR3wrPpjGlyAi0HzI7DOs|DP!4gNNBn#Yf^)-p*` zO#`i`DIF!sQt8$utS8~=G4lwG!P)quy#Eq?@coo9qyXYP-G=9lYuVHJ^NIh6?~3@d zh`!o!I23W`yGR^()rOaHu6XS9qHsv&`b`KY;jqX07kA@#B00g~PJyQoN!WYELF{}= zD@4M&tCi@YB6?%bZ`aH-cp2S~CE{?fZ|>$X|J@RCjR$AO3kY2M2)w-dHzSF<*lR9rax4$R=fc1)Hs*VPaNPpe?Cvr3xZZ4 qSAvG$2I)4icKl|;Un1!?TMs-y-E)^@tYSyb#M5*5S`0+AXRp#d9O=|-L*nKT1w5+)NGgpibJ zq+tlS6#s|Y+N$8vk6&OHq5*{nSwt6&=gz!|NkQ(_y?Yg+yeCgE{7%~BRvA=hFUY6*x@UQwUxizjjoL8QSTlGo1vta zHOaZ)JX0}rt+*~WIG@yWb?jc$Jfs7TL5w@vfnI5&oX!}$THMr%SD(vKlUYC@88HP3T;dP8*@j?T9xn&LvQDf9$oCm74SG5Kq-5X^3qk24>PKo6z; zAm;GFm*JP-(a#>h#zDPg$Hq7RGhS8NUlj9uP-)i(?-G6LdPUFPCBbh*twdk3k^{xM zAGMZ4=4@<*H`f4qvB~ z192azYXWBklb)oQR0~SMz_kAvs^+nO4z_cMIRW=Rv%9B)Pd$q#>Axn-qZYr&92Q)m zNB|!5&;CS?_*Z!1FC8B%3m=EaOO9NC$CZh|k&chPSs8%~dIMvWU3ItzJvL$v7mTs< zM>zG4_cOkk)(mImnY>oW^0HpasFjLZVZ5TP7t;mCGlfz`<_fcx%vPA literal 0 HcmV?d00001 diff --git a/objs/execute/path.o b/objs/execute/path.o new file mode 100644 index 0000000000000000000000000000000000000000..633b4f920eaeac8317045871fb5aed3dc783f60b GIT binary patch literal 2512 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 R1VXXOxNzN~i=S~$us{537m@$~ literal 0 HcmV?d00001 diff --git a/objs/lexer/expand.o b/objs/lexer/expand.o new file mode 100644 index 0000000000000000000000000000000000000000..91973cfb94aaab6f9d8fe480c552f1e8d2178d17 GIT binary patch literal 2080 zcmb7FPiP!f7=IIEy3sbXhZa()bPoz1oRU^7Jy_UkN8X`9sSOAcUe?)3cX2bjotUuIgx%Je;N;Xg-_EcJJ{C)G@B(swS@q_RE-uL%? z?|bv!{QBt6C%YKao?#fkgW%i%h5{J0AG|<@9q4Nc1ieBrphQMaMojsLgz)T^C+AW= zW4?c8OHO9rsXUaAV%yI$mM7yNyG)Rf5LVN3tIk=a5TZX{k|!zsPEv^SSIZ>nP@h$w zX_PEa_|Ao@Qx@XX$xS0B*HyrjQg)D!w$6tnV%nEd2)iPt-O`LL1G4qyRo||ve8;d) zrHVDrGgeWi7>-~Z1;_i*pJPK{B3hL6Q>cUbG=-)w0uj&N1rw1EF~!mvd%*vfCV2P< z5AKigaP}b&{dFEr^uqBjkIY__3x3kV9FJg$%yk}(@o1vgqZNXOOrO7o$&SX4w;QAJ z?pE-J|6zY~yL~J8*1l<=`W=ty=S{9^wrqi#4b?pc#m7d`pq|Tu>)jmY&blT zCrhLSJuTD@FY@5l*yOT)u*g(@3Y-1;^tg+D%iz%Lp))G)dO9x}bVFO1Sk>oW>|0zq z?ac*`L{b0pc5%U9{lr}TR@3M4ov^i|a$}jSTx;|2_K$ST>2=qme6Xa2`L))@#s(c2 zsxC|}Pao0`&cT(jRQ<)x`f4Qqjlt zxe*v5vl}dGq1j!#E0;zOTe-v?=Zp`BTX(p&f-eRsPLC$Kzqs}QrL6GqH=J2podM*? zZ-+}tq_6O8q?=WT8{8^RE>l4%IuKtNd2Lc^R*-sjLn@WD<#A7Ge%ZmkSGj5zPcyBR z*Ydk}<*p*;CFl=;SN_J1L27-*PK@NQ47{}m*EA;bI|*+8BmGnzPxY(8Z|aHkQ}t}~ zyM_ynJ8ygj)Pa|PI09n;I1Idw+DQK%a5wN65buET8W1k~9%GF`$iD-jGM0cK<9iG_ z;O9WpZq$KzLyUKTcxnuKm+(m%MIhpa3JL+Sd>%LgLjg?m1(@V}O8y42uI6N?_dF%C zuQKuv8JXU)v_D<>w0tTfe~^){NO=HzkLfbTbbK)*zmSn%&&U*;j%Q-p6Zlg(R>@<+ zs@T>?qV82}H!+m`MxsCG+fA=pcM?<0meXppRCD~9#I4z|t!k;pgzcOcO}pe;mBdsQ z=lr^7GjZ1TghM|c{DW+aw(Hhi{Nl=(yLO{ivM`a=*iIStR-;5HRVdFc*DY*?{R?zr BuM_|P literal 0 HcmV?d00001 diff --git a/objs/lexer/expand_check.o b/objs/lexer/expand_check.o new file mode 100644 index 0000000000000000000000000000000000000000..18632fe33fa8849704a63a2d4d6c82d15ed5d92b GIT binary patch literal 2760 zcmb7G-D@0G6u%Q=va3n&M(Y|-C10U zk-+ShOhzFO6<_0<|A8P9YFgT$NUKn?4~0ZQ$d-yl1Y;T#e`oH!+hlh~@W7dK&pjXa ze9hdszWv*7FJsyR3=d#8Fw%v`5D@SbaGnGqkm?bFqhte6JbW@j@<(8rj$LuYTJWdz z)T#TtT3we0v#Cm`PbSUko5Jx}gQEV@P!k)ba+z)glAxiqcVZ!i!HQYNR zhBtfH@XDKpH?d*(`d!1XL^jEr;puh5ovkxoeVtezte=RvmF`|%J0^BEN!$4J<&RO! zuPGB@=_lcCECQ1aKjz-nyx28;hr|tYnaG7IK>}u zS2V-=jxQgVML;UvSd1d@HTRO{X@);r56nYTN}RdO2UR`?>gy$Mi4x;5RNH!lFZadV zzlVA4W{?od74edFclH+JwJf$8KsI^_$0Ne1KT!|D`-3kZ9(A{e=k+yS9Tb+7fe+Jf z5&n%5kLS#$K7^ZL?&yL)6_U+2{!$U~e^fEQQbWkFwWPTs3RU%sLA zp$T3&^w!W;4ex5l5b67|g6~HoiAhyG>GTmf0`CW4L2ziwL0FXR4}!MI&&r)A1Z|Vg z$y=d6M7~Iu2;gLh{IC!+?fg4TtHiWeUvFd)x|F~(z|1x>1<3dr8#@%c(Dhosy6#AC z9C$;plX-R2`v!Wce}taQuTAgsZpQEe#Z#d8;=~^X zje!1%y3qb@P?YeouRv-4J-Pq3+`j`M>HPvqdT&ZzmwX(Q{GLF~FbMHsP~vwH8`=F1 zin}uYJ!lm43MguK;$10Ef|B27L2PCtJuX#hi_$&?`;bRyLhe?4&tUE;u$6i#DEi ku~;bLPizuvp>O9W)e;BTlLaeqnso|ku_&c;)0s5;7tNVv@c;k- literal 0 HcmV?d00001 diff --git a/objs/lexer/lexer.o b/objs/lexer/lexer.o new file mode 100644 index 0000000000000000000000000000000000000000..c9aa07bb5d2b0ea9e4bb20bb0e475c1feb4e5cbe GIT binary patch literal 2544 zcma)8O=ufO6dt*bBejV~fl%B(B7&jxppur-8fuD6voMFMv?Zp!g!Oi{Mkcak)-n~w zDGDovZWlu-Ikbls^%i<*PbCCu(j-Jp5B)hcheCWvL4p=?@Ikmg?)PS9<(1+UeQ4(W zzj^a!-mHGw{qx_$j3pjom@vjMt`L#I06c~f{$!Jhq0@JKIwW^{O zf5v#{%swAdS1ADi#Ut`(1mPqYXLUj$n5JD>Ua{<|xmJE}sa!D4*G`8z!q;@1x)y#i zp>h#P6&K<$t&+$zouawuTFZ`-n&x1BIla#-+Gz@Tg?l5>Ba9WbN}}g6PhrTi@Q2w1 z1_3Qf@*?t>1QsdAE(61#y@5eMaiiym#Po2HNPt=Kt<|q8M`@)|`p!~K@N(A|iuv4e`)_8Kx z>uvBx2~LAbzI8n5?auPXn=z_ac;m$w)ziH3M2zYrZ$2tjC_sS3g87cx{I@X<)4cf- zRL|X(HH*5ywME$qDnFMcA)1ltmZSrK@uV^CbpfkwizDeXhSi8#`PsLcIa{SUQGWpQB zdl}KGo4Rx>5Uvv>=>jIZU+iB>eg5i*H+Yj;KxIP(lsO#QFKb(tRn|bq>mr`o?%;jP zP(SqVTVUXLS$I7aM>kl;53r29gd*|1@NY$z$ipoq{JE%MaLl`&5cUszYgV;}*TX)a z4YLhqbY|G;k1|uQ$9Pjd0sS=kdsA!ghop;+9=O(zCUYCqqY+x8^yr5AC_P$YVU+$P zZ{$Ylr+FhYN{`+4TQ278yqlS`HxMHNpDLOvGXO2ktt-s~`iy?v<(<{fa5O+#Ki*%) z_#fBCiS@TwqLxmij~q^Z1lwuIpTubG(i6J3r}JZMZZdsw?A4?A%t#BWFOWEl> z545AFZRKxer}I6~?h@=~{!w;1?+5I@9+%&e?C01Ynk@T1Fhtq6fzd?S9n=Nin(PEH ze%brj6MoqiCX!zO#-}a&I`C284Xl|0t^lLqvbM(b<^r-*rz5}%z;Kz!X`Im*NXqF` zKM8{t2>=3v`0$)w)_iy_FM#LJhww3o2+J0R_=}1k!(JtPrg+UURv+T&sf@;>hbzhx z9p&92{+S`3nbpcUr)*k~Nxtuk}5YL-^3B}>z*Rkv(gkW0Izb;o69$*B=4SKMW* zWZFdw%)2G4d`{DL(Xj_<3a3oM1#Q={st%TO9n6mFR$TlwDu7nrPPqVaZN&lx{0DQD BSGoWI literal 0 HcmV?d00001 diff --git a/objs/lexer/lexer_utils.o b/objs/lexer/lexer_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..7b899dbd8c4b7afec6cf8386b9d050a89838d7ec GIT binary patch literal 1256 zcmah}O=uHQ5T30uO||XIq2fR8!Gi~T@zjHdEoN~A3nDG_Ql4?MC8cRn(*%pOP}o$u zu7@5xi$`yIlAeN6v7Yqm(TkAK2swtfG=8)DRuf|Au=C!0J2T&W`yTA~gWt!4MA|9B z0*}FWIMCs+i|`4?eQbFkO#Dza5e6r*GcTKzC1+@);@br#kZ+iszAfISV1IWfpu&lTscQNau0z3NY0ld>#C%YQmnL06^ zvAkc#*7~8Snul&n7nMtB3Bi!4jQj;8HirTB%p;ys=PN^um3;GPZg*Z>t1uwuv%K}D zS8iCo*|hAbhNzAu+ymYCpcz}`eNj1&vhLiFAzppq^)dySs@*S!N*2r#&OdJrSK{4~3tOv*T-1?RCvdSng+iZkLNAyBh{Q zR~X&(>puCWB6!&+Kc@29vxlUuCbi`7U}76nuH*d`&K=`mVQN0nf^c; z{D!JiI{sUiL){xyr}XsH@jn93_~r0R#|`u#jO%L07T}xMMOeeHh>w|ZbRL{y9DTnI y3^)+O9+-SmE|eTuE-mC%NZMJ)UX;1?N=ZJ>rSppEn&IrJ{Tynz#i1Ic$2QhF4@uqgHRaU zMsj-*hRpYYFFxtxtVpSU*oH6ao3wqnG!YVT(3e40XY21f=iEPClLz1Y$hqJ7{+;vt zzVn@X^XvZogAbwmHd^W)N+0l-zk-+tAh5_dP*dW3*Mag8yKfBL|L?_*a!v@ zZA$t%;J}Z$c+|lu$2kll!byXC2`km%zf#Vy|1_+>5{A9fGwj-)VdpxAqj#LB^+Uvt zV%jqtsLW@yjnTOEa7Js4VGro{42RuK#c4ysL9o!wirD!24743G*?QYrX-6K5nxK@r zWPg3raI(P`XU46AnWo;-R$qWo?w-Z&F>PZaYVEU>_Qjo4v({SETVG*O%DVfe@C+fy zb)0Nl>~8furQ{xxlK74D2_lPpvp)TY+4bM0of zB~b4fX0EMmoEg_PR$6Bdn)cm zRk;!lqaHOrtF^wP4v{DwRK!k4@9K}BVqLmEn3LVnAE_L?6cqkhoUg!-^L6d)jD9oGHOiMiLXxqt7=RtLeQ8pYJzTG z(3sR3s0@0a8gr_tZ~Ki2Q>bWOV{WhM+x{uPj3dFeM?I&t#s{JDI^))l5ySjNHVcwS z`^7{ojy{O*TTdrOtss-bN_M<^4&5{;gXyNer8Oo8?mwgM*VdZ8<)`tAaHsoKLy>as zy5EVx^%57+k#`FDs*2}aC%g05MWh#ofGb}x-J1vEA|gnx?p;JQhBlerqI=TG=$;J3Li{Zt-( z{g&W&@o(v;^6Be$6MnApQ+f6E`=0RqBiB>;9rMefWAWllevUds!A)?KDtQ(hIV5l6 z!%FrCvVO_S;3R*88W4|xQ`{Ez!Zi6FI4F4?56B~z6i+FhP#jFy-vS?lV*-PSK6fO$ zN6UN|Dn(_g9*{;|mrI4_niFBLthP_BI#NX1H}T*3dbLXq)e K{c65cVC-M?vzK=O literal 0 HcmV?d00001 diff --git a/objs/lexer/tokenizer.o b/objs/lexer/tokenizer.o new file mode 100644 index 0000000000000000000000000000000000000000..97f813dabfa3e5790282d56d9355915be21badc5 GIT binary patch literal 2104 zcma)7--{Dh6h2wkb!^p%qF`x@p%k6y^|f&jd;kJGw0WL&OP_u z$=1uiUmYOI>?1tDlVEECj~p2E5%@kk#?To~0G;6+mPQ9AF&mYn47}BVBQ!~QW&Y}w zMB9}w5*$d*y);F1h~1OaVv&%PZX@u^)oaEuikILZUD4tF=EVq8W@rRn?MA)m2C`Yb zS+16({CaNa#7o~Kw2bj2@OWmwpnzH9TaZ$ED{|Q{-tct7Xn%E12K}l9Ju-Mkr4NZ# zl6RJ8!6(6LE9?(w3e3bs+5VTA(>jL!BXs1`C2*R!Pi8A^e9!lSh+c?rCnut{fry%Y z5f!>3o*#&qM7+=y?!h^GW73)p2e<9^F@VC^hqI&bd(X5b6>e`Fx5Ag7+3io23#bZh zTEqq9Ep)q_*twg30-2=tx@Awa(dhKOW<{V7HGemudr8+=hXJ zoqEHEs<@vgsES6Nr@SMoSrPu3TimoywK!PK>+Mp|IE#lwQi7P<(gP$`?1+NB2J} z>~KNsa5$40ZU*Zj&ReY+vfHYYFM*+_6U}d%3~cYVh-R}Q=5aT-l|NkD0S;ev9Ud>> zjAfFU>UoAc+245F8+_su)PV@s1}Mj=;=%cup$q4!lh1NI>JB>U>LB2g-GBugcZ)3m$px9J8fyB(NYoSYp^!P-!gu0jGvDqQ|8uX%B*HH*+U1c zbyWErHeNyf-`9#ve?+rKviBw~9!|b@95)AE{ZGf4KKG2PATIYx$C-ZjjC;smZTy91_11KjVQfmGhI)e}F`fP6ZOnaTXzQnw|5I7UU^CN#`Hbg2{OTiPP=) zkoa~v-$5c|DsN=YNC;);Q(!X&l9}#+Sx@FYZS-XS@w87^ S=~`~Bgm<*&7AuvSOY{b!5S%^$ literal 0 HcmV?d00001 diff --git a/objs/minishell.o b/objs/minishell.o new file mode 100644 index 0000000000000000000000000000000000000000..8cb6d57e24cdf2426a9a4bb6048f3c91d5590be2 GIT binary patch literal 1020 zcma)5&r2IY6n;t5m}=YP(1R^K1T0?4UP_@J4OJLy1u06sJ+_1gWru zLXZ9#9{msOtyhm8T8L1=V-RWjz1`Wm2^9L^?e}Bedov8P->)x!PY~tq5I)EP@?K$~uO~JUPp8o~R^Vf%XN`V0K!~ zw(SHQdY@dc&ir;ET@y^_RE@cUIdYaOpgAhoZ7}NwZ}@goCm!?Y`HoEKyur4aXCzG# zHBv740y&M0_bN|P5h)>?ia!7m=LmgnQ*bVS{O zioz=ut@Twe?5i)`^S=1K?jT0hGluFdpR1@gJ?b6|sQmdZ>Mwo_hr_?cqeU0ruqHz# z%>A3IPCWTOGBmgMj&hw!u5y2(^c7Xl;6Ftw%#bksM74*N!~E+9Mbp;;mWZqkAlfV& zSO6{oaX_mE#C=&Wfw*GpIS}vAngL>l1(3dC6<7vIV-_SMW1iLTll46IisMzHjl!%k z{bWqfkLfpKTHZ@`KVt3eaL{7g_w8NcO&zf7wZnh_F1}6M^@yE@cDDGVwzr74-A#0L cv=at8sp1dzc1+QS$F0G&@3(yXJ9WJCKONeN6aWAK literal 0 HcmV?d00001 diff --git a/objs/parser/parser.o b/objs/parser/parser.o new file mode 100644 index 0000000000000000000000000000000000000000..99a698c2ead1105a2c10cabbe491e7528c240120 GIT binary patch literal 1688 zcmb7EO=uHA6rQBDe`QR)F`;Q1)-A0q&a`CLT&l3-;ElR|RPT3VV_wwe@>5vrUu6gO9$vdGCGm%{M>Wo!>tXIvESK zG5o;W;U8&W!C{x+QOf^e^E46mMPq^-oQzzz8RxE;a|x-8^U?VDXpq(8Qdo_NkF<=R zVyuTs?QEVxV4NqXrwWOr%V+Yl*?fxgM?*o6;)>>Zs*4$rk(O2PX-yiT0Gx{qPdkYz z5#){fe2reweA}8&r|dLinP5!uHvA%79*fb#I^bkPL-lp&p!2!ap(bKJdkiNd3^~mu ztyt>6ZOrz*+oc~?|GKx)|I7A@dv;|EKGJ1-W4`U}REg5A4DZ?AfMr+W=*?Mcv~0ao zd0?U2rMfYoVwfGT+NGk;jD^?0)`+ElT~-$3yT-yfTw#l^I{JB+N z&=Y8CH_Dfl25gy%1@jY~uw<;QH7pozfjv5++HwQ7%_z?v6>tW$|5j_!jjFW{xFZxEyfr4irx7 zIl-5NUT{b5>i7*>@ctuj5%Jn0T<3Rm{uP`UM&2XBBKPq_^RMd|LqxyB(h))C4-tFO z2=v|ya(!MFa)bKXo**I(LxVK>UXQiq_;}ve)Mwmvgy4x(iaXh78TVM86KSM{g!5cD vx}0=G!WBFx5^2VB+599gWD7x_%!uS9cc&*sp1Us!f^p$E(+>Wzrv&>8BOq3O literal 0 HcmV?d00001 diff --git a/objs/parser/syntax.o b/objs/parser/syntax.o new file mode 100644 index 0000000000000000000000000000000000000000..12256653a5b98d48ca84408850917d273b128334 GIT binary patch literal 2828 zcmb7GO=uHQ5PnHx8(ZxL{6R&?DuP8xK~X4DC8B{9J%}jiLAGhKHKFY$Y*QM43Wc;{ z41xy_9t4Xg^{OZFAXZQhVsC;cFG2$f9{nlSZ}!b@vb%}21Mkg#^S+rkGwp4li{~5Id8)Ak z#iPfw>xI}xixDwH$`M`9Oq8s=d4&zS?v3Zf*~+;;>vTM&=5$>n;uXe==}bwVG^g@r zR@cv*bQkgPc%4M^Y+OWf)U#N(5WM6Gsq02gAFhuq- zmcmFzwQ6cfs}Y`DTB0D8pF)}2fQPrKWy1A$n7{^$*_G)fq0ByQm}8ZJkTTb68>VHH z`ZdooLhhBz|Jg_fqkh!m7g>!TMXqBsP0jh%Pp_=3pcv|0Ew!vw-l&%slsImNrytcx zRA^V(T#hunwcFiTMq2%dW*aKyD5{GC9(Zpz^3LHnF4c=L_OlyWO)b|49d<2==zjk0 z0H6AAm*mfTq+f~8Vo?YsF7vNW|3n@bNQZ)VD0BO;?Aq9jlsCENWK336zwVlt7FK5a z{I(8dcC+6W2uJTxU7m4MGN@Eu3$nSpf-0-Kyb!F%xu5QNaAy9deMf)2P0qp2|0&IFW+aJit-PZT1k<5E%H#(?tWS#HYXn_qscpW-@4krT+54;Xt zK8Iw$Vbtpo^*J03I2?h4eKXr#{@oyW&!tt{hSL+dBkIIevy?8YhGi8j)ilzUI%yi^ zqLC>XS+!IcHB5ELG^WP#rmkDC={Al4na3TaZ2Ja+9XAnFT7x_TShi-;ca&f#eC6lfmtvC?2m&!oX(7b Up3c&@z%gbD*#>*6U}dq(Keu>aApigX literal 0 HcmV?d00001 diff --git a/objs/redirect/heredoc.o b/objs/redirect/heredoc.o new file mode 100644 index 0000000000000000000000000000000000000000..ac90431c80a28b845b28b93939cb335f876f062c GIT binary patch literal 2572 zcmb7GUuYY39RH<_?X9j&Hs)W1Mc6|{<1+ui&{f)*8#i5`j0N^mehZh&dNlu*CN>DM zbJyvPqqqmf6@1u(ps<&UFIr}o(qe}%>jc4vJ=8L>g$(l$Y*y>$=X>|N%%tsuU-G^0 z|G)RUyWHBi_n?z8Pdmc}=mkn`xCDTJXMmT;umkiy<`{Y@2H?ub$p|SQ0q1$Gn0I(b zJ|&+%^+y9 znn`72YMvL;V|qHy`H67D22=80S^r8xnu{V8HG%OYR4 zL*x_ka`pAe<7-v zzbi&1q?o1ZDg~SJs!>{HzKd@_P^{NUcZ0gIt%_BuDyF>L5N4^kknDX~hi%CYd1O5F z^Noi9WwKB~_^%?sZrF-e<~F1cR~{mfxd)Q5GHz^)`zGFm!jdb-^0-lFzKNG0Dwb0t zQZarTHzj4V?>1VSZM3&2Z&E*NyXgXCLSf09im?zHn!haO^<&<;V#&b%06MBFMyZM- z7Z4+wi@K#)?_UBhvt3z!;Cfho$UJqqdDQGTwj!{$d37HM2u1mckBo_ z+@LzrnRApmQZ;|HBM$vVdYd)nn(aM-17&;L+O-)fOZ%`(CtmjLpPB2u@99MK@!^a z@ql8TlW-24SuH!cL^anwc6JjOnol(Khu+LWt+A2{odMj>cHiW*!(lnEg0tk>)c0{P z>-UW^x+~OioCnPMfKm2@v3z5(`-FPy=p}Ctd9L3#qct!ikxJJLMd8sfm(1v0Sggn@ z8ZvKAS%u~G2X?YjJ&eW6=G*{QAI9#HwL79NA>C8q5xLT3$#;~6y+3Zb}wKOIUFHi3N_ptMlrAI70qCCtUill70Yv|d4fOawYJ0mI zr@;pD3j@z=I(}k~ZT*t)TNQp{o^Aa;gI1!p8SzdEu7KjZ5u66a+b4Jp6fRGkb7*iMD1O18Pz&$yU>TI`-+6} zr$Kw*=$;>4$nJUhO2`2;OF&-*@-GYdTgX1hE?^eQ+kj_VWV&Clw|Rxfg%&%-{x|-e z7Wqnx{6dTTT8n(NMILOCKWUM1Pn+s9t`+q><1tm$Mn@SR%jtQI<1Y&1>ad=S^Wj)J zp41>F@}!OzvW#c4TAK0H2u~MMjF0MP)3GERGPx0kzadFI4GJqg;CQ}yR?lj-BB3X> wH2t;US}vE#;jc@a_@bs3P*hFDQ9q{VvpN`*%R-CdJOMGDanm`48WQID7a!*=9RL6T literal 0 HcmV?d00001 diff --git a/objs/redirect/heredoc_parser.o b/objs/redirect/heredoc_parser.o new file mode 100644 index 0000000000000000000000000000000000000000..1e41063e629f010912b81e2719117a643fcf769e GIT binary patch literal 2860 zcmb7GU1(fI6rPPS-P9y^mDa`|NRT}AWlQ|SSd86ZuFQiAF*Fjzdb8ZzG%LyOy4jls zVIgpnn(G(|Rl!F=5c^b7gjgh|ZD{i%Mi3GU;vy^TLX;?dh^cM-&YhWL^Y`Fk=briI z{LGni&fL2{Z2WQe5M!Zx7#Rs2z>JArf+D}hgit7x}YSjLBnCr4X!&{Hm0C3$ZiTu-&?FSGnks z(sE*Rb93N?(KG=Y#*C&IQ}K6E{JwjO`#q%_W)W(eIL1X}Ub^#5#AcR6yy#sC`SBvR ze;j`XU0>~5C09WNSlN5bAli!s@)7Nt6Ljk&sr_s=O~^5H;&R0(&5PxlnJyqD=h zQM{0p5HO_i3Td;H20_qPJhaID>zAo=+b&*1)FOW?@GZ<0KmU`=uS}Q#6fVqUdP#Bm z=|%KO;01Y|m!3qv1TZUsx6pOw+IGeUW>mgfxd<9nm!0w^+H@$W?^c~rvHk0;;=o>L z38XemnGFY>;VracSEH$u>H4%*Zp8gKb}$Q_f^~TFp-!KnR(FsKz5mMN^IXK?wx_`D z2aLI=?)UDpDRbGFcm@gEN7x()WpOAR__u3iIcsCaN7rLh?()0l^5-FAl8#+|a=RQ_ zd%ucMkRsw;4f&CBl3FULFV)s9sbp{M)@jUDhdZe0C+HpqreUuvQ&QqVN{l9*kDy=a zzER?J+w5!yT)P$ApjV|cgxQ9A-vp{qqa^vEAmTO(3PFbz<<_ zQcs;@U%esdb^R;#)Oq&R`w)5`D?N3tef8-3F@8t-Q|H^GH(JeD9b?h6;OOJ%pU4N{ zU%?4~qwpngr1IzmaGWiA5*)wiQ9MZheF*W%iu&NB*Nz9Rp8zL64dD2+MQ3#=!B5{)V&Be!qZ|-9>Ov^aDI_<)Z?e{JY@f zXHfB1!0UluRQM5abbj?-iu1GpI)y=4_v5Du_rWRA z1q_nwenSk*0M?Yoqyn4Ls7be?EdwN4w;?Z50@>eNm z)f$T90&Hkoq>GHcMuI{j(e$|SNQ4zN_~cQbmLvWGF(YHzvDNG_R9Y3Y!I zsgoMDMw~>}9#pQGWe=rC9A;&mME_7Sh1o#X!PCiR(^>rG>&INX%sQE&gk7=VjAat3 M{$Ph>E}dZi0h*DQT>t<8 literal 0 HcmV?d00001 diff --git a/objs/redirect/redirect.o b/objs/redirect/redirect.o new file mode 100644 index 0000000000000000000000000000000000000000..5327392639b1ace5f59ea41eec42e7df439cc174 GIT binary patch literal 1644 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 K%Pf@~i~R?6KkCx} literal 0 HcmV?d00001 diff --git a/objs/utils/error.o b/objs/utils/error.o new file mode 100644 index 0000000000000000000000000000000000000000..b12d16fc00d1b0a2aab56a1ca24876909b020726 GIT binary patch literal 2792 zcmb7GU1%It6u$Xw8r$r~8mJ(26pMXuY7_&d5J|PG^I%HQ1{5sgc6T;e-Q7uMXJ{g< zMv@eVF%r-h>4Wt_QB=&EMMPU$+9GK8aUTTtMcBm%`%q!=|2uQf-Rw@*2QPc)yWjb{ z=iYnf&ffa{*T44&(bFgJK<`H%>cvAtN4p#S4O09^+Z>RJBjkgoIARLw6pxx|y4I2_ z$C95;Ja>ABtI;AQf=2Pk_Y#6UK!Sd;LZF&yri!kUEzGgNG&|#|I2Ty|F6XKIIbB7O zU&_ueBvY>G70zV~Y14fAWJ`%boELJDg~tYkpi~<}LU8Dgkfv$Pn;9pWx1>Wfzb%ee z<#-j2$5h-Q#Jn04K7xJ_Jv@rouoy(AMw62K;9em{fkz;|41~X!L8nGO)M-k}bszfw zZL@~|v$488Zuq69;d>2#cH0O_%^Jlq{6xhF(EUW!2)v51G5HwwrcGC>O0rsNh}haw z*7wu! zMxsg9^-qZerH&bDYPxcmY+s^m4A3?jSE^X@4W+FjUNsu;g)m;CdOZwFyV3}Q$N>Jg z(m5!Rre*}w6{ByuY`lIYjPHMkoxI5=(=eHZdbWJMe-t@_`_oMXYZ|N9rn;@S>3g?B zy`QM9mTn_8dWq?@u+g7m29FF?ezr*B1Y0}$aa-qZIRcX=}Tc;{DHU{2; z8cRTy9(q_XvH-rJa)lIYkXuk+lfM12^`jU`{l-Kd0luU%Rr^G#TQX{8Cw&-*dglYv z@wx5HT@F3e++{Vl%uH=`xS5%wu|t$mtA4b$diSTXov56(5$NG8i=}>N$Z)4pPMGEr_j)ibGS)4zviSUQ3DW5E)wSw(x z8QUwQhao>@Yeg?LuVu11OS2s4 zf?FIG?RudVAa=5;mVxG2iyp#b-or3%Zy!s7qv>p0OvB^hYpdPjB6~b3ahHFCZ&Ut6 z?9$KB<%@Q&gkAc(q+Im8@{H(Niuc6#?HSsH)%}p)gFgPpKVjqig*Y)1Ki~Vr{z3L5 zyOZdb*pAoH)h-9Sl|N-XUQbuMcVPF?U(&Ai>FYA@SFo$H9j|X!ygb&APotgz;!f9- zK-8r^0mK?69|Xq04+F84V|2li{zs4@;4NSr_%#qOn*JHf-vpxRt3dq5mhd3E0`q5? zKMo{6o#h9Bobf8fOuc@-w=f2(mO!-9uO-1Z6M`+ z9*7Fm7n!G-n?Rc91j`=e#y=jAcA@5j6Ye@LD{Cg1vMm7 zHO^TWh7)CkdCtkYmM~NER_bNx?Jh4sAk#UUgw(N;>0Gt|VaBmqs+66^IG@br?357y E0(9v#;{X5v literal 0 HcmV?d00001 diff --git a/objs/utils/free.o b/objs/utils/free.o new file mode 100644 index 0000000000000000000000000000000000000000..e0ed88cf7ceb3ed77052c1dfa4e79b05eff88c42 GIT binary patch literal 1208 zcmb7D&ubGw6rPP~yZEEogNIl|bC4p4l6ng0VTxTC#ezr$FET92h6dU+tXqtNAVh>P z2>vO87mtEMdJw#N@Tw>%c*vo6X#C#Hn{-?0!3S@?_rCY$+c(L~r$4{;=7b222`un3 z{4E7FIP46(LHQB(nQMm;nu45k$+XVXe(qwIuf_M*_H!TA3wkumYY3d6Vp%*R@TPTh zYqOU$bG_Yt)akagzP;jWgkDE78A69<2_af?9D_@=PS->)wE{0|`vrMXnS*i$6w8m|@dRe#@!(xBjK|8XVu+jd zYs=-z%X3q4Syx7es=11W>pS*CKX$OsPG`7UoR~PD4?aW>-nXw*&OfK2#6RaXvO4Xx z=a1;Sem5~bwn|n6%QqMBzwKEeesd^~sGsI~@Z_!t`cV*_oC{w;G*IyE4q>^Ovr$SVl^xfeJGSX;u1atV8_U2-{R?%tz5wRuFvTO=}ZT6uqf64ca;p6{-lyLa;*9g{uk*DRy843!)Wt5niXsv<;?7NTxOv0+mGR z5CjDm{se!5D-A^G(jVZa8zBLOEV>9T8qa-mC#KqX;l2BD&OPtG$xOcf`gt@#6goxN zu*R_>W7y(Yu*+C`42-b%%!SQ}4{~S{FVT`DFP|9z;*&EY{=RCN`}x zPP+kzy;AA2Tgv9wrKr?#y+G%*;4k=sLnh-6D$pxz7VWgFw({HAd`7AJivtkBip;eu z#Xab;BvNs*S;qUnlMDL^MMW8c0;#r~%fwa4ceHu%*8D}Vr#m0wn zop4cp-bMHoc=Xc)tYO0u`dJR2GmQT)er$Q)t=f<1XCC0w47N7YEzj&(wQ7%ymy?{n zzB3Dg4>cJ25>2&?SdyeaZh6(7%S^(`9rAh*=(e1ja2 zRBP2PZ*Yg$ZQsk=5mbqi5Q@;% z!oV<@k7(gs^wrqisj&1hZxL%+crxdSyc~E%;mN!w^4@{>L3lFvKfJf#V9dlEJZ4GU zfX6p+=>k07sKg39@NiOmTs)kv&%zrZB)I_Nx0v%LCoqIM*9kVhKjU!*U=|j_v2mRd z@n4!ix-$4?1t+!Us$AL4JKI5+v&$~2VyUo>zYFD*N`;bgDp}Ngs-4NGRXhDG$jjLs ShlH0dWDtXwwsW~cn&>zE2>5gW literal 0 HcmV?d00001 diff --git a/objs/utils/list_clear.o b/objs/utils/list_clear.o new file mode 100644 index 0000000000000000000000000000000000000000..8367380f51bb290e6afcdc9c88d953b3a76c602a GIT binary patch literal 1056 zcma)5K}#D^5S~POh=HcnJIAb&dXXB4@{uG<}dAJEi9SrKgY3e@i0oq> zKSX6@UHQ&4-8D35J0Ah@1m<@HKM5`g7J$&D?HS?ZV6o?z6b?v@Zw}=wzb!VNnfLTe hZw9*dEvVGIvQI*)Uae90zyPchy zjSvZJV+~^@NThGR_@MY?&#8%oD>4OgnK3I!F7E{>AXf^RWbI;wK$q#tQopZl) zzI*Pu=iHsly}uuBwF?nBAn?Fw#fY}xVPHU>#CV?^`-p+XB&TQ%L}4=1pm-#f<=Pcj z&Ltj8zCPB(YW5K?pm;Pj9~0sQa<+;EQc5f4dhrTI;>I=?BjMXE?`4GEcE61Hxbj=*Ft_hqolmtvjbN?*kg+SN0P>h&Ad?iOva zL-}Day;2k_$C@i^{{-CC?gM-B&j$E+Li|>3ag7YieJ7h7(@SrfUdpJ>wI0+KpOF6c zroT29j8SQAYmoj#v-wE1SHqA*z)VsO?jXywWKg zsuGC8Ri6!*D5hU}uM%DF-`d`0psznqpn6-scx&QWt>Y>Yh1MaszlPsm>ZjKqHJ6fg zY}MI}i_X{4$%nF&b&zzw?_9|Mv$h)IG`n#)5Y0;?L`n~JV+%K06`H#t_X&36w*ZN| zp-9bc+zybq8;aEI#^(VNl_JoM9{^D{xu!d!EuJRBa^JhnCAd#;r*zZ1Ot;s8XDPX% z(!Ul8fD6w7F62gzwAzru?zv!rV!2G`7j6H_U49UEG*cYG*Qe=k8*^ z`R0CJa-;ff1eL3OzwO`7&}Lf4kdXItxo;SY{H-qDip3HkaUI(>N{(H0a<&ulBw}JP zJrpn7>1~=|i;bj4l5xYXUagtMQNib9DQk9y zj2t%OTmmrOn$8raC{^R~m7<&--lY z#1(|>^6Pk+l4PXXlDU$F`8_cJu@cZ2a) zj6Y`lA>$I`JmV3@DaLWeU5r~8KSGZ%J^lqW?e{6;>x`*~5 z*eQVp90wh^ZctQm)-_BR#Sw^V5^RZLNj9VNgBF zt(_L4mp0>KiG(JltOeI8&(E?$sqT8Z4$?!)XdrAeT($_GRh_GumaFRX56klfrS6UX z+Js_o!V)`gqaGdoB^q$)u98aGB~^6HIXg-?jBk~r*SOvq*JD$h5u&7Zk|W?DaCjBT ze$fjiqB7)v4;%@|EQVEsM7|gYcM{>$-044wJ|(@cvbmj--r}xT-+4zk-e#}_lr6n{ zAe)PUNIo7Q^XZ+>2ne_Q{Eqa;0xvfNu`B(lKzjY;ksCPzELb-po$7o@&8&034EnXD zR}Z|YEi`D0BVnD|V+!zl8_{GirQl68t{`|tN_a01%!LxoKofmypzyPd)M#bD zcovyQ_6_zNxBr^=r;o|Mz|CThCPb`Z#EgNy#42*Gz<(J${sWLf8i&Z8GoJL^JsZ9y z*r&Kr@C%M(9O6%L6~r0)QN6##JxAOM$1(0B^|pZ#7m;=#@qVN~A&2BmNW7Qn3?%;P z!Ap?9n!XQ-(B3S|6ibNEe-$!`0DaCuw)K2(u&w8rWg8+S!in^rINKAE&6W^_LpEZ& zFI&}|>MY(lWjjvQQFf#33gtSst;|9}Ipx_>r(Lm&+O#UR>2Rp!*rsbMc!~nArfmx@ RXH^T(i>|WFN~LNE@e}wnOfvug literal 0 HcmV?d00001 diff --git a/srcs/Libft/ft_calloc.c b/srcs/Libft/ft_calloc.c index cab9b63..09c73f7 100644 --- a/srcs/Libft/ft_calloc.c +++ b/srcs/Libft/ft_calloc.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/12 18:35:23 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 17:47:28 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:32:33 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/builtin/ft_exit.c b/srcs/builtin/ft_exit.c index 7030d6f..29e544a 100644 --- a/srcs/builtin/ft_exit.c +++ b/srcs/builtin/ft_exit.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* ft_exit.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:23:29 by kichlee #+# #+# */ -/* Updated: 2023/08/17 13:34:29 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 18:31:37 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -48,14 +48,14 @@ static void arg_over_one(t_data *data, int count, char **cmd, int flag) if (!ft_strncmp("-9223372036854775808", cmd[1], 20)) { printf("exit\n"); - data->error_code = 0; + error_code = 0; exit(0); } status = ft_atolong(cmd[1], &flag); if (flag && is_num_str(cmd[1]) && ft_strlen(cmd[1]) <= 20) { printf("exit\n"); - data->error_code = status % 256; + error_code = status % 256; exit(status % 256); } exit_not_num(data, cmd[1]); @@ -75,7 +75,7 @@ static void arg_over_two(t_data *data, int count, char **cmd, int flag) if (flag && is_num_str(cmd[i]) && ft_strlen(cmd[i]) <= 20) { check_errortype("error", 3); - data->error_code = 1; + error_code = 1; break ; } else @@ -86,8 +86,9 @@ static void arg_over_two(t_data *data, int count, char **cmd, int flag) static void exit_not_num(t_data *data, char *str) { + (void) data; check_errortype(str, 4); - data->error_code = 255; + error_code = 255; exit(255); } diff --git a/srcs/builtin/ft_export_check.c b/srcs/builtin/ft_export_check.c index ab69866..66e6e2c 100644 --- a/srcs/builtin/ft_export_check.c +++ b/srcs/builtin/ft_export_check.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* ft_export_check.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 21:42:23 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 15:09:19 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 18:28:37 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,7 +28,7 @@ t_bool check_env(t_data *data, char *key, char *value) printf("bash: export: '%s%s': not a valid identifier\n", key, value); else printf("bash: export: '%s': not a valid identifier\n", key); - data->error_code = 1; + error_code = 1; free(key); if (value) free(value); diff --git a/srcs/execute/child.c b/srcs/execute/child.c index 516826e..259936e 100644 --- a/srcs/execute/child.c +++ b/srcs/execute/child.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:36:58 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 18:38:44 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 16:40:49 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/execute/execve_utils.c b/srcs/execute/execve_utils.c index ee9752a..1ef1e7f 100644 --- a/srcs/execute/execve_utils.c +++ b/srcs/execute/execve_utils.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* execve_utils.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:39:07 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 15:48:15 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 18:28:32 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,7 +33,7 @@ int check_builtin(t_data *data) if (built != 0) { check_redirect(data->root, data); - data->error_code = exec_builtin(built, data); + error_code = exec_builtin(built, data); recover_std(data); return (TRUE); } diff --git a/srcs/execute/file.c b/srcs/execute/file.c index 8fa2d13..42af31f 100644 --- a/srcs/execute/file.c +++ b/srcs/execute/file.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* file.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:53:28 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 16:38:20 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 18:28:26 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,7 +23,7 @@ void check_file(int fd, t_data *data) if (fd < 0) { close(fd); - data->error_code = 1; + error_code = 1; error_print(str, 0, 1); if (data->info->parent == 1) exit(1); diff --git a/srcs/execute/parent.c b/srcs/execute/parent.c index 5ce2406..6ac9231 100644 --- a/srcs/execute/parent.c +++ b/srcs/execute/parent.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* parent.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:37:35 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 20:16:40 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 18:28:21 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,9 +23,9 @@ void wait_child_processes(t_data *data) { if (wait(&status) \ == data->pipe->com[data->info->pipe_num].pid) - data->error_code = WEXITSTATUS(status); + error_code = WEXITSTATUS(status); if (WIFSIGNALED(status) && !data->info->heredoc_flag) - data->error_code = 128 + WTERMSIG(status); + error_code = 128 + WTERMSIG(status); i++; } if (WTERMSIG (status) == 2) diff --git a/srcs/init/init.c b/srcs/init/init.c index a388442..35fc6c6 100644 --- a/srcs/init/init.c +++ b/srcs/init/init.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:52 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 18:31:07 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:30:40 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/lexer/expand_check.c b/srcs/lexer/expand_check.c index 60759e0..d883452 100644 --- a/srcs/lexer/expand_check.c +++ b/srcs/lexer/expand_check.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* expand_check.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:23:58 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 13:27:51 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 18:28:09 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,7 +38,7 @@ t_bool check_question(t_data *data, t_token *token, int *i) if (data->input[*i] == '?') { - tmp = ft_itoa(data->error_code); + tmp = ft_itoa(error_code); token->str = ft_strncat(token->str, tmp, ft_strlen(tmp)); token->blank = check_end(data->input[*i + 1]); *i += 1; diff --git a/srcs/minishell.c b/srcs/minishell.c index 23f1c95..99c5303 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* minishell.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 15:20:58 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 18:35:46 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,7 +26,7 @@ int main(int argc, char **argv, char **envp) if (get_input(data) == FALSE) continue ; execute(data); - // check_leak(); + check_leak(); input_free(data); } data_free(data); diff --git a/srcs/redirect/heredoc.c b/srcs/redirect/heredoc.c index 9a049e0..ecfbf33 100644 --- a/srcs/redirect/heredoc.c +++ b/srcs/redirect/heredoc.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* heredoc.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:21:48 by eunwolee #+# #+# */ -/* Updated: 2023/08/14 18:22:52 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 18:27:50 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,16 +29,16 @@ int fork_heredoc(t_data *data) signal (SIGINT, child_handler); mk_heredoc_pipe(data); execute_cmd(data, 1); - exit(data->error_code); + exit(error_code); } else { signal (SIGINT, SIG_IGN); waitpid(-1, &status, 0); - data->error_code = WEXITSTATUS(status); + error_code = WEXITSTATUS(status); if (WIFSIGNALED(status)) { - data->error_code = WTERMSIG (status); + error_code = WTERMSIG (status); ft_putendl_fd("", STDERR_FILENO); return (1); } diff --git a/srcs/redirect/heredoc_parser.c b/srcs/redirect/heredoc_parser.c index 7fbdbe3..9fbe33d 100644 --- a/srcs/redirect/heredoc_parser.c +++ b/srcs/redirect/heredoc_parser.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* heredoc_parser.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:16:20 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 13:28:46 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 18:31:50 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -65,7 +65,8 @@ static char *heredoc_question(t_data *data, char *tmp, int *i) { char *temp; - temp = ft_itoa(data->error_code); + (void) data; + temp = ft_itoa(error_code); tmp = ft_strncat(tmp, temp, ft_strlen(temp)); *i += 1; return (tmp); diff --git a/srcs/signal/signal.c b/srcs/signal/signal.c index 01572a7..ac0f951 100644 --- a/srcs/signal/signal.c +++ b/srcs/signal/signal.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* signal.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/15 18:40:34 by kichlee #+# #+# */ -/* Updated: 2023/08/17 15:13:27 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 18:32:39 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -36,9 +36,10 @@ void init_base(int ac) void handle_sigint(int sig) { + error_code = 1; printf("\n"); rl_on_new_line(); - // rl_replace_line("", 0); + rl_replace_line("", 0); rl_redisplay(); (void)sig; } diff --git a/srcs/utils/env.c b/srcs/utils/env.c index cddd0e2..a897954 100644 --- a/srcs/utils/env.c +++ b/srcs/utils/env.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* env.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 06:38:21 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 18:38:38 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 18:56:37 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/utils/error.c b/srcs/utils/error.c index 5532bb2..158cd4f 100644 --- a/srcs/utils/error.c +++ b/srcs/utils/error.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* error.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/17 14:53:39 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 14:57:04 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 18:36:52 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -86,13 +86,14 @@ static char *ft_strjoinstr(char *s1, char *s2) return (tmp); } -t_bool error_back_readline(t_data *data, char *str, int error_code, int flag) +t_bool error_back_readline(t_data *data, char *str, int error_code_b, int flag) { + (void) data; if (flag) perror(str); else printf("%s\n", str); - data->error_code = error_code; + error_code = error_code_b; return (FALSE); } From 250592ee8b2c40e6c02aadb2f7e9e8d2c45b038e Mon Sep 17 00:00:00 2001 From: eunwoo Date: Thu, 17 Aug 2023 21:41:06 +0900 Subject: [PATCH 50/57] . --- incs/minishell.h | 5 ++--- incs/parse.h | 6 +++--- incs/struct.h | 6 ++++-- minishell | Bin 91224 -> 0 bytes objs/Libft/ft_calloc.o | Bin 804 -> 0 bytes objs/Libft/ft_isalnum.o | Bin 788 -> 0 bytes objs/Libft/ft_isalpha.o | Bin 680 -> 0 bytes objs/Libft/ft_isdigit.o | Bin 664 -> 0 bytes objs/Libft/ft_itoa.o | Bin 1304 -> 0 bytes objs/Libft/ft_memset.o | Bin 728 -> 0 bytes objs/Libft/ft_putendl_fd.o | Bin 904 -> 0 bytes objs/Libft/ft_split.o | Bin 1804 -> 0 bytes objs/Libft/ft_strdup.o | Bin 1000 -> 0 bytes objs/Libft/ft_strjoin.o | Bin 1100 -> 0 bytes objs/Libft/ft_strlcat.o | Bin 916 -> 0 bytes objs/Libft/ft_strlcpy.o | Bin 868 -> 0 bytes objs/Libft/ft_strlen.o | Bin 728 -> 0 bytes objs/Libft/ft_strncat.o | Bin 1140 -> 0 bytes objs/Libft/ft_strncmp.o | Bin 852 -> 0 bytes objs/Libft/ft_substr.o | Bin 1220 -> 0 bytes objs/builtin/builtin.o | Bin 1852 -> 0 bytes objs/builtin/ft_add_env_front.o | Bin 1568 -> 0 bytes objs/builtin/ft_atolong.o | Bin 1744 -> 0 bytes objs/builtin/ft_cd.o | Bin 2756 -> 0 bytes objs/builtin/ft_cnt_args.o | Bin 700 -> 0 bytes objs/builtin/ft_echo.o | Bin 1576 -> 0 bytes objs/builtin/ft_env.o | Bin 1084 -> 0 bytes objs/builtin/ft_exit.o | Bin 2588 -> 0 bytes objs/builtin/ft_export.o | Bin 2004 -> 0 bytes objs/builtin/ft_export_check.o | Bin 2440 -> 0 bytes objs/builtin/ft_export_print.o | Bin 2700 -> 0 bytes objs/builtin/ft_join_cmd.o | Bin 2320 -> 0 bytes objs/builtin/ft_pwd.o | Bin 1116 -> 0 bytes objs/builtin/ft_unset.o | Bin 1164 -> 0 bytes objs/builtin/ft_update_env_cd.o | Bin 1284 -> 0 bytes objs/builtin/ft_update_env_export.o | Bin 2640 -> 0 bytes objs/execute/child.o | Bin 2476 -> 0 bytes objs/execute/execve.o | Bin 2428 -> 0 bytes objs/execute/execve_utils.o | Bin 1812 -> 0 bytes objs/execute/file.o | Bin 1104 -> 0 bytes objs/execute/parent.o | Bin 1212 -> 0 bytes objs/execute/path.o | Bin 2512 -> 0 bytes objs/execute/pipe.o | Bin 2012 -> 0 bytes objs/init/init.o | Bin 1776 -> 0 bytes objs/input/get_input.o | Bin 1692 -> 0 bytes objs/lexer/expand.o | Bin 2080 -> 0 bytes objs/lexer/expand_check.o | Bin 2760 -> 0 bytes objs/lexer/lexer.o | Bin 2544 -> 0 bytes objs/lexer/lexer_utils.o | Bin 1256 -> 0 bytes objs/lexer/quote.o | Bin 2648 -> 0 bytes objs/lexer/tokenizer.o | Bin 2104 -> 0 bytes objs/minishell.o | Bin 1020 -> 0 bytes objs/parser/parser.o | Bin 1688 -> 0 bytes objs/parser/syntax.o | Bin 2828 -> 0 bytes objs/redirect/heredoc.o | Bin 2572 -> 0 bytes objs/redirect/heredoc_parser.o | Bin 2860 -> 0 bytes objs/redirect/redirect.o | Bin 1644 -> 0 bytes objs/signal/signal.o | Bin 1972 -> 0 bytes objs/utils/env.o | Bin 2336 -> 0 bytes objs/utils/error.o | Bin 2792 -> 0 bytes objs/utils/free.o | Bin 1208 -> 0 bytes objs/utils/list.o | Bin 1488 -> 0 bytes objs/utils/list_clear.o | Bin 1056 -> 0 bytes objs/utils/temp.o | Bin 3060 -> 0 bytes objs/utils/tree.o | Bin 1712 -> 0 bytes srcs/builtin/builtin.c | 2 +- srcs/builtin/ft_exit.c | 12 ++++++------ srcs/builtin/ft_export.c | 8 +++++--- srcs/builtin/ft_export_check.c | 6 +++--- srcs/execute/execve.c | 2 +- srcs/execute/execve_utils.c | 6 +++--- srcs/execute/file.c | 6 +++--- srcs/execute/parent.c | 8 ++++---- srcs/input/get_input.c | 10 +++++----- srcs/lexer/expand.c | 2 +- srcs/lexer/expand_check.c | 6 +++--- srcs/lexer/lexer.c | 18 ++++++++++++------ srcs/lexer/tokenizer.c | 11 +++++------ srcs/minishell.c | 5 ++--- srcs/parser/syntax.c | 2 +- srcs/redirect/heredoc.c | 10 +++++----- srcs/redirect/heredoc_parser.c | 6 +++--- srcs/redirect/redirect.c | 26 +++++++++++++------------- srcs/signal/signal.c | 8 ++++---- srcs/utils/error.c | 6 +++--- 85 files changed, 92 insertions(+), 85 deletions(-) delete mode 100755 minishell delete mode 100644 objs/Libft/ft_calloc.o delete mode 100644 objs/Libft/ft_isalnum.o delete mode 100644 objs/Libft/ft_isalpha.o delete mode 100644 objs/Libft/ft_isdigit.o delete mode 100644 objs/Libft/ft_itoa.o delete mode 100644 objs/Libft/ft_memset.o delete mode 100644 objs/Libft/ft_putendl_fd.o delete mode 100644 objs/Libft/ft_split.o delete mode 100644 objs/Libft/ft_strdup.o delete mode 100644 objs/Libft/ft_strjoin.o delete mode 100644 objs/Libft/ft_strlcat.o delete mode 100644 objs/Libft/ft_strlcpy.o delete mode 100644 objs/Libft/ft_strlen.o delete mode 100644 objs/Libft/ft_strncat.o delete mode 100644 objs/Libft/ft_strncmp.o delete mode 100644 objs/Libft/ft_substr.o delete mode 100644 objs/builtin/builtin.o delete mode 100644 objs/builtin/ft_add_env_front.o delete mode 100644 objs/builtin/ft_atolong.o delete mode 100644 objs/builtin/ft_cd.o delete mode 100644 objs/builtin/ft_cnt_args.o delete mode 100644 objs/builtin/ft_echo.o delete mode 100644 objs/builtin/ft_env.o delete mode 100644 objs/builtin/ft_exit.o delete mode 100644 objs/builtin/ft_export.o delete mode 100644 objs/builtin/ft_export_check.o delete mode 100644 objs/builtin/ft_export_print.o delete mode 100644 objs/builtin/ft_join_cmd.o delete mode 100644 objs/builtin/ft_pwd.o delete mode 100644 objs/builtin/ft_unset.o delete mode 100644 objs/builtin/ft_update_env_cd.o delete mode 100644 objs/builtin/ft_update_env_export.o delete mode 100644 objs/execute/child.o delete mode 100644 objs/execute/execve.o delete mode 100644 objs/execute/execve_utils.o delete mode 100644 objs/execute/file.o delete mode 100644 objs/execute/parent.o delete mode 100644 objs/execute/path.o delete mode 100644 objs/execute/pipe.o delete mode 100644 objs/init/init.o delete mode 100644 objs/input/get_input.o delete mode 100644 objs/lexer/expand.o delete mode 100644 objs/lexer/expand_check.o delete mode 100644 objs/lexer/lexer.o delete mode 100644 objs/lexer/lexer_utils.o delete mode 100644 objs/lexer/quote.o delete mode 100644 objs/lexer/tokenizer.o delete mode 100644 objs/minishell.o delete mode 100644 objs/parser/parser.o delete mode 100644 objs/parser/syntax.o delete mode 100644 objs/redirect/heredoc.o delete mode 100644 objs/redirect/heredoc_parser.o delete mode 100644 objs/redirect/redirect.o delete mode 100644 objs/signal/signal.o delete mode 100644 objs/utils/env.o delete mode 100644 objs/utils/error.o delete mode 100644 objs/utils/free.o delete mode 100644 objs/utils/list.o delete mode 100644 objs/utils/list_clear.o delete mode 100644 objs/utils/temp.o delete mode 100644 objs/utils/tree.o diff --git a/incs/minishell.h b/incs/minishell.h index 235d382..ca5c3b5 100644 --- a/incs/minishell.h +++ b/incs/minishell.h @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* minishell.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:05:33 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 18:55:59 by kichlee ### ########.fr */ +/* Updated: 2023/08/17 21:25:43 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,6 +30,5 @@ # include "utils.h" # include "message.h" # include "libft.h" -int error_code; #endif \ No newline at end of file diff --git a/incs/parse.h b/incs/parse.h index 167b5f5..2dd6178 100644 --- a/incs/parse.h +++ b/incs/parse.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/04 07:53:54 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 09:33:03 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 21:23:42 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,13 +17,13 @@ void tokenizer(t_data *data, t_token **token, int *i); t_token *token_create(void); -void token_add_list(t_list **head, t_token **token, t_bool create_flag); +void token_add_list(t_list **head, t_token **token); void token_redirect(t_data *data, t_token *token, int *i); void single_quote(char *input, t_token **token, int *i); void double_quote(t_data *data, char *input, t_token **token, int *i); -void lexer(t_data *data); +t_bool lexer(t_data *data); t_bool expand(t_data *data, t_token **token, int *i, t_bool quote); diff --git a/incs/struct.h b/incs/struct.h index 745ece9..a6a6412 100644 --- a/incs/struct.h +++ b/incs/struct.h @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* struct.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:24:15 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 18:26:32 by kichlee ### ########.fr */ +/* Updated: 2023/08/17 21:25:58 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,6 +15,8 @@ # define BUF_SIZE 1024 +int g_error_code; + typedef enum e_bool { FALSE, diff --git a/minishell b/minishell deleted file mode 100755 index ce2d5a3d9711e595a9f27cb392b6c3c3d12aa8db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91224 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�*|J4c)0ftu+lw z+?@wsod@5duqW@I8-dn!Fkl z7_}h6qb7-{UN*VbOG=2;qIiK)lOe$;leUpc12T4F;-)r-(NmL_psq=45ZC|`x3X!* z_DtFf92?jR{2JIskPYZXiUIqh(Rv;gHGE4DTjFTZST>Ly#fgQ9jz??!VRM{dNYu}s zWN64-;)(u)1Idt62T5trNs{KsLDJ?NLeky|go%mfM$}BEgw;&i(!{}8cF=i@rYC0h zFvqb8Wg9U~M)L*73oOeqfIsdWU4>9_PMB13Oaztbn1+xgNpi@s;bj7GMwBIifU^8D z#H$GjC^K2tQeDpgm`yVzrfCh6Nt)p^CcGdw0ff1|5TSuJAZP#+CNz+Q5KWr#MU#|} zBGV>J&LobNY-C$NM7#NmlRm>f;&6lWh`1msB>49#a;4hiE1)%@a^_5@$|YY=qektcIU~W6#a>3`@TCz)b7wF%Uwb zJiX%Sr8&LAsVahth#kw3mmKjJ3Zi__EMK@@kIbSPvuF4^Kfte6$D9lzSe!lki|Rzs zATV&0(2=vi3okk|VchE00*@e2pRAEU2Mgg^ex= zs*=<&v6h;N=Nl0JsivH~8jF*S;YZhbF?^iL>xp#E@w}X_=j7;ty*+BrIb;WU9(&6DhG|(iDtA5O*UMJ^FKKS=4A?4$S4(~jnfk8mNvb2LFR~A+lXUP z!>^n)nK>wz6?oPcmE(2c6xCsCdk+5*FAY zR^H8OEPS!Fbxl)rbzEh|E;Wh6fZlouJ@1a1iOiF~2A)pQ%$jvXPXf`4c#PK{jK$$0 zxM8(9USHi>w>EAp6x*ef!i5_~e2sTRYvvI$=v}Ddz+v#*A{2r*8 zE$pcw$f}^S8iuUKwpI!+o5#gV*C~-0N7pQ_OiCWQZ5KG^fp2)4GT$(`YkB!V{{BBc CZo^Fg diff --git a/objs/Libft/ft_calloc.o b/objs/Libft/ft_calloc.o deleted file mode 100644 index 15da2d7723598418c806bd2e34b1cc7be5b77f03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 804 zcmah{ze~eF6uwlcqOIxRprDw+(GEH}DjK-Kf=Gofa+WluLeol2u?PjBD26Wn3H}E< zc2=Qou8v)V3JOjV9Mtb6cQg*-N51zn@7>G0Jbu1?jWMQ;FbHrI?2=)Cz$~~*{vUXd z@hAC?^3jtKsV_kY&u)5=9r<~)kRSTWDoca<(JWU9#_*7HN=iWptL_{YEl)IR#|O2N z5L=rnN4g>%L+Uj&p;>OA<)~p>nZ|r}MU>s5V@DAoe$RKI`bfPm`>FcL;gMlz1#$)q z&(bGY5+u-}6z{^I?+c)ppi$4Z!8oXvsCF37{b%oT|CzU64eqzzx!)M@jyd4^wF##; zpknTueco>MnSPcgw`T?vep!H6{@|TfKUQ)Zm2`4_?&ks|0^Yti_U@=6g1k4mS`}q% zTAJF)4%3<$Et47>zrK|!H|f=d^1a8$Gq!9k>gi#$S`+JJ3COtA6%`dxCV=^%LI%lF;AclYl7c>MhMN)c%zgdZ>p+_K05uo+;5{XgtR z;!iRs@==o*T$fEL-){P$4*f!Yukh~R(KIbxR)!iv>KF^Vf1HLRN1qtb{J7=xIb4Wt_qt{Ph6THszjQ3377_g zwe)dH0&Kh}$FCuHf6w4$F!BdILk7mVjOYx*=>Pt^X6MChzZ;!auiNUqa#FiT`q>=B zP#}%KL%z=w-uS|xdChLVZ?^A^{W~6rncPpXtyq|*#L-T6NNXCJkxq?WV%9w3vw-^@ zT6Dj(HffwE)-y@T%Yw1boDRm3+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SOFEk0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7kxfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw$ z%29yPOc1v;0BNXGfh+`wk5A2rPb*5yO@)ZX$D_J01FF;kMnlbmav8W87+^}kLPkJR z0*JwO@pCb-0Wk=GECq>oK;1C|NDBb@K>Z8>K#UAPdZBJb7AA@v>e2bMv-U@G?GH!( z9+1^QRuq4q2!xf$-y;TLRq^-p09nUf|A1_I35qfx8%Q#AyZ(ti3}S!*G+r>A12PZ< z7^{L97%K!A1$fvwCID5b0L5g0xZ*zqz~Ys`kx!tF$(ff8qzMXu%Gp2$^CO!cpH>o| NS)7+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z4ETG*fLeeoOa6WyAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag<#WTt0=Qwad2 CK0yZn diff --git a/objs/Libft/ft_itoa.o b/objs/Libft/ft_itoa.o deleted file mode 100644 index c5f4b98c5e4c555c2eb10b8a26156cb22cf513aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1304 zcmah}&ubGw6rR-D2CYrN7AgoX=)r@L;zc|Njm^LaEr?Xpk+p$w-NhL`ughIiVf;3w&|muOC?z-HZ6Bb`gu> z7-riMhIT2M~mruhQRr(JfLu_&cN_pnYuRaxQ^8-bEg zQ;OFx2c7jh_8IJ`XHTFcR1+!T&s+sT{wvRf`$JS)hFk6mlXr#7ec_dTp9)>x_ISIx z7ZYaZ6E#v%KpLW2Zm`7bF~mgu;REDUiqL+{^TqB*x)ky2SX4ewt6;I=l{;y-ldkUdGH5tw9zCi}j0>;m3pWtE zgeA%k#En+MoNpft$5mTV{bDTbCvI$miK+9u<=~LF$VKNs4}QqIbmr#sez-mf)8j4N zh|62To)5y&=Ywc!)b1DqAdh33{`f8rn%__a5|?*9-d);%k=;7|AdXQDq0WP%Bb6|E zEjx@9D>v>a|wv*4YKRo&PivR!s diff --git a/objs/Libft/ft_memset.o b/objs/Libft/ft_memset.o deleted file mode 100644 index c7f67568526212aec1bc314171a52270e870f45a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 728 zcma)4F-t;G82z4!Mp-&E6f`*W3z{5@dT@sxL?{RmSJ5XnJPmu21c6e7HiwKHq)%8iEd-chC9mch7ep?>&Ehd_{?j8Nve$gLf>FAg}_a*#Cj9 zuD|FW-y@TloXe2XwHvOdJ)btS>8bbCz80LvcbOne&54GPvQTx7@&#AcD<_AQqLe$^ z!Tp>zNxh~*-d%36>Z?LcA*EfGrCQ#xy_%H2@7L6=8+y&^JZ)*7sO)QA*TH3QJS#p& z5s<+{xqb`5x{C*UoTptd2tMmGSpSdC2=yk^*+|ugLS+V`V~&I}`yFf8wqD@|LiI$e z_YDYT4aE6~;uot(zA~|G^@Vy8t$Uu1Yt3Ie7RrUVpFgYX&!#v@uTi$Y>;t zL@YXcjjlD+c}$Kc1OE4>&BerJXlo%72tj*Y5S>Jg;#UGHCa(EnTK!Z~A5rvVBQ=Y46l}be?4<-KkVhpyiaumsS;QGc)YBT+45<}L-~Yv?@n1~& zEp7Z#-S=wcQjL<8F1WldVhKt$6L@tKWa@tD!}t%z_o`KSBY+INs_}1C)=Xu77za1f ziSaYfjl3z}r?>CIpCo0ZW0OlQkWxYHY@K4KsaUGNyXOkGCXpKlv)>`2|DP5IQy1~2 zfrJzRTOfY_^eQ4|H?pL9F4WTqGNZ%6rT4G;!W#e4z)HOZ8<-!aJ@1W0N|qB(uzEvEi!ey0T`dSz5@1cD4$&hO1yy@sq>KNTLZfoch zxE5Yj$B#*$*U&)0v{E|fLfML~t*TSrM((*BoXgT291#2}T%YI40=L4I()-QLO3rw}P43EZ{f92&d3J1!MdI-r76l{*%;*f?8koYEaPE9+p!W%tnSzbtJL z<8ZhhS(IY{9XnFw`cZCGFW4r+pre1|%2%Aop}p<4{H$WNm7alX`!uMw_0FiRU24o^`LWkCB~}PR_Ht;z5ag+$TOS{8HS#hW z-oBFeuDqAvi0^193ya@+XazN73$TDfk6^(u^uWVg=-ve2Ytp{}i?NNGM_p|v z9I`=aVO;+*Y$F1b1VCD$V6J$$>nCZVR&;JN&ade9GOP z&qOkn7{qr}7^zeuC5+5)nu&q57){1#Wn>J0Nub$>e+4G=IM%cvES>5%lO7f`;wW(& R>4|>BjqA}^ETLmt_6KWDZg&6x diff --git a/objs/Libft/ft_strdup.o b/objs/Libft/ft_strdup.o deleted file mode 100644 index e6204e0ead8c69eca6ccc054175bca65321d4e85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1000 zcma)4O=}ZT6upUQT54-jP^i#F1Q%TxC~oXVXd8=fp&+F~H*%Ryrfne2gvrFFg+L%E z4ujybD{<+s=t2d%^Dksmn1zDN;==aaH}9oQK=8tO=YF1f+<8C#{Q5gdl(|7TfE+ND z#ZdxacY$|O_=gQleo-E$Rp&l8zZ(fV%{0}~>vqVFfdwv?!TH=)9t z8L7R0yfiGu-9*K0$Xrc+Nr&R+2{Z>PI#vB|rB`3Koz}<}h|GVL?~K@O6J?GzDAOrs ziZhc_AJBCl`2}F*A~pLiX!Ta{ZMHHiI}>vNtgieNjQy0?z}W4b2Pv25z&YeWvcvp6 zZ~>0BM{p2k(W9-B#wJSleyyEE_j)`#78CD;j2B*an}@{Bz~9ANVlN2%fW1yFwDoGc WY2CWlAk*RcRZpi~r(XA6XkP-A>waDU diff --git a/objs/Libft/ft_strjoin.o b/objs/Libft/ft_strjoin.o deleted file mode 100644 index 728f1072535df12164cd6ec91597bf41bccebfed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1100 zcmb7D&ubGw6rPPSU9_4UT2SaAiiaMI6i>YrDt2KG21G0LB4gZc+en%%+YJUG&=Qr5 zMerZ+fAHu@EdJ=tUVF?%u&_c7g26-M_cCwVjiBIzH}B{7?VG&G{;%&xV?sEm1P*8x z>Sk~hp^%Hv4i)|)54bi>7>JF*DM*QrM5#Dv#>O}CqPMho5?k*FJH$uW4hB0-xvbbC zV?`-{GmfhDRZb{1%4d0oSoBQM1yjP~9%sN8u5VQQST*X8tMz52ZY>-a$>DnzIXMkJ zqI`pcOCyv@1#4<0s;mbF@aKF*2F){{WIhhXSs~V}PxdVwjR?%zl_?YiJ6Rx`fuDzZYhCRssGku`|YzDV9v^LWEwH@i11WvSti_{-)jt>RW!+(R$XOXO=2v zAvJn-|Ev(3HfOvEUIeFW?io=630}&61wQC!2ahX=*cYo{9^55ojOGvgC$Fjar;2`6 zRJ=b@@ouW(+CU}yqm(-;mOT`yExIZ} zd5(8({`6~{;%|Q$?495ez`lRt_IdAB;m$&dOTbkS|3jJI10#D_FYzKbcboao3q>9P g7QoyXAHqhcABVxCMm_wK`%R(!AlMG@Qm^~sH{lYW9{>OV diff --git a/objs/Libft/ft_strlcpy.o b/objs/Libft/ft_strlcpy.o deleted file mode 100644 index ff3ef2fabdd3d7b58ead714025d2cffe7c2c503c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 868 zcmaJ+qpy1%(;3BA#;G$^Y4hkX)E^?7JqM%h`#0M0WT50U!BCd}9 z1ShEv#LZF1Ef$#yMz%?7a0HhljVg85o ztJtg3HIAOd;Jz$UI@Yce*a4q27v}1`X5A@+`|&Q^z;7L;LlyFsl!=Y?&837Rw^KW- zsic%sli~Q2BE3pqMuJ_MYW;}dsf(1>id?pr)~&!Nn<)mc@KE*}*n@8~hEE?f>S+cD3)eD!EgDYv$DSANo5;Km3O8LA?zSh~`J%|D zJ^yzI*L)S3bdmII8+wR5sB2bA2OuSGI#dw(X-~iD$b3@He9@12J+9F7ivk>{=F63) zXB#+;@N}%3?e~ o4^2`3VI;~45WZI^jEBAK$SucSOKk4_*j9?9W!oDz9%<5|Z&A98f&c&j diff --git a/objs/Libft/ft_strlen.o b/objs/Libft/ft_strlen.o deleted file mode 100644 index 0d510e1247c42e5483b7986b2a78f3a39dff8e02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 728 zcma)4&r1SP5S}$tDQ$&16m;;=U(m@zhoTnVp&-J*OU#O{7^KFwkpzO!4-hXMJN9RE z6gqh98gvfUL*P+5WZ$@N)eb=)d^6uSJ8#~wyw|VK?>Lb$M+jgPd=`-bfi*BI{tt9@ z{Z03T9y3WOa|O(v)9?Zv_?(r`O?{|rEo7eTGC`DD6Ai&!tXIzqMUO9QSEscS^ZwrK zcUzl`&e=$?%OkR06>17*r^02oP<4VD^Y8syx^-LUyq>2mEfQ5iEqN1M1;=-p3lswd za;emxAVhZ&#N#|2g0qmbA!qCV(Z{O&q1w%X>RG<@tDEM4%)6Axo;8$GUv}(^QXOlc zItPAhD?#S%a!~Qryj-r@mfwFLjYeqlVTQ=VlNUKAu*Wg{rGb&SqNQ$mDHs+2ae(J#%Wrj_cN4JdBb< EKfSpnJ$6#~vaippawm(D=>n+jJWc2WDsH&3xa??!5i+=lAIhW7-tM z13C>&CGc2;LaspfDe(`fsN51^AW;lXMoN4nQaWbM3H>l$I31qJ#W1$8ubB7zobrZdo2BG zp4=865?TM4f@XctqevK!yFxqi_(_wWG!8Xk3_sB*VbbFrFm%8$N3{nl@1s#>tJ*%Xo;O73SJdp+Ioj@1rqwc9W^N|+ z7F9I+Rp^IPa6_Vd${t+GyiPovryY`fgkrb3DlGPuv%+|x0E<=UmSM5#91QI=xd5Av zO+ohsVFERQ+zewCF?MevzBUmPRg4ZlaK$cf;XX^#w#&9OYek32O-JG{vY5Z#M02EXnKiwG7L7K)Wt+9|rQg+Y-7Y-9;ZM2kc@PZU8=OvFnX8~=l) zScs*>La;DrWl9?%DFjQEV0?48m&8JF;N84=J2N|bO!@2WyNfZcgW&@Nfg2*j0BjJL zqWBN<&nha%kI|D6s4tn6R(j9!xEIIxN~{(8>{$`&N3%37$PSwvM9So5W-F1jX zBb$2E;Mr{IU+QO}lucB5J!?fQRsT-dL|K6n@QPF2|P7g6NkyaJDy zI}^8}7=01;gE%TRU~bOwCp+b3JvWXUkXX^L!;r4D)A*yFH$2htME$%3wZI=yP~hbY zP0x2Cp|;p6MF%7s(@%PiUaT4_b?nKG)@!3m7oGG@HJ{UroLU^C-SavQS&`RQ?})gj z_Qd_YzD9mP1={{H)AkI_=IIZ2MW2ni@C-w=FReE|JS#JVaBv0 z3?Ikv#rInADVH5%Ea};#FG5a2oHqR^8-ft% zP>N4t4!Y|qG!2e^7K8Xfy(B34Z_IJ|g_pj@xGZ*MzQg5Qt73HI4zCouTt@d=#KX4EOzzU^d;7P8&STt|N9+7B-GxiqR?SJmk{;}&)+(T@DcwK|tIw?G>8 zcFU@yygSsu!UU8F`icO}kjZp5%wO9RA&1k@8NY|PE_#sS(=|UBwHTczN zt88rRCHkEpcgN7TMna{ZETTW#jg<4-8^-oaO<$uw-M-|nE4|eu?)E``ifl|xqP@v0 z`Np*TKK-alv&~4O5h+hiwx9NTJ#T*0L>s#UK{^gYzmMH}Hy>X~qP!2a$3$@mCzPi> zxW%+WNDGY&2Wh9yA$}SXJHR=B_YT@9 zls>C86z$H?7_{!2=DZsZcsq63_3?Ev4&^I%Y`@P$&dM&~oe0yivX(FlDVvE!Tdd^g a@xWcvw$f&Xsft8)!F0ljcsiX;fd4n;oZHO+ diff --git a/objs/builtin/builtin.o b/objs/builtin/builtin.o deleted file mode 100644 index ee33aad81c012307d30c46413e7f86e04ff7ea27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1852 zcma)7&1(};5T7(@8*O!0w9Th;u%@+{|=FR-x`_0F`HzA*XeqZY+3WW&^ zGy;wGV2ME?BhYz1=py?#5VD73AOS{BV&!}+O4(-F_I)2uBqt{tIPfx(hx2jlWG~SW zA4cd7n?RH@X6<6mnvxBrTJr^YcF6gIpb^1RCP;_=jQn)rieamgHJ7u}N}U<|dkAM< z0ur+M9QnLY?<10k!d%vM&71$}pHJ16Qq^yIs#aM^EkN%dI*VM3d3`IwnJwH-M*+}+<`&UCHL;Vv(@2duP^TuoKq>X+VR_G+Vdd55&o1O@k5tJG7q z(n_^b4{6R$9P&kUlt(pkKl1`5kb5+Tf0?O;BwiyCgGQlxYN4$A!IgSgbNHbf`6~5@ z<}_ZRQt#EAO~UXK6=FefpXMBFISOhNB!ByB9|1dPuKyoja+`TPCLX!{j*K*!MmA4o zIcHO0E=?tC*0cc&`67&U1A)Gr;46`zgTLdi$fM8pXm5T{a(+>4LkrW%o~Fy)_k7S>EIp4Amgs%1F)Ee_%dqX7aRWw8-;xZ zi=6SNun|}b79$=XfyJ}MHCTiW{Xi|oOR$XJ34ST~iQq?qX9Q0PJ|*~=;O&Ap3y#5} zl=pdTO<=Aa$Wg(;y`Bc<*3h#jmwhaVh^MA0-1D0;-+wd4x3%C4ZFqMZ=Kh=GNo8!s zgW*|!PJ9;=#Ew5f?BV~yGNubYlc!9XWz$esOS$WI&H^eH^F{m(q)m^)AKlAm2}f?H#P_XC04pD zLJuDF=0D)Yiw8l$7Cm~+NqP|yu+U@hQ2o8xH))#MgAd;R-uK7MGT(pi9SjJOI3@4_ z_kxo>_+-GK^WaT#oInMN1&uQr9W@0p)gw|Wa4SJ9$NEg}{>-6nq*d-k^(c1>pCNMg zil+pIlycSrf5}^9gHlK9nL2&!e?tp)5Rcoopk8Tt#dZQ!_SToYyi&JswVe6R8GeoB+D>L}dm%N3ljnXDre7Qo<{F=A zi%+z&>C>P-n5Dt93{#(%H$JvQYSn#_dY&b7gy|zpALXzCb^eBB>W7m=<$Cy~v+yWw zr43D8msXCZs3knqa%W<0J2e*1YtE)tZJ{Aufz-V>=r3%J>j5aAP6z$7Nj(RhR5U2V zL|Y3JbK4K?wE_|hJ&FZ={l-SP!pgfCkNGofxqE{DEaxYl+!KjPI*}e8NNyqLGVB+@ z$%8+dxW5qDk@Sn6$us?&M{&3=G0ky2$3NqWh^uoP&vPv905QEnSbM-E@COk8tMvgm z2z(F3zkKc$5T|NA17a3y9*D6mep0Nf&_UKsd|>a-Faoqb4;+ERoZltZ&3Vyfr{FiV z3IS>lX4CW_)>#vx+ND!!N4mJvrB8P0*Sd6}76MgV3p{sSi*`P*T<$|Q{j_=xmt803tJPdKBqh<7V>|(Lxh`*W| B6FC3? diff --git a/objs/builtin/ft_atolong.o b/objs/builtin/ft_atolong.o deleted file mode 100644 index 79ac781508b5ba78858dfa8b9eaebf07bbb4cc60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1744 zcma)7T}YEr7=CA^tIV^g$RJW8sEC>UK|zpF9~>w_BEcIut~qt7o6M~w5QNW#YyA;j zblIhM{al$Bk{Qg4=;v-1UhF1tP&w#kg}I*hJLk(;D!uHS_dM_Woaemf-46Tk^XpO- zk!J&8!q|v0!Haqf*dC12jMuOtZ-iwH$HmYj9wtpn#Y01JW@=OFs?~PYMa%wGgPb??%g=Fm8i$09CsXZEr!z;v4tuz*!WP6*H#kYLqnL_;IW@t zFxXg^2k+%tR}>2TKh`Q!pQZh!QKp6qGL@K@87s&8GS(c+W~^)pCez5?OU%u4N~WxW zOk0I?bJm{rq?)rb_(@Ei^*KqqNMiIkv(m#kX31c4R!p7rE@%6YwTI_CBDrrpUhwz~kJERb-#Hc;b}|TRCp3OgE#NR<35d{jE_3-%HOdE|beQI9Fr^ zzB8)Mq3Ss)o=qcN1TISZZDae4s3WIeso^4e#Z4%RDX;xwv$(rUZ`63(OV3#Ag1GN1 z57vvvZxFp>EsW#p_*qbXhsn!L&bc@%KdwvBI!DCl3JJeR9xRsx-mGz<*IP0UbY7lj!AQ6eWi{#c{Xc|i_$ccB_s^uB0ARchT|B5B+dE=C|V9%prv(o-iCGJ-v zma!JO<~+Y$tT9vCT5O*&{W1C{PdN5n>mLJ2POOL}4T4oeXq+^YIi+NPxHS#-+l;_qJ@(lSrzUnIPLuejAd@sh+MSee}lBtjA ze2wpR#f5GBrrDT>uZ6~cX`ZQbRUSW_rX|hmz}m4@^d2KIWO%0TfAl87!PWea;8Cvs zy78Cc@!Rwtg@^e&Fd<*rWPH8xa8A4dz6J!h&saLx?dx`f-9DZJ7ECgB2_CRwqrv+% zHV94ydqTlp6}=IPb@fGWx;PQ(bOT*+6&~yicZcJo1_FbF>RMkQ(yIo;-4Rkq2IA4a SXr!A|C>D#x@PE)5BKi%FNPB|- diff --git a/objs/builtin/ft_cd.o b/objs/builtin/ft_cd.o deleted file mode 100644 index fe80c9aae0c6d5402c44186de48cc62c6bd53115..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2756 zcmb7GU1(fI6rRNVY?CIt{uEmfas$>DE*JL2NA)SDhSdiUjqI#HJEBdghU@C4;h zIp;fP&di*>cbEVEW4o2HhPxOZ7)=J`y2Z zd)ifVrJswQKewv~vji0ap?nlOiXx=t!RrVT>u%@^c3tNrilI)iv! zZlIz*D>FG2vs{r&Ur43nLJSU6otS*C>$<9qW#l8%2O-9E>OCoiu#+O;#3pSOP+#A9 zeK2L6Z>B}%(<*CcEE&uRAHz6`A+I9b##%5)Xi>5+ppJWhz<8_) z7!h8Wj)2xpG#?2|y{)^{eA$csD#O-a4hZ$}ltbp53Q1;RlZ7u+ugY|OuFU=6HR0 zdvmJ<{=9@z?`hn`mqe`AQ%phwLDEaT$BD3eSX6N_67ap^2C}XDdm{b>yC%Z#KgyeF z1@0}$MYva7p{RRR6ctiy$I|3hrqX-`bFcU#o;T>;lvz=bXdz(wC8BsGs>hdAabGqJ z_YdJvH~Eu4dBy8+hKpgW>&rR6bdyeMWKm`fw?4BP%Js4rjfqPJw$M;CBS2CgaGHNe#UsD4!W(MGlV!m6c?zvN-%*SNP# z&8fFcuHG_S@@(N))ebse>|*zPeT4eCRqlOL6WaWV%DPg$27egMornINqV4OZ-FhR~ zUpM0Q{=V3OphLayvA4*`;%l*NlJPUoM;Xof3@hGekZPneu93CfHf=wi?K57;7}=ba zG!m%^+sHUZJmuJyn{nQ3V`l~jhF%(AGy?fuO{o9&NJVQ;DbGHCkAADYqImoKv)cdB z9sK?Dl7u{@U|;-w%FY_zI?EcSBMp(mt)W@49)$e?j4S9g5?w!IPj^P%X?(T=uS+S! zqg@VdDW2ZPfxHRulK(26-p_%&_rSZVd3s+5@~(q-a$Duo``gDmi~ZwQZaxRZQ5`t} z?1X+l5N}DdUEAqnLiP$sWd98q0soOx}{S2hIuYmZpnx6t`Jvwv3i$Ge}1tP_fSAi(a9Mtw_wEbZqUJGWo*0*sM zw9XGe#F=wIxXcfM5c73BXnk9%%p3(${yyN{u=i@c3y5!*IRiv|%c#bFjfO^m^n=4X z@d)~u@{u0&E&X>OJ?PVd)`PxWh90IQT1J31D!W#vKVGM2>h$-O-q-{rnZ>Bh_e-6A zx=w$wPM@#SKd#f?uG8sTP`e%zRx*|zvqkmwz{Hf38N)vlVLML75%zS-Wg?Xoc$-*u zHcJs8OH(42n#kFhCtQKQTk+gfFil&NmW-iE0JO x4E_w^Kaq{6TH4CQF(0#C>q2~QvawvufeFjzrs6TzmU%5@2_QBxk+HB{_8(>zJ`n%_ diff --git a/objs/builtin/ft_cnt_args.o b/objs/builtin/ft_cnt_args.o deleted file mode 100644 index 15ad05a399a32f0b65e058fcc47bb6b6c4767b13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 700 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SO68j0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAajHfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw! z%29yQ5=;=cQ~+tHQ-Lf5h>uUrh)*j@%uR)e#mA$%F9E950ZLmy&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW1~a0I?SU2^k;_)XxwA#K-`o7lx6=iD8F&bUyXyto?D^ z^$SS3N4M(_k7f%7{uWsvuiN!Y^8viqei1P0Q$W!K06!~H7ytkO diff --git a/objs/builtin/ft_echo.o b/objs/builtin/ft_echo.o deleted file mode 100644 index 0a9d2cbca3b4a1fb3209a5b1c373314d8c4c4b55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1576 zcma)6QA-q26ux7d4qDC%76p|H6-BUNA<;vDkpm+oNVwoj++>_}MO|fENrVMq*4SxS zknjie*h3FNAiX531^ZaXgX3p5I8g$rm&;9QC&YADr+1<~(Klj>% zP>u;K@CaOO!4iYR&cX|n_=m-)5O$SnU?E0NK~DY1q|90i*(dY%}<11)tDW#Q?$;{Y{6%-uQx5Dfd?)RSiF%%s_q{2PLoA5Jm z|5a%1q7_a?ZRq?Jbl@YZSZ*VtUJS#@h(k`bq?I3y-Tzy{aK0P%kEr3~YGvJ{!m?ha zV7R%OQJnXTVxqc32d?fp8}>%s8S?C!(DGeANv|1hKg#u5Q3AvhI zZMZ%&W-mk)ZTWmy3kYT>!Q$PQnB=W!qz8@Pps}5+3T>H*Qw>D>Q}pr2q}G#149-evE`DY;BPh)^RYLdsC=UukW1vyj+& zp>Ms0YI+fsMJ#1~n=ZYPZhT^E$?v(vkTj9dgphOiE6pZ3%IV3pC8U+f%x3VnI8Ivs01e?Vt^fc4 diff --git a/objs/builtin/ft_env.o b/objs/builtin/ft_env.o deleted file mode 100644 index d60ed8e0298617985aed652623b873065810d243..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1084 zcma)5&x_Mg5T4YvTYol(6%-Vnpddm$>`4m3E*i-}MPvm%$WW4W8?i}v&AN4=AXLN< z1pkx;{{#h(di3aFg$fFL6j{`7k{3-E1PA7Q^Sw9oyQhUi$vA|!UA7_w;EU! z9Cix+LJt06wmG{XHL!|9lf*?&j5!U)X&IM%&AGSsmse440@0J&%V722P{xXSx(%$-Dy*n6o9rtgSm_jcv<5y4ZS!EO{@d;r6f6s&_=I$L;5h ztH-L@Z6XKhod}4LckUa!2}DlkIuPIH#6{o&_!;0qAVBJx(okC#V~2n>O5Kt-P+Qp9 zk{d=O{nzv5zB-rpQs>0|lrcGyg%kWaX|d%+DfjgH2t)?~`|J&Rnv+yhnbb#t*0IL# Q;Ri*7%Q6ds2rH6_g&k%%IJYE*;@)gm`PBoRp!L>KJ=qX;EZIaE{2*(8SeN6wlW zkfjvIkkt~%fdeX+BBY8#IUsRB1qDNk3<%L40CDKS5&_wjkqpWqw1M!wnc2i~k^@hk z{pS75H}B2QuCLwt#4{unvAC+QJZHHXJd&8&YwBC=|ty4mDdGjybeAxjrti=)Y~XIx2E}IIuf_!fad&6 zwJ>GHmui!IN@aI3HtqEZyU`AziLKBMur@Rjnw0EWql?_}%~AjY#%G!mMM8jYn~ z&#m~h z0-Yvvakv*Ncf2Sf-CW%h)PVB^>0ovKhtbA^J|^j8{=d~{bF7bjY^&G z&V983N8wxN2hIHJ-0y5-W8;xOO?MbZ=4g9|IM*EGN0p!07E!V=RPUjw#EP!U6_t6b zg_P^(y6V+BkVPZn*t z)4v>oVen_|ZCXkq_8j?JgW6l|FqVvUJXw_jwwN!XY>3 z((21}s8#vm4we|L;}`T0=AGvyNaMH8i+4!X{%!8AYm}cbR<*?fnB+E}LQiaSG+Z{_ zA$eNpEX|+T%_Fz_2)P!A&j6O`WwAY1Dzqv>uuWUsy^|Kwocvf8Ri8fLZBuG7UmcD02wSu}zkgc0zh~_^&I=2QqGle@@&C z#`^Z~7nT3(J^XYJNqnz7$9&m)(auSX#i zcanPRGEUX8YaCs|L;uJ)RnM+*?;!4iic@v%8uvNkK2>q5z8!IK>@$`?4+D|&@YBFn z=tI)pbqt6rpx+Hd+4@ZcF*i>692&83R0t6MH-Q}p^v>hGO83s+^GcsXawH>Y6kk+2x=f>o z63VwhW#^^dLazuC!bbm*CVi?&r*C9q{KY2y*(SZWNuO=f8K1N{-Cxm(CTt!_Pt7tO zo8^g2oa4U?9BIqq6FfQ{N%NF2*yKn=<0(erJo%E9=Jwg7;DBewN-#mn6G@wRgd<`n wXOj41#8dcxWKS{>TG1D|cthAPr>q99WCEIS;P1}_`bhGHWGum>@d?KM1IDfmM*si- diff --git a/objs/builtin/ft_export.o b/objs/builtin/ft_export.o deleted file mode 100644 index 92fbea39459bcb3d3525a8e8dc9d1ec24572208b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2004 zcmb7FO=uHQ5T4Xp<6k$3f{M@_6a-yqMN|+Wq6_O!MZ|(0hU-p2gcg9Eek=Kp&$yUFLD-+!+mimf6% zz@6YJJ|w}QZQ#SKuRwF02%1$fk&c?gtlT7oYZqOPlqAFjO@KRQH-%9yJTG)RfNnE!X6ewPWpx& z>CO0dtBXuYHxY0}cVp9fqT$HJazA)0I2?<%j=I21+?4Gp;OK@-Vn}Zwkx%EqOk9_l zb9n|b6Nmqx0n`6#df$3Yzx2cO3l%dcRVtkC8}p`Ds*v`8%X+1G(#E&ogn%Dmz>KlP zjjL8@G?1A}n7&a7jCp_Bn_l+&=e-)z53qltR52$Cvtc4vFaxD<$oK|?pd6l5lqpMuD+pdLMf)e;C@Q^*rEM(t0Sw@0V&b#v)q)nS1W#V_?*PDd`mxF>QP;EP=7; zm1DlKs9X%UR{ext@Lc|&^_(DCPtK!;c>pL^L9tZQ42p4efqu*?)>k%zemK{f!O5g| zCqa*m1#Ns&y*0oT6Qn(#e%!zC#8{XF3cL(d9c+l;nQ;+6hDK<1xT#-0-lV4D*wUQo z&j46`lyf{v|9vB{>R>p&2zb3i+w_|6+q{3T2E3<2sNwGB%!z^7x4iLaiSj*B+XRdO ziK%U)hxpQa@aQZ1?^U?WZ42cWp$g`=fm_vg&bE+VOTo@2Dl6@@lx_ZmvV2*=AARMo zR`73D^<#I>Qw(oZV#AvFQ`FoE`wsBb5@rrk_=t{mCmwbj--ypQB#y(l>D(_Fr*Qr= zZWM7v6{qn2GwvDUQom(Ag}W{84t_{FiS)Bd9)*lUKL81A`W8sMmHH>#1-~u&J4k%+ zdM_lt8T|!%;CEHO2Z>NU2ML#c5E9$c`Ev#7SMY$nE2U&oNr=$i2ic8)G8;fgz^q4m z;mxxi?O{8P8taPq*r3v*7M*9&=%18&2ksuyOQ|c3=w^$~_iN1G)uJ0M`lS|~L}u8| zTo-os7Kt%8?YP1&=5vlqVyNjj<~rF-8s<#a6=~<{7>R4Skt}i?5_x9?R+%Vrj%CAE z$XjXG=EB0t6$VFbbV|dHvdFOt`RF)mXX_|#7Sf|6Ec@1og;c2xIkrv0cAT7pKSj%? EKdA4X1ONa4 diff --git a/objs/builtin/ft_export_check.o b/objs/builtin/ft_export_check.o deleted file mode 100644 index bcba98277c3a67ae73b1ec769ba08cb3f12866b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2440 zcmbVOU5Fc16uw#4ZCbaTC@t0>=qQ#gEb$K!T^oqnfq8JDY`Y+$-cFOrW^8tnP9}8` zf(w(>-3}`&C`I1B!HD3Sz<|lF~Kj+;AQ0 zXSKJ_-qEAg5;X!MJj(qNAP31XEapi>BxR=TI+i`d1}XdTA{@#7@3_w>pWBU8^p`2l zmW+%mEB1$$ot5&fQ(Y$(9qwy|jYmg>2uyJy7`hKqN;5BWjxlS7348ln=8ainysHr& z>kkQ$=Vc&X#PcXPI11%}7y%PeQL>*vAES^>$Q4NBi__pdLf>x+NtUR%`{ zs~vr@($p8H*L1Ji6iS`S>Px8^Y)6w|b-&sS7Ty-THd(ytnow#_1Wx4o$X!akhJLzUCp&s(x~Z(b z^su)h7PJke_9*A;nMv3W$GuzQY2}Nb(hHT1E851_F{Ms(whrOpYfbN3Y*A~rzTMs3 zr6zikl=?U$`IAlW$C#e^O<5gHcsEo1?fgM#;Aoa^SM6?B>wR6pPFxZxw0prf}+?V^u zPyHYK^g?x8S=F|^E!m$=FDzfRprP|dIWOojp_+50qT^1eW5>(K%VQI&U367Ly<`-u ztZHRV+qH6*=^Pl0{+C!9Jffe&1?^HF{mR;n&@(D72KFbxr?+v4Ansp?*AFEw550L1pV@#Y?i6^7<9Lp{ z#uX5^@^^^G{oXb1bHx3AA93F!F0m8h@q7b#XRv=b_T+xd6o3zsR z=W{Bv9^H$VS�)8>~m?T89p}pDs29MH+2U$XcxQGMZ??935tGrPctob@*d<5q zC4bU*?PQY=cQ>gJ5XB?kiwN={3EJ5tK}e=)6`jKH=ouw2&8_jmIFBg(?vBt?qAIr` zM7-QcK5aRsJNnM>XvQ?3f3~5-CaM}auY^5_N2Sh28B-(J64Es7A#<>h9f>9@T9vJI9=#O#VSdsfutV#-RF2b$#tEh+x9tIWeO;nh6wv+s3 z5&=pPsv6ltx5BikCukc`tkNOr7bGj(O4YgFzAP2}QA!rLb?=9W@78Pc8yg!un5cwl zs$i6 z+VJ`o(b?rKb@VNY3VUz(#wrg|GI`KFq629sa=$3>rJd;q6rEk5C47< zk?a$nH_dAIh2kJpfr{QXDnjkvP&JbnZ;Ce`vP>KpbzC~%sMnsPRz;hGk80gh@Mlcx z?hpILWfk`qR$C9Xd7`o$Ty1rtqVL*LI6{9x9-VhRcKTW~$L4wBeE;Bns_G}#7K{p2 zphjEKt{#kfw-egb0SE)5B8slmZX$StlShkDM3%X~B$8p~xTP58190p83;mkpDuxXDosq>Do=V_VsD!H(;tc$^(ACXO80E8u8R zY~<^Pni2G!1RTm%np5mPsoAD4E6Fd?Zkv9NUR0n{61M5%>ih8RUGxW~oJGc8VUbcS z66@R(okf&~A*b)ii92-k8yl*A#-2J5`=ITa{o&_T5^4Zz!I!Q~hnT`w9K;XH37O@SMVTfq1X$oj`mt^*fj&;b#gzRyYmB z<ZWXKneO+K#24& zfFM1O2dD zDwWhc##m07BzpzVr?BKvXpgdSEFwxu`UdKtIbDo1_B}Y_*}GUoG)Gz#OSK-w`oA>8 z-9Na~NpiQ|<6gbjA^_LudPdh-k8!iNhQv&2xofnzQ*SYC`51Kk`k5}O3{8mSUbS`L z=aKL2?!9Ep7F`L|Na<_UX8s8?y zcgOuH8ld04hF+qWa2!)ILp^|}&#%vPqEKIM+RuaqAZa@AW;*U~&Mz^y+TrFdcgOzj zFRi_|C$R$zD)rzAh39i{HccY{Y}lBY?lw-xaZ+ddG}_u^+}TZPODBeuN3~_Tk)9FY zCb>osUMZYe`-VKH0I65ieVC5Uhr2T^j4qHp$+)eiu>%;^G<;&7vE^l^}ws{K>3of!_7@KM!H5wZ9ai%{R*s> zH%$Ya#<1leciNv&uycEQ_SRhHN{&+YQ6}8W*SJs3N=l$IK|^+5su_Dev<%r3>g!{N zena+#vj6xH`=r8;U3-tkYKd6l*pc`uP+oxkS+f0uu0R>($Ieb9J{>uC9G@*oSr>P4i}wz#!yCVV6opkT7t6w`<)NFGcH7LT zeRU4*Vcc9HV_z0|n*f-|S|8-IR=5v?vei-)U$ATj&r-D_3RY$w>at}qmB=h+u{U#; Yd0AL?R>oW^0@qv&1v6796iw9rAE8nI?f?J) diff --git a/objs/builtin/ft_pwd.o b/objs/builtin/ft_pwd.o deleted file mode 100644 index 96d1d45bf3452916c50a98a9f0d30f5a0c84ac19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1116 zcma)5OKTHR6h0Gc8f!IKw4$Ie_y9Md;6_~(Ejn1}6H$sI9vm9Kg-?Sw(IRhNL)NBIoT3CZuu`AmPt#ra%+yZTJFcVxzy z!x>JbKJHm+=tSRFQMy{`H0VkvT@|W`6Ufvn|w{dh@u43K0}M77vZzy!UpEk%9xW-+VLQ%$xo7@z;-|8OE#=3>Wwm ze20Px9Ci^tNBkIjWNKdwW*jpaIn5;#B9h%m$C@uY50?M%EP7`Gnn%0LVF1km=@Dcm zgcmg1t`~_;>)Be%7vj!hRwLXoq-JnX(7UuT4O$5J}Yrr~6CDCK+D;}p=wO}+r4pWTCx8)?ba{f`&^Bd+uKEAM}= z@Ob->$DN-%ap1KgPrCMy`g!aOd9poJBz6w=os@P>ob;cz@N)z#^~$giaktSOPC0$ZXc| zo=MyVj+IqB&RtzEOd0*d3H`MRPXF_Ge{+H}AzPaw3WOVm?iLfP^n-24NJU;NLjK7H zNGPT7h1YOH(T+kUI&I&Lq-yqq&f|5dYI<5Io57~kO~`~{5aRFkDHDmO!CFgrO&@#w E2E<^vkN^Mx diff --git a/objs/builtin/ft_update_env_cd.o b/objs/builtin/ft_update_env_cd.o deleted file mode 100644 index aa60ead3b640ec25c3c4656c278fc025bde6b913..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1284 zcma)5&ui2`6rNq{HfnVj{J{zy3JUfTSQL*Hi!F?xP^1fj$Pkm+?t)F0Y*H6-QCO7? zq0p0O{|xb{g5t&A>~Swb3Kin5C{(|fOx83Y^ue3&{ru)7GxPP=kNs)JN=FzL=oC~d zW0{3Q&O=9(_>Z(zZjO2&nGa4zN_-?jc(U)McIvMz-COzRXV!0J5Fhn!Vz3#CO|j<$ znFwL_Jhx-7s(=s&`7$1wf#f26U{2JylL+{nwXR`$!nYrHY)gpSi<2Y_O?~IA3O2w; zlra{SIzTCeY>Sp_tjV;YINzLVx}o@%6`yk13H-{;CcFZzLzA}ZaaMtn(54jML;o@0 z2tVy95dCZ!niuLN)$+kZ+D#sO=fm9w4+eWY@M9h{BR(9&tonksf*G;uOFAjOG5-Y+ z5it)@9s2P*+BS^@OJfv|QG6~}z{6&gZutvp@R`cogw|8l`UUGSM`dBU(PA?$pPpJBXnQ@7^|z oiEa7aEc{5?EFtJg!!_FoyHX;O^qYb%7 diff --git a/objs/builtin/ft_update_env_export.o b/objs/builtin/ft_update_env_export.o deleted file mode 100644 index 343e6ea504525b50837bcb0ba5b2d71067d21c49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2640 zcmb7GQD|FL7(S`BtGe}exUvee2He9yu6BZBsDsumaKROatk4JNF(fxjU7N()T#bW^ zm79szP?+L_FG65G`6PRB43**vD|;~vABr%@utEX~L59RRSHJ(9|E4!d_pqOye&_$s z_kZU<|GBxz&v*a4ze|YNBLe?01~G;Q@Gp)5dkW(dT6loXJ*pQDQ4TEhp($vP9+{Ly zyHwP3?VnD}o!<7t*)LQGjPxjX86wY6U{EX*geGNbsp!n-&T>G?ZoN>4<-|R%GtB35 zLl^a>@{5IJswmyu`}4W9lqXMg7BSgip=uZ$5`scs4hzB3U6NATS($N?i?&Yat*^w5 zsk2^{_1G0p2$2ovgfC!>W2mbz9v4FxWV9*8S5e0Zu=6io2mg2-JLUQy3TM zGI^v^i_Ar?Z;I**+&k9Fu>-iC zaPNli-H90&j)QtV(V`5il4x70nU?Y6zG46FvqqVkS4p(|)mV^dHE(TgZJ|n3=e8@e z`jj|Bqq(edy|z;J+Yo(8M-)}52439?uA@nObd&lHu{w1l_^DG<^ZEYFn$BDgJ5oc= zdNc>__+KWxF5mM5<>IuYp^c)_Xwzp}Ns2xVc*kLxB6Vm2bOupZ~PVodY;@+avf3j10^-#Rs&EO!145i5cpFIkn?T}!!+sTr zzp*m=E|Atw0`VPSJ_&@R`44(Yy1xNQ_gBUrfW-R{NcsgJ<-f-M5%%{2iMNHb67M@8 zzI)8eKx{GgDUftO(!NRG*W|wiM5_5R5MS};At218-y66)a~X*Bp|=^Q7~_lpwGNIL z!M`d6V6S2*pB7-RV~`&{hv(T3pF4W(8_dO2lrbW%pw~>)|E$Nqr2Turqe2vaq>AG!Ox>y zDvA00lFa3cvasMTDMwFISvz%(gHQ!K?G}_2rVDmXQSEo#lvW~$88o3iII$}#^-nOttW3Z^!AA6wzHDY^-8ISVvO8O+ z;%dTXrNbDA(2JgW@urZADCwcagjPXo5ehvhMo>tw!XA29BsTuOd2cqmllI`pe)D_Z z|L^^oxAW6Kf8W~2SnMu_2e=EIh~uGwK@Wn@kl_w=h5|rGDFzhE$jOMMnQ`t|u0tMz zIG;$pH4#d?c!(MSQ9g=Y>1OO9QgpF-f{-{j%T6h8zbzHfd|{sB(*FG2VWdFWZcB-L zg}Gwdba=&nH*aS+e|fZJ#9&W(eAy^o=m^6?|6U@Q$?M}x-FQ`Z2=iSjl!nwx;@eZmzDxNxmB+tSqOz$JGAO|5zp&JRH0 zSCK~gC3n2khKTU1Vd%Oxxwb6lhq<)ocNFt#L^@EJQm2!&rC<^rHs4ic;#V4mH-d$s zU|OK#qM>F?sXr>34-Luhy(_D+w7vT4?`!>m@BIJMVcfwV!StSGivMV6pa*LMfSQ*VJ%viQI_5Kky_&6H` zx6^Mzps97xhLpyHWsm(B9UD+Zz#jXGv}f*Mr#Fr$_TK9(=BhFEz`n#Xvh+ho_pQ2( zJpjr67#rzPKZ?J25Z7@)&BhVP3eu z^xuK_9sW_uYf_#B;)>8mfgrsPh`Uga195cpCgzAYN&i*id9iZ(S)dBN59|V-24b#y z9!PN$DbzmW20K%5=D0K~Aw+f(2(d-05jhu;>72Ct ze=6iS)+ivdwcDSI$e%=H`tND?|1u)e+tF_KBJxB;z7mlc4_-oE#J7P1!Oi1o<}7oD zm#j>_gjX_@Au*nHIKCrnbFN6vmdU3p`B^7#ODS6@%`jfJ99~R2ImXk|WjPW#g*MDT zn|AW2Ea?z*kQI4OSwOlR@RgClI8)%}TqdagP9bj#L1dBjdA4GksO+Sj{;^kI8%;g^ GB>NA&ztx8T diff --git a/objs/execute/execve.o b/objs/execute/execve.o deleted file mode 100644 index 497c547df8d3e4deaa63526c811e372273e80961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2428 zcmb7GO>7%Q6dngRHMGr|pGW~!ia{JAp{)#3Q3?b(P*+odB~sO*muj+Euj5rVUdun! zRI(Il9n@uIR3tcYM{wmv4z!Sp&{GRHijc|yln7VyA*#Y}_}=cUW3S=BQ)a*U-h1=r z&Ac~BZvB4m@57A69$@%j#4!?M_@po(k7HaR!+*#uEr86>8c4_ylhKf7CPdw6*2yCf zAJT&5d_Lw>rw zTG8~nXp}FR<$@5epY9tm;WDp9sjMI#snR&4G!2Cm!YGMiRa-TJ1=0LIk&CX%c(-Ld zN!by`O5vRFIgBX`zZA+tY#f7xHYGhr9*+U9BpBNTVm*5UgM`-5AYa<{VT}JPdG7wq zooYi_p%_(6!#i~icH$$ap%hz*MIv0=`iV=hwr&GcV9^a>oRHXG!sl& zKT4rGbKfJsfv}mh)0~3!M1LdF#GyIvYh(`2UQAi1;_kdm9}Jn6^lnGInbP*XlcD#s z_YcnF+(=&BRHjjRdEOMA*KO=>WqSjWXSkc)mWO~x_O6%haW9ASolScSQ_fehQ@54Q zlYT06U5#xo-}7?2{^{WBT#vcg-p<$i`}>G;*I(++;~K+zb#A0CZWd1{({0+7Dbqvw zaJSKO^IbQ$?Pa@k_uP9c{ob9eP!? zBk!CP=#GsP_~+CnzKeg6vKl$WdywmS#QQFY_pKX4(xYnU)V{L*0%AC=ZCo@p8VXCz z7X%&H^HWtm-|puVO`gem*A*qT312MSB$yp4Wp z&p_j~=-#kTKImJzkoV|8T^qiDenocZZS^beWs(OqqbDGHwM|VGjm`aHE@`zAjD4Zw zLuk7p@!Jd8ajFjvwx!LAaZ}k<|mTx zjJh_-<(RM1i}moiOvH%%}mag*pO1Pa?| z!zvWKc@n{ce}Wzav7$Ho2YBd3XeB}qB0*~7_jYG$nzo1!-n{wVk8j@0%jWa1?;Bl= z1@%F_fklNvjzZ@tu!}^g5OS7kAQFR#Jj6$} ziM@;|6b!OiGEz9#izO?Qn-LDqxAIAzUJ<`88xdF>Bk9nep1)m4>Lp&z-OJ<*&c{YJ zgV@AG!IW^O!ADnLLVw~3wor0zrg_Rr-ZuS$_WquW>;=L1N$?5C_A{22d$JdxN1)y) zlzprdNzcEuPQFj|D}8h1VGH6u;qyOnqXt@r#-gqr_F8fpO{IDa zd7y1*PX^AQuQ%Pmuc<-N_0|&2y$XuasC&QnEhW|BKX#=0g4n;PoW*c!vr1o#$$q_V zYvnaOXoD$LOr5PdSiBoJwu(m^mk=Xz27^lVQmexbb}7|U(&N}6$ui{oXtGgP3p(!t zH7&RbC-WBniEIoUW6L$0P2mW8j!ANOZC^+=I`>6UrNb zu82I*$BubfQWY`v(Wj BO;Z2> diff --git a/objs/execute/file.o b/objs/execute/file.o deleted file mode 100644 index 172798da3836f62102bd2bfb14ba7051e8ce5c00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1104 zcma)5&ubGw6n-0H8~oATLj{GR3wrPpjGlyAi0HzI7DOs|DP!4gNNBn#Yf^)-p*` zO#`i`DIF!sQt8$utS8~=G4lwG!P)quy#Eq?@coo9qyXYP-G=9lYuVHJ^NIh6?~3@d zh`!o!I23W`yGR^()rOaHu6XS9qHsv&`b`KY;jqX07kA@#B00g~PJyQoN!WYELF{}= zD@4M&tCi@YB6?%bZ`aH-cp2S~CE{?fZ|>$X|J@RCjR$AO3kY2M2)w-dHzSF<*lR9rax4$R=fc1)Hs*VPaNPpe?Cvr3xZZ4 qSAvG$2I)4icKl|;Un1!?TMs-y-E)^@tYSyb#M5*5S`0+AXRp#d9O=|-L*nKT1w5+)NGgpibJ zq+tlS6#s|Y+N$8vk6&OHq5*{nSwt6&=gz!|NkQ(_y?Yg+yeCgE{7%~BRvA=hFUY6*x@UQwUxizjjoL8QSTlGo1vta zHOaZ)JX0}rt+*~WIG@yWb?jc$Jfs7TL5w@vfnI5&oX!}$THMr%SD(vKlUYC@88HP3T;dP8*@j?T9xn&LvQDf9$oCm74SG5Kq-5X^3qk24>PKo6z; zAm;GFm*JP-(a#>h#zDPg$Hq7RGhS8NUlj9uP-)i(?-G6LdPUFPCBbh*twdk3k^{xM zAGMZ4=4@<*H`f4qvB~ z192azYXWBklb)oQR0~SMz_kAvs^+nO4z_cMIRW=Rv%9B)Pd$q#>Axn-qZYr&92Q)m zNB|!5&;CS?_*Z!1FC8B%3m=EaOO9NC$CZh|k&chPSs8%~dIMvWU3ItzJvL$v7mTs< zM>zG4_cOkk)(mImnY>oW^0HpasFjLZVZ5TP7t;mCGlfz`<_fcx%vPA diff --git a/objs/execute/path.o b/objs/execute/path.o deleted file mode 100644 index 633b4f920eaeac8317045871fb5aed3dc783f60b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2512 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 R1VXXOxNzN~i=S~$us{537m@$~ diff --git a/objs/lexer/expand.o b/objs/lexer/expand.o deleted file mode 100644 index 91973cfb94aaab6f9d8fe480c552f1e8d2178d17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2080 zcmb7FPiP!f7=IIEy3sbXhZa()bPoz1oRU^7Jy_UkN8X`9sSOAcUe?)3cX2bjotUuIgx%Je;N;Xg-_EcJJ{C)G@B(swS@q_RE-uL%? z?|bv!{QBt6C%YKao?#fkgW%i%h5{J0AG|<@9q4Nc1ieBrphQMaMojsLgz)T^C+AW= zW4?c8OHO9rsXUaAV%yI$mM7yNyG)Rf5LVN3tIk=a5TZX{k|!zsPEv^SSIZ>nP@h$w zX_PEa_|Ao@Qx@XX$xS0B*HyrjQg)D!w$6tnV%nEd2)iPt-O`LL1G4qyRo||ve8;d) zrHVDrGgeWi7>-~Z1;_i*pJPK{B3hL6Q>cUbG=-)w0uj&N1rw1EF~!mvd%*vfCV2P< z5AKigaP}b&{dFEr^uqBjkIY__3x3kV9FJg$%yk}(@o1vgqZNXOOrO7o$&SX4w;QAJ z?pE-J|6zY~yL~J8*1l<=`W=ty=S{9^wrqi#4b?pc#m7d`pq|Tu>)jmY&blT zCrhLSJuTD@FY@5l*yOT)u*g(@3Y-1;^tg+D%iz%Lp))G)dO9x}bVFO1Sk>oW>|0zq z?ac*`L{b0pc5%U9{lr}TR@3M4ov^i|a$}jSTx;|2_K$ST>2=qme6Xa2`L))@#s(c2 zsxC|}Pao0`&cT(jRQ<)x`f4Qqjlt zxe*v5vl}dGq1j!#E0;zOTe-v?=Zp`BTX(p&f-eRsPLC$Kzqs}QrL6GqH=J2podM*? zZ-+}tq_6O8q?=WT8{8^RE>l4%IuKtNd2Lc^R*-sjLn@WD<#A7Ge%ZmkSGj5zPcyBR z*Ydk}<*p*;CFl=;SN_J1L27-*PK@NQ47{}m*EA;bI|*+8BmGnzPxY(8Z|aHkQ}t}~ zyM_ynJ8ygj)Pa|PI09n;I1Idw+DQK%a5wN65buET8W1k~9%GF`$iD-jGM0cK<9iG_ z;O9WpZq$KzLyUKTcxnuKm+(m%MIhpa3JL+Sd>%LgLjg?m1(@V}O8y42uI6N?_dF%C zuQKuv8JXU)v_D<>w0tTfe~^){NO=HzkLfbTbbK)*zmSn%&&U*;j%Q-p6Zlg(R>@<+ zs@T>?qV82}H!+m`MxsCG+fA=pcM?<0meXppRCD~9#I4z|t!k;pgzcOcO}pe;mBdsQ z=lr^7GjZ1TghM|c{DW+aw(Hhi{Nl=(yLO{ivM`a=*iIStR-;5HRVdFc*DY*?{R?zr BuM_|P diff --git a/objs/lexer/expand_check.o b/objs/lexer/expand_check.o deleted file mode 100644 index 18632fe33fa8849704a63a2d4d6c82d15ed5d92b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2760 zcmb7G-D@0G6u%Q=va3n&M(Y|-C10U zk-+ShOhzFO6<_0<|A8P9YFgT$NUKn?4~0ZQ$d-yl1Y;T#e`oH!+hlh~@W7dK&pjXa ze9hdszWv*7FJsyR3=d#8Fw%v`5D@SbaGnGqkm?bFqhte6JbW@j@<(8rj$LuYTJWdz z)T#TtT3we0v#Cm`PbSUko5Jx}gQEV@P!k)ba+z)glAxiqcVZ!i!HQYNR zhBtfH@XDKpH?d*(`d!1XL^jEr;puh5ovkxoeVtezte=RvmF`|%J0^BEN!$4J<&RO! zuPGB@=_lcCECQ1aKjz-nyx28;hr|tYnaG7IK>}u zS2V-=jxQgVML;UvSd1d@HTRO{X@);r56nYTN}RdO2UR`?>gy$Mi4x;5RNH!lFZadV zzlVA4W{?od74edFclH+JwJf$8KsI^_$0Ne1KT!|D`-3kZ9(A{e=k+yS9Tb+7fe+Jf z5&n%5kLS#$K7^ZL?&yL)6_U+2{!$U~e^fEQQbWkFwWPTs3RU%sLA zp$T3&^w!W;4ex5l5b67|g6~HoiAhyG>GTmf0`CW4L2ziwL0FXR4}!MI&&r)A1Z|Vg z$y=d6M7~Iu2;gLh{IC!+?fg4TtHiWeUvFd)x|F~(z|1x>1<3dr8#@%c(Dhosy6#AC z9C$;plX-R2`v!Wce}taQuTAgsZpQEe#Z#d8;=~^X zje!1%y3qb@P?YeouRv-4J-Pq3+`j`M>HPvqdT&ZzmwX(Q{GLF~FbMHsP~vwH8`=F1 zin}uYJ!lm43MguK;$10Ef|B27L2PCtJuX#hi_$&?`;bRyLhe?4&tUE;u$6i#DEi ku~;bLPizuvp>O9W)e;BTlLaeqnso|ku_&c;)0s5;7tNVv@c;k- diff --git a/objs/lexer/lexer.o b/objs/lexer/lexer.o deleted file mode 100644 index c9aa07bb5d2b0ea9e4bb20bb0e475c1feb4e5cbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2544 zcma)8O=ufO6dt*bBejV~fl%B(B7&jxppur-8fuD6voMFMv?Zp!g!Oi{Mkcak)-n~w zDGDovZWlu-Ikbls^%i<*PbCCu(j-Jp5B)hcheCWvL4p=?@Ikmg?)PS9<(1+UeQ4(W zzj^a!-mHGw{qx_$j3pjom@vjMt`L#I06c~f{$!Jhq0@JKIwW^{O zf5v#{%swAdS1ADi#Ut`(1mPqYXLUj$n5JD>Ua{<|xmJE}sa!D4*G`8z!q;@1x)y#i zp>h#P6&K<$t&+$zouawuTFZ`-n&x1BIla#-+Gz@Tg?l5>Ba9WbN}}g6PhrTi@Q2w1 z1_3Qf@*?t>1QsdAE(61#y@5eMaiiym#Po2HNPt=Kt<|q8M`@)|`p!~K@N(A|iuv4e`)_8Kx z>uvBx2~LAbzI8n5?auPXn=z_ac;m$w)ziH3M2zYrZ$2tjC_sS3g87cx{I@X<)4cf- zRL|X(HH*5ywME$qDnFMcA)1ltmZSrK@uV^CbpfkwizDeXhSi8#`PsLcIa{SUQGWpQB zdl}KGo4Rx>5Uvv>=>jIZU+iB>eg5i*H+Yj;KxIP(lsO#QFKb(tRn|bq>mr`o?%;jP zP(SqVTVUXLS$I7aM>kl;53r29gd*|1@NY$z$ipoq{JE%MaLl`&5cUszYgV;}*TX)a z4YLhqbY|G;k1|uQ$9Pjd0sS=kdsA!ghop;+9=O(zCUYCqqY+x8^yr5AC_P$YVU+$P zZ{$Ylr+FhYN{`+4TQ278yqlS`HxMHNpDLOvGXO2ktt-s~`iy?v<(<{fa5O+#Ki*%) z_#fBCiS@TwqLxmij~q^Z1lwuIpTubG(i6J3r}JZMZZdsw?A4?A%t#BWFOWEl> z545AFZRKxer}I6~?h@=~{!w;1?+5I@9+%&e?C01Ynk@T1Fhtq6fzd?S9n=Nin(PEH ze%brj6MoqiCX!zO#-}a&I`C284Xl|0t^lLqvbM(b<^r-*rz5}%z;Kz!X`Im*NXqF` zKM8{t2>=3v`0$)w)_iy_FM#LJhww3o2+J0R_=}1k!(JtPrg+UURv+T&sf@;>hbzhx z9p&92{+S`3nbpcUr)*k~Nxtuk}5YL-^3B}>z*Rkv(gkW0Izb;o69$*B=4SKMW* zWZFdw%)2G4d`{DL(Xj_<3a3oM1#Q={st%TO9n6mFR$TlwDu7nrPPqVaZN&lx{0DQD BSGoWI diff --git a/objs/lexer/lexer_utils.o b/objs/lexer/lexer_utils.o deleted file mode 100644 index 7b899dbd8c4b7afec6cf8386b9d050a89838d7ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1256 zcmah}O=uHQ5T30uO||XIq2fR8!Gi~T@zjHdEoN~A3nDG_Ql4?MC8cRn(*%pOP}o$u zu7@5xi$`yIlAeN6v7Yqm(TkAK2swtfG=8)DRuf|Au=C!0J2T&W`yTA~gWt!4MA|9B z0*}FWIMCs+i|`4?eQbFkO#Dza5e6r*GcTKzC1+@);@br#kZ+iszAfISV1IWfpu&lTscQNau0z3NY0ld>#C%YQmnL06^ zvAkc#*7~8Snul&n7nMtB3Bi!4jQj;8HirTB%p;ys=PN^um3;GPZg*Z>t1uwuv%K}D zS8iCo*|hAbhNzAu+ymYCpcz}`eNj1&vhLiFAzppq^)dySs@*S!N*2r#&OdJrSK{4~3tOv*T-1?RCvdSng+iZkLNAyBh{Q zR~X&(>puCWB6!&+Kc@29vxlUuCbi`7U}76nuH*d`&K=`mVQN0nf^c; z{D!JiI{sUiL){xyr}XsH@jn93_~r0R#|`u#jO%L07T}xMMOeeHh>w|ZbRL{y9DTnI y3^)+O9+-SmE|eTuE-mC%NZMJ)UX;1?N=ZJ>rSppEn&IrJ{Tynz#i1Ic$2QhF4@uqgHRaU zMsj-*hRpYYFFxtxtVpSU*oH6ao3wqnG!YVT(3e40XY21f=iEPClLz1Y$hqJ7{+;vt zzVn@X^XvZogAbwmHd^W)N+0l-zk-+tAh5_dP*dW3*Mag8yKfBL|L?_*a!v@ zZA$t%;J}Z$c+|lu$2kll!byXC2`km%zf#Vy|1_+>5{A9fGwj-)VdpxAqj#LB^+Uvt zV%jqtsLW@yjnTOEa7Js4VGro{42RuK#c4ysL9o!wirD!24743G*?QYrX-6K5nxK@r zWPg3raI(P`XU46AnWo;-R$qWo?w-Z&F>PZaYVEU>_Qjo4v({SETVG*O%DVfe@C+fy zb)0Nl>~8furQ{xxlK74D2_lPpvp)TY+4bM0of zB~b4fX0EMmoEg_PR$6Bdn)cm zRk;!lqaHOrtF^wP4v{DwRK!k4@9K}BVqLmEn3LVnAE_L?6cqkhoUg!-^L6d)jD9oGHOiMiLXxqt7=RtLeQ8pYJzTG z(3sR3s0@0a8gr_tZ~Ki2Q>bWOV{WhM+x{uPj3dFeM?I&t#s{JDI^))l5ySjNHVcwS z`^7{ojy{O*TTdrOtss-bN_M<^4&5{;gXyNer8Oo8?mwgM*VdZ8<)`tAaHsoKLy>as zy5EVx^%57+k#`FDs*2}aC%g05MWh#ofGb}x-J1vEA|gnx?p;JQhBlerqI=TG=$;J3Li{Zt-( z{g&W&@o(v;^6Be$6MnApQ+f6E`=0RqBiB>;9rMefWAWllevUds!A)?KDtQ(hIV5l6 z!%FrCvVO_S;3R*88W4|xQ`{Ez!Zi6FI4F4?56B~z6i+FhP#jFy-vS?lV*-PSK6fO$ zN6UN|Dn(_g9*{;|mrI4_niFBLthP_BI#NX1H}T*3dbLXq)e K{c65cVC-M?vzK=O diff --git a/objs/lexer/tokenizer.o b/objs/lexer/tokenizer.o deleted file mode 100644 index 97f813dabfa3e5790282d56d9355915be21badc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2104 zcma)7--{Dh6h2wkb!^p%qF`x@p%k6y^|f&jd;kJGw0WL&OP_u z$=1uiUmYOI>?1tDlVEECj~p2E5%@kk#?To~0G;6+mPQ9AF&mYn47}BVBQ!~QW&Y}w zMB9}w5*$d*y);F1h~1OaVv&%PZX@u^)oaEuikILZUD4tF=EVq8W@rRn?MA)m2C`Yb zS+16({CaNa#7o~Kw2bj2@OWmwpnzH9TaZ$ED{|Q{-tct7Xn%E12K}l9Ju-Mkr4NZ# zl6RJ8!6(6LE9?(w3e3bs+5VTA(>jL!BXs1`C2*R!Pi8A^e9!lSh+c?rCnut{fry%Y z5f!>3o*#&qM7+=y?!h^GW73)p2e<9^F@VC^hqI&bd(X5b6>e`Fx5Ag7+3io23#bZh zTEqq9Ep)q_*twg30-2=tx@Awa(dhKOW<{V7HGemudr8+=hXJ zoqEHEs<@vgsES6Nr@SMoSrPu3TimoywK!PK>+Mp|IE#lwQi7P<(gP$`?1+NB2J} z>~KNsa5$40ZU*Zj&ReY+vfHYYFM*+_6U}d%3~cYVh-R}Q=5aT-l|NkD0S;ev9Ud>> zjAfFU>UoAc+245F8+_su)PV@s1}Mj=;=%cup$q4!lh1NI>JB>U>LB2g-GBugcZ)3m$px9J8fyB(NYoSYp^!P-!gu0jGvDqQ|8uX%B*HH*+U1c zbyWErHeNyf-`9#ve?+rKviBw~9!|b@95)AE{ZGf4KKG2PATIYx$C-ZjjC;smZTy91_11KjVQfmGhI)e}F`fP6ZOnaTXzQnw|5I7UU^CN#`Hbg2{OTiPP=) zkoa~v-$5c|DsN=YNC;);Q(!X&l9}#+Sx@FYZS-XS@w87^ S=~`~Bgm<*&7AuvSOY{b!5S%^$ diff --git a/objs/minishell.o b/objs/minishell.o deleted file mode 100644 index 8cb6d57e24cdf2426a9a4bb6048f3c91d5590be2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1020 zcma)5&r2IY6n;t5m}=YP(1R^K1T0?4UP_@J4OJLy1u06sJ+_1gWru zLXZ9#9{msOtyhm8T8L1=V-RWjz1`Wm2^9L^?e}Bedov8P->)x!PY~tq5I)EP@?K$~uO~JUPp8o~R^Vf%XN`V0K!~ zw(SHQdY@dc&ir;ET@y^_RE@cUIdYaOpgAhoZ7}NwZ}@goCm!?Y`HoEKyur4aXCzG# zHBv740y&M0_bN|P5h)>?ia!7m=LmgnQ*bVS{O zioz=ut@Twe?5i)`^S=1K?jT0hGluFdpR1@gJ?b6|sQmdZ>Mwo_hr_?cqeU0ruqHz# z%>A3IPCWTOGBmgMj&hw!u5y2(^c7Xl;6Ftw%#bksM74*N!~E+9Mbp;;mWZqkAlfV& zSO6{oaX_mE#C=&Wfw*GpIS}vAngL>l1(3dC6<7vIV-_SMW1iLTll46IisMzHjl!%k z{bWqfkLfpKTHZ@`KVt3eaL{7g_w8NcO&zf7wZnh_F1}6M^@yE@cDDGVwzr74-A#0L cv=at8sp1dzc1+QS$F0G&@3(yXJ9WJCKONeN6aWAK diff --git a/objs/parser/parser.o b/objs/parser/parser.o deleted file mode 100644 index 99a698c2ead1105a2c10cabbe491e7528c240120..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1688 zcmb7EO=uHA6rQBDe`QR)F`;Q1)-A0q&a`CLT&l3-;ElR|RPT3VV_wwe@>5vrUu6gO9$vdGCGm%{M>Wo!>tXIvESK zG5o;W;U8&W!C{x+QOf^e^E46mMPq^-oQzzz8RxE;a|x-8^U?VDXpq(8Qdo_NkF<=R zVyuTs?QEVxV4NqXrwWOr%V+Yl*?fxgM?*o6;)>>Zs*4$rk(O2PX-yiT0Gx{qPdkYz z5#){fe2reweA}8&r|dLinP5!uHvA%79*fb#I^bkPL-lp&p!2!ap(bKJdkiNd3^~mu ztyt>6ZOrz*+oc~?|GKx)|I7A@dv;|EKGJ1-W4`U}REg5A4DZ?AfMr+W=*?Mcv~0ao zd0?U2rMfYoVwfGT+NGk;jD^?0)`+ElT~-$3yT-yfTw#l^I{JB+N z&=Y8CH_Dfl25gy%1@jY~uw<;QH7pozfjv5++HwQ7%_z?v6>tW$|5j_!jjFW{xFZxEyfr4irx7 zIl-5NUT{b5>i7*>@ctuj5%Jn0T<3Rm{uP`UM&2XBBKPq_^RMd|LqxyB(h))C4-tFO z2=v|ya(!MFa)bKXo**I(LxVK>UXQiq_;}ve)Mwmvgy4x(iaXh78TVM86KSM{g!5cD vx}0=G!WBFx5^2VB+599gWD7x_%!uS9cc&*sp1Us!f^p$E(+>Wzrv&>8BOq3O diff --git a/objs/parser/syntax.o b/objs/parser/syntax.o deleted file mode 100644 index 12256653a5b98d48ca84408850917d273b128334..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2828 zcmb7GO=uHQ5PnHx8(ZxL{6R&?DuP8xK~X4DC8B{9J%}jiLAGhKHKFY$Y*QM43Wc;{ z41xy_9t4Xg^{OZFAXZQhVsC;cFG2$f9{nlSZ}!b@vb%}21Mkg#^S+rkGwp4li{~5Id8)Ak z#iPfw>xI}xixDwH$`M`9Oq8s=d4&zS?v3Zf*~+;;>vTM&=5$>n;uXe==}bwVG^g@r zR@cv*bQkgPc%4M^Y+OWf)U#N(5WM6Gsq02gAFhuq- zmcmFzwQ6cfs}Y`DTB0D8pF)}2fQPrKWy1A$n7{^$*_G)fq0ByQm}8ZJkTTb68>VHH z`ZdooLhhBz|Jg_fqkh!m7g>!TMXqBsP0jh%Pp_=3pcv|0Ew!vw-l&%slsImNrytcx zRA^V(T#hunwcFiTMq2%dW*aKyD5{GC9(Zpz^3LHnF4c=L_OlyWO)b|49d<2==zjk0 z0H6AAm*mfTq+f~8Vo?YsF7vNW|3n@bNQZ)VD0BO;?Aq9jlsCENWK336zwVlt7FK5a z{I(8dcC+6W2uJTxU7m4MGN@Eu3$nSpf-0-Kyb!F%xu5QNaAy9deMf)2P0qp2|0&IFW+aJit-PZT1k<5E%H#(?tWS#HYXn_qscpW-@4krT+54;Xt zK8Iw$Vbtpo^*J03I2?h4eKXr#{@oyW&!tt{hSL+dBkIIevy?8YhGi8j)ilzUI%yi^ zqLC>XS+!IcHB5ELG^WP#rmkDC={Al4na3TaZ2Ja+9XAnFT7x_TShi-;ca&f#eC6lfmtvC?2m&!oX(7b Up3c&@z%gbD*#>*6U}dq(Keu>aApigX diff --git a/objs/redirect/heredoc.o b/objs/redirect/heredoc.o deleted file mode 100644 index ac90431c80a28b845b28b93939cb335f876f062c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2572 zcmb7GUuYY39RH<_?X9j&Hs)W1Mc6|{<1+ui&{f)*8#i5`j0N^mehZh&dNlu*CN>DM zbJyvPqqqmf6@1u(ps<&UFIr}o(qe}%>jc4vJ=8L>g$(l$Y*y>$=X>|N%%tsuU-G^0 z|G)RUyWHBi_n?z8Pdmc}=mkn`xCDTJXMmT;umkiy<`{Y@2H?ub$p|SQ0q1$Gn0I(b zJ|&+%^+y9 znn`72YMvL;V|qHy`H67D22=80S^r8xnu{V8HG%OYR4 zL*x_ka`pAe<7-v zzbi&1q?o1ZDg~SJs!>{HzKd@_P^{NUcZ0gIt%_BuDyF>L5N4^kknDX~hi%CYd1O5F z^Noi9WwKB~_^%?sZrF-e<~F1cR~{mfxd)Q5GHz^)`zGFm!jdb-^0-lFzKNG0Dwb0t zQZarTHzj4V?>1VSZM3&2Z&E*NyXgXCLSf09im?zHn!haO^<&<;V#&b%06MBFMyZM- z7Z4+wi@K#)?_UBhvt3z!;Cfho$UJqqdDQGTwj!{$d37HM2u1mckBo_ z+@LzrnRApmQZ;|HBM$vVdYd)nn(aM-17&;L+O-)fOZ%`(CtmjLpPB2u@99MK@!^a z@ql8TlW-24SuH!cL^anwc6JjOnol(Khu+LWt+A2{odMj>cHiW*!(lnEg0tk>)c0{P z>-UW^x+~OioCnPMfKm2@v3z5(`-FPy=p}Ctd9L3#qct!ikxJJLMd8sfm(1v0Sggn@ z8ZvKAS%u~G2X?YjJ&eW6=G*{QAI9#HwL79NA>C8q5xLT3$#;~6y+3Zb}wKOIUFHi3N_ptMlrAI70qCCtUill70Yv|d4fOawYJ0mI zr@;pD3j@z=I(}k~ZT*t)TNQp{o^Aa;gI1!p8SzdEu7KjZ5u66a+b4Jp6fRGkb7*iMD1O18Pz&$yU>TI`-+6} zr$Kw*=$;>4$nJUhO2`2;OF&-*@-GYdTgX1hE?^eQ+kj_VWV&Clw|Rxfg%&%-{x|-e z7Wqnx{6dTTT8n(NMILOCKWUM1Pn+s9t`+q><1tm$Mn@SR%jtQI<1Y&1>ad=S^Wj)J zp41>F@}!OzvW#c4TAK0H2u~MMjF0MP)3GERGPx0kzadFI4GJqg;CQ}yR?lj-BB3X> wH2t;US}vE#;jc@a_@bs3P*hFDQ9q{VvpN`*%R-CdJOMGDanm`48WQID7a!*=9RL6T diff --git a/objs/redirect/heredoc_parser.o b/objs/redirect/heredoc_parser.o deleted file mode 100644 index 1e41063e629f010912b81e2719117a643fcf769e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2860 zcmb7GU1(fI6rPPS-P9y^mDa`|NRT}AWlQ|SSd86ZuFQiAF*Fjzdb8ZzG%LyOy4jls zVIgpnn(G(|Rl!F=5c^b7gjgh|ZD{i%Mi3GU;vy^TLX;?dh^cM-&YhWL^Y`Fk=briI z{LGni&fL2{Z2WQe5M!Zx7#Rs2z>JArf+D}hgit7x}YSjLBnCr4X!&{Hm0C3$ZiTu-&?FSGnks z(sE*Rb93N?(KG=Y#*C&IQ}K6E{JwjO`#q%_W)W(eIL1X}Ub^#5#AcR6yy#sC`SBvR ze;j`XU0>~5C09WNSlN5bAli!s@)7Nt6Ljk&sr_s=O~^5H;&R0(&5PxlnJyqD=h zQM{0p5HO_i3Td;H20_qPJhaID>zAo=+b&*1)FOW?@GZ<0KmU`=uS}Q#6fVqUdP#Bm z=|%KO;01Y|m!3qv1TZUsx6pOw+IGeUW>mgfxd<9nm!0w^+H@$W?^c~rvHk0;;=o>L z38XemnGFY>;VracSEH$u>H4%*Zp8gKb}$Q_f^~TFp-!KnR(FsKz5mMN^IXK?wx_`D z2aLI=?)UDpDRbGFcm@gEN7x()WpOAR__u3iIcsCaN7rLh?()0l^5-FAl8#+|a=RQ_ zd%ucMkRsw;4f&CBl3FULFV)s9sbp{M)@jUDhdZe0C+HpqreUuvQ&QqVN{l9*kDy=a zzER?J+w5!yT)P$ApjV|cgxQ9A-vp{qqa^vEAmTO(3PFbz<<_ zQcs;@U%esdb^R;#)Oq&R`w)5`D?N3tef8-3F@8t-Q|H^GH(JeD9b?h6;OOJ%pU4N{ zU%?4~qwpngr1IzmaGWiA5*)wiQ9MZheF*W%iu&NB*Nz9Rp8zL64dD2+MQ3#=!B5{)V&Be!qZ|-9>Ov^aDI_<)Z?e{JY@f zXHfB1!0UluRQM5abbj?-iu1GpI)y=4_v5Du_rWRA z1q_nwenSk*0M?Yoqyn4Ls7be?EdwN4w;?Z50@>eNm z)f$T90&Hkoq>GHcMuI{j(e$|SNQ4zN_~cQbmLvWGF(YHzvDNG_R9Y3Y!I zsgoMDMw~>}9#pQGWe=rC9A;&mME_7Sh1o#X!PCiR(^>rG>&INX%sQE&gk7=VjAat3 M{$Ph>E}dZi0h*DQT>t<8 diff --git a/objs/redirect/redirect.o b/objs/redirect/redirect.o deleted file mode 100644 index 5327392639b1ace5f59ea41eec42e7df439cc174..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1644 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 K%Pf@~i~R?6KkCx} diff --git a/objs/utils/error.o b/objs/utils/error.o deleted file mode 100644 index b12d16fc00d1b0a2aab56a1ca24876909b020726..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2792 zcmb7GU1%It6u$Xw8r$r~8mJ(26pMXuY7_&d5J|PG^I%HQ1{5sgc6T;e-Q7uMXJ{g< zMv@eVF%r-h>4Wt_QB=&EMMPU$+9GK8aUTTtMcBm%`%q!=|2uQf-Rw@*2QPc)yWjb{ z=iYnf&ffa{*T44&(bFgJK<`H%>cvAtN4p#S4O09^+Z>RJBjkgoIARLw6pxx|y4I2_ z$C95;Ja>ABtI;AQf=2Pk_Y#6UK!Sd;LZF&yri!kUEzGgNG&|#|I2Ty|F6XKIIbB7O zU&_ueBvY>G70zV~Y14fAWJ`%boELJDg~tYkpi~<}LU8Dgkfv$Pn;9pWx1>Wfzb%ee z<#-j2$5h-Q#Jn04K7xJ_Jv@rouoy(AMw62K;9em{fkz;|41~X!L8nGO)M-k}bszfw zZL@~|v$488Zuq69;d>2#cH0O_%^Jlq{6xhF(EUW!2)v51G5HwwrcGC>O0rsNh}haw z*7wu! zMxsg9^-qZerH&bDYPxcmY+s^m4A3?jSE^X@4W+FjUNsu;g)m;CdOZwFyV3}Q$N>Jg z(m5!Rre*}w6{ByuY`lIYjPHMkoxI5=(=eHZdbWJMe-t@_`_oMXYZ|N9rn;@S>3g?B zy`QM9mTn_8dWq?@u+g7m29FF?ezr*B1Y0}$aa-qZIRcX=}Tc;{DHU{2; z8cRTy9(q_XvH-rJa)lIYkXuk+lfM12^`jU`{l-Kd0luU%Rr^G#TQX{8Cw&-*dglYv z@wx5HT@F3e++{Vl%uH=`xS5%wu|t$mtA4b$diSTXov56(5$NG8i=}>N$Z)4pPMGEr_j)ibGS)4zviSUQ3DW5E)wSw(x z8QUwQhao>@Yeg?LuVu11OS2s4 zf?FIG?RudVAa=5;mVxG2iyp#b-or3%Zy!s7qv>p0OvB^hYpdPjB6~b3ahHFCZ&Ut6 z?9$KB<%@Q&gkAc(q+Im8@{H(Niuc6#?HSsH)%}p)gFgPpKVjqig*Y)1Ki~Vr{z3L5 zyOZdb*pAoH)h-9Sl|N-XUQbuMcVPF?U(&Ai>FYA@SFo$H9j|X!ygb&APotgz;!f9- zK-8r^0mK?69|Xq04+F84V|2li{zs4@;4NSr_%#qOn*JHf-vpxRt3dq5mhd3E0`q5? zKMo{6o#h9Bobf8fOuc@-w=f2(mO!-9uO-1Z6M`+ z9*7Fm7n!G-n?Rc91j`=e#y=jAcA@5j6Ye@LD{Cg1vMm7 zHO^TWh7)CkdCtkYmM~NER_bNx?Jh4sAk#UUgw(N;>0Gt|VaBmqs+66^IG@br?357y E0(9v#;{X5v diff --git a/objs/utils/free.o b/objs/utils/free.o deleted file mode 100644 index e0ed88cf7ceb3ed77052c1dfa4e79b05eff88c42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1208 zcmb7D&ubGw6rPP~yZEEogNIl|bC4p4l6ng0VTxTC#ezr$FET92h6dU+tXqtNAVh>P z2>vO87mtEMdJw#N@Tw>%c*vo6X#C#Hn{-?0!3S@?_rCY$+c(L~r$4{;=7b222`un3 z{4E7FIP46(LHQB(nQMm;nu45k$+XVXe(qwIuf_M*_H!TA3wkumYY3d6Vp%*R@TPTh zYqOU$bG_Yt)akagzP;jWgkDE78A69<2_af?9D_@=PS->)wE{0|`vrMXnS*i$6w8m|@dRe#@!(xBjK|8XVu+jd zYs=-z%X3q4Syx7es=11W>pS*CKX$OsPG`7UoR~PD4?aW>-nXw*&OfK2#6RaXvO4Xx z=a1;Sem5~bwn|n6%QqMBzwKEeesd^~sGsI~@Z_!t`cV*_oC{w;G*IyE4q>^Ovr$SVl^xfeJGSX;u1atV8_U2-{R?%tz5wRuFvTO=}ZT6uqf64ca;p6{-lyLa;*9g{uk*DRy843!)Wt5niXsv<;?7NTxOv0+mGR z5CjDm{se!5D-A^G(jVZa8zBLOEV>9T8qa-mC#KqX;l2BD&OPtG$xOcf`gt@#6goxN zu*R_>W7y(Yu*+C`42-b%%!SQ}4{~S{FVT`DFP|9z;*&EY{=RCN`}x zPP+kzy;AA2Tgv9wrKr?#y+G%*;4k=sLnh-6D$pxz7VWgFw({HAd`7AJivtkBip;eu z#Xab;BvNs*S;qUnlMDL^MMW8c0;#r~%fwa4ceHu%*8D}Vr#m0wn zop4cp-bMHoc=Xc)tYO0u`dJR2GmQT)er$Q)t=f<1XCC0w47N7YEzj&(wQ7%ymy?{n zzB3Dg4>cJ25>2&?SdyeaZh6(7%S^(`9rAh*=(e1ja2 zRBP2PZ*Yg$ZQsk=5mbqi5Q@;% z!oV<@k7(gs^wrqisj&1hZxL%+crxdSyc~E%;mN!w^4@{>L3lFvKfJf#V9dlEJZ4GU zfX6p+=>k07sKg39@NiOmTs)kv&%zrZB)I_Nx0v%LCoqIM*9kVhKjU!*U=|j_v2mRd z@n4!ix-$4?1t+!Us$AL4JKI5+v&$~2VyUo>zYFD*N`;bgDp}Ngs-4NGRXhDG$jjLs ShlH0dWDtXwwsW~cn&>zE2>5gW diff --git a/objs/utils/list_clear.o b/objs/utils/list_clear.o deleted file mode 100644 index 8367380f51bb290e6afcdc9c88d953b3a76c602a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1056 zcma)5K}#D^5S~POh=HcnJIAb&dXXB4@{uG<}dAJEi9SrKgY3e@i0oq> zKSX6@UHQ&4-8D35J0Ah@1m<@HKM5`g7J$&D?HS?ZV6o?z6b?v@Zw}=wzb!VNnfLTe hZw9*dEvVGIvQI*)Uae90zyPchy zjSvZJV+~^@NThGR_@MY?&#8%oD>4OgnK3I!F7E{>AXf^RWbI;wK$q#tQopZl) zzI*Pu=iHsly}uuBwF?nBAn?Fw#fY}xVPHU>#CV?^`-p+XB&TQ%L}4=1pm-#f<=Pcj z&Ltj8zCPB(YW5K?pm;Pj9~0sQa<+;EQc5f4dhrTI;>I=?BjMXE?`4GEcE61Hxbj=*Ft_hqolmtvjbN?*kg+SN0P>h&Ad?iOva zL-}Day;2k_$C@i^{{-CC?gM-B&j$E+Li|>3ag7YieJ7h7(@SrfUdpJ>wI0+KpOF6c zroT29j8SQAYmoj#v-wE1SHqA*z)VsO?jXywWKg zsuGC8Ri6!*D5hU}uM%DF-`d`0psznqpn6-scx&QWt>Y>Yh1MaszlPsm>ZjKqHJ6fg zY}MI}i_X{4$%nF&b&zzw?_9|Mv$h)IG`n#)5Y0;?L`n~JV+%K06`H#t_X&36w*ZN| zp-9bc+zybq8;aEI#^(VNl_JoM9{^D{xu!d!EuJRBa^JhnCAd#;r*zZ1Ot;s8XDPX% z(!Ul8fD6w7F62gzwAzru?zv!rV!2G`7j6H_U49UEG*cYG*Qe=k8*^ z`R0CJa-;ff1eL3OzwO`7&}Lf4kdXItxo;SY{H-qDip3HkaUI(>N{(H0a<&ulBw}JP zJrpn7>1~=|i;bj4l5xYXUagtMQNib9DQk9y zj2t%OTmmrOn$8raC{^R~m7<&--lY z#1(|>^6Pk+l4PXXlDU$F`8_cJu@cZ2a) zj6Y`lA>$I`JmV3@DaLWeU5r~8KSGZ%J^lqW?e{6;>x`*~5 z*eQVp90wh^ZctQm)-_BR#Sw^V5^RZLNj9VNgBF zt(_L4mp0>KiG(JltOeI8&(E?$sqT8Z4$?!)XdrAeT($_GRh_GumaFRX56klfrS6UX z+Js_o!V)`gqaGdoB^q$)u98aGB~^6HIXg-?jBk~r*SOvq*JD$h5u&7Zk|W?DaCjBT ze$fjiqB7)v4;%@|EQVEsM7|gYcM{>$-044wJ|(@cvbmj--r}xT-+4zk-e#}_lr6n{ zAe)PUNIo7Q^XZ+>2ne_Q{Eqa;0xvfNu`B(lKzjY;ksCPzELb-po$7o@&8&034EnXD zR}Z|YEi`D0BVnD|V+!zl8_{GirQl68t{`|tN_a01%!LxoKofmypzyPd)M#bD zcovyQ_6_zNxBr^=r;o|Mz|CThCPb`Z#EgNy#42*Gz<(J${sWLf8i&Z8GoJL^JsZ9y z*r&Kr@C%M(9O6%L6~r0)QN6##JxAOM$1(0B^|pZ#7m;=#@qVN~A&2BmNW7Qn3?%;P z!Ap?9n!XQ-(B3S|6ibNEe-$!`0DaCuw)K2(u&w8rWg8+S!in^rINKAE&6W^_LpEZ& zFI&}|>MY(lWjjvQQFf#33gtSst;|9}Ipx_>r(Lm&+O#UR>2Rp!*rsbMc!~nArfmx@ RXH^T(i>|WFN~LNE@e}wnOfvug diff --git a/srcs/builtin/builtin.c b/srcs/builtin/builtin.c index 18a8407..d7d7c90 100644 --- a/srcs/builtin/builtin.c +++ b/srcs/builtin/builtin.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/21 17:42:18 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 18:09:12 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 20:46:11 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/builtin/ft_exit.c b/srcs/builtin/ft_exit.c index 29e544a..73f7ac6 100644 --- a/srcs/builtin/ft_exit.c +++ b/srcs/builtin/ft_exit.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* ft_exit.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/19 16:23:29 by kichlee #+# #+# */ -/* Updated: 2023/08/17 18:31:37 by kichlee ### ########.fr */ +/* Updated: 2023/08/17 21:31:22 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -48,14 +48,14 @@ static void arg_over_one(t_data *data, int count, char **cmd, int flag) if (!ft_strncmp("-9223372036854775808", cmd[1], 20)) { printf("exit\n"); - error_code = 0; + g_error_code = 0; exit(0); } status = ft_atolong(cmd[1], &flag); if (flag && is_num_str(cmd[1]) && ft_strlen(cmd[1]) <= 20) { printf("exit\n"); - error_code = status % 256; + g_error_code = status % 256; exit(status % 256); } exit_not_num(data, cmd[1]); @@ -75,7 +75,7 @@ static void arg_over_two(t_data *data, int count, char **cmd, int flag) if (flag && is_num_str(cmd[i]) && ft_strlen(cmd[i]) <= 20) { check_errortype("error", 3); - error_code = 1; + g_error_code = 1; break ; } else @@ -88,7 +88,7 @@ static void exit_not_num(t_data *data, char *str) { (void) data; check_errortype(str, 4); - error_code = 255; + g_error_code = 255; exit(255); } diff --git a/srcs/builtin/ft_export.c b/srcs/builtin/ft_export.c index 273ce9c..838deab 100644 --- a/srcs/builtin/ft_export.c +++ b/srcs/builtin/ft_export.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 11:50:55 by kichlee #+# #+# */ -/* Updated: 2023/08/17 13:28:03 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 21:14:11 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,7 +22,7 @@ t_bool ft_export(t_data *data, t_leaf *cmd) int args_cnt; char *tmp; - args_cnt = cnt_args(cmd); + args_cnt = cnt_args(cmd->right_child); if (!cmd || args_cnt == 0) { print_export_order(data); @@ -58,7 +58,9 @@ static int cnt_args(t_leaf *tmp) args = 0; while (tmp) { - if (tmp->token->blank == 1) + if (tmp->token && tmp->token->type == T_ARG && tmp->token->blank == 1) + ++args; + if (!tmp->right_child && tmp->token->blank == 0) ++args; tmp = tmp->right_child; } diff --git a/srcs/builtin/ft_export_check.c b/srcs/builtin/ft_export_check.c index 66e6e2c..f922502 100644 --- a/srcs/builtin/ft_export_check.c +++ b/srcs/builtin/ft_export_check.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* ft_export_check.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 21:42:23 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 18:28:37 by kichlee ### ########.fr */ +/* Updated: 2023/08/17 21:31:33 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,7 +28,7 @@ t_bool check_env(t_data *data, char *key, char *value) printf("bash: export: '%s%s': not a valid identifier\n", key, value); else printf("bash: export: '%s': not a valid identifier\n", key); - error_code = 1; + g_error_code = 1; free(key); if (value) free(value); diff --git a/srcs/execute/execve.c b/srcs/execute/execve.c index d8da835..412aeb4 100644 --- a/srcs/execute/execve.c +++ b/srcs/execute/execve.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:31:21 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 11:58:20 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 20:04:36 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/execute/execve_utils.c b/srcs/execute/execve_utils.c index 1ef1e7f..d27330b 100644 --- a/srcs/execute/execve_utils.c +++ b/srcs/execute/execve_utils.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* execve_utils.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:39:07 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 18:28:32 by kichlee ### ########.fr */ +/* Updated: 2023/08/17 21:29:32 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,7 +33,7 @@ int check_builtin(t_data *data) if (built != 0) { check_redirect(data->root, data); - error_code = exec_builtin(built, data); + g_error_code = exec_builtin(built, data); recover_std(data); return (TRUE); } diff --git a/srcs/execute/file.c b/srcs/execute/file.c index 42af31f..a40c9f2 100644 --- a/srcs/execute/file.c +++ b/srcs/execute/file.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* file.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:53:28 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 18:28:26 by kichlee ### ########.fr */ +/* Updated: 2023/08/17 21:30:21 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,7 +23,7 @@ void check_file(int fd, t_data *data) if (fd < 0) { close(fd); - error_code = 1; + g_error_code = 1; error_print(str, 0, 1); if (data->info->parent == 1) exit(1); diff --git a/srcs/execute/parent.c b/srcs/execute/parent.c index 6ac9231..bf72e9d 100644 --- a/srcs/execute/parent.c +++ b/srcs/execute/parent.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* parent.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:37:35 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 18:28:21 by kichlee ### ########.fr */ +/* Updated: 2023/08/17 21:33:02 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,9 +23,9 @@ void wait_child_processes(t_data *data) { if (wait(&status) \ == data->pipe->com[data->info->pipe_num].pid) - error_code = WEXITSTATUS(status); + g_error_code = WEXITSTATUS(status); if (WIFSIGNALED(status) && !data->info->heredoc_flag) - error_code = 128 + WTERMSIG(status); + g_error_code = 128 + WTERMSIG(status); i++; } if (WTERMSIG (status) == 2) diff --git a/srcs/input/get_input.c b/srcs/input/get_input.c index 7ab21cb..8bc1dc3 100644 --- a/srcs/input/get_input.c +++ b/srcs/input/get_input.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:27:16 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 09:59:53 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 21:40:19 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,15 +21,15 @@ t_bool get_input(t_data *data) if (!data->input) { printf("exit\n"); - exit(1); + g_error_code = 0; + exit(0); } - if (check_blank_input(data->input) == TRUE) + add_history(data->input); + if (check_blank_input(data->input) == TRUE || lexer(data) == FALSE) { free(data->input); return (FALSE); } - add_history(data->input); - lexer(data); if (syntax(data) == FALSE) { tree_clear(data->root); diff --git a/srcs/lexer/expand.c b/srcs/lexer/expand.c index ccd2ba8..999b948 100644 --- a/srcs/lexer/expand.c +++ b/srcs/lexer/expand.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:20:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 13:27:28 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 20:30:21 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/lexer/expand_check.c b/srcs/lexer/expand_check.c index d883452..641f474 100644 --- a/srcs/lexer/expand_check.c +++ b/srcs/lexer/expand_check.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* expand_check.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:23:58 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 18:28:09 by kichlee ### ########.fr */ +/* Updated: 2023/08/17 21:29:36 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,7 +38,7 @@ t_bool check_question(t_data *data, t_token *token, int *i) if (data->input[*i] == '?') { - tmp = ft_itoa(error_code); + tmp = ft_itoa(g_error_code); token->str = ft_strncat(token->str, tmp, ft_strlen(tmp)); token->blank = check_end(data->input[*i + 1]); *i += 1; diff --git a/srcs/lexer/lexer.c b/srcs/lexer/lexer.c index fa0176e..91a8906 100644 --- a/srcs/lexer/lexer.c +++ b/srcs/lexer/lexer.c @@ -6,18 +6,18 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 16:24:37 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 13:31:01 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 21:23:34 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -void lexer(t_data *data); +t_bool lexer(t_data *data); static void check_char(t_data *data, t_token **token, int *i, t_bool *pre_pipe); static void blank_char(t_data *data, t_token **token, int *i, t_bool *pre_pipe); static void normal_char(t_data *data, t_token **token, int *i); -void lexer(t_data *data) +t_bool lexer(t_data *data) { int i; t_token *token; @@ -31,8 +31,14 @@ void lexer(t_data *data) check_char(data, &token, &i, &pre_pipe); free(token->str); free(token); + if (!data->tokens) + { + free(data->input); + return (FALSE); + } last_token = ft_lstlast(data->tokens); last_token->token->blank = FALSE; + return (TRUE); } static void check_char(t_data *data, t_token **token, int *i, t_bool *pre_pipe) @@ -46,7 +52,7 @@ static void check_char(t_data *data, t_token **token, int *i, t_bool *pre_pipe) else if (data->input[*i] == '$') { expand(data, token, i, FALSE); - token_add_list(&data->tokens, token, TRUE); + token_add_list(&data->tokens, token); } else if (data->input[*i] == ' ' || data->input[*i] == '\t') blank_char(data, token, i, pre_pipe); @@ -65,7 +71,7 @@ static void blank_char(t_data *data, t_token **token, int *i, t_bool *pre_pipe) *i += 1; if (data->input[*i] == '|') *pre_pipe = TRUE; - token_add_list(&data->tokens, token, TRUE); + token_add_list(&data->tokens, token); *i -= 1; } @@ -83,5 +89,5 @@ static void normal_char(t_data *data, t_token **token, int *i) || data->input[*i + 1] == '\"' \ || data->input[*i + 1] == '$' \ || data->input[*i + 1] == '\0') - token_add_list(&data->tokens, token, TRUE); + token_add_list(&data->tokens, token); } diff --git a/srcs/lexer/tokenizer.c b/srcs/lexer/tokenizer.c index 777c40d..88ee189 100644 --- a/srcs/lexer/tokenizer.c +++ b/srcs/lexer/tokenizer.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:26:13 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 13:31:08 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 20:28:42 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,7 @@ void tokenizer(t_data *data, t_token **token, int *i); t_token *token_create(void); void token_redirect(t_data *data, t_token *token, int *i); -void token_add_list(t_list **head, t_token **token, t_bool create_flag); +void token_add_list(t_list **head, t_token **token); void tokenizer(t_data *data, t_token **token, int *i) { @@ -27,7 +27,7 @@ void tokenizer(t_data *data, t_token **token, int *i) single_quote(data->input, token, i); else if (data->input[*i] == '<' || data->input[*i] == '>') token_redirect(data, *token, i); - token_add_list(&data->tokens, token, TRUE); + token_add_list(&data->tokens, token); } t_token *token_create(void) @@ -68,7 +68,7 @@ void token_redirect(t_data *data, t_token *token, int *i) } } -void token_add_list(t_list **head, t_token **token, t_bool create_flag) +void token_add_list(t_list **head, t_token **token) { t_list *new; @@ -77,6 +77,5 @@ void token_add_list(t_list **head, t_token **token, t_bool create_flag) new = ft_lstnew(); new->token = *token; ft_lstadd_back(head, new); - if (create_flag == TRUE) - *token = token_create(); + *token = token_create(); } diff --git a/srcs/minishell.c b/srcs/minishell.c index 99c5303..6609ea0 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* minishell.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 18:35:46 by kichlee ### ########.fr */ +/* Updated: 2023/08/17 21:39:02 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,7 +26,6 @@ int main(int argc, char **argv, char **envp) if (get_input(data) == FALSE) continue ; execute(data); - check_leak(); input_free(data); } data_free(data); diff --git a/srcs/parser/syntax.c b/srcs/parser/syntax.c index 4492b3d..5e9b56c 100644 --- a/srcs/parser/syntax.c +++ b/srcs/parser/syntax.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/07 22:24:38 by eunwolee #+# #+# */ -/* Updated: 2023/08/11 06:53:21 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 21:20:49 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/redirect/heredoc.c b/srcs/redirect/heredoc.c index ecfbf33..ae3d2e8 100644 --- a/srcs/redirect/heredoc.c +++ b/srcs/redirect/heredoc.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* heredoc.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:21:48 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 18:27:50 by kichlee ### ########.fr */ +/* Updated: 2023/08/17 21:31:47 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,16 +29,16 @@ int fork_heredoc(t_data *data) signal (SIGINT, child_handler); mk_heredoc_pipe(data); execute_cmd(data, 1); - exit(error_code); + exit(g_error_code); } else { signal (SIGINT, SIG_IGN); waitpid(-1, &status, 0); - error_code = WEXITSTATUS(status); + g_error_code = WEXITSTATUS(status); if (WIFSIGNALED(status)) { - error_code = WTERMSIG (status); + g_error_code = WTERMSIG (status); ft_putendl_fd("", STDERR_FILENO); return (1); } diff --git a/srcs/redirect/heredoc_parser.c b/srcs/redirect/heredoc_parser.c index 9fbe33d..c93d7df 100644 --- a/srcs/redirect/heredoc_parser.c +++ b/srcs/redirect/heredoc_parser.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* heredoc_parser.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:16:20 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 18:31:50 by kichlee ### ########.fr */ +/* Updated: 2023/08/17 21:32:54 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -66,7 +66,7 @@ static char *heredoc_question(t_data *data, char *tmp, int *i) char *temp; (void) data; - temp = ft_itoa(error_code); + temp = ft_itoa(g_error_code); tmp = ft_strncat(tmp, temp, ft_strlen(temp)); *i += 1; return (tmp); diff --git a/srcs/redirect/redirect.c b/srcs/redirect/redirect.c index c832387..5b3d2dc 100644 --- a/srcs/redirect/redirect.c +++ b/srcs/redirect/redirect.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:16:07 by eunwolee #+# #+# */ -/* Updated: 2023/08/16 21:54:47 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 21:25:22 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,10 +24,10 @@ void check_redirect(t_leaf *leaf, t_data *data) while (temp) { if (temp->token->redirect_type == T_INPUT \ - ||temp->token->redirect_type == T_HEREDOC) + || temp->token->redirect_type == T_HEREDOC) do_input_redirect(temp, data); else if (temp->token->redirect_type == T_OUTPUT \ - ||temp->token->redirect_type == T_APPEND) + || temp->token->redirect_type == T_APPEND) do_output_redirect(temp, data); temp = temp->left_child; } @@ -42,16 +42,16 @@ static void do_input_redirect(t_leaf *leaf, t_data *data) temp = leaf; if (temp->token->redirect_type == T_HEREDOC) { - fd = open (data->info->heredoc_file[data->info->index - 1], \ + fd = open(data->info->heredoc_file[data->info->index - 1], \ O_RDONLY); dup2 (fd, STDIN_FILENO); return ; } else if (temp->token->redirect_type == T_INPUT) - fd = open (temp->left_child->token->str, O_RDONLY); - check_file (fd, data); - dup2 (fd, STDIN_FILENO); - close (fd); + fd = open(temp->left_child->token->str, O_RDONLY); + check_file(fd, data); + dup2(fd, STDIN_FILENO); + close(fd); } static void do_output_redirect(t_leaf *leaf, t_data *data) @@ -63,15 +63,15 @@ static void do_output_redirect(t_leaf *leaf, t_data *data) temp = leaf; if (temp->token->redirect_type == T_APPEND) { - fd = open (temp->left_child->token->str, \ + fd = open(temp->left_child->token->str, \ O_WRONLY | O_APPEND | O_CREAT, 0644); } else if (temp->token->redirect_type == T_OUTPUT) { - fd = open (temp->left_child->token->str, \ + fd = open(temp->left_child->token->str, \ O_WRONLY | O_TRUNC | O_CREAT, 0644); } - check_file (fd, data); - dup2 (fd, STDOUT_FILENO); - close (fd); + check_file(fd, data); + dup2(fd, STDOUT_FILENO); + close(fd); } diff --git a/srcs/signal/signal.c b/srcs/signal/signal.c index ac0f951..9a4db2d 100644 --- a/srcs/signal/signal.c +++ b/srcs/signal/signal.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* signal.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/15 18:40:34 by kichlee #+# #+# */ -/* Updated: 2023/08/17 18:32:39 by kichlee ### ########.fr */ +/* Updated: 2023/08/17 21:33:36 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -36,10 +36,10 @@ void init_base(int ac) void handle_sigint(int sig) { - error_code = 1; + g_error_code = 1; printf("\n"); rl_on_new_line(); - rl_replace_line("", 0); + // rl_replace_line("", 0); rl_redisplay(); (void)sig; } diff --git a/srcs/utils/error.c b/srcs/utils/error.c index 158cd4f..173b259 100644 --- a/srcs/utils/error.c +++ b/srcs/utils/error.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* error.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/17 14:53:39 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 18:36:52 by kichlee ### ########.fr */ +/* Updated: 2023/08/17 21:29:14 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -93,7 +93,7 @@ t_bool error_back_readline(t_data *data, char *str, int error_code_b, int flag) perror(str); else printf("%s\n", str); - error_code = error_code_b; + g_error_code = error_code_b; return (FALSE); } From 959dc6b921fb61516d2c3e857816a948a89571af Mon Sep 17 00:00:00 2001 From: eunwoo Date: Fri, 18 Aug 2023 08:33:45 +0900 Subject: [PATCH 51/57] . --- .DS_Store | Bin 6148 -> 6148 bytes Makefile | 1 - incs/execute.h | 8 +-- incs/utils.h | 3 +- minishell | Bin 0 -> 90992 bytes objs/Libft/ft_calloc.o | Bin 0 -> 808 bytes objs/Libft/ft_isalnum.o | Bin 0 -> 788 bytes objs/Libft/ft_isalpha.o | Bin 0 -> 680 bytes objs/Libft/ft_isdigit.o | Bin 0 -> 664 bytes objs/Libft/ft_itoa.o | Bin 0 -> 1308 bytes objs/Libft/ft_memset.o | Bin 0 -> 732 bytes objs/Libft/ft_putendl_fd.o | Bin 0 -> 904 bytes objs/Libft/ft_split.o | Bin 0 -> 1804 bytes objs/Libft/ft_strdup.o | Bin 0 -> 1000 bytes objs/Libft/ft_strjoin.o | Bin 0 -> 1104 bytes objs/Libft/ft_strlcat.o | Bin 0 -> 920 bytes objs/Libft/ft_strlcpy.o | Bin 0 -> 872 bytes objs/Libft/ft_strlen.o | Bin 0 -> 732 bytes objs/Libft/ft_strncat.o | Bin 0 -> 1140 bytes objs/Libft/ft_strncmp.o | Bin 0 -> 852 bytes objs/Libft/ft_substr.o | Bin 0 -> 1220 bytes objs/builtin/builtin.o | Bin 0 -> 1852 bytes objs/builtin/ft_add_env_front.o | Bin 0 -> 1572 bytes objs/builtin/ft_atolong.o | Bin 0 -> 1748 bytes objs/builtin/ft_cd.o | Bin 0 -> 2756 bytes objs/builtin/ft_cnt_args.o | Bin 0 -> 700 bytes objs/builtin/ft_echo.o | Bin 0 -> 1576 bytes objs/builtin/ft_env.o | Bin 0 -> 1088 bytes objs/builtin/ft_exit.o | Bin 0 -> 2592 bytes objs/builtin/ft_export.o | Bin 0 -> 2088 bytes objs/builtin/ft_export_check.o | Bin 0 -> 2440 bytes objs/builtin/ft_export_print.o | Bin 0 -> 2704 bytes objs/builtin/ft_join_cmd.o | Bin 0 -> 2320 bytes objs/builtin/ft_pwd.o | Bin 0 -> 1116 bytes objs/builtin/ft_unset.o | Bin 0 -> 1164 bytes objs/builtin/ft_update_env_cd.o | Bin 0 -> 1284 bytes objs/builtin/ft_update_env_export.o | Bin 0 -> 2644 bytes objs/execute/child.o | Bin 0 -> 2480 bytes objs/execute/execve.o | Bin 0 -> 2432 bytes objs/execute/execve_utils.o | Bin 0 -> 1832 bytes objs/execute/file.o | Bin 0 -> 1124 bytes objs/execute/parent.o | Bin 0 -> 1216 bytes objs/execute/path.o | Bin 0 -> 2516 bytes objs/execute/pipe.o | Bin 0 -> 2016 bytes objs/init/init.o | Bin 0 -> 1780 bytes objs/input/get_input.o | Bin 0 -> 1736 bytes objs/lexer/expand.o | Bin 0 -> 2080 bytes objs/lexer/expand_check.o | Bin 0 -> 2764 bytes objs/lexer/lexer.o | Bin 0 -> 2592 bytes objs/lexer/lexer_utils.o | Bin 0 -> 1260 bytes objs/lexer/quote.o | Bin 0 -> 2652 bytes objs/lexer/tokenizer.o | Bin 0 -> 2092 bytes objs/minishell.o | Bin 0 -> 988 bytes objs/parser/parser.o | Bin 0 -> 1692 bytes objs/parser/syntax.o | Bin 0 -> 2828 bytes objs/redirect/heredoc.o | Bin 0 -> 2572 bytes objs/redirect/heredoc_parser.o | Bin 0 -> 2864 bytes objs/redirect/redirect.o | Bin 0 -> 1720 bytes objs/signal/signal.o | Bin 0 -> 1976 bytes objs/utils/env.o | Bin 0 -> 2340 bytes objs/utils/error.o | Bin 0 -> 2796 bytes objs/utils/free.o | Bin 0 -> 1208 bytes objs/utils/list.o | Bin 0 -> 1492 bytes objs/utils/list_clear.o | Bin 0 -> 1056 bytes objs/utils/tree.o | Bin 0 -> 1716 bytes srcs/execute/execve_utils.c | 7 +- srcs/execute/file.c | 10 +-- srcs/input/get_input.c | 4 +- srcs/minishell.c | 4 +- srcs/redirect/redirect.c | 36 +++++----- srcs/signal/signal.c | 6 +- srcs/utils/temp.c | 100 ---------------------------- 72 files changed, 43 insertions(+), 136 deletions(-) create mode 100755 minishell create mode 100644 objs/Libft/ft_calloc.o create mode 100644 objs/Libft/ft_isalnum.o create mode 100644 objs/Libft/ft_isalpha.o create mode 100644 objs/Libft/ft_isdigit.o create mode 100644 objs/Libft/ft_itoa.o create mode 100644 objs/Libft/ft_memset.o create mode 100644 objs/Libft/ft_putendl_fd.o create mode 100644 objs/Libft/ft_split.o create mode 100644 objs/Libft/ft_strdup.o create mode 100644 objs/Libft/ft_strjoin.o create mode 100644 objs/Libft/ft_strlcat.o create mode 100644 objs/Libft/ft_strlcpy.o create mode 100644 objs/Libft/ft_strlen.o create mode 100644 objs/Libft/ft_strncat.o create mode 100644 objs/Libft/ft_strncmp.o create mode 100644 objs/Libft/ft_substr.o create mode 100644 objs/builtin/builtin.o create mode 100644 objs/builtin/ft_add_env_front.o create mode 100644 objs/builtin/ft_atolong.o create mode 100644 objs/builtin/ft_cd.o create mode 100644 objs/builtin/ft_cnt_args.o create mode 100644 objs/builtin/ft_echo.o create mode 100644 objs/builtin/ft_env.o create mode 100644 objs/builtin/ft_exit.o create mode 100644 objs/builtin/ft_export.o create mode 100644 objs/builtin/ft_export_check.o create mode 100644 objs/builtin/ft_export_print.o create mode 100644 objs/builtin/ft_join_cmd.o create mode 100644 objs/builtin/ft_pwd.o create mode 100644 objs/builtin/ft_unset.o create mode 100644 objs/builtin/ft_update_env_cd.o create mode 100644 objs/builtin/ft_update_env_export.o create mode 100644 objs/execute/child.o create mode 100644 objs/execute/execve.o create mode 100644 objs/execute/execve_utils.o create mode 100644 objs/execute/file.o create mode 100644 objs/execute/parent.o create mode 100644 objs/execute/path.o create mode 100644 objs/execute/pipe.o create mode 100644 objs/init/init.o create mode 100644 objs/input/get_input.o create mode 100644 objs/lexer/expand.o create mode 100644 objs/lexer/expand_check.o create mode 100644 objs/lexer/lexer.o create mode 100644 objs/lexer/lexer_utils.o create mode 100644 objs/lexer/quote.o create mode 100644 objs/lexer/tokenizer.o create mode 100644 objs/minishell.o create mode 100644 objs/parser/parser.o create mode 100644 objs/parser/syntax.o create mode 100644 objs/redirect/heredoc.o create mode 100644 objs/redirect/heredoc_parser.o create mode 100644 objs/redirect/redirect.o create mode 100644 objs/signal/signal.o create mode 100644 objs/utils/env.o create mode 100644 objs/utils/error.o create mode 100644 objs/utils/free.o create mode 100644 objs/utils/list.o create mode 100644 objs/utils/list_clear.o create mode 100644 objs/utils/tree.o delete mode 100644 srcs/utils/temp.c diff --git a/.DS_Store b/.DS_Store index 9a0a70dde31b9f09919d8d3aa583cc0ffdcbcced..a9e7b549ac14ae2314e609cba4646a4bb8f4f018 100644 GIT binary patch delta 58 zcmZoMXffEJ&d3_Zz`)=;S%*=Z^$3_1!>G$@1ZMRyDzh#Cv$g?QAa#2;-(yr00|0n& B4HWG%u31;;%Dzi=pv$g?QAayG@-(yr00|03Q B41@px diff --git a/Makefile b/Makefile index c6e8647..1b883ea 100644 --- a/Makefile +++ b/Makefile @@ -59,7 +59,6 @@ SRCS = minishell.c \ utils/list_clear.c \ utils/tree.c \ utils/free.c \ - utils/temp.c \ Libft/ft_isalpha.c \ Libft/ft_isalnum.c \ Libft/ft_isdigit.c \ diff --git a/incs/execute.h b/incs/execute.h index 9ff5e4c..7b9234f 100644 --- a/incs/execute.h +++ b/incs/execute.h @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* execute.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/08 17:49:19 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 16:41:42 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 22:06:22 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,7 +33,7 @@ t_bool check_dir(char *command); /*parent*/ void wait_child_processes(t_data *data); -void check_redirect(t_leaf *leaf, t_data *data); +int check_redirect(t_leaf *leaf, t_data *data); int fork_heredoc(t_data *data); @@ -45,7 +45,7 @@ void abs_path(t_data *data); char *search_path(t_pipe *base); int check_path(char *str); -void check_file(int fd, t_data *data); +int check_file(int fd, t_data *data); void close_file(t_data *data); void sig(void); diff --git a/incs/utils.h b/incs/utils.h index 329a41a..f3888e7 100644 --- a/incs/utils.h +++ b/incs/utils.h @@ -6,7 +6,7 @@ /* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:32:09 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 18:37:01 by kichlee ### ########.fr */ +/* Updated: 2023/08/17 21:36:49 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -41,7 +41,6 @@ void tree_clear(t_leaf *leaf); void input_free(t_data *data); void data_free(t_data *data); -/*temp.c 임시 함수*/ void tree_print(t_leaf *leaf); void print_token(t_data *data); void env_array_print(t_data *data); diff --git a/minishell b/minishell new file mode 100755 index 0000000000000000000000000000000000000000..c26b4e167ffec7314c9d68a447a07f5a87a258ae GIT binary patch literal 90992 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 literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_calloc.o b/objs/Libft/ft_calloc.o new file mode 100644 index 0000000000000000000000000000000000000000..12b371727163d55ee5581a337cb01f21f7e1d854 GIT binary patch literal 808 zcmah{&r1SP5FRZwN?Q*dDvBh!3e~A&Q48;o5MkgYUZQITu7<57fe=X1;-x>K|DcYZ zE3jMFj$Q(Tf=(eFs&Cx)a63f9esAWRUvGAHA3xu|!bE`~!T}5eEjHo+WC~be{)ap$ z|C7qm96gD_eOaV*teWH59#5I+)PQR%uMFw+S2rB~5}XSsn^qxRdXFy^xgGGEEqmgkZ3_k0(+kJ5XppROMpT-kRm{qE(xnht_TzI@-^y}NgLFOQ!eUt>hZ2;l{c0=FzO0BjamW&aPm zQSm3WM*HYV4DQP&MCdldNJoA?x1ay@wc1jG`|&In2_ih~oHA(>qEN5;P9YSH+ObzF z3bDPZbId!+$tYez6Q1P?tVWe>RT}fT6;TSDsvAXw7@p5p3)d9es-JRclBl9J^D;04 z$i2)7N&;-WDaWrN`1_v0D`3l;wG4fRQS^WBJ-hQ_x8JQ!tJiJyUb(2CpOYaRhI$dD6%FPWmyh`lWDLS+ifw5b6OgwVrlum!cXwoN)x3}ct=IA c?1dC*=djkOk|+x|2+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SOFEk0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7kxfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw$ z%29yPOc1v;0BNXGfh+`wk5A2rPb*5yO@)ZX$D_J01FF;kMnlbmav8W87+^}kLPkJR z0*JwO@pCb-0Wk=GECq>oK;1C|NDBb@K>Z8>K#UAPdZBJb7AA@v>e2bMv-U@G?GH!( z9+1^QRuq4q2!xf$-y;TLRq^-p09nUf|A1_I35qfx8%Q#AyZ(ti3}S!*G+r>A12PZ< z7^{L97%K!A1$fvwCID5b0L5g0xZ*zqz~Ys`kx!tF$(ff8qzMXu%Gp2$^CO!cpH>o| NS)7+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z4ETG*fLeeoOa6WyAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag<#WTt0=Qwad2 CK0yZn literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_itoa.o b/objs/Libft/ft_itoa.o new file mode 100644 index 0000000000000000000000000000000000000000..63dd8b801efe35ba8f3ffa484f43de8d9c913e50 GIT binary patch literal 1308 zcmah|L2DC16rQcIEn1U+EmRN;=)p^*c@qF0|Q_ZZHUemQ=~I z1ibbqcoT14q*!Ua^(1)AMc6=uJrqnOG=6V(HYP3NgE#Z$d*A!sn_>6(_s_F2#*9l0 z3p@rNAHkA>!*0Oql=z3u5Eph=@6j2WjGXkyq;&EXCyc}M5?@~Wdyb+V-HY_7b{UJ( zh_UU6L%WpbmQ%8d1r16$tQYBA*7%n`tC*8=VZNV45WT@e z4ZepSNmekN)*6zOGQTEQOWBQlSa5#6ulk;AS})Lg`pB*_7Nrz)AL}$+l_jpQQ8*bj zCA^L~=&s+f)8MFQPvB%!6FKqEJq1zzYtMxHL)6+Sx7rmZ?+Tau!mIi|6}tSy<0rL! zLztaU)JUPAG)1l2WQo@kz(nK0EOIJEY~OHs2YElrd%StbW?Hw2tKi0U3Kg6d7WaEF z>e~X$)DrS`=R%$@_CC_1h+n5-=ktsL%T2G^$+(?NZNE2f!HH1 zNq!)0v=Zjx$zg0MDJyp0!e zd0SYEK{)zi5KWER-P91t-E$8-EMd9pE?N(`Phmuc!4H%fyp!M&_=K>N?`l_Z4WK?sI|n7@Qbm zY2xCWo4Ob7Y5G=S=@b^URkF0xlf@B4H=0G5ptClrA2_m9cpgCyWdo%lAU8{P0so)O omr8a?<|~%Nq*-)i&MHt?&!{9xOBnYg4DfWM$ zqt;(lj_*-ZFu5*+$T91Vr#+w6v+0TV)xHv3k7pSpEE;1CK~$(($N7RowaV#HrAV~1 z9o)|;lT3I*OzWr zHoHH7bdA2e7>f8M4|1(z+vrL6SvDWIJC65S+Q$=TqRPSJRC{$_qu&f}EGeU%?Fp@( z&=Rre>Y5S>Jg;#UGHC|E?Wun|PGH^jge3L**tkwMHw1A5ANhav=ofOs4Me~PuG z3flP>Y=j637Ab;-`X)DriD2P_w{PC=&g^7zj~{QJ-9)ht!UA@JJ#j2)5Euh5C-C0Fg&c5=uP*vumBWVI2CkTz>7xN0Ft0)RWwIRhYBrjwti?k?WM~9o=MZuNT$P zwx}8fdjFS|dI$T5TiY&s_HoHBFfT3Y)u!yKNvmF>fXpm~MaR=tlG)njqO-NHjr{KK zLhCH3UTHnG)JGIO+1#4NItn)5O7>C$6v(5pKZ-tNUU}#Y6#29QwnB1+()WL{Zv1Cc zc}*L?-0;16rCg_EwF^~VGFXCg-2`641i6M^emDNT@x5A2-Uwg=uV(xkwRKaSAI8D8 zbYlG6Q*+-`?$VpL;ZKq@(y_^_)Qc=b$Jv4G~RDK$8d}NZ4X&DD-iexu73xJtr=@j4yQ0vWbtK bl4}v~u;n-h4!*Pk9L^6t*Rl(HTrAKxVdrk? literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_split.o b/objs/Libft/ft_split.o new file mode 100644 index 0000000000000000000000000000000000000000..4215dd4c502d70c84c8759290a7840df7b2c4c39 GIT binary patch literal 1804 zcmb7FT}TvB6ux8rY-Wy?QbFK8^bnDyQIJKkkps7AA;g6s_BnYpw1`_O?i=bpdse)r7X+3y>_HtQHu z4lz8S)zCl{9ziJNG&Dzv10+R_kaN@n@qJ)2Qo)e>`b07@8XJ}YA$H>VIJGiA;1iL)+{T9kKRrG+-mfQx8GAAs8x-Px zS0#x>NH%0-a0GaCbO-z-^bSZNj1e)E=pQq@hTZ(;Wc6o>_fz6YmmOhj#9x!W3_S&P zUxixFYM~?qL-8gY^f2rUY!nv#>;aU7cy52cp#0ww;nokHEe5%jE{AgFI=9nhb=F+} zNl2Dfw6$V(PT_iaHh_Q|<(8J`*>s+%Qw@mm>6@!y@20ZpBBI0_(Yzn!b~w*1rEmuE zMa{vJVVgX+O>7le=hI=w1GWkHOR#r-=%U&>Np);HKg(RJv}@(eHKtC|P2;u(oWPCn znmTnt`n-k)3Z~`41viu~+uE8s>uuzo%fY!U&A|b|ugvu&t}JsaTrRxd+S;-;$73S* zZ>RZi%XD&)5{kfG%P#`h-Q97in9>0ioT}8hTw&u>*f@oIZdKaBj7#pJJAPZ*3dZ4Z zJ+dOl06KOg&-LTns$RBDq(Mjj#+9!)kwbgi?b!vzYA-wk*N!<*ZSS2|Tf5}E?Yz0gV@6m^PjRG|?M5b(xT z_~cEecYdIMVgwl}Z$0Z?V?RcAMmibK?#Tybm=WO@m`}Ywdw6E zdGD!v369{m({~)=))Qn14%wiz zFs^?Uwh@UL3P4(+`>G-g7~=ZD)p&yTs^ectXineVN;TH$>SYRc~+AUj*Z zq3fBFWDd4?GxD~BykT~}cdE0he5iUF(ix&H=L=s4E&%phmD5xP#N?xLe-m?*!EeA1 z!05LOnwazo+)gHm|8O3e&6x4RJAQAMxEF;jyd@5zD2zB5v}2cV_Iu9l U1YP2m*7#vFunFJmbV8s00+Kv`BLDyZ literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_strjoin.o b/objs/Libft/ft_strjoin.o new file mode 100644 index 0000000000000000000000000000000000000000..a57d21f56bf426e0833e8a0776295263933c607d GIT binary patch literal 1104 zcmb7D&ubGw6rPPSU9_4UT2SaAiiaMI6i*@)6kV7@1ELjrkuh$!NhHmd?FNGos6-{x zBJ>~V|KQP+Sp3nOz4n-kU}1$E3Jo3_zn6W}ZUlvX@aFxR@7p&!ySu-C9gPWLoe@}I zX_%eDl7|78VI6Ax15dd(O&q}F&=h2(M^GyCnqeHr`Mk3*f0CQ%fCJJaZU=*%rCM67 zkuy-rT@8b3z03urM)i!&kc&N2bif37+~W%L{N&YAMYX=D)ZG2!CIx)XJQt^- zN0RTcaBDfTTBhW*s{sDYC ztBsc?;lURVU`Y^{jNa>M@mT5~vK`Gx-Reu-=*f*%|0jtc=t=GDaZ=oq*0y}LP0x{f z_aphZrJb&9x4I(xW}JHOX17dh$B7U^$?31%64}=`IFb59sn}o7VMBML5$VJBj-^|X zbia2d?ESBU!C;^Hy(AxFCHTGn@kv>_#pqkwrZF(+mzgJ@pOscCB%B0)S9GiqOmJqs zd?>7D&dQCC*_+sP4fQG5rz4CBnD0{Dy_kEOx_2SNyajmNOW_eb?sRe%9`wT1I4?}H zhogFi@@!&?+i{)RLtMd{Xp8G{o-%h&y<}ggmB26KdsSW#_<{18)ljIVP~k6o?pNz3 Wu6YQ{yvg+!ywpL9(s@ literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_strlcat.o b/objs/Libft/ft_strlcat.o new file mode 100644 index 0000000000000000000000000000000000000000..928969e3315521f5265ff28efe8cdca31729ce99 GIT binary patch literal 920 zcmaJ=ziSgw9DkSARMdJ`=%C=xL8KrVbSk(+>Vr2lP^1ADd4%+81)G-hN{dj?o=UE_ zxY(h8fq#ON7!{Mvj1C#H2p6!BF?4ABd~)w$GUx|B@B8b0Kld5l{Wv>4pAo{D5;(wV z@FSB25V#I5vHk~E&FrU%wuYu4sY_@b`uky)XZ4zVwDz~Q*{MmWM=y&I$gwvqUNTr{ zUESW=sZ>L~TibhDTi1H!ft@k-O|f8N3nKKggu_@J$(k|z`I~wpsBHOJN9##{o>?lI zh1BTT{mVjZ+MMw&cnut_xtBy9B=}MGi||1|J2(~*u`gD^ad4NMFgkwWKY3Zjzf|ku5bPySO&!9cPU;8V~{#3~u9k zf!1Q#x${{irPTd27oCZ^Y`U-K(NAP2ZbXe?Tt)=Kufz literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_strlcpy.o b/objs/Libft/ft_strlcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..34b4c361731d198fab87bc6c50a234d1009fc4de GIT binary patch literal 872 zcmaJY5S@z}#jiWTLczkq!bVUl!A8-8Efho)Y-Evmet&F&O!&?&b-;#H*r z1UdkJcD<3}02?>uyn#9RZbq>5!s9$m0a4?#j9-IB3;u~`h5IftAN|5je+hTn6YgwY zWYeDi9l|x=L?)dl{kR1hA`9x8#lk*Ffkg*$B0K5nw{4jcotm%u5s$|wH2pG%#F_be zt?9>gTtCcPSrZ-Z#Ni#!E8I!%%s>vEBe}0r&gDg21%`h4!UYE?d#cU=S`?Yb{`m(8 zMeII^{p*aRsa+9mZ<@4}p&8Bf4d literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_strlen.o b/objs/Libft/ft_strlen.o new file mode 100644 index 0000000000000000000000000000000000000000..53f5ea6eb084e1eff7408439819b3391a14995fb GIT binary patch literal 732 zcma)4&r1Sf5S=wsDQ$&16m;;=U(m@zhoTm~LqUXrmzWh@Gf0hXBMAbbA0S>jcI?mS zD0J}HHRv3yhrpwB$lkc$svUwJyqWjL`R1El_x0=ZJ5FTG5CRwlpG9OqU(#SD(c_ESo?yt^~~ zyRA(|=WHa{tH?M{``|R>Y{=>QfApbheW=!TUv({C`qj;KpUk_I$gVYzQcrg5iBfH= zuiATlb0b0K?P5^z)vR2uT9)5?9}b6T@?i$ZgQFKYCa^~_e5HYrxTK|VbwEZVZKRX& z!~^E7p)SvBW1_&;eYCZZzK?9DVxdPydrVd^C1@m(VI$*jgUcSDd+w=IBR*!wb?YuZ IjgtJ0KPmZHyZ`_I literal 0 HcmV?d00001 diff --git a/objs/Libft/ft_strncat.o b/objs/Libft/ft_strncat.o new file mode 100644 index 0000000000000000000000000000000000000000..74ecfc53b1a4c436a0945c8ad9cf5654a27a8566 GIT binary patch literal 1140 zcmah|&ubGw6rN3M8flOKP6pUyC*O)(tM zX=o~eV-X6u2HmH^KcuQ^ON4<$F*q41@sUXB7g zOC}O2^_pXs&5}w;d7dxg39#t7OFu9sYTQW%eAZ62s5{a%UzE*FDc2rNif}S&u0@r+ z2R@=a#Gy*(D5W&E<(6ICF+#w_`SJ?1s`v_uPlarjvF*qwdk1%$sZq#V!^1v#FNbX@1o_w=?)Q9*-xtx4BO&E$%P#Ui#oxi0=dBD?ETx zt}pcO0f`@w_=Dqs1neFk;g*qTe#t-k{JdB@Ta9{W!CL5!NV3Y&UOr`7J)>pjW>Rm_ zMYCUremDg;BzmXp!IjMG#KU>oA<0K5+H*Bn>?>!&V%H0W(B_t5vGN=Y^(7Zz)3GUT zhj}UovWhcSW;ZUx^uAC};Q0hXz43k~tF~3bdzOZ6TedXnWrxWvN8(>->cxp)F-)Xw V!(g(cT6Jp^5nAY5Z#M05x?#ViwG7L7K)Wtu~T$m3xgsCY-Evqs70cj7ZgEIOeB{yHvR`o zu@FnqLa;DrWl9?%DFjQEV0@F?OJX57@NV9`otd3Iru6mp9b`=FVE6!j;F`!V02>6t z6#rq~Sy|83H7e03u0|Tj1p|niO#D+|oYpH~*N%?!e50yHtyrcT5ko7RO;c@bl zKnQ5urFXLcKt`969>N^N!|+4!sAr2nyHTx&cKts*D(qKbAG`}YQxSIbMHD$WFT*3| z&cuxE+j{sBS%fgm)gN?SeHoFvCwgai~6a)=(9elI&4(}D*-c>CU)@4au{EHnFmejJQ2 zrk!B;z&tSD5IzAIa1K@?;vc9fZi0FMH-{!8BRzr;wwbq`*vV&&`?G&@H%boZQEvx> zd5QF}RdOzbNUYdaD!r%{ggC0_>I^G>lMXllHEw?edYR>HJYkDm`e7 z0&Pm`ArW+f?pb%FY zf}-HfKf!|@rGf}5dJ%7e7jK0wDE1hnR=?Tz)@&0Z4$PbPz4>P5?VAbt^z-{#KT#w~ zSfDXzya!7H3K@Yeu%n9{;6TVej)4RiIf<3?u?XQ<6-VwRo=8tlv~aM?syv*JV<&rw zhS(XSJ8S|G!klwTd3#zN2(dn2kY|_jKL{?OuqqRz!~M*{OmWI|MA@Ft+ZiFwjs10E zv!DV}>hL-8`JdiLq+IJ#3Ss3$wlpPunt50R%jck z56Z%6_*}<55JRtFZ^80@92yqpvTg_;{^$OpQC~7@-*ls1T`?Na`$x_r*CM~cGUuo@ zNplCWd7ob8OL|ePipkAfL?b(yd>!u#7R8KqWpW|!S&R7<=@+@F9o6~Jb6d<8%*3;F zGWkm0r55usGkIz|a&owLu*ID1TAjl^UhocBsgYhaYH#(+Z?gNf(Yt&?+GvV`_pDc& zM!mdJt2QH=yBkh^h>r58M&4&$pagP{=JGGoXr$4NR00}@>PDlY%iwA=s=3_gR=#R8 zrn#*yRGYn;yG1c%qGBQl?$g}E>s&#NqRQXi?PFjEm+Sw>m)vF^kBLuieOGeybdDHB%3GR4(${<@R5NlXi?R4SD4N07065)U8;Vk(81 Ov&?G&S7gh!N%RM4%O({;0LTGCCs-Pj-ml~{3E zg&sWU&40j)7Y~AhEqe5tlk_5_V4=t0q58eqH))#MgAd+*^S$41cG>U0clY~*NSqLO zK)a#IE<7?&$XV!favUQCiiM0a8jhNRlRL z8{eWHmE6XBT>4N+rQCv=^X(-!PUxJk&h<999xdBG;z=P2#zlA)Ite5v zqw1cF%8drqmeB;_vgw^mnjo+z-4-Lm+&0Hmw`KS>KG(J~Gn;d%5!^iY8#DdlfH2qi zOj~@Sl}(=p^}#F+o@J2wyu9|Y6;iA2iPY09nIlXeVfrYC4XE=sEK@(2Br4a#FYSeg zX)A5m(RFF%Xo6b8LoK()W;RnJ@x114YSkth(kqa<_d0!rJEM94%BR~w|7=pvK{plk z%P`SmVPa`@t@}W#KSuxQAsD#gMG;jR&>)@5*rbsZ1bdozpx&1Zo_aG3kMz}(yyz3deH zM(*LzM#ZBJPQG^ktqwlk!B=A5g&nk9i8(WXnhR8MHSpXueYEp=<$4eBODTDQagvb@ z%YJDde;eice#uvEWg!m2KhksT*170<$n{-UD93m0z|}RqQXYnR&UG|HcgHRkOAbc) E3+Im%00000 literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_atolong.o b/objs/builtin/ft_atolong.o new file mode 100644 index 0000000000000000000000000000000000000000..7aec77cc9b11b0bceece3b985b4f8f73b93df267 GIT binary patch literal 1748 zcma)7Ur5tY6h1T4Rob0YWDqG4RK(26pdiSoA6zIwBB6)my5`iSZZfx$KoEW|TI(Ot zLytZB)}JTyK{A8&5S4Fx@L?~3gUUfKE3EaM-@U(_mC|ANp8K8i-S3`z^ltCJfBsob z6cxWWfOl?YCur6M3(XxM0q1UX( zwR~7lgb#x;cCINEj1CS3f^n6ITnk6Kl{$CE&9Q%JbjD2Z5yZHbBE(o1W*8bM73xzx zvA|%+#VhM;H5ZxGX{v{gdp8bkBI+|K#~sF8kKwdMY@{j-Ha?W&^;Jap&Xs!HS)Ms5cjy@f5eiFym8uEv=`8@H`4xAE$-GJ zma&$&<~+Y$tT9vCTI!rN{W1D2M;!aA^$&q0Cs)Lh`w=VCpIXk&t$h%mSZ02%#yq34 zFg5EqJ<~yhmKg;T=~^YfiQiADWa=Y2 zwb^&0;&d&)X*TBJ&q5PFG|$xePaZ#<)}NZ!g|%b<(0ho)h~b&K|I(WR2UqhyfJeFh zE5@ILuLM2_5A%0nLcXfi_(tR5oOl!bW)R#yW9eYGuXP5yeLM*)m}G1>d>N#(8dsnO zZ7SFo3ihk$)ljTwAbO1qPDHxhKu=tShr7eQ;W(+G!0@oTJP?TVtKo2OgcOp2cyu5d T=_S>xLa|shhF^qk=iB=il9PN) literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_cd.o b/objs/builtin/ft_cd.o new file mode 100644 index 0000000000000000000000000000000000000000..8f06b119d36bd66d7d7404cfe2d981e757e4cef4 GIT binary patch literal 2756 zcmb7GU1(fI6rRNVY?G$D{uEmfas$>DE*JL2NA)S3JM}V_!6+%w82y(A~f|W4;h zIp;fP&di*>cW?gv$5tz24filSFq$wzjd&OskfRuv$Z;2Ws#!TsPz)r{k(1G&d?Z4+ z_Oz?!NFG2vs{r&pG&3VLJag*otS*B>$^>Rl;?u#+O;#3pSOP+#9! zeK2L6Z>B}%(<*CcEE&uRpTIbRA+I9b##%5)Xi>5+ppN^1{8{C^O|FgZ# zy}1dPo)#J;mxGx)q z`v-8S8~o{8UhyiN;bIu;`f|=M+@O;hS(I7B?TK04F9!MrN0zH_Z+MmaIKJ90sNN#F z!i&P6TSeC##kRi+>dRNW=xv$x@daFyfolqP_A_-qsvlK;v{CK8uxhE}FL_w`RqoxS z=G0pzS5Fx(dA4w@Xa}7ycCmB5K0^K63irON32pvNWnHdbgFlSs&O`q}(e`xHPQ4NA zuM6>de^<64=uq!R>@6~~_(m+7Wc>7tQAV>~!;1GBq#EgrYh-P=P1}!UdySVeMmA?9 zjYMj~HZqP8PdT>bW}LU%*y(}(!B_ejjX-`^6Y9TRQqkHo%CpDct>0>|Dc&CctoDC$ z7k?kUBq5I|*c1PNva^PFhFHUNq#<&!H8cy>!>~VuaS5G9qU&eu*+Y@{8lUgL>rx8w zXqSVVil_InFK+_8kW1Mn_up5E8KysO}y*i!lQ{`T;Ouz&o@%@=?;s>8>D z_&J#m0`ZPE+qIoOCScBQ;=b4RIjw&I#P82M55z0qbbz$Zxc1Zc6YmOh z3ulS5I(Y|3ykCG6_bm{gR`YWptw(20cpgaWxB5cRWIKrMzxlE+80&f$` z&SohBWNAvoQWH5F^Mot#cPpNo3Z`jm5_17-%o<0;xF9YQcKR)mwPTKzq;*nhH&Lx1 xnZchS{3o*U9Mg+inK)^-Yn_YlPB)f|IWS@2+*CZ~+A_1HECIwOCNdUd{{c|LKGgsK literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_cnt_args.o b/objs/builtin/ft_cnt_args.o new file mode 100644 index 0000000000000000000000000000000000000000..956932d211c8688930bc174015b3f4ade6de4fee GIT binary patch literal 700 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SO68j0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAajHfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw! z%29yQ5=;=cQ~+tHQ-Lf5h>uUrh)*j@%uR)e#mA$%F9E950ZLmy&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW1~a0I?SU2^k;_)XxwA#K-`o7lx6=iD8F&bUyXyto?D^ z^$SS3N4M(_k7f%7{uWsvuiN!Y^8v_}MO|fENrVMq*4SxS zknjie*h3FNAiX531^ZaXgX3p5I8g$rm&;9QC&YADr+1<~(Klj>% zP>u;K@CaOO!4iYR&cX|n_=m-)5O$SnU?E0NK~DY1q|90i*(dY%}<11)tDW#Q?$;{Y{6%-uQx5Dfd?)RSiF%%s_q{2PLoA5Jm z|5a%1q7_a?ZRq?Jbl@YZSZ*VtUJS#@h(k`bq?I3y-Tzy{aK0P%kEr3~YGvJ{!m?ha zV7R%OQJnXTVxqc32d?fp8}>%s8S?C!(DGeANv|1hKg#u5Q3AvhI zZMZ%&W-mk)ZTWmy3kYT>!Q$PQnB=W!qz8@Pps}5+3T>H*Qw>D>Q}pr2q}G#149-evE`DY;BPh)^RYLdsC=UukW1vyj+& zp>Ms0YI+fsMJ#1~n=ZYPZhT^E$?v(vkTj9dgphOiE6pZ3%IV3pCFF#(GMU*7{uswC@dpn`F?0X` literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_env.o b/objs/builtin/ft_env.o new file mode 100644 index 0000000000000000000000000000000000000000..49dd54d285d85e45dbc6e0cabc26ede30343621f GIT binary patch literal 1088 zcma)5O^eh(5bcc1?C7eKgMxxW3ko8P2T#j@u!~0epdzxudXQpBG9Th3p(pE(!hkR$ zh9LM;7W@ec9`)#P4=aqIut$+aeU)@;WKc%f`dk_UgH?P}T#vMbX!A}t2J4>*bE0~ic z3j5U6oncruEYA1Q=&Tw1ZuATlD?;>b%yo_xcjR#`;Nr=arZ^- z+A(`~+o(Z#D+1yhwC)?c1w>8jM#)cJ0^*aj&H|T!0Pd^vKuunZ9R^mYIJdxg-fCVg z@OH^-IHNFrFV%WM-IQ>1f)`5g=cL7!AEngMy%C5GLkh_6cQhrb7G+UaP>({bV~rmq Q2#cPF@gO3981O;A0dR?w9RL6T literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_exit.o b/objs/builtin/ft_exit.o new file mode 100644 index 0000000000000000000000000000000000000000..07e4482a3690f2e166f236d901a8f3f01206c580 GIT binary patch literal 2592 zcmb7GO>7%Q6ds2rH6_g&k%%IJYE*;@)uJ>%BoRp!L>KJ=qX;EZIaE{2*(8SeN6wlW zkR=z}kkt~%fdeX+A|%v9IdH2e3V{|G5TZQ*;?RR70sKa_k{TTczVDje&SNI2kqKBjMb( zGPdkXecU)TzNLG;A|(PLJ{mg)k{}uOu^fRXoJZ#DR5U)V44iN0^LQRs{!dh%-guR+ zry{>dB9;tCY@Uvvjm9TAf9~X_6P=4HuM5g}1AJr}^E0NXw^4F#&G4yIIA+NK&H0&X zVakdx*(Ujv%I;xo#_JRIpdCUJTcI6bZD=GkDcLi~Lj%s-&Ddoi#;KI@vYTHPA+bXnxbp1S-U1I!48GvlXE@#!AU3(|l&hsFORNUGZr} zI!)%nNFP@2__By}vvtR~DH+`CnwwrR-HD1DDtjhLXy&hVpT0Wvgm$<xaGQY;Oq7Dt7OYj_Dp8paV%zvXM>>~P- z*h@Ei(=mQgcB0FGF1;cQj!{NQOe?%WRARD>e{+JuY_rwOuXSo~O^_M&i+M#fDs{d) z_tgd*#c!P-H1n@>zq5^vjmQ2p-4Pg>qwO8yTz8BgReoYyM9IQXy^p36E4nIIROYP~ zQm&tqt(S}%&4LQ*+LAy2x2_cejruXIh!e$Jqn2OxIYzDOMVpaOEjR4P3YaRMEZS11 zf2kXWp`W#PX(@@=bL4LiY45bdSTfdeXH^Q=V*VIq!$YUWHP#zenB^3-g#bvG=A&6c!yN&-{$VRM)@gYRa+>6NpABg^u#ttLS@q( zmZyczQsKmI9=Y8|$h9zX2Czggi|x5mp;ZxrZQA1QliWx_ta!Paz`9`Df~T)qnW%k$ z=|ep|y}biH-Mvo^_V*18^bd9qGAorzq(JBiWe%Y^w#lN>PDsxV{|#mNNXG5(=fso2 zSpOdWW##{R4?jJJB)->PV7^Si7iiz_U&Jhr!1f^8`*%<+MCH%e(;a~~Tb?&lHI5#_L;uJ)RnM+*?;-Ajic@v%8uvNkE~_|I-;TH#_8Ci{hkyqe8+jJk z3Vm4GyN&_zZr1MwqHO&Zg8jfxfv8dc5J=Fu}?{~hE`<8A?I+^;|y_Y)AjT~rSqP5p|}UkBpTtE)4mbLcdlKG|YE z756w0F9`i1AigVl4u~n+&L|vJ7*q%l{TtVI=W1w zn-a>mLEZe`dHy3!e)?}{jHhp6qkgeTf4)iYYtqk4y@g&$By(tue2h=ooSt9NiNtLl zPEF4-9-ZUybd2L)29A_v@kt(;38#2c7;JLHBe5i-aGrR@N^$#aLU6z{YsHx$(|1yTuNHnB=0+ENn^)rr6LP%CoFp|7aaaS+5)= zMAWcWlg(oAA-?v|9_s&~?oD%i*}lNpe)>!{mbCd z2V2A@aZSvp5hx3{V&%EaRnElVJ!H)E|1-Vk1EycuGyPKC3=C*FRp%PMv159bI%$hs z+NVb`$ul!4(>LmYvE#3M>xcgEj@QKWs~lgd)Xk;RRydI> zn1KSEQtd?w%Hc~5?$KB~JUomy3XB8O`*YyiKPI*QMNXxVzh7x?8v6`Em;250Fff{? zS55w`3vi@Xv z_o=bF3f8z>)R<_?U@Bb1PoNQ+4R!P@COcpziBsP;{Y?;S9m_T!i@(uMtT7QDMMS*S zL7qfwty=#rbsin}sZtMXc}?*BGNc;bgKcwZZ0mQvJ<)}bdFp0>#+c-E#wm1ME3O@gus~m-?~mi?etRLg74YH_3(`{JXO8p`%9u568EPgTi0@jv<{RKVn zPU{P>2)KpcScTHW xtc^}t_)!*ftWq%=&f57Fi+iQ)ED6h=pRq7iqDjZLNlXdbaS9IpW-S|QcmqSSx#Iu; literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_export_check.o b/objs/builtin/ft_export_check.o new file mode 100644 index 0000000000000000000000000000000000000000..745126b760c852d491e36e8d46d388a4a85fc7ac GIT binary patch literal 2440 zcmbVOZ)h837=Kf1m(6Y$WyARgc8a5e68|Bhb%CfmxDOUaw}OcJ?v`AdbLl0!TxJo1 zg-d3;qf$^o@Jm1XQ9lU#Aa$}~z6k0!@l$ClBoHAVyLGnyp1bF=q}gQpz;n<0{QJGX z_s?DO%dNk5_6ZStK;Qu#hQ^2RP@#~=pbM0^hm;-+6DOz#68XRsq=ZKzrEAW);W+fq zYHy#t<42<irTR2PrTt=E+1NWv1*pmOaA(Df{sv9Lf3bm}k__bR!r1GR4`F zk#S|k{?M|sQoePno5Y~QyjD1PbVP_C6c>V_`yiz>^D^fcvu4<^m)|mP%o^iejquoi zNQgWS1M?!DN1?${CAyFz@lHAhV}~aB&BotuQIJK{;7LyRbQ-j z^u}XmG_$}&s;hOGGcJ$12Q(1lK zVQ)t)Xd6oHQSR3>lZYRVd$-2Z$`?PS7b+W9w2iN0N}bl(I)sO>HN9)GMXlNTc6WD| zNc1!*^>Ie>C!5}nF+KB}vO1dZZl?O_{6T2YXf0hMI>ky{SV6L+(r1&0_>nm-xG1cQ9A1fGi!Tm5tW5Y9!wxHCQX<^J(g z{|7(4P~BEmwQX-p_P5gu%U3NRblxcE1wAHIbFNf$+zEB;c=>pFY(lk*u4<^4jDnR_ zt*mLgR?ae=1B2E7QcDYu>s!$_hU^s{^V8k#9_aJ#m6G~3EMeX zyo{-fuy~J>AHbsZ$UE$xVgLEiCdXj$+mL*kzC7=90&nA+oiw#TQpwYR<=`a{F8Bp0B)d0JnuFJvZfW-dt6 zz9eK0zw)K5;hN;i@D&oW

    M{gDp+RDLRN+Zq!sNRLaq~VrNa~yx{~WR@o@nmDwm~ kUaS}e0@;#3r50IdXog#=x2)pc-M#hG;K#2A6qBsw0{kH9qr$U`> zONe-d(PGwig*W#0$XHH@=bmXPF^TI!&T8Rd#G_Pa;*9AQtP3fGGb{#6*-=M1bmn(X z$E)gii#ncW*)GP0qdDPY82d2fRv0_kb_^m~l;oF?M}qJ!#+HHbXD?z9kqr&XmvSZD z|D_BMe&zmehj}ouI&U?|orl&c5Bn25u$I-llBkiwpN(;Q^)fPIl7~T+`x8}WobD#S z=~ReRq^eH#&@D4#@^PAm6sxjN`Gx5!w=)eMbS)`Gf1DNzy@vmNEbtojxn{G;!-;CN zObtv;`$iN0>fsYtW;V%x-nv1n`x7^qac1^N^IXh0P3@^K;Q=MJ8l_?htYNK&>4yJZ zERaubFLA$b5lNqgku2U$H+a~$AT2Wue-179k%vd5fJ-%*HT=v4~!O7mF zAFVR{z6Dfvaa|sL3o^sr9|CKIhZ(ha*msjpdo@0t(K|4mx`?iwS9|MEte~SQ3Zpjv zJ{ghhQ=hfX>i0(CFjIw!-ZnZy{hmlQojTbTuia#|aA-Af=mM)ze}YPtWez@K^i0B^ zF{7tHsuzb(`p`{Huu*SK4c=?I-s44<2M{LHfqL zRizAcYpcfPJ#qh5%9z{@VQ5ul($)HP1aEO_Ytf3>5)ZD)#n5w{QZ(~^xb^;p`jK7K z^DvFYV)eF)BGqvGqBAD-Thv^#JRI3KEV>UBfKNcvU*Hf24{YIc{>Y|t-i$uG)ogMOA?RG{MuHt3W3e)#4N`aMd{Vkci_ zu}UJA=-v^ZL6nCer+eh+ZQA-~Q|Hgvle-h|Z+ZIe=z1VK{5{yBw$pWNYL|!IrN31? zUC*X=AH(j{Kgv$mwW;0L6i?gf`Zn18jQa5sH7{s9qwyUew#e)Tq89Tu`bhYx#*Z{k z0de@ucY*lr9oPIDnm?}j7c~E<=IK7hZ|{Q&&8i~GcU2}tW-Kn+O2{1OO} z`8g0|7V*HbKpqUG#l(=#+Aics<_bHT&lhae_#eXEZFm3x literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_join_cmd.o b/objs/builtin/ft_join_cmd.o new file mode 100644 index 0000000000000000000000000000000000000000..d1dd24350d980462431459c5d14b02bea7b2198c GIT binary patch literal 2320 zcmb7FPiP}m7=LMNcUE^hQM&jCp+N-&$x;Om!Y*W82cBq9WQ%(#Z_~-N$!@Y*MPOuaz3<=17ZTsn+9I|CeUC z`v-Tr3GUYW+^hH71mGGy&*(YpF>dzPkeEp=ca1i8>TRYsPe8|4&h}7cXhJ0Ss_g?m zk9_YWW^d1*)~A*Tl<8BLyvi4+d@Z9#dSLdMzI2|po&lUx!l_Ln%aa2d?$tDjK5F#t zmxm4a(ujBqci7>dQ^%nXmvPO$Xjg*ZtM`Ip$Wo+}!2v*x!St zb@uioc7Q>p9z3D&d=Ad0Wdwi?8#B|r#u*JKb#6eTuT5&sZbDx=bx3(!Z_FmqV=wUUdh`myI26ZmKcTH9~6h2~6uAu-e`< z4R9L6mV?~sd`iL2o$1-zbD66-N;yE8a4%ou0W~Wrfyx9Ovinla*z=*~kUg%xK6dDL z$lg%)A0A?#RQR#$@3UAf9*dtirmX_y1?Zn8+dt?Elu>@{+(i7dk@F|<*^)$lcx@S1 zeyR_4lwSdUtIALHbEMxF@VoJEm{;|6q~9(0`N~iAcgSxPA6I-6lfPjOcn_0bf#a9_ z2|c2Ra*+SK;7}#s06z(SHq@Vb5gec3oS!j|THIv0zmM{;Gv(SC}Z3iwpQu6jr%hEDNiahi+clZ8M|x z)j7C_adU-?eMRJL0$?I*eVET$;XVw?R!dQQ!Lk`VOVx@fSebdK%a#QcmC7t;A(=VL Xydo?+E2AzKfov{@f|)54iYEIHkRkxX literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_pwd.o b/objs/builtin/ft_pwd.o new file mode 100644 index 0000000000000000000000000000000000000000..b53027cc31eb888e1006a44bd3ba9ef4eb551c26 GIT binary patch literal 1116 zcma)4O=}ZT6ulE`8f!IKR8deE`~Wvu=*lh%79Ds<7a|q9kw-e2d_bEClL-xlpe0%i zL2%hc7y1uei7QbQT>1~B8=*plSq?7LbLZV>(}3WGJLjJJao*$3`||V0uW2IZ7~un- zf){f5xNz8c_%km2!(6Fd;~ALc&?I)&W79egda;QOU-nj(54nxrNWgkLt8lRy&P~x{ z25VaToj7W?>XOjG0gie zVQEW1%+o#ixbZA|emwb~@dGvdrUnPD`s}4V0!;V^sZl?9$D;dLcIc&Q&`+uObe5Z* zFKqrTjryq?braJ!K+BUW+%oE>Xj?(}S~So&^bVx&ll$-^&PWY?``g$fHSZse}k8vZK2-Oo5vg~L{RWpJT!i9W_FE{f)Cz)?|bi?H*a@#KK}Y~I3q;in7{)* z1>feN0*9T4&oMv39+}z~gBeFp!Onfzh+^4^b*%Z4{b1=2&!TrG;C?*I92#&RkS;@J zL|)izxn4}|;OSc66Wv+JYK+^4)C~5EdX^UYA!IY436X5jO5`?W#{Zu0K&M5+;3w11 zP;pA+C6&5{XBn_u`2vXb;vRh5Sj(>7f4uM?aotJ2I=$}| zC)ql1lJ-w0wc)i{C+%26UhgFK&`Gz3iX`^_o;~1MQ+sgB-Y>nr#F7+iQ^>rVt2eN25{Rfwj7CZ@03%(>MEDYX8(mpIX^T_Ov9|ri&PEzU=gNt>qn_ zDz}$9GJjQ`&VPdIN7T<5Y2o>OQRr9&>-5ZQA6+gZe*r!`#MCg;Ux@j$)~n*}Gt*`r z>lWZOEgPAA{?WaK21i(Z1Dpc3f!LP3Q9Nk&l^;r{xZi|I+Y7LeEU F#c#Pkxl{lE literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_update_env_cd.o b/objs/builtin/ft_update_env_cd.o new file mode 100644 index 0000000000000000000000000000000000000000..7a3fbd0099b0555a19e3e36d4f9b490f9a80c11c GIT binary patch literal 1284 zcma)5&ubGw6rRMIu3Ak%D-k>t6zpXoC>|>oTNpv1NCSe%uF(VF&AM4g?K9p)$i@h#_fXOgE!y%`OVv%nNL5z@6R$;IK;3(XP`zA z%K{W~20Eg|KcuB|i_`;2eQ+{T;v*5lmwjK^%3oi-z5drvtzX(8KI+}ZU~?3kVNVEB z5yI~IUfXTzfDi}yQXZOt3c1UCZ`G;67-(ju1Cirb!rv{>}v*tbvax zCs=gq0HqMJB^sW!Ayq?uzD3=1Rr9TBKJBt&_?4+mcoABKCT-=TtOO;YO)0*I{v*H< ze%d1-`q>&ZE7VJBWP|@{*LnDb55LuTIN0N1FyUc6=EK2+m7mg9Fk@DJMkmF$mOcVv zBIXgQqhRuywpEdEb&TRMice<>cvO#*{MS(uMN!nRrW_M(+#K_8xymDzK&Q5<9DT^_#2*gGlXE~eTE-{g1)=|%%J3?II$-Fb2MscFKyrU&(P~#U!k&~&G&O_Wao~X==sK1!lS&&u><`6q%W(hz literal 0 HcmV?d00001 diff --git a/objs/builtin/ft_update_env_export.o b/objs/builtin/ft_update_env_export.o new file mode 100644 index 0000000000000000000000000000000000000000..873dbebb6f76acbd70e0088001fdb00bef1dc7f1 GIT binary patch literal 2644 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 literal 0 HcmV?d00001 diff --git a/objs/execute/execve_utils.o b/objs/execute/execve_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..5dfdf935d2f70be6a96e8d5a89a0b20217ce168c GIT binary patch literal 1832 zcmb7EO=uHA6rR-BrrLHRR8UcxgQ6Z%QbDL-A=)mipioN1dMIPMyJ;5FBy190g@CY) zx-LSGp1p||@ur|4EqL_mp+YV~3lVw{38glEZ+EsPX^Z&a&71H2eDh{zXTNOz*zRF0 zbbw)ihM|!z3^6F=IP@t6_K_qNLe5bQB*5Tgq{K(Uc}cfQ{@lmY^33#K9Lz2W9^#|g z%t6K^3WnJuGJ$Ze7E7j)n->nw+xY^XK@m>{jR-833Fy$DnqMfS)Dkb}?i)Fc^Xn5k zK};q^!5!hWz(-rJp+9j1ZIqnr8J;#%3%Xy>+20$Hy(IX)3O)hZVQf8^lf3{v2KBB& zI>fr6Bt%302Kpe+i*Ck<6ZLEo+A7p1Dc#He%1y=juGsa2;#4*iSB55I&Wu9(s3hP^TSqTjn;AGx*x8d_rs{RP+i{e!irnjaO72Q{#o9l9j>P^*p)gMX%qf} zEhTn?N!30?g8UK8-AcWMvmYMjgowP2nKq9qin{WaVy`4-m!%;l_7@%bg&j7qAT*h9 zt*BRQH=0uQ1WG{HP@Z2rizeUq0>7hf#V*=Q6!!)wt|i(~eZo8d^j$-osFGr(dsIr@Vm!rZd4;z}9UH-VSUlh7+6$Ag;_F4NKL_tqv>PBUR4? z9@~lpEMvZpZaU#AVf$0aQNrtRGH>vY$ifGJYs@v9P2q@oj#+YeZC_1kv9yuZW13!6 zO`}lCo5T^wH-ADW)Fw57Uix-dd`Wm-?Gq2)edys73t7=nw67;ZHK&n(5}Npp4k2QF z#;y!RA9s!SPRuoyvgTM9!*Ni8aX)Ugt%lc&k9tp literal 0 HcmV?d00001 diff --git a/objs/execute/file.o b/objs/execute/file.o new file mode 100644 index 0000000000000000000000000000000000000000..296c62cdd1efaa938472be7cfd675f2e9c89b09b GIT binary patch literal 1124 zcma)5O=uHA6rPQ-4gPfZP@zK61wD8P#-0joAyOAcXhBK^FJ&m(ty!9G!kTDMB85d^ z844Z?UV8NCQM@QrNPE$%S3w~Kg&uMUQX0QEJFDA@;Da~c_kQQSo#fNcA4kKC8K)Qy zXde28hz*5YgiezE582YO&l*!3JsBzWB@v?GwHgUe>_z9^;vYL@2bxennx&2gr^%OR z8w9Bc;nvpc%Wgw7gGYX_BE;OSG)9>ADQo9$E}3Nu{Xj`HB!&=PMXZL)>t1RfpRc6% zt0ZAoK%aCsa-C%?4XKO?oMTW`W}aa~P!hV7{I5_<-)9U<&H+)+?m)9bxuk0UY~Vlm zT^@hq(RVv;_j%kr;L?GXZD=8*i5)xLsNHAg<^meacE3ygZ|ub%xx7HMlcO!TY$fFPT(vEozK8gVet{TaJCVm;5zo*&Y6l!vw0wIpru`z=r8 zeL)Uticf%fpa9~hP~x3z<2%!C!s+9N08Q;D6! z3`%JKY(5iS7}i2j5B;D4qvhjl230>;W5TW09(aI?=dOuWze=23n%~#8Zf!;Vn|=Xq CU$J=r literal 0 HcmV?d00001 diff --git a/objs/execute/parent.o b/objs/execute/parent.o new file mode 100644 index 0000000000000000000000000000000000000000..38afe5fe0e8555cc90586e0a8c6ae3c0a1d11e54 GIT binary patch literal 1216 zcma)5--{Aa6u#q{>y|YJxft}rhmH2du!86ZOU5QlkkHC*>`UB4M;&lgbYvwEU1p7y zLFh61KYHDEE9kKwe?j{YB@`I=U_GpTXXcKn5Ona|?|k>1^Ub;Ao%g?g9L_Q(%`hx* zH{9#O5`x1{!*?k04|^_hi_`;iI5ZhK>5*}+t2Nz@ZN3^?U;WFS=+c-T_3mM?IZC=& zlfW^~Qx(0e6|!Q3^GQ8N$LdARLptD?iE&3e&?|0~k|~{63!7RY&H4Siqa=dsVy=+b zd<;F3^kPVnnvmpN&GAe*xuMz()AOy1rl`tSRj;it*jAwCjU+u|74vqG#`t;5VXXtgo2yfnwf^ zm@7f!wRGcy+EkU)ZUrbbtr5+5Z~vEf z>tKkjw%3gHjL!{Y(2%#UVZ)(J-o9wH#2^@r7&SMW7BLPQTl-BR(l_>`cC6ox4~IiX z!zH)oNu#s04A`Y}Sp#=3AaaUk)%2U8tCX@$ z+(+t~uv3CbPZCV3`6a(^*82=q3)nvc-#NsbFy}tAJ16{4UCYPmzb0EiEq>v7ESNj& zvoY`!IpSY!47>#5iY=7{MuB+A;d4M-nJ|EKJoL@V2ppp~Fh<$!DSp}JE@)VG*5-oQ zz2p6iZzeU}UU@2~<Tj4 Os=8W8=XoZLr~Cn|>bk}N literal 0 HcmV?d00001 diff --git a/objs/execute/path.o b/objs/execute/path.o new file mode 100644 index 0000000000000000000000000000000000000000..af253f23c2160a305a52e2081948f43de418e7d4 GIT binary patch literal 2516 zcmb7G|7%-S6u;@>mg&~yhiyg>8&Gt=yt#>kA|0gI2XC;-kX8yZuG#C$QeD%Kylz1$ zPSZ}~V_3u=75onz?6;w-P@(Y$9d17;=noxqkf4tK5Fu>c>gU{hZoV~Pc-VdCe$Kah z&bcSIyLtbgM|*?_?GpH4g|Q+7_$07E&tQE@iaz8#p%sV82V^i}3R)D8NJ`%;`g*VN zggrIU!e)1k5&=;>^35SgoCINUiI^cN-GZN=$)00@l%4TRoG9!6;5>~#r)wbcbLVDr zDc6_t*^4vTX(>;QHI>*@IInM5xQTcqIvNpzLwAIf(#yznJ~iuUhwl6`+?aKax4c`& zV(pPL-l7MUad*!LY)mMku=UMh^v|RGna< zdZX!DY9QKvZCZu8QF~s2g{qFcW;cLEO`9yNYboq-X2U7{m^ib#%=yN2zVn;Tl@s^S ztLxM+&PPNSM^s#;y-ixW(U$hPmi8)XI}_Xo?V7zs!WvCF_V|jx-a-noGpp$%(V<0> zi0DvKwD)h#-XO7RW2qQNvARChRchF=pUS_qPFwj9#wx2?(=ABG9d~@gDUDQ6hBVQP zI2fs@=&JumO@AKS<{=e_+Z@;%r5{3Nd!zQ*_V%{JO>echZ+(q5yUvN?Mv8HLd@v4h z5;HRzS21XQRPl>X>+GS1h$_(IM3Y*(K%Z7HHgL!5T=`qwzN8Am6*E-MmE-@yq%(!! zB$_u_cgo>kY4DVCEU@dNsCTSv*K40s!D^1u<_`Pb->{igGnF5-rM%g8NpI^^wJ3PC zf{An?x=wYf6x7(i)M3>sFuDa zj6T+Uhd#-YTYdBi`hkId(`<*odNiTC)<=Ip%SGt@H$|uz3&r;Bi7X?^3y?pHReXS2 zL7cx3ql2-_1F!GL^QnmJ#%Q;t?YNGfcIRQ1VLPs;r`?yZOFY!^xUQad-@)#8w&VJC z*j>gGgZI~x;CMl-NpQ66;Gg(JfLFlrc3bpNk$eOnkaZ6|ApK2nOpNtCIN5y!j@QS! z2#y|Dd%-F0Hk`=+FL1(l82`+8mGRf$NWuC9oZ@G|DL(zM@Ss~XH;7|d;B?L{q1YVOI?`e zs$GA)3!m!3$u1mdJP-y~B)xooE-!QVKZq}+SDe8&?aM;$Jnd4h>lF$@p7VT}OZge; zWiRBkfuEnAZ*H^hY;*ta+)P%;0(&6F*@E&F(#?48d%Q1rsl1zEkj{G^4&hwfxoMAb F`ww{k_#OZN literal 0 HcmV?d00001 diff --git a/objs/execute/pipe.o b/objs/execute/pipe.o new file mode 100644 index 0000000000000000000000000000000000000000..1abb91aff5c77b85a443cbd6b1edfec4feee0c6c GIT binary patch literal 2016 zcmbVN&uddb5Z=Vt2CXKFg$P1}NDWA(){9WY)EZpDfR+||Dcky*Ho=&L{J>BM6kaP0 z53%4s(7!=1o(j@p^<>q%cu+_{A$TZJV&gaO&C9PE5eH_!otbZDXLnyVZ-0KJh?24wqOautg~?lTF7Gi|pvEXV*E*@g;l0Hn(e+Lw{QGL26FRs$Ak>EHSUt?Hi3C zCez&4EIXG`k6b16$Dy{8N=2e-AwBmXVkLC;_kxqwx!xzP$EG+cMAV)WjzE1-^C~OTC>Bt?fR~gVwmBTDRLQ zXF$^nHQdJ8W&&ESwcdu?JiPMtCc_AKEh&vDd_pIsmP3s_>qfsDOYUOmvsDIF1aGKg zKVC^6sQG0E{j!KpQ7=@4XN6lsC^&3LpZ?NOls;>7LF9xg*WvB!b+3bU4*oOHKn?qb@cKfG9rr$R zjvvFbW(x7>A>93C@wksa^5Wp-_bndxbATuD0O5%m8V92F{sAD~qoFkzm<~l5#~Aw= zpQ2|M#TiF|#CI`%#M%^p4kUk?@h1C&Ku~-9i~!TV4D=vipEI2a+4i{x*an!=j}hU9 z&~Lic4tLnsEZd3ROd)P7U#L_%xrqM>6-lR)X%)%GvO;O`WF`Vg<`P+zils1*#}fB> dYDRg!$az|F9;Ah=(&pmvq$bpSE=B(tzX7n=p5Xuh literal 0 HcmV?d00001 diff --git a/objs/init/init.o b/objs/init/init.o new file mode 100644 index 0000000000000000000000000000000000000000..160053959b63c18750f37b8f45c84816a5565964 GIT binary patch literal 1780 zcmb7FOKTHR6h5hasntZNSW)OKTofVV1F=YjR2vwug(6kll$&%id0;vTX<~y^C{7ha z5Cz@25#012=*kBzv^(ua+*t&nLWC}ZVB>dY&LnAU79KeFyuS0@b7wL)pML+^=^^s% zBP`HPXm1A=4GK99eawY6Qe`Y;NURrwlUSLLMX9`5%)7oDPlaz!HDb?uBYQC)_i9~4 zN4VHYi)=hm%9zXNQdU9|O6}(Jc+l?1H$GsK$hh?k_%gHEsF7C%Yd&Sglo}ta7vX%6 zxfUh41wN)+#s+f6U6e|hNfpmUXHB=Eb-s|G-wIz6B+VlpBuYxjG3T)kK%FuC2dEp$ z!Ze&;#~kRPVmHwOEc=ttX5l$m`MvzF+|)}ybh{GJOZTgKsj&T?2YDC5vc*(-c>-yl zUJh4vdzkzW`#AaJ$^u{lK&3pamkZl&Y_A5USK?>bU`M8*E- zD@{~%V?(z`K9hgRK!;0H3U4w-H&8B*tb4<3>ZQ>E6gJmF8q>3@+r@##WZ&x)JabpT z0Ts}<=5YLcz`NV4+VqNlaI8L`bAI>iT7zKkvoF>GEob!)hP?AO@eS4CZJy;>4{)yL z9TSgqe`z$}475AfkJ<5nXQFdSv^C_G>pDN9MwTcd!OJ#v_lHMxwM~6e80CBXhreI= zefMsVuNd$J`g(ew0d)%blh9Xx_;uH6G9S_C;lQJgYlrZ2c7$9#SV(XL3*#=qGVTN{^G9Go*&PzAiG^|U9Qy%?z_Of%a_qgA z%Mx>qF|7=L4~uBFZvngu}{co1U1B4`PWjT)FkLWKRf$Yb4ox`XTNGCR^52*PUY zx(FWf-Z8v%>sA;>+b!wTshgmJsywU5EcXb>L>=Z+{jp6%fg{rSi-_N@6qmrj_CR;e%!n z#)hmbDV=-ZBg%mYW0LCxCFdf`$L-XV@D_yYi^=S))9g=5?bRA%I_lQf65c1x@nXfaicoBYb*_|f^Ul`jN0(7 zQB{nZzH5{dOkL2(xiqwbgd1y>PgT89`6@GeX+hmRcx|>()wiS{OKXW!c6m=x=jrnq zwb@-aTHXUc9oF4VE~)DWM7uqED)V+TvlKsOk3`8`tsi?rM7M%O?oN?`@RG=2z=H~? zyEXm5D1VNRuB%sZbKHKRS9QICm{)OnxS@XRiI(@{$@faKGQFeD_nnG$B-PhnD7dKa zyj9c%d{?&Jjj5(L%4-Vxx&7|w=*TUsNr=95B1KlRO%G4@1yzl%Pnnik%!*vDKh8wS zbiAvBB*v~&>GE2+mYfDXKU?y!M8_FD(o|kPW=bih#5&uf%gE}7{|d&&9~23Z{EXe} zj=gHR--YYx3gw|q?8l*(C-*s(*9T4^+d;l(p*Wo@7%zqJTnN(*3+CrS znDJC5!?R}5$=frG7iTOdRbqTXINY=f(+=b5tVmDtv0TcU^j&n<7{GWQ6PX3GAf%ZS zC1JypvWuk09iA&X>6}ObIJOX6+6DaNopHu(k;>#uOCS|d?97F2=WYD9GXk~#1r;bF A_y7O^ literal 0 HcmV?d00001 diff --git a/objs/lexer/expand.o b/objs/lexer/expand.o new file mode 100644 index 0000000000000000000000000000000000000000..8255f19177a113c1d64ec1c9e1d4eeb62be60583 GIT binary patch literal 2080 zcmb7FPiP!f7=IIEy3sbXhYC?D-GhP$M`DZ8gN3bjknu@Nv4O-lM1)IoikLDN?t5zpQQ6Oj)w#nK#y!2g$~c=Rg| zf1BXZ`~w~ZTRfWTMU!0~+r2m!es4rM9>WsbTRfiN@l>xzGlUPAxp*CeeT|>)HO7(s|LKo5s@AhPn9sz~sv5 za4vi(isrRD#id~5GkfEPVJ_mFu+7)i!ZKO8(dN;e?`WIT^KQlYaMg(No2~8bZQ3wY zU6@{*eZ@Sw09VFR^%r;Q$Ns8L1-*fc9Ujhin7Ocsz#r@`#Um%WS{&!jWY@e!MV~Ym z#$br;Zn$DZc6alhni@T9Dl zN2?mrDSR90=Jn==w~NzjR8WeJ^e>FMHYqhLC_THWlp5`N+}D~P_pu+=uExh_nbFD{ z`GW^?R}u39^hdz!e`CcUJwIco#`0H&-a3S9+9&cm4Q~IV{B#}v>Q{r`%p>Ke>)GRX z9Tyxgg7pO?T5o* zg6yjdUd~{8%hLXI<0A(Xzal-R4dtMb=r0Dc=~wG+Vya0stTszEH<(M@nhohxOEo5>dr359$#W`+sVpuA ybzd@ZUi!kNpAY^)lCY4TSNHIfD+775Q7btZsCuMZMzU6;L{h0xpe)xN#vTJ)>B-FIDL6O!%$vzYk1tD8177>hTO#Gd>_imfr9l--<&OP^h z-19Ya=i26P+r5lw4>3G|5n!|jk6|F-8Q>fVLSSl-5F8*Ifa2kk5t2Uw({${LBi4dH zs!tug&#TonX+ZvHIU8l{NfJibED;5!X_cH}Hh)5HnC5PO%8v|-{Uzg6_G(}8@K-oF zld>GMoc}nRPn+gj6G}$3A>+EBHjy0FY_yNDhsEA5m!@fF%;{q4q%DN)@l~YJnh>)K z(w}76ql{(Ln&`{Gr-4B$_#xMVEX88JD!>>fw$(!Nn4a2QA7_YratPj>t#N0}xm)8%9opsVS&b@jD z#r%dc5te=u?#81qS@UD=ZOw~a)wf98qzS?rPv+}ehI@JR*rjPcgwDu#5}onj=;WGV z^-b`_NOauYIKu0nz~1nKiu(ueN9*e%Ais=I5w2IgZg^Lb-Li}eykB1SmfFKa*1;+M zpu40Q*7tnzkSqdH@y25mfv>q2HBU4AY9lZYO(}8g5+73e?5eMqyd_GE!%%JOF}~Oz zbN?RU^_xLLC|A@=Hr(nh#_L&ZHGypGB92Fdeg0%42=5QRxNpqe9GTNscx^~nQU*Ru zzeD&x3AZf4KfRKeE3eG!D_?26PUULu#RH|GRP;vki=CaF;0zq8@!CjNUx#8rzU~Hm zydX4G-_K%NJNq758PV(-e6;%AULTRWC5};TLGzJv)ZHBBwP!;_eY_qQA{AT{6Bi!b zY>1zic)cGYmBR-iYG_c~ai{{Djhu9UxAQ$X$?y-|E-~PH*osBkibk{TN5Hx zho8ZA)*;0A*bR7}n_T7f1k75a*P7Q?2HoxbbNVW;4MQH{gaSOj1TXXYYHRXd7y9xI zr4LQ;%AvQ0wrqG;x`s&Kk0pFRnn_Hm>Pfec$bNX=1@nSKQ+C6GWPcR2Lw;QDJSAv{ zd{*8H10nJSxK92-So}69O8CUrptS#?+<#Z@-+_?yegP%Dw4Fuw%{qmYSd>z^nM?{%{tJ8fX1o9Z literal 0 HcmV?d00001 diff --git a/objs/lexer/lexer.o b/objs/lexer/lexer.o new file mode 100644 index 0000000000000000000000000000000000000000..559ad547055a5aa1c42ffe3978f5353f5155c064 GIT binary patch literal 2592 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 IFBJ&DziyY9J^%m! literal 0 HcmV?d00001 diff --git a/objs/lexer/tokenizer.o b/objs/lexer/tokenizer.o new file mode 100644 index 0000000000000000000000000000000000000000..ac2298f4b9f46140b119f95c3f0b8829fae75443 GIT binary patch literal 2092 zcma)7&1(}u6ra@Cu3FtF73voj5%jWBJr${vVhame6lq0-GNzkN8yb_i+0arf1hV(x2t}*EH#3`V(?)#c&CC1x&6_uGcR#QH*yv&` zvWsB>N5NVLmOe1(2zZGcZK#(LKxZij6zITY#LCS$ckMZsA|!D>HgbC`&^F~4g+q9h z8}DSSo7_=WA`uYhR>5`B*(qgc#S3tdF6ehqh|<+IN@J+c%H7K+ESDFvv*~P-^J~LR zC;og@2_f-NaLrLujDO$Yx;UI6!k z#Z~BgStpo?HYNL8)u$4g{t`O!*$r@*s7_)nZ2Zsv<7VZX>3#1rD+>*?Qd~1D<2BPC zX_!7U{n46f?HSfrqS}zxc%YXL0Tj+PII9A`{!v;&;rdFC=B=O7%O`{jr~<9u^v97m zTB}iFeW^{}8NE!CDRTx)9|ig2D(8CB5tJtP8q^n$wQ*h6%RRy+$^aIXq2OR=_2wdW z+)W)6n^vl#PSg9)H?f*Jr=MJ;NS0a_{o2~AwW{d8tT`wx=-QxOzA8YQE%gt2?<1!5 zDJZ_IieIb7qx56}r{-(kyGTW=(``d17v_l7{|SY|hM?q8c7&p5N1S|ORh}n&|MGgh zfk^Wv&^8ni*GdCSFN-qH13>ntGD6cLBQPzMp_u7YuZyzDGRPmrSVd$n)x5>t(7>&e!#3oiJ6NPDb!*p7{ z>*N}8^ef9}Y1`%(4EOavC-|LFv~YL8?B+ zh7QCYbzIpWyx%Bp7`*gb#;H1YjLRUde?!KpdUuR_g19*qr|RAo_Xg+E7&Bf&;&=EN z7QC5^r%LxAF$)HV#Bq!}kf_=9NKd~1~#tTSHv*AESA@4#Wq%*E$pOO&5 zPE(*029k*$f=Lhh-LLfE{^Cl95aeQ&B}n~Qi+-y`r`T{jJ!xTmS?V3AT@c+}*q>_A z8Be)9Q*g8PEaPr&#?JCYGRZUPg3EZ`$xY!C!fnUNIozI0!zN=KJDGNDE6~&Pwj+@6 zO-vT^0Vp9&Caf983;0rIY<|C(b8W_xx#HxeCJ`;iPLOX(?PleY&`_L}$YgRB9p*1c CHJKFv literal 0 HcmV?d00001 diff --git a/objs/minishell.o b/objs/minishell.o new file mode 100644 index 0000000000000000000000000000000000000000..2ad3089360a5f14c6bf4304cc0589189396339f5 GIT binary patch literal 988 zcma)5&ubG=5S~O$qE(ZFhbSHbN-t$E;=x-RYT@AzDAGa?!my^V=?d9|&90_GpimT+ zAb9l8@aTWwNxb&hgF*@xdJH1QZ+2(XZ9s5f_WQnhGxLU*$+ur8f67FK3xp5+BK)(E z1{`)1{y_9U>`>!}nv-etBys60#vIx~nDSI_tZi+a>5TQ2NI#k7Q!(uWv7hA#GPk;& zp4$pJ@?U%YHuIB*`SXE_hT=N<$Sh-^jtX{W%yyS|0=Hw+81wo0K5FWUVo&?2qy?hg zj0@g_*Wt-s)hkqji^-)DKLxoA+{aMQfvBf-c;2K|ypj+8C*L&j4|DLd@n!9|RK&xH ziK9~!Z;s6<8k_gSqp`$C!%2c>qyaN}dSv2e{e1LbLe;mIkbnGrI-TZ{wd(jQ!qRVM z`a9}V&%$&=Y2nQ?Dhz6c+SPL91G4TSej9GkNG#g}YF@9sE3RHEY28a8_R4XActYn9 z5PRY@fp{n9J`nAkB_L{?J3tKX03=>&0IMLG3C&58y1agz>LTt)teR?7M7QR&-ak8E zo;zQh)5O+)#bKA-AaM7H+csp+??oX2JbXK@=M(q6HZljc6@@lE;TLW{p~%JJTJSd8 NAm|48XKW{1{1=_BgjfIo literal 0 HcmV?d00001 diff --git a/objs/parser/parser.o b/objs/parser/parser.o new file mode 100644 index 0000000000000000000000000000000000000000..b224477a316cfd94065949ffe4ce6de82e9dc68a GIT binary patch literal 1692 zcmb7EO=uHA6rQBDe`QR)X+qO9tXo=zKp~BE z8;ZSn)|2$=O+1vA7VNE8uL{xx6!s)VYTNJ4%r;G04?gnt&3o^gZ{EC_$@ZUL`|XT{ zS{OdiR_G@hSWw6nXq5ba$Q(_CeASr12PY%dX~wxLW?e!m;e0qgIvjX)yBJnu;-gwd z&oI_Sp;k6WCJ@e(Q0$ zlOpgN>+>~wS@UgaKJBuzjAeo`*}KroP}vrvi?u;Xh=$^8sDt`*r;V{3EatPPP!htB z(p;()OZ~Tu*xnDj^wa8H^VWNR+g@?ku8cs3I&5#mx4rEuQQDQkUEAxk>`ENDS!oK{|49^vGlIV$U=O_n7;rYcpq4^6lKQS^@YKm#rV!j z$S7mWtae=jidDNZ?dz2!nwb6C$Ag0dMX%7eo9N1&6j&-&PfktCshif=hH)dt^!`n` zb8i~;1U0o9<*TX&Y?*=u^D}i=GS*fb77U+)J!(;HsR7$!lxL0t=mG8jw6*9&)mr_{ z@USs|u{j3XOEN|$sLQQWAfwJe9)$eZrA>2eBiMg%_H@1|3O_pW5U42dCDuciOnFh= zQvfQRICoQnXe$lVqRrQY(E66p#xYcj$V#Zhy6mZ;d=~X6MnOc`z^g;3?T|%fPUNX? zB%xPBEHrC|%yaD>%Rt>i>>AYH!}WmZ^%?8yHeZMP&*S+?A>06T>#xEc)pH7t-s}5) zh12z%;7g)ja7XTI`yI95{zu-y;U|LSx?dK2gYsIQ!NLur1}XGjkEP}KxZl&1XWVs!;E7aB!eu5XWg}_f{L~??=QxhW3-IoQy_&67iGv(l~Jw<=Rhm?9( ANB{r; literal 0 HcmV?d00001 diff --git a/objs/parser/syntax.o b/objs/parser/syntax.o new file mode 100644 index 0000000000000000000000000000000000000000..a35d1a60f1eaa75027fd027041c4bab1e094ba0c GIT binary patch literal 2828 zcmb7GL1-IS5dD%BTd`BGAZLp-70y(CssrzRC>`J>U1$*G{?3;Nr zJ2U_9N`Jh6^IxA3ksg5yRtzg1#YM-09LKsxjxI8cV3J{qA;IyOli(V`edMMdP0cqY(q4Us)7voqYG)Gz#OSSq61>TQbGwQF5 z+H2jYFTOPz8LV{NsAqPJ2I2Xg9ZFJrC$yC#xY@|;5^nyE3)o;WySBI^wB?^$=0t5Y zqOA-%hDDX7dE4hk%2Ueyfd@%2niqU=vHiqR<|bC#rM=$fH+y?~Xoe=&$m|-mm-^(o zmc+^M&7(e#4xKLB+fjxMXWT6}${Im7$55-r(OnYo^rkb&2j`MFRL`S$o-@#TX16)! zvKwh+5AugXe44-0Qn2pn5iPk4rx03F)n8wHhdQuO4kho=R=$ASv#}W^AN9=XgzBhy z$1^c4sx1!(Z9UrZ$3a^t9lb|Qwa0D6pi^}$$mTs2RMp+&dbl6=e0uxAl?8|P2J`g~ zxuA-~Hnw{9?aT8}$T>Hp!!CXoV$-|XeM6=nc0Nz7Vm95U(MDBchXTjO2t9DiAJ7{J zxEu<2;t%Kx1f)X&v;Kg1AmBnM;5-7HliBU?4}sv{mri55k)11?*XO>sD%q-T+IGp- zEi-HD^OjjHo4Jaa*DIx2)6%CbbKz#uGEa&9hul2~dF&wMuMR>UJ6LMu4#)te4^h`P zUxF=b$`lfnUVB&}9rH|a7Z{p$eE0*3X9{16acN4s0|0*8$(~%V2emZc2AiC%2 zI%D_zoM60)hmah`BEEY*a4R&ru$+Z%gW_w2qZpGCsa|-&TH0p5Xya}74CP|k^ng{e e0GyA5yphe#f}YLOw?N1lHs?zD7Js2+=f(fJGhgWd literal 0 HcmV?d00001 diff --git a/objs/redirect/heredoc.o b/objs/redirect/heredoc.o new file mode 100644 index 0000000000000000000000000000000000000000..50eab57b90efaab73fc94c07cc37b379ad8c0e93 GIT binary patch literal 2572 zcmb7GU1(cX96xDedso*c8}k!k5%y5gxXce2x=K59$DJ-v#sYgOXW{0iy)<7-6B~rs z>FsovOJRbd6(9ECgR+iz& z^Z)+1=ic0#8+Y$_GUjS$xL~=lq&8f9SfHn{E|Fpv>V3pf^pX##&LbwHMe&F@&uaOs zvv>G2^4T*F`TFitDg;FF$afGy9w&jDT_C6v=jvECqbG-jfb-^f^*H;5{zp+~-CvYj zXHlP;N~9xdmgkb=dNRuSsbE8i&DWx?D?+%8c(zDlOoVO<$+8(zZoNi6$Tc)C~z77-;Sc`xdqUX?wJEdt@s2C;}J6)p0mTD!6S zFNGEJ55*`46thrSBWF`yGYV_WbMZAWiuEeVu2VI(RH`Ea_klB3Cyb2=&*bY6SaR7|nJ{Y1Gx-8o z#d30l%Es>#rld^u-9l+|jq;Y{O{%A~mo8XL2rPM1F%|*XzjQ#0=qV88r_bs?p;3g?XUV_UTaA}B0jEF|w-RZe_s7aHD zCRY=|?Zg2~GUi=q!wHC*rfM1V*8X zJ9Z2^+@Ko5ne!AmR55?DJ&ycMa(ipaRoi+J2g#DV7^J#Kv5wuCbK!xQ{R*wjIL(-H**;WO z2tjDpCw+=_UcxzWdbRA}66Gv??$?VhO_XNTdujGZM{ zr>{k^S-)o#QC+Tv<2+#228^OBh~XPc-KW%>$1k~i$a4Lj8Lnb88Y*|qk{2EgbJ+~v zfyN50p&;|dw3S;~zi$UC)PfkiY|am0^g+xXQM*IxGQvF(9F@ymmV9S=V4bY0rhGeS z7N@bj4GGeWhRa=MxLi7c4u=-l;cOy(ctp!+JepDifdG;V`pZG;u!-!`0LfKHx=nvY zNZ#2+@1ti3^qB+O{EI^W>n{2Oj-0vPJ+^rm8A#O6*g%i> z!?riOaT;tQyCBxNO~+33v7=oac5A{;^s}SgC$Q`P*NG?k+R^R@*nKbTM1R}tzC{1~ z81ol^cy0OHfga#p^oVzoe-()T4gU-f?`Z#3AWR-R@1Xwx5I_IV$b~n&zX&A#w?MqD z`rZ>b4)j8=0(*e;S1JKRLVp5?zfS*AAjtnbE@byC5VP!~S1O)t{{h`4J3L6YiqpYE&N~$|8WbCd)nmBxR%$mj7L;e8yjPMJfmkdj!zWE)e$`& z(r5R79wIt(-QJ%~t7$4JzlaV+KQkhYP&ycvD1VT#>IG%5w*3+6T zi0N@HNuL&cm}{9#Dua)gC^#*zsX3%o6H!zU(X(kC8zf9aiu61NHkzsjbW$}q_8&Ud BEcXBa literal 0 HcmV?d00001 diff --git a/objs/redirect/heredoc_parser.o b/objs/redirect/heredoc_parser.o new file mode 100644 index 0000000000000000000000000000000000000000..08bfa9eae0e0cad1d092d114d19b5a2e2b8e2bac GIT binary patch literal 2864 zcmb7GU1(fI6rPPS-PR;`mDa`|NRT}AWlQ|ST8!ObuFQiAF?1!0^>(>?)2t-B>t=5n zgoVIOYOZ4>_ya!rqS&X3P^cnt+lDqTVgw!@j^bGIi)5n>vntE4weV)obppq zrrgyO{@K~FT+%LBZsv44ld`Or`nQD`%qzb>Rg)KBk7CC6GIp<=yUnC!IV09^J~`${ zVWWRNYEfB=*${$7_H?_Cu@OBcd;+}#JxGPIkF}svqfKc(2R|Z&m@Waao(-T=BiE_Z zTH2Om|Fn9V=G3 ze-(?CrK$iI?lSi;1>D`Q*NNbc~a7mH)5`XrhF>_F=l!IAOT$567F?QlIw%ZWy z8W#yEttGd%wuTQIozqyun9&(y%KriK-*>NbKT*AER-m?pW1L0gr8(b(Z)R1*E8fMB zAFpux$EoKcIMsW>?q-$S@rtpqKkRLG8#9AyQmRAOSZIxS{~R-B9u6c3m2g-2T%xjV zy+#*`{Dq_nharvENxP&paDuktp(XBL`GzvLW8yVX-O2TAQvR@76(pT-ig@oyoy&37eS%wv{T%~5$y`{yPaobZ1+4X zKd=`{0-+64WWzyac#A#Q)#&VJIzK)28*x959n5mSV0~UG)bBIo>Ly~L_g{Uy#6=ut z6J>5cU@Sa!zjuqxnk&ZiGYHr&!mdCllSA&nzP(qbb8pP}_)2WnU3u4B`66V@(6MVz z?xaI&@0JmAQbfE{KtgB^PAFCO|E zew4VsvQvx#T(}pu{h-sgATlV?=ero&$GXWG*}jqxycYEwVM&p0DY-+wu4dkpdUwcA zs<(ODUDoH+%lhD5M$R0rAO+ z{)u>?o}<44iGQv5IUquL-~%Ae7Cj2YFM0qE(tjU9e7d4Oko0=-p!vf18*R9 zZH)C^1L9K|{T^rlzXQ^`^NN2Cq;(#U?7Si6(HIcF=x;b1?e`0i)|~~SML)y?S3W9$ zWZwmnoe_nv09(OdRQwSjDnI%lknBtWVZY_1!kEG?g@8a#-|BWKmS_U)7&>uXkDn=i z5=N;}&PcB74KZK_xNcbt>L`1?floE?^9}q^1An=JlkIx@^hT`bXC!Yz83b)Ya>eAI zn0kF?4Hqo@bIaJt0<%u%(*=hpvqqe}lgipwE}0*9z@=Ks&FNvr9>Z9xz2!RNg>*Kf zrK1jpPG-UycanK~M44umJ(?YNn3Z>usnK)>qv5=R=PAp{=d*eI=}UoWqj@JcnzZXC RoXK1=lM41o7qUs5>Ob?Om>>WE literal 0 HcmV?d00001 diff --git a/objs/redirect/redirect.o b/objs/redirect/redirect.o new file mode 100644 index 0000000000000000000000000000000000000000..283860ff44387d86a3c5e870b3c37086b80894ee GIT binary patch literal 1720 zcmb7EO=uHQ5Pqp?8nx|KQBV-fLHs!cQUxg}6159kP^em=m-1RRTN7=Q5EBeSL`)+t zdnw)pK@T2177wMUP!Yr)JoMlphYE>A$f*>mt>3(#X4Be(1G6*Vyl>{sytlhwfB)L( zVl1$S;QY7!nT&gl-<~a&usfuuR2>1G6}He<-QL{X zL|vNQGuN&1$H>?R<2Y0E#PmFi=88(ic;+%ThKd=`@f9rfuOf!A<1sO^cOCvv%sWv2 z8L;fnmUr>fTPCLIUvd4DYvK6?p~>Z@tUG(`15p0uK8VK+=Fm&X_$f%TJlA@l+h+j3W@2| z=i(f@ihDe#gTlBfFF!7Jj_gN#L|Ve#EY$6)adM~7hXKaBP&`vyG{?*%OJ9>Egt zE-dlRsrX5SUtw>!(NS1PG>!*wD55Nkz=vUbv7pZtuE6>nPXikiRAR#VAiJ~;^KJNs z#2x5e$biHO!SFhpd6cm5uAnGNB3KbO!Y7H!6p-6>ZWU?lkWHH&)%~n&Pptcp) zQuN>-AcCOcK@h}~Ehx5lv3D=dC6aRu3 zJdnDsh;t5lEIEhzWRFWEm9h&e=UF9NPiU;KeqPT-uMZ;865ELi5(?n}`mJbT8Acnm zpt13y?Ei*3;*2dsvp~$JKD4NDo!mA=o&PyLV+J41(JyIp0t*qD6J!Rd`C#Pn=*Z)k zF}9t3lidR-uXFknXH0RWLFz$BI&0?S(35aDI$tx!x%MzYN2kq+-dXeNhpAevW(K{p z!A$VloIJBQVT_+)=X5Y*PIk3Icr~R+brZew=HXdm9Opsi=&SVEm*FI%J!kAbK_vT$ z%Zy;;*Gzb}*u*o;c%qlU7IlR`;lB%ikopli!Va?WvoDwGK?tc8q%J)Nt&{68c8?*p zxc(GhAa=#RP;`o4!3#b-KH$hY{pE6^WVyo$%gYayY}c=}QPsD-Qu098!A!YW_DDYo zmZCRdub+z^>V8hh$yMSBUKu9ejWF%wzE3>-9%0Mko3)=}mrqly8jr;{tZTiEtUd7W zKzsfhcMOyIh>mTFUvKK!$k)WidAJ@*|Iv9;=Zbkn+@(O3g#?WjKA zU6f}V_@M^Q=Mv4|)xb%4MdjI9r!rWyhDjAHH(Rt-#mPIaPs-2RK0Yl{cGY2;so1{d z`yLMw(!)%_DQ0CRB1%ZEA!+mIt0zl7E3@DP3lhIOUCPd9{)W}1U z5a*2x=Oby48w3PI`6%}41Y?hoVw|lIi%1BoT5}8KC8dbxi}F0A?4<{zNXZr4krMfw zQpL1tqF(-}P+k<`t#czIHggKsic&U^k5m~nsd~I8r4V*rZ~din zuQ}kpftA7D*x{|_4%1d=kp}7=?l)3>O4%ADw9Ai zL*Cld7dCRIw5L`noT+*l)Z5`+z3?ZBblBXE4n7{Gx}a)1NL;6P&MF&&);VsO~? z{yi=C&{_|WUqFr*e~VnA1Bt9O{w-sd3I#>_&<-VGe-**cM3Rs3Y>`bGN%XTA##uc$ zIa0!w?Q#DNbdv~kNH?gCz!MS8URWOmX*j;Ii^irGHq?AihyBQlqpJaRe2n*(1h)p) zlL$EsJ}%P_k!j25;tX+!bo;_f+4qeu5_m@UHKU`g)2jn(A65(+Xs!7!_r`w>;ab@) zZ_V69-!pIvj{?!&jn<8!m+jJ3SXH+eaq#tLZiaw@->IgWS0L|USc1md50)jO9t|CJ zXqu-NHcnQLvRU@NSaQ~Vjl z|3ppvL!>vs@uH@`2glo){u&%{C)U7^Kzx^(~5(IdSGN4 z93t|R9L=ww)HDvJsQNlkymP52-F? zB{BAROlHC^UlKJ(n67JnETsy5w`)vPTxSVCkivFd#}#&?09~#o@UvdF%+Y?aUfENZ zM*E^&X2Qzb)(67=ux=J*=BjPFR-RI$LN1IeR%_M5vMuedU2-mAk226N+C`^Kl569; Rq<~n?qV%xLV$reC&wl{^?ppu= literal 0 HcmV?d00001 diff --git a/objs/utils/error.o b/objs/utils/error.o new file mode 100644 index 0000000000000000000000000000000000000000..110140f38ad5b262d9dc977721edd0bdb6fe9889 GIT binary patch literal 2796 zcmb7GU1%It6u$Xw8r$r~8mJ(26pMXuY7_&d5J|PG^I%HQ1{5sgbapmb-JMBhXJ{g< zMv@eVF%r-h>4Wt_QB=%hD`Hz4+9GK8aUTTtMc813eWv` zy>s^N-v0g9zxOcK)x+?>=*1Z5#zVt^+>7xR8U91o`-I^L#XuBCPDX?Bk(g%SECgaM z`03OOr+2uT%~K%|%15!6kmMm!^s*%aC8lW?0zd1{NQG&(=2LktNc;P;P8Bc9RTTBv zUVhH912c5bW!}psasN-rZa11d@JvWfcE+}WWI{b zSC;uCWp^<)tLB7{VI0KZuOczX`Y}joQPLmW%h)jR2-KTE#Iq?35{jWgOH!@-F#fMh z8`00k^7g0^73)S6)}rZcBQDmfl*fotWh2IjQWYZ(%f{OH6F8eDTd^X@ayR-nmg8_+X5Sn=b3JiriE5JdPN3cz>a7}LX*w26t1Pj)pQblc zb@JZ&oJd@3S)rqu5NmNzFl?YAC22Ylzr+fv^7_^fFuY({yW{xHfQALgZ(VF@_n#6IUb5@36N3dv?t-CqH`&}FV3DXTx z^P^Xdm^zHb)7#N7UX^y{`cC%Dy6n#+&#%5nyw3O-hqG2;_PECQ2Uk;RvBxAOqS$F;!oG^AV9EPp1CRLsI^F|_1bf+Ya!W{+_z_79bOMYe;>x^AOCQX^)q&2D0#m7sr|TyxscyU zj7!o_?xUk$4t`62ihOcE9sS;e-zR?wzs65rhjqV(Uq$-K{q4$^$No{Po&n-c*DWCW zQXd22i!=T(FadrTh@%{#3zqCZg5W1rzYR)W4AWw}B9S8Hmrw0v_b&O8&g$ zPXZ}Um-+)hiW`!=Cf#z{(x)UI0OI?i|Ar)#m%amp9{^#}-vv_L z=Ye~H^OC0}H-WUy38{Y^2+<$GgY@(pIRL%{M85u)B~D1xBm%gdZlfVMsy==LJOQry zc3pDSr!a9lfD7FbF5g+fFK zi{PIkc=0GGqzA#P2d|2Pf`=SR4~^fOeUok@J^0|w_ulv3eETMu`F!yEa7GC4l)wTn z!rxI)fx|AqYm}d0U${1j&=lmPOQv;Vx=9vi`D*xR^(c2yHK#|jyn(;q=%d7!F~>Bp3zR@Q<9&GEsFxfq|7{Od|C{Rl3RHh*U!~!` zn)0Ec`hy=NWto8_DvQ%vjwhDsZY9Ud%27dHRq1iL6co!3!r=&(hQr=_uOALox`H9@ zRBtX7ORp}C#bs5c(pU8rG~C*=ANsk6eRjH(tNDqEb9wJ$u=b&Oy>$5n4JH0LZz{{< zUVHw4zUy`q<6^61MX-F&0{*uhE5siTbpiQ}yp@4kUI`WH~c#*P30 literal 0 HcmV?d00001 diff --git a/objs/utils/list.o b/objs/utils/list.o new file mode 100644 index 0000000000000000000000000000000000000000..1229118a756202f93577e886e4b58825ebaed7a9 GIT binary patch literal 1492 zcmaJ>&ubG=5PqpK4cfX96{-lyL9jy8gQp4#DRyB61EN**5MH;*<_D%pNVYZ<0+mGR z5(EVg{t5mGo-`1lNB;mXxd;g;U*_hVGfq66YzHh#nmnQx8``6*D5WZ6a z2iy-2&fti^VVB|i1Wd6H#Dy(#^lE4da?&G{(zdF$o4fV8{&f9s?Pbq+7U@xM3y0G1 zi#?A+QOab+F6RmvzLfH)o~Lt~@t5?#3FCFgH_$6?mCU3qw+lPDLQ2Z}Yhw_}2Jf}U zm;2Bo$&R<55Jx1Xw6Zc?Hn%Ld;rMVsa$WPA_ZW2AYIB->K1D8a7W#2l|kpUX%{XlvceO6k6lF zS2kloJhI>Gj7B4c(~Gg;q_`IL^oIxfKq;xuq;Um#QyM1bOF(idIJ%7AjUDm5kcKAA!;DR=mJLHVyatIz>un16*%bqghvQ~J%MwoYQwE( zFk9L9H_Nq+JLIq~h%;$?q8uJJ9)A>ID literal 0 HcmV?d00001 diff --git a/objs/utils/list_clear.o b/objs/utils/list_clear.o new file mode 100644 index 0000000000000000000000000000000000000000..05f47f8ff3e57484210e8903d8d6afeb7b1dbb29 GIT binary patch literal 1056 zcma)5K}#D^5T2w~L#yr+Jfu)C6t6-l9y~^DU_lR3EEI}7Lh`JoF_Cq}MFK! zwYIjawNURi_ue<_TCcoxHO8Khvf%f;o#hz)5V8qaqP5x78$or;IDUIRcL$rcObUJ6 z**Nu>$dxk13#>(Wb}il`8ilj*LplEioB4bx@Hr6sX%#+ftaUz||DX7^-}&jsSIY0S zdw$&Rk@tzO@$v%}KdB%WDe?~H9Zkv#sRB|{!>J@HbiwTw)^yGXJdTRcPu!HF;-Kbq z@tImb^=3%sDczlC>1H?iol1&PQ}ldhv#Fny3rKhUq@B9nUDjP*^!xqn9OsZ?zWA)P zewu}LIkX^O<)CmRp}gjM^=YZ+_FqvhQaLp~Rycxc7Wt>}lWRN}CjE&PC)MZt(!{9j zV;z5p%F6okoO`+pXwY^p2I3vh?FqgWTox<=q08Dc!pXzp&M_$*kQvX&8fScy;CcSm jGSeHOZtR4$hN%W5q;49mrU45K)_2+jK`X!yRyXt)iN~ig literal 0 HcmV?d00001 diff --git a/objs/utils/tree.o b/objs/utils/tree.o new file mode 100644 index 0000000000000000000000000000000000000000..d44eaebe21cb6f064970f73354928c031d010f78 GIT binary patch literal 1716 zcmbtU&1(}u6o09;4YisTEL0JigMybx5EU;%f(^{ULMaXOQpR<&`GB+u+YJVxP-vAd zi%`UaNB;uxW=|?q=ur?4J$k6HfeJbFP^7m0-tJ6ITO$=8ym{Yme)DE`KK=N<*H08X zMOeVS;CK&~Bp7rNyv%_vB)AZCjcY*KMo(hqeoRujcGHdY$ezqiP5!pE7VZs$`*Cgk zG*KT1duf4%CMm5s*Qv~wltaqH{d6Cchm_Vpl&#<@i}6{tnYwAYvN8LpGFy=H{^&sv zilGV?l=BYy@zGyl1J(LaODXNLEIQ_l9TgnKx1zFFRlil$PnmRvsH}CCH^9T-@G24m z)CXqbHthcZ9C64DhQ(t>J&l7qiE(P~^q)k}3-6m)+)4^>e#dKUzh@lp(pUnn7G5q8 zi}L{`o(!`2?CuvNgdsn-E&Q>-%ML^A2tOYPZ-6~wJoyjg5*HDTMCrUerU1XU9!&;Q3f@NJ3WC?Hg!l5$oGbGTG}R*|{4BMPrSjAB zE^$Lubc?@H@u@EL7a~8!9#2rLX~c}d{`d-NuE2j8JpL1qK^g~T&lyj9?wt+a62v)g z6#P=-9*$NFsnV=qz4fyDcf`ivTuw;=IerqYo3r-v>< z;=)o7Ad%XaQ8K9{MCiW?nLvU*=a91Xd~YgS&oiTJh>#|*qWpl0M{GU^;yu6|66bd2 zldL Sp;aruD!S4#tJRvtAbtTqTul7{ literal 0 HcmV?d00001 diff --git a/srcs/execute/execve_utils.c b/srcs/execute/execve_utils.c index d27330b..e7ac03f 100644 --- a/srcs/execute/execve_utils.c +++ b/srcs/execute/execve_utils.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* execve_utils.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:39:07 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 21:29:32 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 22:04:31 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,7 +32,8 @@ int check_builtin(t_data *data) } if (built != 0) { - check_redirect(data->root, data); + if (!check_redirect(data->root, data)) + return (1); g_error_code = exec_builtin(built, data); recover_std(data); return (TRUE); diff --git a/srcs/execute/file.c b/srcs/execute/file.c index a40c9f2..1362274 100644 --- a/srcs/execute/file.c +++ b/srcs/execute/file.c @@ -3,19 +3,19 @@ /* ::: :::::::: */ /* file.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:53:28 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 21:30:21 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 22:04:04 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -void check_file(int fd, t_data *data); +int check_file(int fd, t_data *data); void close_file(t_data *data); -void check_file(int fd, t_data *data) +int check_file(int fd, t_data *data) { char *str; @@ -27,7 +27,9 @@ void check_file(int fd, t_data *data) error_print(str, 0, 1); if (data->info->parent == 1) exit(1); + return (0); } + return (1); } void close_file(t_data *data) diff --git a/srcs/input/get_input.c b/srcs/input/get_input.c index 8bc1dc3..55d6dce 100644 --- a/srcs/input/get_input.c +++ b/srcs/input/get_input.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* get_input.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/14 18:27:16 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 21:40:19 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 21:39:51 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/minishell.c b/srcs/minishell.c index 6609ea0..869ee63 100644 --- a/srcs/minishell.c +++ b/srcs/minishell.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* minishell.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 21:39:02 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 21:52:03 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/redirect/redirect.c b/srcs/redirect/redirect.c index 5b3d2dc..1e048b5 100644 --- a/srcs/redirect/redirect.c +++ b/srcs/redirect/redirect.c @@ -3,20 +3,20 @@ /* ::: :::::::: */ /* redirect.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/13 16:16:07 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 21:25:22 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 22:04:51 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" -void check_redirect(t_leaf *leaf, t_data *data); -static void do_input_redirect(t_leaf *leaf, t_data *data); +int check_redirect(t_leaf *leaf, t_data *data); +static int do_input_redirect(t_leaf *leaf, t_data *data); static void do_output_redirect(t_leaf *leaf, t_data *data); -void check_redirect(t_leaf *leaf, t_data *data) +int check_redirect(t_leaf *leaf, t_data *data) { t_leaf *temp; @@ -24,16 +24,20 @@ void check_redirect(t_leaf *leaf, t_data *data) while (temp) { if (temp->token->redirect_type == T_INPUT \ - || temp->token->redirect_type == T_HEREDOC) - do_input_redirect(temp, data); + ||temp->token->redirect_type == T_HEREDOC) + { + if (!do_input_redirect(temp, data)) + return (0); + } else if (temp->token->redirect_type == T_OUTPUT \ - || temp->token->redirect_type == T_APPEND) + ||temp->token->redirect_type == T_APPEND) do_output_redirect(temp, data); temp = temp->left_child; } + return (1); } -static void do_input_redirect(t_leaf *leaf, t_data *data) +static int do_input_redirect(t_leaf *leaf, t_data *data) { int fd; t_leaf *temp; @@ -42,16 +46,18 @@ static void do_input_redirect(t_leaf *leaf, t_data *data) temp = leaf; if (temp->token->redirect_type == T_HEREDOC) { - fd = open(data->info->heredoc_file[data->info->index - 1], \ + fd = open (data->info->heredoc_file[data->info->index - 1], \ O_RDONLY); dup2 (fd, STDIN_FILENO); - return ; + return (1); } else if (temp->token->redirect_type == T_INPUT) - fd = open(temp->left_child->token->str, O_RDONLY); - check_file(fd, data); - dup2(fd, STDIN_FILENO); - close(fd); + fd = open (temp->left_child->token->str, O_RDONLY); + if (!check_file (fd, data)) + return (0); + dup2 (fd, STDIN_FILENO); + close (fd); + return (1); } static void do_output_redirect(t_leaf *leaf, t_data *data) diff --git a/srcs/signal/signal.c b/srcs/signal/signal.c index 9a4db2d..dc80c27 100644 --- a/srcs/signal/signal.c +++ b/srcs/signal/signal.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* signal.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/15 18:40:34 by kichlee #+# #+# */ -/* Updated: 2023/08/17 21:33:36 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 21:36:26 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -39,7 +39,7 @@ void handle_sigint(int sig) g_error_code = 1; printf("\n"); rl_on_new_line(); - // rl_replace_line("", 0); + rl_replace_line("", 0); rl_redisplay(); (void)sig; } diff --git a/srcs/utils/temp.c b/srcs/utils/temp.c deleted file mode 100644 index 5503c22..0000000 --- a/srcs/utils/temp.c +++ /dev/null @@ -1,100 +0,0 @@ -//테스트용 임시 함수들 - -#include "../incs/minishell.h" - -void tree_print(t_leaf *leaf); -void print_token(t_data *data); -void env_array_print(t_data *data); -void check_leak(); - -//트리 전위순회 출력 -void tree_print(t_leaf *leaf) -{ - if (!leaf) - return ; - if (!leaf->parent) - printf("\n\n--------------tree preorder--------------\n"); - if (leaf->token) - { - if (leaf->token->type == T_CMD) - printf("CMD, str: %s\n", leaf->token->str); - else if (leaf->token->type == T_ARG) - printf("ARG, str: %s\n", leaf->token->str); - else if (leaf->token->type == T_REDIRECT) - { - printf("REDIRECT, "); - if (leaf->token->redirect_type == T_INPUT) - printf("type: <\n"); - else if (leaf->token->redirect_type == T_OUTPUT) - printf("type: >\n"); - else if (leaf->token->redirect_type == T_HEREDOC) - printf("type: <<\n"); - else if (leaf->token->redirect_type == T_APPEND) - printf("type: >>\n"); - } - } - else - { - if (leaf->leaf_type == T_PIPE) - printf("\nPIPE, exist: %d\n", leaf->exist); - else - printf("CMD\n"); - } - tree_print(leaf->left_child); - tree_print(leaf->right_child); -} - -//토큰 리스트 출력용 -void print_token(t_data *data) -{ - t_list *tmp = data->tokens; - printf("\n\n--------------token list--------------\n"); - while (tmp) - { - if (tmp->token->type == T_PIPE) - printf("token: pipe"); - else if (tmp->token->type == T_REDIRECT) - { - printf("token: redirect, "); - if (tmp->token->redirect_type == T_INPUT) - printf("type: <"); - else if (tmp->token->redirect_type == T_OUTPUT) - printf("type: >"); - else if (tmp->token->redirect_type == T_HEREDOC) - printf("type: <<"); - else if (tmp->token->redirect_type == T_APPEND) - printf("type: >>"); - } - else if (tmp->token->type == T_WORD) - { - printf("token: word, "); - printf("str: %s", tmp->token->str); - } - else if (tmp->token->type == T_CMD) - { - printf("token: cmd, "); - printf("str: %s", tmp->token->str); - } - else if (tmp->token->type == T_ARG) - { - printf("token: arg, "); - printf("str: %s", tmp->token->str); - } - printf(" blank: %d quote: %d\n", tmp->token->blank, tmp->token->quote); - tmp = tmp->next; - } -} - -//배열에 넣은 환경변수 출력용 -void env_array_print(t_data *data) -{ - char **array = env_to_array(data); - - for(int i=0; array[i]; i++) - printf("%s\n", array[i]); -} - -void check_leak() -{ - system("leaks minishell"); -} \ No newline at end of file From a8c062947eab95e479083d0c0d60a4fd951c0796 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Fri, 18 Aug 2023 08:33:54 +0900 Subject: [PATCH 52/57] . --- minishell | Bin 90992 -> 0 bytes objs/Libft/ft_calloc.o | Bin 808 -> 0 bytes objs/Libft/ft_isalnum.o | Bin 788 -> 0 bytes objs/Libft/ft_isalpha.o | Bin 680 -> 0 bytes objs/Libft/ft_isdigit.o | Bin 664 -> 0 bytes objs/Libft/ft_itoa.o | Bin 1308 -> 0 bytes objs/Libft/ft_memset.o | Bin 732 -> 0 bytes objs/Libft/ft_putendl_fd.o | Bin 904 -> 0 bytes objs/Libft/ft_split.o | Bin 1804 -> 0 bytes objs/Libft/ft_strdup.o | Bin 1000 -> 0 bytes objs/Libft/ft_strjoin.o | Bin 1104 -> 0 bytes objs/Libft/ft_strlcat.o | Bin 920 -> 0 bytes objs/Libft/ft_strlcpy.o | Bin 872 -> 0 bytes objs/Libft/ft_strlen.o | Bin 732 -> 0 bytes objs/Libft/ft_strncat.o | Bin 1140 -> 0 bytes objs/Libft/ft_strncmp.o | Bin 852 -> 0 bytes objs/Libft/ft_substr.o | Bin 1220 -> 0 bytes objs/builtin/builtin.o | Bin 1852 -> 0 bytes objs/builtin/ft_add_env_front.o | Bin 1572 -> 0 bytes objs/builtin/ft_atolong.o | Bin 1748 -> 0 bytes objs/builtin/ft_cd.o | Bin 2756 -> 0 bytes objs/builtin/ft_cnt_args.o | Bin 700 -> 0 bytes objs/builtin/ft_echo.o | Bin 1576 -> 0 bytes objs/builtin/ft_env.o | Bin 1088 -> 0 bytes objs/builtin/ft_exit.o | Bin 2592 -> 0 bytes objs/builtin/ft_export.o | Bin 2088 -> 0 bytes objs/builtin/ft_export_check.o | Bin 2440 -> 0 bytes objs/builtin/ft_export_print.o | Bin 2704 -> 0 bytes objs/builtin/ft_join_cmd.o | Bin 2320 -> 0 bytes objs/builtin/ft_pwd.o | Bin 1116 -> 0 bytes objs/builtin/ft_unset.o | Bin 1164 -> 0 bytes objs/builtin/ft_update_env_cd.o | Bin 1284 -> 0 bytes objs/builtin/ft_update_env_export.o | Bin 2644 -> 0 bytes objs/execute/child.o | Bin 2480 -> 0 bytes objs/execute/execve.o | Bin 2432 -> 0 bytes objs/execute/execve_utils.o | Bin 1832 -> 0 bytes objs/execute/file.o | Bin 1124 -> 0 bytes objs/execute/parent.o | Bin 1216 -> 0 bytes objs/execute/path.o | Bin 2516 -> 0 bytes objs/execute/pipe.o | Bin 2016 -> 0 bytes objs/init/init.o | Bin 1780 -> 0 bytes objs/input/get_input.o | Bin 1736 -> 0 bytes objs/lexer/expand.o | Bin 2080 -> 0 bytes objs/lexer/expand_check.o | Bin 2764 -> 0 bytes objs/lexer/lexer.o | Bin 2592 -> 0 bytes objs/lexer/lexer_utils.o | Bin 1260 -> 0 bytes objs/lexer/quote.o | Bin 2652 -> 0 bytes objs/lexer/tokenizer.o | Bin 2092 -> 0 bytes objs/minishell.o | Bin 988 -> 0 bytes objs/parser/parser.o | Bin 1692 -> 0 bytes objs/parser/syntax.o | Bin 2828 -> 0 bytes objs/redirect/heredoc.o | Bin 2572 -> 0 bytes objs/redirect/heredoc_parser.o | Bin 2864 -> 0 bytes objs/redirect/redirect.o | Bin 1720 -> 0 bytes objs/signal/signal.o | Bin 1976 -> 0 bytes objs/utils/env.o | Bin 2340 -> 0 bytes objs/utils/error.o | Bin 2796 -> 0 bytes objs/utils/free.o | Bin 1208 -> 0 bytes objs/utils/list.o | Bin 1492 -> 0 bytes objs/utils/list_clear.o | Bin 1056 -> 0 bytes objs/utils/tree.o | Bin 1716 -> 0 bytes 61 files changed, 0 insertions(+), 0 deletions(-) delete mode 100755 minishell delete mode 100644 objs/Libft/ft_calloc.o delete mode 100644 objs/Libft/ft_isalnum.o delete mode 100644 objs/Libft/ft_isalpha.o delete mode 100644 objs/Libft/ft_isdigit.o delete mode 100644 objs/Libft/ft_itoa.o delete mode 100644 objs/Libft/ft_memset.o delete mode 100644 objs/Libft/ft_putendl_fd.o delete mode 100644 objs/Libft/ft_split.o delete mode 100644 objs/Libft/ft_strdup.o delete mode 100644 objs/Libft/ft_strjoin.o delete mode 100644 objs/Libft/ft_strlcat.o delete mode 100644 objs/Libft/ft_strlcpy.o delete mode 100644 objs/Libft/ft_strlen.o delete mode 100644 objs/Libft/ft_strncat.o delete mode 100644 objs/Libft/ft_strncmp.o delete mode 100644 objs/Libft/ft_substr.o delete mode 100644 objs/builtin/builtin.o delete mode 100644 objs/builtin/ft_add_env_front.o delete mode 100644 objs/builtin/ft_atolong.o delete mode 100644 objs/builtin/ft_cd.o delete mode 100644 objs/builtin/ft_cnt_args.o delete mode 100644 objs/builtin/ft_echo.o delete mode 100644 objs/builtin/ft_env.o delete mode 100644 objs/builtin/ft_exit.o delete mode 100644 objs/builtin/ft_export.o delete mode 100644 objs/builtin/ft_export_check.o delete mode 100644 objs/builtin/ft_export_print.o delete mode 100644 objs/builtin/ft_join_cmd.o delete mode 100644 objs/builtin/ft_pwd.o delete mode 100644 objs/builtin/ft_unset.o delete mode 100644 objs/builtin/ft_update_env_cd.o delete mode 100644 objs/builtin/ft_update_env_export.o delete mode 100644 objs/execute/child.o delete mode 100644 objs/execute/execve.o delete mode 100644 objs/execute/execve_utils.o delete mode 100644 objs/execute/file.o delete mode 100644 objs/execute/parent.o delete mode 100644 objs/execute/path.o delete mode 100644 objs/execute/pipe.o delete mode 100644 objs/init/init.o delete mode 100644 objs/input/get_input.o delete mode 100644 objs/lexer/expand.o delete mode 100644 objs/lexer/expand_check.o delete mode 100644 objs/lexer/lexer.o delete mode 100644 objs/lexer/lexer_utils.o delete mode 100644 objs/lexer/quote.o delete mode 100644 objs/lexer/tokenizer.o delete mode 100644 objs/minishell.o delete mode 100644 objs/parser/parser.o delete mode 100644 objs/parser/syntax.o delete mode 100644 objs/redirect/heredoc.o delete mode 100644 objs/redirect/heredoc_parser.o delete mode 100644 objs/redirect/redirect.o delete mode 100644 objs/signal/signal.o delete mode 100644 objs/utils/env.o delete mode 100644 objs/utils/error.o delete mode 100644 objs/utils/free.o delete mode 100644 objs/utils/list.o delete mode 100644 objs/utils/list_clear.o delete mode 100644 objs/utils/tree.o diff --git a/minishell b/minishell deleted file mode 100755 index c26b4e167ffec7314c9d68a447a07f5a87a258ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90992 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 diff --git a/objs/Libft/ft_calloc.o b/objs/Libft/ft_calloc.o deleted file mode 100644 index 12b371727163d55ee5581a337cb01f21f7e1d854..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 808 zcmah{&r1SP5FRZwN?Q*dDvBh!3e~A&Q48;o5MkgYUZQITu7<57fe=X1;-x>K|DcYZ zE3jMFj$Q(Tf=(eFs&Cx)a63f9esAWRUvGAHA3xu|!bE`~!T}5eEjHo+WC~be{)ap$ z|C7qm96gD_eOaV*teWH59#5I+)PQR%uMFw+S2rB~5}XSsn^qxRdXFy^xgGGEEqmgkZ3_k0(+kJ5XppROMpT-kRm{qE(xnht_TzI@-^y}NgLFOQ!eUt>hZ2;l{c0=FzO0BjamW&aPm zQSm3WM*HYV4DQP&MCdldNJoA?x1ay@wc1jG`|&In2_ih~oHA(>qEN5;P9YSH+ObzF z3bDPZbId!+$tYez6Q1P?tVWe>RT}fT6;TSDsvAXw7@p5p3)d9es-JRclBl9J^D;04 z$i2)7N&;-WDaWrN`1_v0D`3l;wG4fRQS^WBJ-hQ_x8JQ!tJiJyUb(2CpOYaRhI$dD6%FPWmyh`lWDLS+ifw5b6OgwVrlum!cXwoN)x3}ct=IA c?1dC*=djkOk|+x|2+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SOFEk0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjO7kxfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw$ z%29yPOc1v;0BNXGfh+`wk5A2rPb*5yO@)ZX$D_J01FF;kMnlbmav8W87+^}kLPkJR z0*JwO@pCb-0Wk=GECq>oK;1C|NDBb@K>Z8>K#UAPdZBJb7AA@v>e2bMv-U@G?GH!( z9+1^QRuq4q2!xf$-y;TLRq^-p09nUf|A1_I35qfx8%Q#AyZ(ti3}S!*G+r>A12PZ< z7^{L97%K!A1$fvwCID5b0L5g0xZ*zqz~Ys`kx!tF$(ff8qzMXu%Gp2$^CO!cpH>o| NS)7+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%m;n{P0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAaaEfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw# z%29yQ0!$FM6aZuUrh)*j@%uR)e#mA$%F9NF60ZJP{&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW22-jt(F#0OSMpGXwxJG63m?x)oWND0Zkv=hM#GAI-Ht z4ETG*fLeeoOa6WyAnUm6ACRdpLD2(b14)K%*FUj`K@2#6#sh}+B2X2KRY44l6#|R` zJnS43fT~o0;xa(o@gD+U@yOuFC(y>^%*zHh8SE!Ekiq=OrpKq1#Ag<#WTt0=Qwad2 CK0yZn diff --git a/objs/Libft/ft_itoa.o b/objs/Libft/ft_itoa.o deleted file mode 100644 index 63dd8b801efe35ba8f3ffa484f43de8d9c913e50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1308 zcmah|L2DC16rQcIEn1U+EmRN;=)p^*c@qF0|Q_ZZHUemQ=~I z1ibbqcoT14q*!Ua^(1)AMc6=uJrqnOG=6V(HYP3NgE#Z$d*A!sn_>6(_s_F2#*9l0 z3p@rNAHkA>!*0Oql=z3u5Eph=@6j2WjGXkyq;&EXCyc}M5?@~Wdyb+V-HY_7b{UJ( zh_UU6L%WpbmQ%8d1r16$tQYBA*7%n`tC*8=VZNV45WT@e z4ZepSNmekN)*6zOGQTEQOWBQlSa5#6ulk;AS})Lg`pB*_7Nrz)AL}$+l_jpQQ8*bj zCA^L~=&s+f)8MFQPvB%!6FKqEJq1zzYtMxHL)6+Sx7rmZ?+Tau!mIi|6}tSy<0rL! zLztaU)JUPAG)1l2WQo@kz(nK0EOIJEY~OHs2YElrd%StbW?Hw2tKi0U3Kg6d7WaEF z>e~X$)DrS`=R%$@_CC_1h+n5-=ktsL%T2G^$+(?NZNE2f!HH1 zNq!)0v=Zjx$zg0MDJyp0!e zd0SYEK{)zi5KWER-P91t-E$8-EMd9pE?N(`Phmuc!4H%fyp!M&_=K>N?`l_Z4WK?sI|n7@Qbm zY2xCWo4Ob7Y5G=S=@b^URkF0xlf@B4H=0G5ptClrA2_m9cpgCyWdo%lAU8{P0so)O omr8a?<|~%Nq*-)i&MHt?&!{9xOBnYg4DfWM$ zqt;(lj_*-ZFu5*+$T91Vr#+w6v+0TV)xHv3k7pSpEE;1CK~$(($N7RowaV#HrAV~1 z9o)|;lT3I*OzWr zHoHH7bdA2e7>f8M4|1(z+vrL6SvDWIJC65S+Q$=TqRPSJRC{$_qu&f}EGeU%?Fp@( z&=Rre>Y5S>Jg;#UGHC|E?Wun|PGH^jge3L**tkwMHw1A5ANhav=ofOs4Me~PuG z3flP>Y=j637Ab;-`X)DriD2P_w{PC=&g^7zj~{QJ-9)ht!UA@JJ#j2)5Euh5C-C0Fg&c5=uP*vumBWVI2CkTz>7xN0Ft0)RWwIRhYBrjwti?k?WM~9o=MZuNT$P zwx}8fdjFS|dI$T5TiY&s_HoHBFfT3Y)u!yKNvmF>fXpm~MaR=tlG)njqO-NHjr{KK zLhCH3UTHnG)JGIO+1#4NItn)5O7>C$6v(5pKZ-tNUU}#Y6#29QwnB1+()WL{Zv1Cc zc}*L?-0;16rCg_EwF^~VGFXCg-2`641i6M^emDNT@x5A2-Uwg=uV(xkwRKaSAI8D8 zbYlG6Q*+-`?$VpL;ZKq@(y_^_)Qc=b$Jv4G~RDK$8d}NZ4X&DD-iexu73xJtr=@j4yQ0vWbtK bl4}v~u;n-h4!*Pk9L^6t*Rl(HTrAKxVdrk? diff --git a/objs/Libft/ft_split.o b/objs/Libft/ft_split.o deleted file mode 100644 index 4215dd4c502d70c84c8759290a7840df7b2c4c39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1804 zcmb7FT}TvB6ux8rY-Wy?QbFK8^bnDyQIJKkkps7AA;g6s_BnYpw1`_O?i=bpdse)r7X+3y>_HtQHu z4lz8S)zCl{9ziJNG&Dzv10+R_kaN@n@qJ)2Qo)e>`b07@8XJ}YA$H>VIJGiA;1iL)+{T9kKRrG+-mfQx8GAAs8x-Px zS0#x>NH%0-a0GaCbO-z-^bSZNj1e)E=pQq@hTZ(;Wc6o>_fz6YmmOhj#9x!W3_S&P zUxixFYM~?qL-8gY^f2rUY!nv#>;aU7cy52cp#0ww;nokHEe5%jE{AgFI=9nhb=F+} zNl2Dfw6$V(PT_iaHh_Q|<(8J`*>s+%Qw@mm>6@!y@20ZpBBI0_(Yzn!b~w*1rEmuE zMa{vJVVgX+O>7le=hI=w1GWkHOR#r-=%U&>Np);HKg(RJv}@(eHKtC|P2;u(oWPCn znmTnt`n-k)3Z~`41viu~+uE8s>uuzo%fY!U&A|b|ugvu&t}JsaTrRxd+S;-;$73S* zZ>RZi%XD&)5{kfG%P#`h-Q97in9>0ioT}8hTw&u>*f@oIZdKaBj7#pJJAPZ*3dZ4Z zJ+dOl06KOg&-LTns$RBDq(Mjj#+9!)kwbgi?b!vzYA-wk*N!<*ZSS2|Tf5}E?Yz0gV@6m^PjRG|?M5b(xT z_~cEecYdIMVgwl}Z$0Z?V?RcAMmibK?#Tybm=WO@m`}Ywdw6E zdGD!v369{m({~)=))Qn14%wiz zFs^?Uwh@UL3P4(+`>G-g7~=ZD)p&yTs^ectXineVN;TH$>SYRc~+AUj*Z zq3fBFWDd4?GxD~BykT~}cdE0he5iUF(ix&H=L=s4E&%phmD5xP#N?xLe-m?*!EeA1 z!05LOnwazo+)gHm|8O3e&6x4RJAQAMxEF;jyd@5zD2zB5v}2cV_Iu9l U1YP2m*7#vFunFJmbV8s00+Kv`BLDyZ diff --git a/objs/Libft/ft_strjoin.o b/objs/Libft/ft_strjoin.o deleted file mode 100644 index a57d21f56bf426e0833e8a0776295263933c607d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1104 zcmb7D&ubGw6rPPSU9_4UT2SaAiiaMI6i*@)6kV7@1ELjrkuh$!NhHmd?FNGos6-{x zBJ>~V|KQP+Sp3nOz4n-kU}1$E3Jo3_zn6W}ZUlvX@aFxR@7p&!ySu-C9gPWLoe@}I zX_%eDl7|78VI6Ax15dd(O&q}F&=h2(M^GyCnqeHr`Mk3*f0CQ%fCJJaZU=*%rCM67 zkuy-rT@8b3z03urM)i!&kc&N2bif37+~W%L{N&YAMYX=D)ZG2!CIx)XJQt^- zN0RTcaBDfTTBhW*s{sDYC ztBsc?;lURVU`Y^{jNa>M@mT5~vK`Gx-Reu-=*f*%|0jtc=t=GDaZ=oq*0y}LP0x{f z_aphZrJb&9x4I(xW}JHOX17dh$B7U^$?31%64}=`IFb59sn}o7VMBML5$VJBj-^|X zbia2d?ESBU!C;^Hy(AxFCHTGn@kv>_#pqkwrZF(+mzgJ@pOscCB%B0)S9GiqOmJqs zd?>7D&dQCC*_+sP4fQG5rz4CBnD0{Dy_kEOx_2SNyajmNOW_eb?sRe%9`wT1I4?}H zhogFi@@!&?+i{)RLtMd{Xp8G{o-%h&y<}ggmB26KdsSW#_<{18)ljIVP~k6o?pNz3 Wu6YQ{yvg+!ywpL9(s@ diff --git a/objs/Libft/ft_strlcat.o b/objs/Libft/ft_strlcat.o deleted file mode 100644 index 928969e3315521f5265ff28efe8cdca31729ce99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 920 zcmaJ=ziSgw9DkSARMdJ`=%C=xL8KrVbSk(+>Vr2lP^1ADd4%+81)G-hN{dj?o=UE_ zxY(h8fq#ON7!{Mvj1C#H2p6!BF?4ABd~)w$GUx|B@B8b0Kld5l{Wv>4pAo{D5;(wV z@FSB25V#I5vHk~E&FrU%wuYu4sY_@b`uky)XZ4zVwDz~Q*{MmWM=y&I$gwvqUNTr{ zUESW=sZ>L~TibhDTi1H!ft@k-O|f8N3nKKggu_@J$(k|z`I~wpsBHOJN9##{o>?lI zh1BTT{mVjZ+MMw&cnut_xtBy9B=}MGi||1|J2(~*u`gD^ad4NMFgkwWKY3Zjzf|ku5bPySO&!9cPU;8V~{#3~u9k zf!1Q#x${{irPTd27oCZ^Y`U-K(NAP2ZbXe?Tt)=Kufz diff --git a/objs/Libft/ft_strlcpy.o b/objs/Libft/ft_strlcpy.o deleted file mode 100644 index 34b4c361731d198fab87bc6c50a234d1009fc4de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 872 zcmaJY5S@z}#jiWTLczkq!bVUl!A8-8Efho)Y-Evmet&F&O!&?&b-;#H*r z1UdkJcD<3}02?>uyn#9RZbq>5!s9$m0a4?#j9-IB3;u~`h5IftAN|5je+hTn6YgwY zWYeDi9l|x=L?)dl{kR1hA`9x8#lk*Ffkg*$B0K5nw{4jcotm%u5s$|wH2pG%#F_be zt?9>gTtCcPSrZ-Z#Ni#!E8I!%%s>vEBe}0r&gDg21%`h4!UYE?d#cU=S`?Yb{`m(8 zMeII^{p*aRsa+9mZ<@4}p&8Bf4d diff --git a/objs/Libft/ft_strlen.o b/objs/Libft/ft_strlen.o deleted file mode 100644 index 53f5ea6eb084e1eff7408439819b3391a14995fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 732 zcma)4&r1Sf5S=wsDQ$&16m;;=U(m@zhoTm~LqUXrmzWh@Gf0hXBMAbbA0S>jcI?mS zD0J}HHRv3yhrpwB$lkc$svUwJyqWjL`R1El_x0=ZJ5FTG5CRwlpG9OqU(#SD(c_ESo?yt^~~ zyRA(|=WHa{tH?M{``|R>Y{=>QfApbheW=!TUv({C`qj;KpUk_I$gVYzQcrg5iBfH= zuiATlb0b0K?P5^z)vR2uT9)5?9}b6T@?i$ZgQFKYCa^~_e5HYrxTK|VbwEZVZKRX& z!~^E7p)SvBW1_&;eYCZZzK?9DVxdPydrVd^C1@m(VI$*jgUcSDd+w=IBR*!wb?YuZ IjgtJ0KPmZHyZ`_I diff --git a/objs/Libft/ft_strncat.o b/objs/Libft/ft_strncat.o deleted file mode 100644 index 74ecfc53b1a4c436a0945c8ad9cf5654a27a8566..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1140 zcmah|&ubGw6rN3M8flOKP6pUyC*O)(tM zX=o~eV-X6u2HmH^KcuQ^ON4<$F*q41@sUXB7g zOC}O2^_pXs&5}w;d7dxg39#t7OFu9sYTQW%eAZ62s5{a%UzE*FDc2rNif}S&u0@r+ z2R@=a#Gy*(D5W&E<(6ICF+#w_`SJ?1s`v_uPlarjvF*qwdk1%$sZq#V!^1v#FNbX@1o_w=?)Q9*-xtx4BO&E$%P#Ui#oxi0=dBD?ETx zt}pcO0f`@w_=Dqs1neFk;g*qTe#t-k{JdB@Ta9{W!CL5!NV3Y&UOr`7J)>pjW>Rm_ zMYCUremDg;BzmXp!IjMG#KU>oA<0K5+H*Bn>?>!&V%H0W(B_t5vGN=Y^(7Zz)3GUT zhj}UovWhcSW;ZUx^uAC};Q0hXz43k~tF~3bdzOZ6TedXnWrxWvN8(>->cxp)F-)Xw V!(g(cT6Jp^5nAY5Z#M05x?#ViwG7L7K)Wtu~T$m3xgsCY-Evqs70cj7ZgEIOeB{yHvR`o zu@FnqLa;DrWl9?%DFjQEV0@F?OJX57@NV9`otd3Iru6mp9b`=FVE6!j;F`!V02>6t z6#rq~Sy|83H7e03u0|Tj1p|niO#D+|oYpH~*N%?!e50yHtyrcT5ko7RO;c@bl zKnQ5urFXLcKt`969>N^N!|+4!sAr2nyHTx&cKts*D(qKbAG`}YQxSIbMHD$WFT*3| z&cuxE+j{sBS%fgm)gN?SeHoFvCwgai~6a)=(9elI&4(}D*-c>CU)@4au{EHnFmejJQ2 zrk!B;z&tSD5IzAIa1K@?;vc9fZi0FMH-{!8BRzr;wwbq`*vV&&`?G&@H%boZQEvx> zd5QF}RdOzbNUYdaD!r%{ggC0_>I^G>lMXllHEw?edYR>HJYkDm`e7 z0&Pm`ArW+f?pb%FY zf}-HfKf!|@rGf}5dJ%7e7jK0wDE1hnR=?Tz)@&0Z4$PbPz4>P5?VAbt^z-{#KT#w~ zSfDXzya!7H3K@Yeu%n9{;6TVej)4RiIf<3?u?XQ<6-VwRo=8tlv~aM?syv*JV<&rw zhS(XSJ8S|G!klwTd3#zN2(dn2kY|_jKL{?OuqqRz!~M*{OmWI|MA@Ft+ZiFwjs10E zv!DV}>hL-8`JdiLq+IJ#3Ss3$wlpPunt50R%jck z56Z%6_*}<55JRtFZ^80@92yqpvTg_;{^$OpQC~7@-*ls1T`?Na`$x_r*CM~cGUuo@ zNplCWd7ob8OL|ePipkAfL?b(yd>!u#7R8KqWpW|!S&R7<=@+@F9o6~Jb6d<8%*3;F zGWkm0r55usGkIz|a&owLu*ID1TAjl^UhocBsgYhaYH#(+Z?gNf(Yt&?+GvV`_pDc& zM!mdJt2QH=yBkh^h>r58M&4&$pagP{=JGGoXr$4NR00}@>PDlY%iwA=s=3_gR=#R8 zrn#*yRGYn;yG1c%qGBQl?$g}E>s&#NqRQXi?PFjEm+Sw>m)vF^kBLuieOGeybdDHB%3GR4(${<@R5NlXi?R4SD4N07065)U8;Vk(81 Ov&?G&S7gh!N%RM4%O({;0LTGCCs-Pj-ml~{3E zg&sWU&40j)7Y~AhEqe5tlk_5_V4=t0q58eqH))#MgAd+*^S$41cG>U0clY~*NSqLO zK)a#IE<7?&$XV!favUQCiiM0a8jhNRlRL z8{eWHmE6XBT>4N+rQCv=^X(-!PUxJk&h<999xdBG;z=P2#zlA)Ite5v zqw1cF%8drqmeB;_vgw^mnjo+z-4-Lm+&0Hmw`KS>KG(J~Gn;d%5!^iY8#DdlfH2qi zOj~@Sl}(=p^}#F+o@J2wyu9|Y6;iA2iPY09nIlXeVfrYC4XE=sEK@(2Br4a#FYSeg zX)A5m(RFF%Xo6b8LoK()W;RnJ@x114YSkth(kqa<_d0!rJEM94%BR~w|7=pvK{plk z%P`SmVPa`@t@}W#KSuxQAsD#gMG;jR&>)@5*rbsZ1bdozpx&1Zo_aG3kMz}(yyz3deH zM(*LzM#ZBJPQG^ktqwlk!B=A5g&nk9i8(WXnhR8MHSpXueYEp=<$4eBODTDQagvb@ z%YJDde;eice#uvEWg!m2KhksT*170<$n{-UD93m0z|}RqQXYnR&UG|HcgHRkOAbc) E3+Im%00000 diff --git a/objs/builtin/ft_atolong.o b/objs/builtin/ft_atolong.o deleted file mode 100644 index 7aec77cc9b11b0bceece3b985b4f8f73b93df267..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1748 zcma)7Ur5tY6h1T4Rob0YWDqG4RK(26pdiSoA6zIwBB6)my5`iSZZfx$KoEW|TI(Ot zLytZB)}JTyK{A8&5S4Fx@L?~3gUUfKE3EaM-@U(_mC|ANp8K8i-S3`z^ltCJfBsob z6cxWWfOl?YCur6M3(XxM0q1UX( zwR~7lgb#x;cCINEj1CS3f^n6ITnk6Kl{$CE&9Q%JbjD2Z5yZHbBE(o1W*8bM73xzx zvA|%+#VhM;H5ZxGX{v{gdp8bkBI+|K#~sF8kKwdMY@{j-Ha?W&^;Jap&Xs!HS)Ms5cjy@f5eiFym8uEv=`8@H`4xAE$-GJ zma&$&<~+Y$tT9vCTI!rN{W1D2M;!aA^$&q0Cs)Lh`w=VCpIXk&t$h%mSZ02%#yq34 zFg5EqJ<~yhmKg;T=~^YfiQiADWa=Y2 zwb^&0;&d&)X*TBJ&q5PFG|$xePaZ#<)}NZ!g|%b<(0ho)h~b&K|I(WR2UqhyfJeFh zE5@ILuLM2_5A%0nLcXfi_(tR5oOl!bW)R#yW9eYGuXP5yeLM*)m}G1>d>N#(8dsnO zZ7SFo3ihk$)ljTwAbO1qPDHxhKu=tShr7eQ;W(+G!0@oTJP?TVtKo2OgcOp2cyu5d T=_S>xLa|shhF^qk=iB=il9PN) diff --git a/objs/builtin/ft_cd.o b/objs/builtin/ft_cd.o deleted file mode 100644 index 8f06b119d36bd66d7d7404cfe2d981e757e4cef4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2756 zcmb7GU1(fI6rRNVY?G$D{uEmfas$>DE*JL2NA)S3JM}V_!6+%w82y(A~f|W4;h zIp;fP&di*>cW?gv$5tz24filSFq$wzjd&OskfRuv$Z;2Ws#!TsPz)r{k(1G&d?Z4+ z_Oz?!NFG2vs{r&pG&3VLJag*otS*B>$^>Rl;?u#+O;#3pSOP+#9! zeK2L6Z>B}%(<*CcEE&uRpTIbRA+I9b##%5)Xi>5+ppN^1{8{C^O|FgZ# zy}1dPo)#J;mxGx)q z`v-8S8~o{8UhyiN;bIu;`f|=M+@O;hS(I7B?TK04F9!MrN0zH_Z+MmaIKJ90sNN#F z!i&P6TSeC##kRi+>dRNW=xv$x@daFyfolqP_A_-qsvlK;v{CK8uxhE}FL_w`RqoxS z=G0pzS5Fx(dA4w@Xa}7ycCmB5K0^K63irON32pvNWnHdbgFlSs&O`q}(e`xHPQ4NA zuM6>de^<64=uq!R>@6~~_(m+7Wc>7tQAV>~!;1GBq#EgrYh-P=P1}!UdySVeMmA?9 zjYMj~HZqP8PdT>bW}LU%*y(}(!B_ejjX-`^6Y9TRQqkHo%CpDct>0>|Dc&CctoDC$ z7k?kUBq5I|*c1PNva^PFhFHUNq#<&!H8cy>!>~VuaS5G9qU&eu*+Y@{8lUgL>rx8w zXqSVVil_InFK+_8kW1Mn_up5E8KysO}y*i!lQ{`T;Ouz&o@%@=?;s>8>D z_&J#m0`ZPE+qIoOCScBQ;=b4RIjw&I#P82M55z0qbbz$Zxc1Zc6YmOh z3ulS5I(Y|3ykCG6_bm{gR`YWptw(20cpgaWxB5cRWIKrMzxlE+80&f$` z&SohBWNAvoQWH5F^Mot#cPpNo3Z`jm5_17-%o<0;xF9YQcKR)mwPTKzq;*nhH&Lx1 xnZchS{3o*U9Mg+inK)^-Yn_YlPB)f|IWS@2+*CZ~+A_1HECIwOCNdUd{{c|LKGgsK diff --git a/objs/builtin/ft_cnt_args.o b/objs/builtin/ft_cnt_args.o deleted file mode 100644 index 956932d211c8688930bc174015b3f4ade6de4fee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 700 zcmX^A>+L^w1_nlE1|R{%EI_;i#83cYAdm!N3lJX%SO68j0aXLz1I=UrVUW2X5FcNX zT2TUFL---C5g`aZjAajHfXoBA1rAsk8sKaoBR)PkKer$;xg@?cuRJp^B|hHA1zFw! z%29yQ5=;=cQ~+tHQ-Lf5h>uUrh)*j@%uR)e#mA$%F9E950ZLmy&4Y3oxEUBSU~CX= z1jG_R47Q7(i-8S@K>%baNW1~a0I?SU2^k;_)XxwA#K-`o7lx6=iD8F&bUyXyto?D^ z^$SS3N4M(_k7f%7{uWsvuiN!Y^8v_}MO|fENrVMq*4SxS zknjie*h3FNAiX531^ZaXgX3p5I8g$rm&;9QC&YADr+1<~(Klj>% zP>u;K@CaOO!4iYR&cX|n_=m-)5O$SnU?E0NK~DY1q|90i*(dY%}<11)tDW#Q?$;{Y{6%-uQx5Dfd?)RSiF%%s_q{2PLoA5Jm z|5a%1q7_a?ZRq?Jbl@YZSZ*VtUJS#@h(k`bq?I3y-Tzy{aK0P%kEr3~YGvJ{!m?ha zV7R%OQJnXTVxqc32d?fp8}>%s8S?C!(DGeANv|1hKg#u5Q3AvhI zZMZ%&W-mk)ZTWmy3kYT>!Q$PQnB=W!qz8@Pps}5+3T>H*Qw>D>Q}pr2q}G#149-evE`DY;BPh)^RYLdsC=UukW1vyj+& zp>Ms0YI+fsMJ#1~n=ZYPZhT^E$?v(vkTj9dgphOiE6pZ3%IV3pCFF#(GMU*7{uswC@dpn`F?0X` diff --git a/objs/builtin/ft_env.o b/objs/builtin/ft_env.o deleted file mode 100644 index 49dd54d285d85e45dbc6e0cabc26ede30343621f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1088 zcma)5O^eh(5bcc1?C7eKgMxxW3ko8P2T#j@u!~0epdzxudXQpBG9Th3p(pE(!hkR$ zh9LM;7W@ec9`)#P4=aqIut$+aeU)@;WKc%f`dk_UgH?P}T#vMbX!A}t2J4>*bE0~ic z3j5U6oncruEYA1Q=&Tw1ZuATlD?;>b%yo_xcjR#`;Nr=arZ^- z+A(`~+o(Z#D+1yhwC)?c1w>8jM#)cJ0^*aj&H|T!0Pd^vKuunZ9R^mYIJdxg-fCVg z@OH^-IHNFrFV%WM-IQ>1f)`5g=cL7!AEngMy%C5GLkh_6cQhrb7G+UaP>({bV~rmq Q2#cPF@gO3981O;A0dR?w9RL6T diff --git a/objs/builtin/ft_exit.o b/objs/builtin/ft_exit.o deleted file mode 100644 index 07e4482a3690f2e166f236d901a8f3f01206c580..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2592 zcmb7GO>7%Q6ds2rH6_g&k%%IJYE*;@)uJ>%BoRp!L>KJ=qX;EZIaE{2*(8SeN6wlW zkR=z}kkt~%fdeX+A|%v9IdH2e3V{|G5TZQ*;?RR70sKa_k{TTczVDje&SNI2kqKBjMb( zGPdkXecU)TzNLG;A|(PLJ{mg)k{}uOu^fRXoJZ#DR5U)V44iN0^LQRs{!dh%-guR+ zry{>dB9;tCY@Uvvjm9TAf9~X_6P=4HuM5g}1AJr}^E0NXw^4F#&G4yIIA+NK&H0&X zVakdx*(Ujv%I;xo#_JRIpdCUJTcI6bZD=GkDcLi~Lj%s-&Ddoi#;KI@vYTHPA+bXnxbp1S-U1I!48GvlXE@#!AU3(|l&hsFORNUGZr} zI!)%nNFP@2__By}vvtR~DH+`CnwwrR-HD1DDtjhLXy&hVpT0Wvgm$<xaGQY;Oq7Dt7OYj_Dp8paV%zvXM>>~P- z*h@Ei(=mQgcB0FGF1;cQj!{NQOe?%WRARD>e{+JuY_rwOuXSo~O^_M&i+M#fDs{d) z_tgd*#c!P-H1n@>zq5^vjmQ2p-4Pg>qwO8yTz8BgReoYyM9IQXy^p36E4nIIROYP~ zQm&tqt(S}%&4LQ*+LAy2x2_cejruXIh!e$Jqn2OxIYzDOMVpaOEjR4P3YaRMEZS11 zf2kXWp`W#PX(@@=bL4LiY45bdSTfdeXH^Q=V*VIq!$YUWHP#zenB^3-g#bvG=A&6c!yN&-{$VRM)@gYRa+>6NpABg^u#ttLS@q( zmZyczQsKmI9=Y8|$h9zX2Czggi|x5mp;ZxrZQA1QliWx_ta!Paz`9`Df~T)qnW%k$ z=|ep|y}biH-Mvo^_V*18^bd9qGAorzq(JBiWe%Y^w#lN>PDsxV{|#mNNXG5(=fso2 zSpOdWW##{R4?jJJB)->PV7^Si7iiz_U&Jhr!1f^8`*%<+MCH%e(;a~~Tb?&lHI5#_L;uJ)RnM+*?;-Ajic@v%8uvNkE~_|I-;TH#_8Ci{hkyqe8+jJk z3Vm4GyN&_zZr1MwqHO&Zg8jfxfv8dc5J=Fu}?{~hE`<8A?I+^;|y_Y)AjT~rSqP5p|}UkBpTtE)4mbLcdlKG|YE z756w0F9`i1AigVl4u~n+&L|vJ7*q%l{TtVI=W1w zn-a>mLEZe`dHy3!e)?}{jHhp6qkgeTf4)iYYtqk4y@g&$By(tue2h=ooSt9NiNtLl zPEF4-9-ZUybd2L)29A_v@kt(;38#2c7;JLHBe5i-aGrR@N^$#aLU6z{YsHx$(|1yTuNHnB=0+ENn^)rr6LP%CoFp|7aaaS+5)= zMAWcWlg(oAA-?v|9_s&~?oD%i*}lNpe)>!{mbCd z2V2A@aZSvp5hx3{V&%EaRnElVJ!H)E|1-Vk1EycuGyPKC3=C*FRp%PMv159bI%$hs z+NVb`$ul!4(>LmYvE#3M>xcgEj@QKWs~lgd)Xk;RRydI> zn1KSEQtd?w%Hc~5?$KB~JUomy3XB8O`*YyiKPI*QMNXxVzh7x?8v6`Em;250Fff{? zS55w`3vi@Xv z_o=bF3f8z>)R<_?U@Bb1PoNQ+4R!P@COcpziBsP;{Y?;S9m_T!i@(uMtT7QDMMS*S zL7qfwty=#rbsin}sZtMXc}?*BGNc;bgKcwZZ0mQvJ<)}bdFp0>#+c-E#wm1ME3O@gus~m-?~mi?etRLg74YH_3(`{JXO8p`%9u568EPgTi0@jv<{RKVn zPU{P>2)KpcScTHW xtc^}t_)!*ftWq%=&f57Fi+iQ)ED6h=pRq7iqDjZLNlXdbaS9IpW-S|QcmqSSx#Iu; diff --git a/objs/builtin/ft_export_check.o b/objs/builtin/ft_export_check.o deleted file mode 100644 index 745126b760c852d491e36e8d46d388a4a85fc7ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2440 zcmbVOZ)h837=Kf1m(6Y$WyARgc8a5e68|Bhb%CfmxDOUaw}OcJ?v`AdbLl0!TxJo1 zg-d3;qf$^o@Jm1XQ9lU#Aa$}~z6k0!@l$ClBoHAVyLGnyp1bF=q}gQpz;n<0{QJGX z_s?DO%dNk5_6ZStK;Qu#hQ^2RP@#~=pbM0^hm;-+6DOz#68XRsq=ZKzrEAW);W+fq zYHy#t<42<irTR2PrTt=E+1NWv1*pmOaA(Df{sv9Lf3bm}k__bR!r1GR4`F zk#S|k{?M|sQoePno5Y~QyjD1PbVP_C6c>V_`yiz>^D^fcvu4<^m)|mP%o^iejquoi zNQgWS1M?!DN1?${CAyFz@lHAhV}~aB&BotuQIJK{;7LyRbQ-j z^u}XmG_$}&s;hOGGcJ$12Q(1lK zVQ)t)Xd6oHQSR3>lZYRVd$-2Z$`?PS7b+W9w2iN0N}bl(I)sO>HN9)GMXlNTc6WD| zNc1!*^>Ie>C!5}nF+KB}vO1dZZl?O_{6T2YXf0hMI>ky{SV6L+(r1&0_>nm-xG1cQ9A1fGi!Tm5tW5Y9!wxHCQX<^J(g z{|7(4P~BEmwQX-p_P5gu%U3NRblxcE1wAHIbFNf$+zEB;c=>pFY(lk*u4<^4jDnR_ zt*mLgR?ae=1B2E7QcDYu>s!$_hU^s{^V8k#9_aJ#m6G~3EMeX zyo{-fuy~J>AHbsZ$UE$xVgLEiCdXj$+mL*kzC7=90&nA+oiw#TQpwYR<=`a{F8Bp0B)d0JnuFJvZfW-dt6 zz9eK0zw)K5;hN;i@D&oW

    M{gDp+RDLRN+Zq!sNRLaq~VrNa~yx{~WR@o@nmDwm~ kUaS}e0@;#3r50IdXog#=x2)pc-M#hG;K#2A6qBsw0{kH9qr$U`> zONe-d(PGwig*W#0$XHH@=bmXPF^TI!&T8Rd#G_Pa;*9AQtP3fGGb{#6*-=M1bmn(X z$E)gii#ncW*)GP0qdDPY82d2fRv0_kb_^m~l;oF?M}qJ!#+HHbXD?z9kqr&XmvSZD z|D_BMe&zmehj}ouI&U?|orl&c5Bn25u$I-llBkiwpN(;Q^)fPIl7~T+`x8}WobD#S z=~ReRq^eH#&@D4#@^PAm6sxjN`Gx5!w=)eMbS)`Gf1DNzy@vmNEbtojxn{G;!-;CN zObtv;`$iN0>fsYtW;V%x-nv1n`x7^qac1^N^IXh0P3@^K;Q=MJ8l_?htYNK&>4yJZ zERaubFLA$b5lNqgku2U$H+a~$AT2Wue-179k%vd5fJ-%*HT=v4~!O7mF zAFVR{z6Dfvaa|sL3o^sr9|CKIhZ(ha*msjpdo@0t(K|4mx`?iwS9|MEte~SQ3Zpjv zJ{ghhQ=hfX>i0(CFjIw!-ZnZy{hmlQojTbTuia#|aA-Af=mM)ze}YPtWez@K^i0B^ zF{7tHsuzb(`p`{Huu*SK4c=?I-s44<2M{LHfqL zRizAcYpcfPJ#qh5%9z{@VQ5ul($)HP1aEO_Ytf3>5)ZD)#n5w{QZ(~^xb^;p`jK7K z^DvFYV)eF)BGqvGqBAD-Thv^#JRI3KEV>UBfKNcvU*Hf24{YIc{>Y|t-i$uG)ogMOA?RG{MuHt3W3e)#4N`aMd{Vkci_ zu}UJA=-v^ZL6nCer+eh+ZQA-~Q|Hgvle-h|Z+ZIe=z1VK{5{yBw$pWNYL|!IrN31? zUC*X=AH(j{Kgv$mwW;0L6i?gf`Zn18jQa5sH7{s9qwyUew#e)Tq89Tu`bhYx#*Z{k z0de@ucY*lr9oPIDnm?}j7c~E<=IK7hZ|{Q&&8i~GcU2}tW-Kn+O2{1OO} z`8g0|7V*HbKpqUG#l(=#+Aics<_bHT&lhae_#eXEZFm3x diff --git a/objs/builtin/ft_join_cmd.o b/objs/builtin/ft_join_cmd.o deleted file mode 100644 index d1dd24350d980462431459c5d14b02bea7b2198c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2320 zcmb7FPiP}m7=LMNcUE^hQM&jCp+N-&$x;Om!Y*W82cBq9WQ%(#Z_~-N$!@Y*MPOuaz3<=17ZTsn+9I|CeUC z`v-Tr3GUYW+^hH71mGGy&*(YpF>dzPkeEp=ca1i8>TRYsPe8|4&h}7cXhJ0Ss_g?m zk9_YWW^d1*)~A*Tl<8BLyvi4+d@Z9#dSLdMzI2|po&lUx!l_Ln%aa2d?$tDjK5F#t zmxm4a(ujBqci7>dQ^%nXmvPO$Xjg*ZtM`Ip$Wo+}!2v*x!St zb@uioc7Q>p9z3D&d=Ad0Wdwi?8#B|r#u*JKb#6eTuT5&sZbDx=bx3(!Z_FmqV=wUUdh`myI26ZmKcTH9~6h2~6uAu-e`< z4R9L6mV?~sd`iL2o$1-zbD66-N;yE8a4%ou0W~Wrfyx9Ovinla*z=*~kUg%xK6dDL z$lg%)A0A?#RQR#$@3UAf9*dtirmX_y1?Zn8+dt?Elu>@{+(i7dk@F|<*^)$lcx@S1 zeyR_4lwSdUtIALHbEMxF@VoJEm{;|6q~9(0`N~iAcgSxPA6I-6lfPjOcn_0bf#a9_ z2|c2Ra*+SK;7}#s06z(SHq@Vb5gec3oS!j|THIv0zmM{;Gv(SC}Z3iwpQu6jr%hEDNiahi+clZ8M|x z)j7C_adU-?eMRJL0$?I*eVET$;XVw?R!dQQ!Lk`VOVx@fSebdK%a#QcmC7t;A(=VL Xydo?+E2AzKfov{@f|)54iYEIHkRkxX diff --git a/objs/builtin/ft_pwd.o b/objs/builtin/ft_pwd.o deleted file mode 100644 index b53027cc31eb888e1006a44bd3ba9ef4eb551c26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1116 zcma)4O=}ZT6ulE`8f!IKR8deE`~Wvu=*lh%79Ds<7a|q9kw-e2d_bEClL-xlpe0%i zL2%hc7y1uei7QbQT>1~B8=*plSq?7LbLZV>(}3WGJLjJJao*$3`||V0uW2IZ7~un- zf){f5xNz8c_%km2!(6Fd;~ALc&?I)&W79egda;QOU-nj(54nxrNWgkLt8lRy&P~x{ z25VaToj7W?>XOjG0gie zVQEW1%+o#ixbZA|emwb~@dGvdrUnPD`s}4V0!;V^sZl?9$D;dLcIc&Q&`+uObe5Z* zFKqrTjryq?braJ!K+BUW+%oE>Xj?(}S~So&^bVx&ll$-^&PWY?``g$fHSZse}k8vZK2-Oo5vg~L{RWpJT!i9W_FE{f)Cz)?|bi?H*a@#KK}Y~I3q;in7{)* z1>feN0*9T4&oMv39+}z~gBeFp!Onfzh+^4^b*%Z4{b1=2&!TrG;C?*I92#&RkS;@J zL|)izxn4}|;OSc66Wv+JYK+^4)C~5EdX^UYA!IY436X5jO5`?W#{Zu0K&M5+;3w11 zP;pA+C6&5{XBn_u`2vXb;vRh5Sj(>7f4uM?aotJ2I=$}| zC)ql1lJ-w0wc)i{C+%26UhgFK&`Gz3iX`^_o;~1MQ+sgB-Y>nr#F7+iQ^>rVt2eN25{Rfwj7CZ@03%(>MEDYX8(mpIX^T_Ov9|ri&PEzU=gNt>qn_ zDz}$9GJjQ`&VPdIN7T<5Y2o>OQRr9&>-5ZQA6+gZe*r!`#MCg;Ux@j$)~n*}Gt*`r z>lWZOEgPAA{?WaK21i(Z1Dpc3f!LP3Q9Nk&l^;r{xZi|I+Y7LeEU F#c#Pkxl{lE diff --git a/objs/builtin/ft_update_env_cd.o b/objs/builtin/ft_update_env_cd.o deleted file mode 100644 index 7a3fbd0099b0555a19e3e36d4f9b490f9a80c11c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1284 zcma)5&ubGw6rRMIu3Ak%D-k>t6zpXoC>|>oTNpv1NCSe%uF(VF&AM4g?K9p)$i@h#_fXOgE!y%`OVv%nNL5z@6R$;IK;3(XP`zA z%K{W~20Eg|KcuB|i_`;2eQ+{T;v*5lmwjK^%3oi-z5drvtzX(8KI+}ZU~?3kVNVEB z5yI~IUfXTzfDi}yQXZOt3c1UCZ`G;67-(ju1Cirb!rv{>}v*tbvax zCs=gq0HqMJB^sW!Ayq?uzD3=1Rr9TBKJBt&_?4+mcoABKCT-=TtOO;YO)0*I{v*H< ze%d1-`q>&ZE7VJBWP|@{*LnDb55LuTIN0N1FyUc6=EK2+m7mg9Fk@DJMkmF$mOcVv zBIXgQqhRuywpEdEb&TRMice<>cvO#*{MS(uMN!nRrW_M(+#K_8xymDzK&Q5<9DT^_#2*gGlXE~eTE-{g1)=|%%J3?II$-Fb2MscFKyrU&(P~#U!k&~&G&O_Wao~X==sK1!lS&&u><`6q%W(hz diff --git a/objs/builtin/ft_update_env_export.o b/objs/builtin/ft_update_env_export.o deleted file mode 100644 index 873dbebb6f76acbd70e0088001fdb00bef1dc7f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2644 zcmb7GQD|FL7(S`Bi#mHdTv-KK1NtzKtDWE&>Y#NCTyRB^75d;jhUBKHYm=DXt8s9# zax?K73R8UWMF`9%A4O0^rMSY%UJS#BA`CLDkbpvvA#u*t??30i=}po-?5C&S`Tz6% z-}%pfZf^4Ptv~PV6C!q>z(0&(jQ9}#B`{!*Vthyocd_~V^}-R#frUOa1r5?8lhU!v zj-G4(OmhCrt{={Rp+aD!N4cvId7J{nVwE5?Dbp)XX)(XR0V#X+LLHV9x4F(RpUVwh z)R!(S7gK3Ry7_k&^BE~mpXx4Rvc*ERFgPLvg+7Z5!O}gFQrbD0Ev1%iozP!jnH$q! zy&CJWD;^Re7tRTv!I;2MS7AITMli@|Q;M&nj!|Ik0U^EyB450MK}K8Apj@gIlzX;0 zEBM{=|Cq7@uVV#n+Y08IR@G}aNhwHf)4b|#EBEL%D@bl3(y^-UmI@(I_q}alT%gP3 zrM6Wik=eSYR6WgY9qv-}vb7efgd1A^#?;x%*{6)j3hghl7rDM^sxNSFT5Bf`<9foq zo4$85W?VQ4>Xl@hGOTK{W2I-?#*YW%{;emC3N^2qZ2Rl6AlYtR-`Uwgm8j0`ROj?5 zafW7VRpojerR;Yg`kam^s!|QSh80{vllbT+^&Mgj>PGNWx2D$9gPC=mxfyn(j-1VC z4pON0COR-3?Es%Y(Q`k+EcWC(@;hk$amx0+hA=9J^yYjt993=EI-tXJbLx6@bi6N$ zOKa#7{f)%g%f_UL_P_gl(EfV24JD97IpqnJs9N_zB#I5uLL4mcwsaGA9}BG2!zN&7 zE0~#R%|~bj+ z=;76*zN;`MPl>P}y`Puee!Ll}o<+PSZe>RA0sVXGMz`SBek}|E?$e$Zsy{#C1juZk zYNQVKSdG2EH4d(G#JkISg5QcU%^S#{qL(P_3k?J7)O51g`Bz1(JQf?+yN^Q19d5qH@k2o3-9bNz_ZQ<0An~sOiT@@0H6Z@R zE9|>KT0afMcYyf_5R&FU=q2g?1|;2I8Gis0?>!*t7lD-j68p#4KL8}&4$exvZ-Dq_ zGQR?1i}844PmcoY)nW`V&krD--Z1Xo|kXo6YQOcTF<8?9SGy zxSFt8>9PhQ^hKZg=8IrnL}`T<6Rd(iK`8hlMo>tw!anq2k=Xd1xpy|ZllH+w&V2Vf z=iGD7{h8VP^v~Zn4iH6dBRrtp&}bJPIuvp*^ej7WA!m64zq=CaK0eV3FUw0_F$$&)o#m( ze7X62(sD(~c`NIrgm_`B<-}k@^|hdk9`dni1&dT`>_{nuoe}9ma^98`!u@Tid|#@3 zO_fhkx|1jqj2Rz=_Cful&<;`$l!c43eHDG&4cv$lZ2~c$CZH@lhm}imuf5R!D<{p` zpJwHnZq~|8vz~yC=+G!MX4Vp0%65Fw>w6frv=1IY1#@}$7c^)tKYkSuzr4j&FLl9R zOZ?#zvr^t7ZRrRH*EtJk^`gG7mbl(gsp3TudY24E10F(4&9*dE>;c7heM_Z$9l`g& zP%k5mii_{o5}R^Hy&Ozk*QeH2)cUZN*7}ZNU5!u&G197hleRT1qQh7BVk+^A4YM|i zjp50>K__HG&4^ZgP&OYp;@{PNyuc^uM_hV0810{nvUm7%gRWcc*Zp!ae@eyU{$A@W zvRD0nIO3OU-111>+z!h=yqdhUy`h zuOxQ3*KHneL)pMkPwbeB>*q0=T1yXU{Yz}5_VYyX5=ss8_U`R=1@)GAN0irMFTWwG z%}`msT5T2mr4AMk(oC|Lc}g#yaonV*+l4}|pgVT5pqCum%iES~r*tPQ@8N*8^;oP`xT0Ku}JLDf#?dd48X?U z+t?1y0HXRM8tsj}-}T&Ke2#tLxH0IrDo*uz)3`arHU5?PRKGWkJBK*)hKy5v?~D5j z>pDzi{0_w5(H|6FQ+x`DPlPcBgc$umd?}4CAijx46KjkDe^q!;|3z zVy#9N$nyk{=M4k#XAI(jt7u$B5!@Q%dmzVs4aA#je5&}zK-?W82gHZNcvab-2WsHY z0@2!0{+(i+1|oIOh(cWDLdz89mUeQ!YqlR?TUQT&5%gW6xB%P zl-3~sT++>+wpD=NL0aZHZId{qI$+Zh58_5F@-#o5`Wk4%-qQ)6MgWocfR|bbMCq4 z-gEBm-u(UU--j8CJize5h+@R1@JV1m9>=&$hX0U7S^!y~HIRTKCZi$EOo+PHtdoZ? zLY&XMbv|GRn5IM^6pz-fPBZodDWYtXAP^zcTHVqsC8-F<3*sD-_Hr5c zQO&D$(WqS1D+M85KRq;J!ew5oQdvbjQl)T6X&MVDgjNXm@ovd@ zlCqVm*5UgM`-5AYa<{VT}JPIqv+z z?OvQatpRsigDwT&ZU&^8;BI47kxschYJVN!>Th2m9VUHq@I9B}&MPs0T{^|>W{fFY z$0$^1=||)@5;mQ(n{%+97;Z$GC^W}Cjm*IwM3gNm?%vDv!H{W5?{>(WDQ(X?9(X@{ z|KL3KjrfIaWgeB6=S|RgoyNVLOn)Tu0(UZ9c?fu9?zovgce6O(*_697XMYnpbxY|y z>7_!~)#$ppzMH-0oesYC^@x+{?|r+!zmF()yrs@Et}(b*`$pozcJYKV-=s*K@L6H`AlL=kD977thQoo!7iADH+DqY>(@^-rYvN;Y3c^r~n_ z-Z?4I9aj_JUr?KPF5X4TYGe`b2v>86_k$nrdnbaVC)M_;eP!zf#IRdkTr@Qr3QNuB z2OZh-SJ<4uy^n zq3y=RYcptUUprynl$z^4PS`0=lE|fVEYgfe;>QlhuE6VQ=;$RZ{)wi8$o&~xo{7IZ z_3A_THR}oaou=7ezMstFU;PZYm8GA|XTtA!6bA1t`3EY7Us1`sz$3t)fC}(4;3L3~ zfoRdC4<&z3@>O6A_7xz0W|#3nTP0tT{65Zx!XTUI@otFU4)ITXK82ci@}|!vW9(9hyCF_z z8$I9I5T6ZkCaRWM!rx1wS(a%Dt*O_UxR}@LLM`h?fy}B_t7$bR73F-TU}zRmO~$ctjnotm^Dq# y{XEw4h;3>40=(c`lIf{t0jyvOb)zs0J5Fl&=fu!_T@k0q8-}U+X$4u~4*mgEnbgbx diff --git a/objs/execute/execve_utils.o b/objs/execute/execve_utils.o deleted file mode 100644 index 5dfdf935d2f70be6a96e8d5a89a0b20217ce168c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1832 zcmb7EO=uHA6rR-BrrLHRR8UcxgQ6Z%QbDL-A=)mipioN1dMIPMyJ;5FBy190g@CY) zx-LSGp1p||@ur|4EqL_mp+YV~3lVw{38glEZ+EsPX^Z&a&71H2eDh{zXTNOz*zRF0 zbbw)ihM|!z3^6F=IP@t6_K_qNLe5bQB*5Tgq{K(Uc}cfQ{@lmY^33#K9Lz2W9^#|g z%t6K^3WnJuGJ$Ze7E7j)n->nw+xY^XK@m>{jR-833Fy$DnqMfS)Dkb}?i)Fc^Xn5k zK};q^!5!hWz(-rJp+9j1ZIqnr8J;#%3%Xy>+20$Hy(IX)3O)hZVQf8^lf3{v2KBB& zI>fr6Bt%302Kpe+i*Ck<6ZLEo+A7p1Dc#He%1y=juGsa2;#4*iSB55I&Wu9(s3hP^TSqTjn;AGx*x8d_rs{RP+i{e!irnjaO72Q{#o9l9j>P^*p)gMX%qf} zEhTn?N!30?g8UK8-AcWMvmYMjgowP2nKq9qin{WaVy`4-m!%;l_7@%bg&j7qAT*h9 zt*BRQH=0uQ1WG{HP@Z2rizeUq0>7hf#V*=Q6!!)wt|i(~eZo8d^j$-osFGr(dsIr@Vm!rZd4;z}9UH-VSUlh7+6$Ag;_F4NKL_tqv>PBUR4? z9@~lpEMvZpZaU#AVf$0aQNrtRGH>vY$ifGJYs@v9P2q@oj#+YeZC_1kv9yuZW13!6 zO`}lCo5T^wH-ADW)Fw57Uix-dd`Wm-?Gq2)edys73t7=nw67;ZHK&n(5}Npp4k2QF z#;y!RA9s!SPRuoyvgTM9!*Ni8aX)Ugt%lc&k9tp diff --git a/objs/execute/file.o b/objs/execute/file.o deleted file mode 100644 index 296c62cdd1efaa938472be7cfd675f2e9c89b09b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1124 zcma)5O=uHA6rPQ-4gPfZP@zK61wD8P#-0joAyOAcXhBK^FJ&m(ty!9G!kTDMB85d^ z844Z?UV8NCQM@QrNPE$%S3w~Kg&uMUQX0QEJFDA@;Da~c_kQQSo#fNcA4kKC8K)Qy zXde28hz*5YgiezE582YO&l*!3JsBzWB@v?GwHgUe>_z9^;vYL@2bxennx&2gr^%OR z8w9Bc;nvpc%Wgw7gGYX_BE;OSG)9>ADQo9$E}3Nu{Xj`HB!&=PMXZL)>t1RfpRc6% zt0ZAoK%aCsa-C%?4XKO?oMTW`W}aa~P!hV7{I5_<-)9U<&H+)+?m)9bxuk0UY~Vlm zT^@hq(RVv;_j%kr;L?GXZD=8*i5)xLsNHAg<^meacE3ygZ|ub%xx7HMlcO!TY$fFPT(vEozK8gVet{TaJCVm;5zo*&Y6l!vw0wIpru`z=r8 zeL)Uticf%fpa9~hP~x3z<2%!C!s+9N08Q;D6! z3`%JKY(5iS7}i2j5B;D4qvhjl230>;W5TW09(aI?=dOuWze=23n%~#8Zf!;Vn|=Xq CU$J=r diff --git a/objs/execute/parent.o b/objs/execute/parent.o deleted file mode 100644 index 38afe5fe0e8555cc90586e0a8c6ae3c0a1d11e54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1216 zcma)5--{Aa6u#q{>y|YJxft}rhmH2du!86ZOU5QlkkHC*>`UB4M;&lgbYvwEU1p7y zLFh61KYHDEE9kKwe?j{YB@`I=U_GpTXXcKn5Ona|?|k>1^Ub;Ao%g?g9L_Q(%`hx* zH{9#O5`x1{!*?k04|^_hi_`;iI5ZhK>5*}+t2Nz@ZN3^?U;WFS=+c-T_3mM?IZC=& zlfW^~Qx(0e6|!Q3^GQ8N$LdARLptD?iE&3e&?|0~k|~{63!7RY&H4Siqa=dsVy=+b zd<;F3^kPVnnvmpN&GAe*xuMz()AOy1rl`tSRj;it*jAwCjU+u|74vqG#`t;5VXXtgo2yfnwf^ zm@7f!wRGcy+EkU)ZUrbbtr5+5Z~vEf z>tKkjw%3gHjL!{Y(2%#UVZ)(J-o9wH#2^@r7&SMW7BLPQTl-BR(l_>`cC6ox4~IiX z!zH)oNu#s04A`Y}Sp#=3AaaUk)%2U8tCX@$ z+(+t~uv3CbPZCV3`6a(^*82=q3)nvc-#NsbFy}tAJ16{4UCYPmzb0EiEq>v7ESNj& zvoY`!IpSY!47>#5iY=7{MuB+A;d4M-nJ|EKJoL@V2ppp~Fh<$!DSp}JE@)VG*5-oQ zz2p6iZzeU}UU@2~<Tj4 Os=8W8=XoZLr~Cn|>bk}N diff --git a/objs/execute/path.o b/objs/execute/path.o deleted file mode 100644 index af253f23c2160a305a52e2081948f43de418e7d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2516 zcmb7G|7%-S6u;@>mg&~yhiyg>8&Gt=yt#>kA|0gI2XC;-kX8yZuG#C$QeD%Kylz1$ zPSZ}~V_3u=75onz?6;w-P@(Y$9d17;=noxqkf4tK5Fu>c>gU{hZoV~Pc-VdCe$Kah z&bcSIyLtbgM|*?_?GpH4g|Q+7_$07E&tQE@iaz8#p%sV82V^i}3R)D8NJ`%;`g*VN zggrIU!e)1k5&=;>^35SgoCINUiI^cN-GZN=$)00@l%4TRoG9!6;5>~#r)wbcbLVDr zDc6_t*^4vTX(>;QHI>*@IInM5xQTcqIvNpzLwAIf(#yznJ~iuUhwl6`+?aKax4c`& zV(pPL-l7MUad*!LY)mMku=UMh^v|RGna< zdZX!DY9QKvZCZu8QF~s2g{qFcW;cLEO`9yNYboq-X2U7{m^ib#%=yN2zVn;Tl@s^S ztLxM+&PPNSM^s#;y-ixW(U$hPmi8)XI}_Xo?V7zs!WvCF_V|jx-a-noGpp$%(V<0> zi0DvKwD)h#-XO7RW2qQNvARChRchF=pUS_qPFwj9#wx2?(=ABG9d~@gDUDQ6hBVQP zI2fs@=&JumO@AKS<{=e_+Z@;%r5{3Nd!zQ*_V%{JO>echZ+(q5yUvN?Mv8HLd@v4h z5;HRzS21XQRPl>X>+GS1h$_(IM3Y*(K%Z7HHgL!5T=`qwzN8Am6*E-MmE-@yq%(!! zB$_u_cgo>kY4DVCEU@dNsCTSv*K40s!D^1u<_`Pb->{igGnF5-rM%g8NpI^^wJ3PC zf{An?x=wYf6x7(i)M3>sFuDa zj6T+Uhd#-YTYdBi`hkId(`<*odNiTC)<=Ip%SGt@H$|uz3&r;Bi7X?^3y?pHReXS2 zL7cx3ql2-_1F!GL^QnmJ#%Q;t?YNGfcIRQ1VLPs;r`?yZOFY!^xUQad-@)#8w&VJC z*j>gGgZI~x;CMl-NpQ66;Gg(JfLFlrc3bpNk$eOnkaZ6|ApK2nOpNtCIN5y!j@QS! z2#y|Dd%-F0Hk`=+FL1(l82`+8mGRf$NWuC9oZ@G|DL(zM@Ss~XH;7|d;B?L{q1YVOI?`e zs$GA)3!m!3$u1mdJP-y~B)xooE-!QVKZq}+SDe8&?aM;$Jnd4h>lF$@p7VT}OZge; zWiRBkfuEnAZ*H^hY;*ta+)P%;0(&6F*@E&F(#?48d%Q1rsl1zEkj{G^4&hwfxoMAb F`ww{k_#OZN diff --git a/objs/execute/pipe.o b/objs/execute/pipe.o deleted file mode 100644 index 1abb91aff5c77b85a443cbd6b1edfec4feee0c6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2016 zcmbVN&uddb5Z=Vt2CXKFg$P1}NDWA(){9WY)EZpDfR+||Dcky*Ho=&L{J>BM6kaP0 z53%4s(7!=1o(j@p^<>q%cu+_{A$TZJV&gaO&C9PE5eH_!otbZDXLnyVZ-0KJh?24wqOautg~?lTF7Gi|pvEXV*E*@g;l0Hn(e+Lw{QGL26FRs$Ak>EHSUt?Hi3C zCez&4EIXG`k6b16$Dy{8N=2e-AwBmXVkLC;_kxqwx!xzP$EG+cMAV)WjzE1-^C~OTC>Bt?fR~gVwmBTDRLQ zXF$^nHQdJ8W&&ESwcdu?JiPMtCc_AKEh&vDd_pIsmP3s_>qfsDOYUOmvsDIF1aGKg zKVC^6sQG0E{j!KpQ7=@4XN6lsC^&3LpZ?NOls;>7LF9xg*WvB!b+3bU4*oOHKn?qb@cKfG9rr$R zjvvFbW(x7>A>93C@wksa^5Wp-_bndxbATuD0O5%m8V92F{sAD~qoFkzm<~l5#~Aw= zpQ2|M#TiF|#CI`%#M%^p4kUk?@h1C&Ku~-9i~!TV4D=vipEI2a+4i{x*an!=j}hU9 z&~Lic4tLnsEZd3ROd)P7U#L_%xrqM>6-lR)X%)%GvO;O`WF`Vg<`P+zils1*#}fB> dYDRg!$az|F9;Ah=(&pmvq$bpSE=B(tzX7n=p5Xuh diff --git a/objs/init/init.o b/objs/init/init.o deleted file mode 100644 index 160053959b63c18750f37b8f45c84816a5565964..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1780 zcmb7FOKTHR6h5hasntZNSW)OKTofVV1F=YjR2vwug(6kll$&%id0;vTX<~y^C{7ha z5Cz@25#012=*kBzv^(ua+*t&nLWC}ZVB>dY&LnAU79KeFyuS0@b7wL)pML+^=^^s% zBP`HPXm1A=4GK99eawY6Qe`Y;NURrwlUSLLMX9`5%)7oDPlaz!HDb?uBYQC)_i9~4 zN4VHYi)=hm%9zXNQdU9|O6}(Jc+l?1H$GsK$hh?k_%gHEsF7C%Yd&Sglo}ta7vX%6 zxfUh41wN)+#s+f6U6e|hNfpmUXHB=Eb-s|G-wIz6B+VlpBuYxjG3T)kK%FuC2dEp$ z!Ze&;#~kRPVmHwOEc=ttX5l$m`MvzF+|)}ybh{GJOZTgKsj&T?2YDC5vc*(-c>-yl zUJh4vdzkzW`#AaJ$^u{lK&3pamkZl&Y_A5USK?>bU`M8*E- zD@{~%V?(z`K9hgRK!;0H3U4w-H&8B*tb4<3>ZQ>E6gJmF8q>3@+r@##WZ&x)JabpT z0Ts}<=5YLcz`NV4+VqNlaI8L`bAI>iT7zKkvoF>GEob!)hP?AO@eS4CZJy;>4{)yL z9TSgqe`z$}475AfkJ<5nXQFdSv^C_G>pDN9MwTcd!OJ#v_lHMxwM~6e80CBXhreI= zefMsVuNd$J`g(ew0d)%blh9Xx_;uH6G9S_C;lQJgYlrZ2c7$9#SV(XL3*#=qGVTN{^G9Go*&PzAiG^|U9Qy%?z_Of%a_qgA z%Mx>qF|7=L4~uBFZvngu}{co1U1B4`PWjT)FkLWKRf$Yb4ox`XTNGCR^52*PUY zx(FWf-Z8v%>sA;>+b!wTshgmJsywU5EcXb>L>=Z+{jp6%fg{rSi-_N@6qmrj_CR;e%!n z#)hmbDV=-ZBg%mYW0LCxCFdf`$L-XV@D_yYi^=S))9g=5?bRA%I_lQf65c1x@nXfaicoBYb*_|f^Ul`jN0(7 zQB{nZzH5{dOkL2(xiqwbgd1y>PgT89`6@GeX+hmRcx|>()wiS{OKXW!c6m=x=jrnq zwb@-aTHXUc9oF4VE~)DWM7uqED)V+TvlKsOk3`8`tsi?rM7M%O?oN?`@RG=2z=H~? zyEXm5D1VNRuB%sZbKHKRS9QICm{)OnxS@XRiI(@{$@faKGQFeD_nnG$B-PhnD7dKa zyj9c%d{?&Jjj5(L%4-Vxx&7|w=*TUsNr=95B1KlRO%G4@1yzl%Pnnik%!*vDKh8wS zbiAvBB*v~&>GE2+mYfDXKU?y!M8_FD(o|kPW=bih#5&uf%gE}7{|d&&9~23Z{EXe} zj=gHR--YYx3gw|q?8l*(C-*s(*9T4^+d;l(p*Wo@7%zqJTnN(*3+CrS znDJC5!?R}5$=frG7iTOdRbqTXINY=f(+=b5tVmDtv0TcU^j&n<7{GWQ6PX3GAf%ZS zC1JypvWuk09iA&X>6}ObIJOX6+6DaNopHu(k;>#uOCS|d?97F2=WYD9GXk~#1r;bF A_y7O^ diff --git a/objs/lexer/expand.o b/objs/lexer/expand.o deleted file mode 100644 index 8255f19177a113c1d64ec1c9e1d4eeb62be60583..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2080 zcmb7FPiP!f7=IIEy3sbXhYC?D-GhP$M`DZ8gN3bjknu@Nv4O-lM1)IoikLDN?t5zpQQ6Oj)w#nK#y!2g$~c=Rg| zf1BXZ`~w~ZTRfWTMU!0~+r2m!es4rM9>WsbTRfiN@l>xzGlUPAxp*CeeT|>)HO7(s|LKo5s@AhPn9sz~sv5 za4vi(isrRD#id~5GkfEPVJ_mFu+7)i!ZKO8(dN;e?`WIT^KQlYaMg(No2~8bZQ3wY zU6@{*eZ@Sw09VFR^%r;Q$Ns8L1-*fc9Ujhin7Ocsz#r@`#Um%WS{&!jWY@e!MV~Ym z#$br;Zn$DZc6alhni@T9Dl zN2?mrDSR90=Jn==w~NzjR8WeJ^e>FMHYqhLC_THWlp5`N+}D~P_pu+=uExh_nbFD{ z`GW^?R}u39^hdz!e`CcUJwIco#`0H&-a3S9+9&cm4Q~IV{B#}v>Q{r`%p>Ke>)GRX z9Tyxgg7pO?T5o* zg6yjdUd~{8%hLXI<0A(Xzal-R4dtMb=r0Dc=~wG+Vya0stTszEH<(M@nhohxOEo5>dr359$#W`+sVpuA ybzd@ZUi!kNpAY^)lCY4TSNHIfD+775Q7btZsCuMZMzU6;L{h0xpe)xN#vTJ)>B-FIDL6O!%$vzYk1tD8177>hTO#Gd>_imfr9l--<&OP^h z-19Ya=i26P+r5lw4>3G|5n!|jk6|F-8Q>fVLSSl-5F8*Ifa2kk5t2Uw({${LBi4dH zs!tug&#TonX+ZvHIU8l{NfJibED;5!X_cH}Hh)5HnC5PO%8v|-{Uzg6_G(}8@K-oF zld>GMoc}nRPn+gj6G}$3A>+EBHjy0FY_yNDhsEA5m!@fF%;{q4q%DN)@l~YJnh>)K z(w}76ql{(Ln&`{Gr-4B$_#xMVEX88JD!>>fw$(!Nn4a2QA7_YratPj>t#N0}xm)8%9opsVS&b@jD z#r%dc5te=u?#81qS@UD=ZOw~a)wf98qzS?rPv+}ehI@JR*rjPcgwDu#5}onj=;WGV z^-b`_NOauYIKu0nz~1nKiu(ueN9*e%Ais=I5w2IgZg^Lb-Li}eykB1SmfFKa*1;+M zpu40Q*7tnzkSqdH@y25mfv>q2HBU4AY9lZYO(}8g5+73e?5eMqyd_GE!%%JOF}~Oz zbN?RU^_xLLC|A@=Hr(nh#_L&ZHGypGB92Fdeg0%42=5QRxNpqe9GTNscx^~nQU*Ru zzeD&x3AZf4KfRKeE3eG!D_?26PUULu#RH|GRP;vki=CaF;0zq8@!CjNUx#8rzU~Hm zydX4G-_K%NJNq758PV(-e6;%AULTRWC5};TLGzJv)ZHBBwP!;_eY_qQA{AT{6Bi!b zY>1zic)cGYmBR-iYG_c~ai{{Djhu9UxAQ$X$?y-|E-~PH*osBkibk{TN5Hx zho8ZA)*;0A*bR7}n_T7f1k75a*P7Q?2HoxbbNVW;4MQH{gaSOj1TXXYYHRXd7y9xI zr4LQ;%AvQ0wrqG;x`s&Kk0pFRnn_Hm>Pfec$bNX=1@nSKQ+C6GWPcR2Lw;QDJSAv{ zd{*8H10nJSxK92-So}69O8CUrptS#?+<#Z@-+_?yegP%Dw4Fuw%{qmYSd>z^nM?{%{tJ8fX1o9Z diff --git a/objs/lexer/lexer.o b/objs/lexer/lexer.o deleted file mode 100644 index 559ad547055a5aa1c42ffe3978f5353f5155c064..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2592 zcmb7GPl#JZ7@w@$Hqmw`g(7N|4P~Ktc%>DQ1sBO;AI!l(l`eQGv+?D{EX^h*n_wti ziM*ux`dH|p2X87O6c2(IDIS*Emc~}7?McBxbFh#=3OR=D>iYZM%**Ca6YwK5-+X`P z`@WfPUVh(t^6x&zLeDWw7}FTnXc5Bzyo@nV^caZkRf0dYPC&yaqd|TNq%7LyqFO8Z zwE5xbT{>7jrT_rskCt6Hi4tR)RR{$jrIlYjm$Ztql>1~Qmy+_mlYxwIQ~RlC=5@qL zv6REgFP2kU=Xt8`K3X&l!mgz;(x%Ba32e&eO$Qfox1suESoe5*KE|y z_6|UJW=D9;OSGL|LT;ihtOu2aDC5;vNY7jEh>cQ1Y%I0KM&hAw+`6O88p11wl{?RD z2)7=rJHkPMd5tnu?&p0`-Q1?lTSt5Rz}_|QLlGk$t;hX?hAt)UncKp-b^OfDG@r%E z_T|$RZmA>OrKWHbh{Wt73E?H0!it>ao73S%r+a}{vudk8A>TX{cD5FH_5CrTcX;)! zF`}cqdU%ZJ2(P{9i`KCh0`r!ds#tVY2E$Vk%<&rCjuUrK<3SVHcEx8m!oDHp_=jui z%BROTi;WK~!fW~@d%K`a4Heu$-`~*wEijos>CzwLvsL1;%Ml<|& zM~pA<8nujyhVGJo3VU|T+Pkmhss&fW>868xW9XmV`=%O3-%~iH_Mukr{r4`R2>mMD z+dtFBeyve-C`N?4*stgvbZ&%%b(e20s8({i$n#hbtv3&+I@5c;8>frLq9;Rdj4*n+ zsl9hy(nUuPT<>{D|mM6)N@M?ULe2!ORljO)&^%WX?^z58l zu`@Se9>86-po$E@eNB~=WJG>Se+B+ldL#06I^JjMU4dTwAEl?` z9?|=2+W+Pl_mCf&%lH8pEaP)ve3Fb=V0@E|6Q~b<#$ilI%lHiw@qYwH4#uaz2Y|oD zo@g-R5->iEMqXn}V|sG|2Gwgn@G>yDh-)0v7|7?-UxOJa1m`C-9h}$OnhwtAP0$?r z0ZFr`hG=>p`|atW>ZdO%dI~l3fn@#i!VvxX5Y1#Uf7Z^)WGW@ID{Dn2 z(?ywGD`t~=y;dybtR(op-pYBqz+~1g6UyZatI4diGD#30Ws|wHdTnKFYj92OluEFn jRj`vq8`~9Z%pXg;P{;B@)F}cLQ6^X!S&$MnNExHHYWSXgrint-C%?P*`MvkO&v%l4?Eg6$VN5y2 zu)w46Z3>~U&;UQLv1c{%rCdA-m8Yb|K8-aw%h0gk5;HSjY--Kh>MxkUWp%%QS?LmNfXJCaF9q5W>odg>q)u3UR-_ zUy`pT`L-pWgzPM1xiF^v7W@L-Z{ufJ3{FNv>3s=0@URb9rm&-*J%INb=_HqexTP_~t0Uu6{^UnsjA|u`*9ToZngC*Qx{<@fq%V z+qGMUr?(Arrp4oE=@8Y;P)V+;G0A^E*@=+T9=+ zxWe$R-wesOCBds9`3adK!2avkrlQ0@o^3zPF1n;uWTh};>A$v&z} z!EeYqspG$OdDOj?byCkj9sMKlOkNJYbW%eP!k8*|Y(Bn;od-4aiqSC>4$p&9gv0Mw zfdL~??7oSocClg!yRw*HVZzK==90)~Rx09gK2um?;)$@zTYPecr+0bQ0PX;)UowD_ulu@X|izVCHI|se(!hA zJ@>u*a`5NjX~rUtFg!4aF~6Zj0u$qD%-4w@FnXt?;-0ecc*JBhDJ~7pE5%wxt|fm- zzkDg+z17O2az*h7%db(!9w*T-yGFztoSVy6uI9}Oua-VsEEPC^Gvn!q)>NFEN;nHJ zgymd}F{K((DnU3eF7UZ>{z_3wIX{l?tjg0>PWvjJVhQ7dwm3jd<;rC&SKIaoHWUnuu>iV>&O}Q?}qh9!m!tRhF#q^>|Doi^o|p?zK_^Z zEPI9nk@We#|})0*Q^>wu-S&u^z1)z*gI`Vv7Y>+Y+eKy7U_n6xC$0XX zjD*9eMU79Zt#7GABuWPrvD48z`U8kqm#z=iq<8cODhDqGg?|R;EAZodT|2vLt?e?c z{svs+xn*6y#tE%XjdwyG^Rsi&99=Yr+O$hOOy@43iZ&48jL2QXzC94P#5&Wz-h?;k zM;q}R-OV^Gjgn>TFu07?9FC@~-lX4Rz!7RpoGu}w#&n(d<|MGH#-t(yjVZmx>GlPU zNv(m(p!caUCmZ^X-7@HS}$*J~43rX?4H0H}q{kjTeMD-LEQ&lyf)z zP7JP>xQLFtQ^;3UJm)&u-G?qBy)Xn^`GV=*I20EVPBOZ85z!dhM9RB=efk$iHx)|6 z?_bn#1ahxAEv)}f-3~b6@gx;fz5c`Ugp{*eQmDAV!c~$l2I#M=uhxj9C;V@!kHv2T z{KwT+k&oVDky<}XEE>I$6;eA{EVeX-&SgyVwaPz!aE-#nykE~E+yjZ)M IFBJ&DziyY9J^%m! diff --git a/objs/lexer/tokenizer.o b/objs/lexer/tokenizer.o deleted file mode 100644 index ac2298f4b9f46140b119f95c3f0b8829fae75443..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2092 zcma)7&1(}u6ra@Cu3FtF73voj5%jWBJr${vVhame6lq0-GNzkN8yb_i+0arf1hV(x2t}*EH#3`V(?)#c&CC1x&6_uGcR#QH*yv&` zvWsB>N5NVLmOe1(2zZGcZK#(LKxZij6zITY#LCS$ckMZsA|!D>HgbC`&^F~4g+q9h z8}DSSo7_=WA`uYhR>5`B*(qgc#S3tdF6ehqh|<+IN@J+c%H7K+ESDFvv*~P-^J~LR zC;og@2_f-NaLrLujDO$Yx;UI6!k z#Z~BgStpo?HYNL8)u$4g{t`O!*$r@*s7_)nZ2Zsv<7VZX>3#1rD+>*?Qd~1D<2BPC zX_!7U{n46f?HSfrqS}zxc%YXL0Tj+PII9A`{!v;&;rdFC=B=O7%O`{jr~<9u^v97m zTB}iFeW^{}8NE!CDRTx)9|ig2D(8CB5tJtP8q^n$wQ*h6%RRy+$^aIXq2OR=_2wdW z+)W)6n^vl#PSg9)H?f*Jr=MJ;NS0a_{o2~AwW{d8tT`wx=-QxOzA8YQE%gt2?<1!5 zDJZ_IieIb7qx56}r{-(kyGTW=(``d17v_l7{|SY|hM?q8c7&p5N1S|ORh}n&|MGgh zfk^Wv&^8ni*GdCSFN-qH13>ntGD6cLBQPzMp_u7YuZyzDGRPmrSVd$n)x5>t(7>&e!#3oiJ6NPDb!*p7{ z>*N}8^ef9}Y1`%(4EOavC-|LFv~YL8?B+ zh7QCYbzIpWyx%Bp7`*gb#;H1YjLRUde?!KpdUuR_g19*qr|RAo_Xg+E7&Bf&;&=EN z7QC5^r%LxAF$)HV#Bq!}kf_=9NKd~1~#tTSHv*AESA@4#Wq%*E$pOO&5 zPE(*029k*$f=Lhh-LLfE{^Cl95aeQ&B}n~Qi+-y`r`T{jJ!xTmS?V3AT@c+}*q>_A z8Be)9Q*g8PEaPr&#?JCYGRZUPg3EZ`$xY!C!fnUNIozI0!zN=KJDGNDE6~&Pwj+@6 zO-vT^0Vp9&Caf983;0rIY<|C(b8W_xx#HxeCJ`;iPLOX(?PleY&`_L}$YgRB9p*1c CHJKFv diff --git a/objs/minishell.o b/objs/minishell.o deleted file mode 100644 index 2ad3089360a5f14c6bf4304cc0589189396339f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 988 zcma)5&ubG=5S~O$qE(ZFhbSHbN-t$E;=x-RYT@AzDAGa?!my^V=?d9|&90_GpimT+ zAb9l8@aTWwNxb&hgF*@xdJH1QZ+2(XZ9s5f_WQnhGxLU*$+ur8f67FK3xp5+BK)(E z1{`)1{y_9U>`>!}nv-etBys60#vIx~nDSI_tZi+a>5TQ2NI#k7Q!(uWv7hA#GPk;& zp4$pJ@?U%YHuIB*`SXE_hT=N<$Sh-^jtX{W%yyS|0=Hw+81wo0K5FWUVo&?2qy?hg zj0@g_*Wt-s)hkqji^-)DKLxoA+{aMQfvBf-c;2K|ypj+8C*L&j4|DLd@n!9|RK&xH ziK9~!Z;s6<8k_gSqp`$C!%2c>qyaN}dSv2e{e1LbLe;mIkbnGrI-TZ{wd(jQ!qRVM z`a9}V&%$&=Y2nQ?Dhz6c+SPL91G4TSej9GkNG#g}YF@9sE3RHEY28a8_R4XActYn9 z5PRY@fp{n9J`nAkB_L{?J3tKX03=>&0IMLG3C&58y1agz>LTt)teR?7M7QR&-ak8E zo;zQh)5O+)#bKA-AaM7H+csp+??oX2JbXK@=M(q6HZljc6@@lE;TLW{p~%JJTJSd8 NAm|48XKW{1{1=_BgjfIo diff --git a/objs/parser/parser.o b/objs/parser/parser.o deleted file mode 100644 index b224477a316cfd94065949ffe4ce6de82e9dc68a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1692 zcmb7EO=uHA6rQBDe`QR)X+qO9tXo=zKp~BE z8;ZSn)|2$=O+1vA7VNE8uL{xx6!s)VYTNJ4%r;G04?gnt&3o^gZ{EC_$@ZUL`|XT{ zS{OdiR_G@hSWw6nXq5ba$Q(_CeASr12PY%dX~wxLW?e!m;e0qgIvjX)yBJnu;-gwd z&oI_Sp;k6WCJ@e(Q0$ zlOpgN>+>~wS@UgaKJBuzjAeo`*}KroP}vrvi?u;Xh=$^8sDt`*r;V{3EatPPP!htB z(p;()OZ~Tu*xnDj^wa8H^VWNR+g@?ku8cs3I&5#mx4rEuQQDQkUEAxk>`ENDS!oK{|49^vGlIV$U=O_n7;rYcpq4^6lKQS^@YKm#rV!j z$S7mWtae=jidDNZ?dz2!nwb6C$Ag0dMX%7eo9N1&6j&-&PfktCshif=hH)dt^!`n` zb8i~;1U0o9<*TX&Y?*=u^D}i=GS*fb77U+)J!(;HsR7$!lxL0t=mG8jw6*9&)mr_{ z@USs|u{j3XOEN|$sLQQWAfwJe9)$eZrA>2eBiMg%_H@1|3O_pW5U42dCDuciOnFh= zQvfQRICoQnXe$lVqRrQY(E66p#xYcj$V#Zhy6mZ;d=~X6MnOc`z^g;3?T|%fPUNX? zB%xPBEHrC|%yaD>%Rt>i>>AYH!}WmZ^%?8yHeZMP&*S+?A>06T>#xEc)pH7t-s}5) zh12z%;7g)ja7XTI`yI95{zu-y;U|LSx?dK2gYsIQ!NLur1}XGjkEP}KxZl&1XWVs!;E7aB!eu5XWg}_f{L~??=QxhW3-IoQy_&67iGv(l~Jw<=Rhm?9( ANB{r; diff --git a/objs/parser/syntax.o b/objs/parser/syntax.o deleted file mode 100644 index a35d1a60f1eaa75027fd027041c4bab1e094ba0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2828 zcmb7GL1-IS5dD%BTd`BGAZLp-70y(CssrzRC>`J>U1$*G{?3;Nr zJ2U_9N`Jh6^IxA3ksg5yRtzg1#YM-09LKsxjxI8cV3J{qA;IyOli(V`edMMdP0cqY(q4Us)7voqYG)Gz#OSSq61>TQbGwQF5 z+H2jYFTOPz8LV{NsAqPJ2I2Xg9ZFJrC$yC#xY@|;5^nyE3)o;WySBI^wB?^$=0t5Y zqOA-%hDDX7dE4hk%2Ueyfd@%2niqU=vHiqR<|bC#rM=$fH+y?~Xoe=&$m|-mm-^(o zmc+^M&7(e#4xKLB+fjxMXWT6}${Im7$55-r(OnYo^rkb&2j`MFRL`S$o-@#TX16)! zvKwh+5AugXe44-0Qn2pn5iPk4rx03F)n8wHhdQuO4kho=R=$ASv#}W^AN9=XgzBhy z$1^c4sx1!(Z9UrZ$3a^t9lb|Qwa0D6pi^}$$mTs2RMp+&dbl6=e0uxAl?8|P2J`g~ zxuA-~Hnw{9?aT8}$T>Hp!!CXoV$-|XeM6=nc0Nz7Vm95U(MDBchXTjO2t9DiAJ7{J zxEu<2;t%Kx1f)X&v;Kg1AmBnM;5-7HliBU?4}sv{mri55k)11?*XO>sD%q-T+IGp- zEi-HD^OjjHo4Jaa*DIx2)6%CbbKz#uGEa&9hul2~dF&wMuMR>UJ6LMu4#)te4^h`P zUxF=b$`lfnUVB&}9rH|a7Z{p$eE0*3X9{16acN4s0|0*8$(~%V2emZc2AiC%2 zI%D_zoM60)hmah`BEEY*a4R&ru$+Z%gW_w2qZpGCsa|-&TH0p5Xya}74CP|k^ng{e e0GyA5yphe#f}YLOw?N1lHs?zD7Js2+=f(fJGhgWd diff --git a/objs/redirect/heredoc.o b/objs/redirect/heredoc.o deleted file mode 100644 index 50eab57b90efaab73fc94c07cc37b379ad8c0e93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2572 zcmb7GU1(cX96xDedso*c8}k!k5%y5gxXce2x=K59$DJ-v#sYgOXW{0iy)<7-6B~rs z>FsovOJRbd6(9ECgR+iz& z^Z)+1=ic0#8+Y$_GUjS$xL~=lq&8f9SfHn{E|Fpv>V3pf^pX##&LbwHMe&F@&uaOs zvv>G2^4T*F`TFitDg;FF$afGy9w&jDT_C6v=jvECqbG-jfb-^f^*H;5{zp+~-CvYj zXHlP;N~9xdmgkb=dNRuSsbE8i&DWx?D?+%8c(zDlOoVO<$+8(zZoNi6$Tc)C~z77-;Sc`xdqUX?wJEdt@s2C;}J6)p0mTD!6S zFNGEJ55*`46thrSBWF`yGYV_WbMZAWiuEeVu2VI(RH`Ea_klB3Cyb2=&*bY6SaR7|nJ{Y1Gx-8o z#d30l%Es>#rld^u-9l+|jq;Y{O{%A~mo8XL2rPM1F%|*XzjQ#0=qV88r_bs?p;3g?XUV_UTaA}B0jEF|w-RZe_s7aHD zCRY=|?Zg2~GUi=q!wHC*rfM1V*8X zJ9Z2^+@Ko5ne!AmR55?DJ&ycMa(ipaRoi+J2g#DV7^J#Kv5wuCbK!xQ{R*wjIL(-H**;WO z2tjDpCw+=_UcxzWdbRA}66Gv??$?VhO_XNTdujGZM{ zr>{k^S-)o#QC+Tv<2+#228^OBh~XPc-KW%>$1k~i$a4Lj8Lnb88Y*|qk{2EgbJ+~v zfyN50p&;|dw3S;~zi$UC)PfkiY|am0^g+xXQM*IxGQvF(9F@ymmV9S=V4bY0rhGeS z7N@bj4GGeWhRa=MxLi7c4u=-l;cOy(ctp!+JepDifdG;V`pZG;u!-!`0LfKHx=nvY zNZ#2+@1ti3^qB+O{EI^W>n{2Oj-0vPJ+^rm8A#O6*g%i> z!?riOaT;tQyCBxNO~+33v7=oac5A{;^s}SgC$Q`P*NG?k+R^R@*nKbTM1R}tzC{1~ z81ol^cy0OHfga#p^oVzoe-()T4gU-f?`Z#3AWR-R@1Xwx5I_IV$b~n&zX&A#w?MqD z`rZ>b4)j8=0(*e;S1JKRLVp5?zfS*AAjtnbE@byC5VP!~S1O)t{{h`4J3L6YiqpYE&N~$|8WbCd)nmBxR%$mj7L;e8yjPMJfmkdj!zWE)e$`& z(r5R79wIt(-QJ%~t7$4JzlaV+KQkhYP&ycvD1VT#>IG%5w*3+6T zi0N@HNuL&cm}{9#Dua)gC^#*zsX3%o6H!zU(X(kC8zf9aiu61NHkzsjbW$}q_8&Ud BEcXBa diff --git a/objs/redirect/heredoc_parser.o b/objs/redirect/heredoc_parser.o deleted file mode 100644 index 08bfa9eae0e0cad1d092d114d19b5a2e2b8e2bac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2864 zcmb7GU1(fI6rPPS-PR;`mDa`|NRT}AWlQ|ST8!ObuFQiAF?1!0^>(>?)2t-B>t=5n zgoVIOYOZ4>_ya!rqS&X3P^cnt+lDqTVgw!@j^bGIi)5n>vntE4weV)obppq zrrgyO{@K~FT+%LBZsv44ld`Or`nQD`%qzb>Rg)KBk7CC6GIp<=yUnC!IV09^J~`${ zVWWRNYEfB=*${$7_H?_Cu@OBcd;+}#JxGPIkF}svqfKc(2R|Z&m@Waao(-T=BiE_Z zTH2Om|Fn9V=G3 ze-(?CrK$iI?lSi;1>D`Q*NNbc~a7mH)5`XrhF>_F=l!IAOT$567F?QlIw%ZWy z8W#yEttGd%wuTQIozqyun9&(y%KriK-*>NbKT*AER-m?pW1L0gr8(b(Z)R1*E8fMB zAFpux$EoKcIMsW>?q-$S@rtpqKkRLG8#9AyQmRAOSZIxS{~R-B9u6c3m2g-2T%xjV zy+#*`{Dq_nharvENxP&paDuktp(XBL`GzvLW8yVX-O2TAQvR@76(pT-ig@oyoy&37eS%wv{T%~5$y`{yPaobZ1+4X zKd=`{0-+64WWzyac#A#Q)#&VJIzK)28*x959n5mSV0~UG)bBIo>Ly~L_g{Uy#6=ut z6J>5cU@Sa!zjuqxnk&ZiGYHr&!mdCllSA&nzP(qbb8pP}_)2WnU3u4B`66V@(6MVz z?xaI&@0JmAQbfE{KtgB^PAFCO|E zew4VsvQvx#T(}pu{h-sgATlV?=ero&$GXWG*}jqxycYEwVM&p0DY-+wu4dkpdUwcA zs<(ODUDoH+%lhD5M$R0rAO+ z{)u>?o}<44iGQv5IUquL-~%Ae7Cj2YFM0qE(tjU9e7d4Oko0=-p!vf18*R9 zZH)C^1L9K|{T^rlzXQ^`^NN2Cq;(#U?7Si6(HIcF=x;b1?e`0i)|~~SML)y?S3W9$ zWZwmnoe_nv09(OdRQwSjDnI%lknBtWVZY_1!kEG?g@8a#-|BWKmS_U)7&>uXkDn=i z5=N;}&PcB74KZK_xNcbt>L`1?floE?^9}q^1An=JlkIx@^hT`bXC!Yz83b)Ya>eAI zn0kF?4Hqo@bIaJt0<%u%(*=hpvqqe}lgipwE}0*9z@=Ks&FNvr9>Z9xz2!RNg>*Kf zrK1jpPG-UycanK~M44umJ(?YNn3Z>usnK)>qv5=R=PAp{=d*eI=}UoWqj@JcnzZXC RoXK1=lM41o7qUs5>Ob?Om>>WE diff --git a/objs/redirect/redirect.o b/objs/redirect/redirect.o deleted file mode 100644 index 283860ff44387d86a3c5e870b3c37086b80894ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1720 zcmb7EO=uHQ5Pqp?8nx|KQBV-fLHs!cQUxg}6159kP^em=m-1RRTN7=Q5EBeSL`)+t zdnw)pK@T2177wMUP!Yr)JoMlphYE>A$f*>mt>3(#X4Be(1G6*Vyl>{sytlhwfB)L( zVl1$S;QY7!nT&gl-<~a&usfuuR2>1G6}He<-QL{X zL|vNQGuN&1$H>?R<2Y0E#PmFi=88(ic;+%ThKd=`@f9rfuOf!A<1sO^cOCvv%sWv2 z8L;fnmUr>fTPCLIUvd4DYvK6?p~>Z@tUG(`15p0uK8VK+=Fm&X_$f%TJlA@l+h+j3W@2| z=i(f@ihDe#gTlBfFF!7Jj_gN#L|Ve#EY$6)adM~7hXKaBP&`vyG{?*%OJ9>Egt zE-dlRsrX5SUtw>!(NS1PG>!*wD55Nkz=vUbv7pZtuE6>nPXikiRAR#VAiJ~;^KJNs z#2x5e$biHO!SFhpd6cm5uAnGNB3KbO!Y7H!6p-6>ZWU?lkWHH&)%~n&Pptcp) zQuN>-AcCOcK@h}~Ehx5lv3D=dC6aRu3 zJdnDsh;t5lEIEhzWRFWEm9h&e=UF9NPiU;KeqPT-uMZ;865ELi5(?n}`mJbT8Acnm zpt13y?Ei*3;*2dsvp~$JKD4NDo!mA=o&PyLV+J41(JyIp0t*qD6J!Rd`C#Pn=*Z)k zF}9t3lidR-uXFknXH0RWLFz$BI&0?S(35aDI$tx!x%MzYN2kq+-dXeNhpAevW(K{p z!A$VloIJBQVT_+)=X5Y*PIk3Icr~R+brZew=HXdm9Opsi=&SVEm*FI%J!kAbK_vT$ z%Zy;;*Gzb}*u*o;c%qlU7IlR`;lB%ikopli!Va?WvoDwGK?tc8q%J)Nt&{68c8?*p zxc(GhAa=#RP;`o4!3#b-KH$hY{pE6^WVyo$%gYayY}c=}QPsD-Qu098!A!YW_DDYo zmZCRdub+z^>V8hh$yMSBUKu9ejWF%wzE3>-9%0Mko3)=}mrqly8jr;{tZTiEtUd7W zKzsfhcMOyIh>mTFUvKK!$k)WidAJ@*|Iv9;=Zbkn+@(O3g#?WjKA zU6f}V_@M^Q=Mv4|)xb%4MdjI9r!rWyhDjAHH(Rt-#mPIaPs-2RK0Yl{cGY2;so1{d z`yLMw(!)%_DQ0CRB1%ZEA!+mIt0zl7E3@DP3lhIOUCPd9{)W}1U z5a*2x=Oby48w3PI`6%}41Y?hoVw|lIi%1BoT5}8KC8dbxi}F0A?4<{zNXZr4krMfw zQpL1tqF(-}P+k<`t#czIHggKsic&U^k5m~nsd~I8r4V*rZ~din zuQ}kpftA7D*x{|_4%1d=kp}7=?l)3>O4%ADw9Ai zL*Cld7dCRIw5L`noT+*l)Z5`+z3?ZBblBXE4n7{Gx}a)1NL;6P&MF&&);VsO~? z{yi=C&{_|WUqFr*e~VnA1Bt9O{w-sd3I#>_&<-VGe-**cM3Rs3Y>`bGN%XTA##uc$ zIa0!w?Q#DNbdv~kNH?gCz!MS8URWOmX*j;Ii^irGHq?AihyBQlqpJaRe2n*(1h)p) zlL$EsJ}%P_k!j25;tX+!bo;_f+4qeu5_m@UHKU`g)2jn(A65(+Xs!7!_r`w>;ab@) zZ_V69-!pIvj{?!&jn<8!m+jJ3SXH+eaq#tLZiaw@->IgWS0L|USc1md50)jO9t|CJ zXqu-NHcnQLvRU@NSaQ~Vjl z|3ppvL!>vs@uH@`2glo){u&%{C)U7^Kzx^(~5(IdSGN4 z93t|R9L=ww)HDvJsQNlkymP52-F? zB{BAROlHC^UlKJ(n67JnETsy5w`)vPTxSVCkivFd#}#&?09~#o@UvdF%+Y?aUfENZ zM*E^&X2Qzb)(67=ux=J*=BjPFR-RI$LN1IeR%_M5vMuedU2-mAk226N+C`^Kl569; Rq<~n?qV%xLV$reC&wl{^?ppu= diff --git a/objs/utils/error.o b/objs/utils/error.o deleted file mode 100644 index 110140f38ad5b262d9dc977721edd0bdb6fe9889..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2796 zcmb7GU1%It6u$Xw8r$r~8mJ(26pMXuY7_&d5J|PG^I%HQ1{5sgbapmb-JMBhXJ{g< zMv@eVF%r-h>4Wt_QB=%hD`Hz4+9GK8aUTTtMc813eWv` zy>s^N-v0g9zxOcK)x+?>=*1Z5#zVt^+>7xR8U91o`-I^L#XuBCPDX?Bk(g%SECgaM z`03OOr+2uT%~K%|%15!6kmMm!^s*%aC8lW?0zd1{NQG&(=2LktNc;P;P8Bc9RTTBv zUVhH912c5bW!}psasN-rZa11d@JvWfcE+}WWI{b zSC;uCWp^<)tLB7{VI0KZuOczX`Y}joQPLmW%h)jR2-KTE#Iq?35{jWgOH!@-F#fMh z8`00k^7g0^73)S6)}rZcBQDmfl*fotWh2IjQWYZ(%f{OH6F8eDTd^X@ayR-nmg8_+X5Sn=b3JiriE5JdPN3cz>a7}LX*w26t1Pj)pQblc zb@JZ&oJd@3S)rqu5NmNzFl?YAC22Ylzr+fv^7_^fFuY({yW{xHfQALgZ(VF@_n#6IUb5@36N3dv?t-CqH`&}FV3DXTx z^P^Xdm^zHb)7#N7UX^y{`cC%Dy6n#+&#%5nyw3O-hqG2;_PECQ2Uk;RvBxAOqS$F;!oG^AV9EPp1CRLsI^F|_1bf+Ya!W{+_z_79bOMYe;>x^AOCQX^)q&2D0#m7sr|TyxscyU zj7!o_?xUk$4t`62ihOcE9sS;e-zR?wzs65rhjqV(Uq$-K{q4$^$No{Po&n-c*DWCW zQXd22i!=T(FadrTh@%{#3zqCZg5W1rzYR)W4AWw}B9S8Hmrw0v_b&O8&g$ zPXZ}Um-+)hiW`!=Cf#z{(x)UI0OI?i|Ar)#m%amp9{^#}-vv_L z=Ye~H^OC0}H-WUy38{Y^2+<$GgY@(pIRL%{M85u)B~D1xBm%gdZlfVMsy==LJOQry zc3pDSr!a9lfD7FbF5g+fFK zi{PIkc=0GGqzA#P2d|2Pf`=SR4~^fOeUok@J^0|w_ulv3eETMu`F!yEa7GC4l)wTn z!rxI)fx|AqYm}d0U${1j&=lmPOQv;Vx=9vi`D*xR^(c2yHK#|jyn(;q=%d7!F~>Bp3zR@Q<9&GEsFxfq|7{Od|C{Rl3RHh*U!~!` zn)0Ec`hy=NWto8_DvQ%vjwhDsZY9Ud%27dHRq1iL6co!3!r=&(hQr=_uOALox`H9@ zRBtX7ORp}C#bs5c(pU8rG~C*=ANsk6eRjH(tNDqEb9wJ$u=b&Oy>$5n4JH0LZz{{< zUVHw4zUy`q<6^61MX-F&0{*uhE5siTbpiQ}yp@4kUI`WH~c#*P30 diff --git a/objs/utils/list.o b/objs/utils/list.o deleted file mode 100644 index 1229118a756202f93577e886e4b58825ebaed7a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1492 zcmaJ>&ubG=5PqpK4cfX96{-lyL9jy8gQp4#DRyB61EN**5MH;*<_D%pNVYZ<0+mGR z5(EVg{t5mGo-`1lNB;mXxd;g;U*_hVGfq66YzHh#nmnQx8``6*D5WZ6a z2iy-2&fti^VVB|i1Wd6H#Dy(#^lE4da?&G{(zdF$o4fV8{&f9s?Pbq+7U@xM3y0G1 zi#?A+QOab+F6RmvzLfH)o~Lt~@t5?#3FCFgH_$6?mCU3qw+lPDLQ2Z}Yhw_}2Jf}U zm;2Bo$&R<55Jx1Xw6Zc?Hn%Ld;rMVsa$WPA_ZW2AYIB->K1D8a7W#2l|kpUX%{XlvceO6k6lF zS2kloJhI>Gj7B4c(~Gg;q_`IL^oIxfKq;xuq;Um#QyM1bOF(idIJ%7AjUDm5kcKAA!;DR=mJLHVyatIz>un16*%bqghvQ~J%MwoYQwE( zFk9L9H_Nq+JLIq~h%;$?q8uJJ9)A>ID diff --git a/objs/utils/list_clear.o b/objs/utils/list_clear.o deleted file mode 100644 index 05f47f8ff3e57484210e8903d8d6afeb7b1dbb29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1056 zcma)5K}#D^5T2w~L#yr+Jfu)C6t6-l9y~^DU_lR3EEI}7Lh`JoF_Cq}MFK! zwYIjawNURi_ue<_TCcoxHO8Khvf%f;o#hz)5V8qaqP5x78$or;IDUIRcL$rcObUJ6 z**Nu>$dxk13#>(Wb}il`8ilj*LplEioB4bx@Hr6sX%#+ftaUz||DX7^-}&jsSIY0S zdw$&Rk@tzO@$v%}KdB%WDe?~H9Zkv#sRB|{!>J@HbiwTw)^yGXJdTRcPu!HF;-Kbq z@tImb^=3%sDczlC>1H?iol1&PQ}ldhv#Fny3rKhUq@B9nUDjP*^!xqn9OsZ?zWA)P zewu}LIkX^O<)CmRp}gjM^=YZ+_FqvhQaLp~Rycxc7Wt>}lWRN}CjE&PC)MZt(!{9j zV;z5p%F6okoO`+pXwY^p2I3vh?FqgWTox<=q08Dc!pXzp&M_$*kQvX&8fScy;CcSm jGSeHOZtR4$hN%W5q;49mrU45K)_2+jK`X!yRyXt)iN~ig diff --git a/objs/utils/tree.o b/objs/utils/tree.o deleted file mode 100644 index d44eaebe21cb6f064970f73354928c031d010f78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1716 zcmbtU&1(}u6o09;4YisTEL0JigMybx5EU;%f(^{ULMaXOQpR<&`GB+u+YJVxP-vAd zi%`UaNB;uxW=|?q=ur?4J$k6HfeJbFP^7m0-tJ6ITO$=8ym{Yme)DE`KK=N<*H08X zMOeVS;CK&~Bp7rNyv%_vB)AZCjcY*KMo(hqeoRujcGHdY$ezqiP5!pE7VZs$`*Cgk zG*KT1duf4%CMm5s*Qv~wltaqH{d6Cchm_Vpl&#<@i}6{tnYwAYvN8LpGFy=H{^&sv zilGV?l=BYy@zGyl1J(LaODXNLEIQ_l9TgnKx1zFFRlil$PnmRvsH}CCH^9T-@G24m z)CXqbHthcZ9C64DhQ(t>J&l7qiE(P~^q)k}3-6m)+)4^>e#dKUzh@lp(pUnn7G5q8 zi}L{`o(!`2?CuvNgdsn-E&Q>-%ML^A2tOYPZ-6~wJoyjg5*HDTMCrUerU1XU9!&;Q3f@NJ3WC?Hg!l5$oGbGTG}R*|{4BMPrSjAB zE^$Lubc?@H@u@EL7a~8!9#2rLX~c}d{`d-NuE2j8JpL1qK^g~T&lyj9?wt+a62v)g z6#P=-9*$NFsnV=qz4fyDcf`ivTuw;=IerqYo3r-v>< z;=)o7Ad%XaQ8K9{MCiW?nLvU*=a91Xd~YgS&oiTJh>#|*qWpl0M{GU^;yu6|66bd2 zldL Sp;aruD!S4#tJRvtAbtTqTul7{ From 5de6399df8852e5d68a7966e24ef8379839d8d60 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Fri, 18 Aug 2023 10:52:23 +0900 Subject: [PATCH 53/57] , --- incs/parse.h | 2 +- srcs/lexer/lexer.c | 6 +- srcs/lexer/lexer_utils.c | 26 ++++++--- srcs/lexer/quote.c | 2 +- srcs/lexer/tokenizer.c | 2 +- srcs/signal/signal.c | 6 +- test case/something.txt | 120 +++++++++++++++++++++++++++++++++++++++ test case/unset.txt | 3 + 8 files changed, 149 insertions(+), 18 deletions(-) create mode 100644 test case/something.txt create mode 100644 test case/unset.txt diff --git a/incs/parse.h b/incs/parse.h index 2dd6178..074f250 100644 --- a/incs/parse.h +++ b/incs/parse.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/04 07:53:54 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 21:23:42 by eunwolee ### ########.fr */ +/* Updated: 2023/08/18 10:07:42 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/lexer/lexer.c b/srcs/lexer/lexer.c index 91a8906..2068ae5 100644 --- a/srcs/lexer/lexer.c +++ b/srcs/lexer/lexer.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 16:24:37 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 21:23:34 by eunwolee ### ########.fr */ +/* Updated: 2023/08/18 10:51:29 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -79,9 +79,7 @@ static void normal_char(t_data *data, t_token **token, int *i) { (*token)->blank = FALSE; (*token)->str = ft_strncat((*token)->str, &data->input[*i], 1); - if (check_end(data->input[*i + 1]) == TRUE \ - && check_last_blank(data->input, *i + 1) == FALSE) - (*token)->blank = TRUE; + (*token)->blank = check_last_blank(data->input, *i + 1); if (data->input[*i + 1] == '|' \ || data->input[*i + 1] == '<' \ || data->input[*i + 1] == '>' \ diff --git a/srcs/lexer/lexer_utils.c b/srcs/lexer/lexer_utils.c index f7f3f63..16390be 100644 --- a/srcs/lexer/lexer_utils.c +++ b/srcs/lexer/lexer_utils.c @@ -6,12 +6,16 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/12 15:15:15 by eunwolee #+# #+# */ -/* Updated: 2023/08/13 17:02:47 by eunwolee ### ########.fr */ +/* Updated: 2023/08/18 10:40:12 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../incs/minishell.h" +t_bool check_end(char c); +t_bool check_last_blank(char *str, int i); +void quote_utils(char *input, t_token **token, int *i); + t_bool check_end(char c) { if (c == ' ' || c == '\t' || c == '\0') @@ -21,17 +25,23 @@ t_bool check_end(char c) t_bool check_last_blank(char *str, int i) { - while (str[i] == ' ' || str[i] == '\t') - i++; - if (str[i] == '\0' || str[i] == '|') - return (TRUE); - return (FALSE); + char c; + + c = str[i]; + while (c == '\'' || c == '\"') + { + c = str[i]; + if (str[i + 1] == c) + i += 2; + else + break ; + } + return (check_end(str[i])); } void quote_utils(char *input, t_token **token, int *i) { - if (check_end(input[*i + 1]) == FALSE \ - || check_last_blank(input, *i + 1) == TRUE) + if (check_end(input[*i + 1]) == FALSE) (*token)->blank = FALSE; if (input[*i] == '\0') *i -= 1; diff --git a/srcs/lexer/quote.c b/srcs/lexer/quote.c index 9ff5f09..56de495 100644 --- a/srcs/lexer/quote.c +++ b/srcs/lexer/quote.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 07:46:30 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 13:29:07 by eunwolee ### ########.fr */ +/* Updated: 2023/08/18 10:37:27 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/lexer/tokenizer.c b/srcs/lexer/tokenizer.c index 88ee189..0538d7b 100644 --- a/srcs/lexer/tokenizer.c +++ b/srcs/lexer/tokenizer.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:26:13 by eunwolee #+# #+# */ -/* Updated: 2023/08/17 20:28:42 by eunwolee ### ########.fr */ +/* Updated: 2023/08/18 10:40:54 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/signal/signal.c b/srcs/signal/signal.c index dc80c27..c02f9e8 100644 --- a/srcs/signal/signal.c +++ b/srcs/signal/signal.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* signal.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: kichlee +#+ +:+ +#+ */ +/* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/15 18:40:34 by kichlee #+# #+# */ -/* Updated: 2023/08/17 21:36:26 by kichlee ### ########.fr */ +/* Updated: 2023/08/18 08:34:24 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -39,7 +39,7 @@ void handle_sigint(int sig) g_error_code = 1; printf("\n"); rl_on_new_line(); - rl_replace_line("", 0); + // rl_replace_line("", 0); rl_redisplay(); (void)sig; } diff --git a/test case/something.txt b/test case/something.txt new file mode 100644 index 0000000..f78d3e1 --- /dev/null +++ b/test case/something.txt @@ -0,0 +1,120 @@ +/bin/ls +/bin/pwd +ls -la +pwd +/bin/chmod +/bin/ls -la +/bin/ls +/bin/ls doesnotexist +ctrl-C +ctrl-D +ctrl-\ +asdf ctrl-C +asdf ctrl-D +cat ctrl-C +asdf ctrl-\ +cat ctrl-D +hoi +" +hallo$ +unset a ; env ; unset test ; unset test1 ; env +unset PATH +ls +wc +awk +cd .. +pwd +/bin/ls +cd .. +pwd +/bin/ls +cd notworking +cd . +cd .. ;pwd;/bin/ls;cd .. ; pwd ;/bin/ls; cd notworking; cd . +cd ~ +cd $IETSONBESTAANDS +cd $GEK .. +cd $NOTHING $MORENOTHING .. +pwd +pwd . +pwd .. +cd ../Desktop +ls -la +awk '{ print }' /etc/passwd +cat < test4 +< test4 cat +> newfile ; > working.txt +< working.txt +< notworking.txt +cat | cat -e | cat +cd +cd ~/ +hallo +hallo +cd $IETSONBESTAANDS +cd $IETSONBESTAANDS +cd $POEP $MEERPOEP .. +cd poep +ls +"ls" +test +/bin/ls +/binn/ls +hallo ma\"ran siemons +Multiple line error +hallo ma\ran siemons Hij ziet de \ niet als escape, print gewoon \ +ma\ +hallo$USER +hallo\$USER +\$? +$USER +\$USER +"\$USER" +\poep +poep +poep" +poep\' +hallo"\poep +hallo +maran +'$USER' +$USER +123"456 +\poep +123\'456 +hallo$ +" +$USERmaran +$USERmaran$USER/maran +hallo1234maranmaran/$USER/maranpoeppoep2maranellendeEND +maran/$USER +poeppoep2maranellendeEND +poep2maranellende +123hallo$456 +echt bash +cat x1 | grep Makefile +ls > x1 ; cat x1 | grep main +hallo$abc +hallo$\abc +halloUSER +halloPOEP +halloUSER +"hallo$USER" +hallo$abc +“$rewtwet” +$" +$' +\hallo +\hallo +hallo\hoi +\maran +123"456 +123$456 +123`456 +123\456 +123\!456 +mkdir test; cd test; rm -rf ../test; +pwd; cd .. +$TEST$TEST$TEST$TEST +cp minishell test; chmod u-x test; +./test; echo $? diff --git a/test case/unset.txt b/test case/unset.txt new file mode 100644 index 0000000..b696660 --- /dev/null +++ b/test case/unset.txt @@ -0,0 +1,3 @@ +unset a ; env ; unset test ; unset test1 ; env +unset PATH +unset po1 1op 2 po2; echo $? $po1 $po2 From bf7c56ec9fe9bf0c06f0e48c54e253c0752e4e62 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Fri, 18 Aug 2023 10:53:49 +0900 Subject: [PATCH 54/57] . --- test case/something.txt | 120 ---------------------------------------- test case/unset.txt | 3 - 2 files changed, 123 deletions(-) delete mode 100644 test case/something.txt delete mode 100644 test case/unset.txt diff --git a/test case/something.txt b/test case/something.txt deleted file mode 100644 index f78d3e1..0000000 --- a/test case/something.txt +++ /dev/null @@ -1,120 +0,0 @@ -/bin/ls -/bin/pwd -ls -la -pwd -/bin/chmod -/bin/ls -la -/bin/ls -/bin/ls doesnotexist -ctrl-C -ctrl-D -ctrl-\ -asdf ctrl-C -asdf ctrl-D -cat ctrl-C -asdf ctrl-\ -cat ctrl-D -hoi -" -hallo$ -unset a ; env ; unset test ; unset test1 ; env -unset PATH -ls -wc -awk -cd .. -pwd -/bin/ls -cd .. -pwd -/bin/ls -cd notworking -cd . -cd .. ;pwd;/bin/ls;cd .. ; pwd ;/bin/ls; cd notworking; cd . -cd ~ -cd $IETSONBESTAANDS -cd $GEK .. -cd $NOTHING $MORENOTHING .. -pwd -pwd . -pwd .. -cd ../Desktop -ls -la -awk '{ print }' /etc/passwd -cat < test4 -< test4 cat -> newfile ; > working.txt -< working.txt -< notworking.txt -cat | cat -e | cat -cd -cd ~/ -hallo -hallo -cd $IETSONBESTAANDS -cd $IETSONBESTAANDS -cd $POEP $MEERPOEP .. -cd poep -ls -"ls" -test -/bin/ls -/binn/ls -hallo ma\"ran siemons -Multiple line error -hallo ma\ran siemons Hij ziet de \ niet als escape, print gewoon \ -ma\ -hallo$USER -hallo\$USER -\$? -$USER -\$USER -"\$USER" -\poep -poep -poep" -poep\' -hallo"\poep -hallo -maran -'$USER' -$USER -123"456 -\poep -123\'456 -hallo$ -" -$USERmaran -$USERmaran$USER/maran -hallo1234maranmaran/$USER/maranpoeppoep2maranellendeEND -maran/$USER -poeppoep2maranellendeEND -poep2maranellende -123hallo$456 -echt bash -cat x1 | grep Makefile -ls > x1 ; cat x1 | grep main -hallo$abc -hallo$\abc -halloUSER -halloPOEP -halloUSER -"hallo$USER" -hallo$abc -“$rewtwet” -$" -$' -\hallo -\hallo -hallo\hoi -\maran -123"456 -123$456 -123`456 -123\456 -123\!456 -mkdir test; cd test; rm -rf ../test; -pwd; cd .. -$TEST$TEST$TEST$TEST -cp minishell test; chmod u-x test; -./test; echo $? diff --git a/test case/unset.txt b/test case/unset.txt deleted file mode 100644 index b696660..0000000 --- a/test case/unset.txt +++ /dev/null @@ -1,3 +0,0 @@ -unset a ; env ; unset test ; unset test1 ; env -unset PATH -unset po1 1op 2 po2; echo $? $po1 $po2 From 0083493591af00907d675bf28f60eb851a9dc623 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Sat, 19 Aug 2023 17:11:22 +0900 Subject: [PATCH 55/57] done --- .DS_Store | Bin 6148 -> 6148 bytes incs/parse.h | 4 ++-- srcs/lexer/lexer.c | 7 ++----- srcs/lexer/lexer_utils.c | 4 ++-- srcs/lexer/quote.c | 2 +- srcs/lexer/tokenizer.c | 2 +- srcs/signal/signal.c | 6 +++--- 7 files changed, 11 insertions(+), 14 deletions(-) diff --git a/.DS_Store b/.DS_Store index a9e7b549ac14ae2314e609cba4646a4bb8f4f018..22d9fb7f940b0b2300a468c5d04efed12610f182 100644 GIT binary patch delta 57 zcmZoMXfc@J&&WJ6U^gT4WFAIoRwo7q29wD;jM}Ulz^rYIN^FdBAm-+KjGAl{8=^L| IbNuB80D!9vwEzGB delta 152 zcmZoMXfc@J&&WD4U^gS{WFAIo)-VPJ2H(j#jN0)>K&<~z0AzDAfZXHI@{QcivnP*#9}fzb#}2Ma?!LlQ$4Lou4V1t4{kV;GhA7(mwTg;}zBBBLVP JW_FIh`~WygGF<=w diff --git a/incs/parse.h b/incs/parse.h index 074f250..2f118a4 100644 --- a/incs/parse.h +++ b/incs/parse.h @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* parse.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/04 07:53:54 by eunwolee #+# #+# */ -/* Updated: 2023/08/18 10:07:42 by eunwolee ### ########.fr */ +/* Updated: 2023/08/19 17:00:38 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/lexer/lexer.c b/srcs/lexer/lexer.c index 2068ae5..32e4144 100644 --- a/srcs/lexer/lexer.c +++ b/srcs/lexer/lexer.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* lexer.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 16:24:37 by eunwolee #+# #+# */ -/* Updated: 2023/08/18 10:51:29 by eunwolee ### ########.fr */ +/* Updated: 2023/08/19 17:01:28 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,10 +32,7 @@ t_bool lexer(t_data *data) free(token->str); free(token); if (!data->tokens) - { - free(data->input); return (FALSE); - } last_token = ft_lstlast(data->tokens); last_token->token->blank = FALSE; return (TRUE); diff --git a/srcs/lexer/lexer_utils.c b/srcs/lexer/lexer_utils.c index 16390be..391f1f8 100644 --- a/srcs/lexer/lexer_utils.c +++ b/srcs/lexer/lexer_utils.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* lexer_utils.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/08/12 15:15:15 by eunwolee #+# #+# */ -/* Updated: 2023/08/18 10:40:12 by eunwolee ### ########.fr */ +/* Updated: 2023/08/19 17:01:32 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/lexer/quote.c b/srcs/lexer/quote.c index 56de495..9ff5f09 100644 --- a/srcs/lexer/quote.c +++ b/srcs/lexer/quote.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/03 07:46:30 by eunwolee #+# #+# */ -/* Updated: 2023/08/18 10:37:27 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 13:29:07 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/lexer/tokenizer.c b/srcs/lexer/tokenizer.c index 0538d7b..88ee189 100644 --- a/srcs/lexer/tokenizer.c +++ b/srcs/lexer/tokenizer.c @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 12:26:13 by eunwolee #+# #+# */ -/* Updated: 2023/08/18 10:40:54 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 20:28:42 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/signal/signal.c b/srcs/signal/signal.c index c02f9e8..dc80c27 100644 --- a/srcs/signal/signal.c +++ b/srcs/signal/signal.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* signal.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: kichlee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/15 18:40:34 by kichlee #+# #+# */ -/* Updated: 2023/08/18 08:34:24 by eunwolee ### ########.fr */ +/* Updated: 2023/08/17 21:36:26 by kichlee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -39,7 +39,7 @@ void handle_sigint(int sig) g_error_code = 1; printf("\n"); rl_on_new_line(); - // rl_replace_line("", 0); + rl_replace_line("", 0); rl_redisplay(); (void)sig; } From 242896d1ac830187ff9199b42fe18ab94a34acb8 Mon Sep 17 00:00:00 2001 From: eunwoo Date: Sat, 19 Aug 2023 17:12:08 +0900 Subject: [PATCH 56/57] . --- .DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 22d9fb7f940b0b2300a468c5d04efed12610f182..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKOG*Pl5PhYy7;uxNE9ol;9-tZGA`4euKocW~g8_s4K9V<#uRaP+W*tzfp!-#K zeP-stbaerc;p6EVSODlb6h)O8(d}8&Sva2)MRTmi-DW-R)?91CzaaYV9bWK;4fd1w zA85Ndgi!Bshey0(i)TiR*iQUEC;lDwct6f7R}()jQ<8yXAQ?yol7W*kz?!YnUpVHR z3?u`|zz+j@J`@hc8rU4|=-^~60I}n?33a>r6N_#TYhZKa4n;ha=%ErVhD7He9!`4= z|K{l75PLH7#FM|97m3D0in&9oW6sGyGVq%L?R_Z=t^c?Dm1diKbIBd& From 68720a3906e63cfcd23e2134299ef40ac95e096f Mon Sep 17 00:00:00 2001 From: eunwoo Date: Tue, 2 Jan 2024 22:32:13 +0900 Subject: [PATCH 57/57] . --- srcs/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 srcs/.DS_Store diff --git a/srcs/.DS_Store b/srcs/.DS_Store deleted file mode 100644 index d8a65ea7c4bf4739754ee5eb50453285590f93e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK&2G~`5T0$F)JcWN0jWLug2W+0iGcKgkgT*EdP6dT1EAJ!qQ=tJj%X<%X}V5Rr5zQmvLSU20z8tw$p0w zxNg_&-s!#zX6Z60!eWt+!|V(AeCI}pL-u-w&f)qaOnA)`j;E?pQxbDDuHiQhvyt5Nm~HLB#cX-*+!lsD;B z)A_YBooz(LbdE_2N!IG}q*Y^Ecue>ak(AdWdD5zp=vvuy2FxSr?r!=Ywg1mDU>Ue| z26%n&pp3r3QlnZr(5NE-(7~`0*!-5&4%&u>2eUr(|<%YbFzzhXc*N5Rn; zw`BI##?A3w>p@SUEF4#AR4Hi8cB~BEiua*P;Pco3`UXpl7=hRi0Y!stECaX7z#lIi BuW0}P

  • w%E}>d{f2efsQd!X5B2`~4L3XoD*PlG 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 +#+ +:+ +#+ # -# +#+#+#+#+#+ +#+ # -# Created: 2022/11/17 12:21:51 by eunwolee #+# #+# # -# Updated: 2023/07/10 19:30:40 by eunwolee ### ########.fr # -# # -# **************************************************************************** # - -NAME = libft.a - -CC = cc -CFLAGS = -Wall -Wextra -Werror -AR = ar rcs -RM = rm -f - -SRCS = ft_isalpha.c \ - ft_isdigit.c \ - ft_isalnum.c \ - ft_isascii.c \ - ft_isprint.c \ - ft_toupper.c \ - ft_tolower.c \ - ft_memcmp.c \ - ft_memset.c \ - ft_memchr.c \ - ft_memcpy.c \ - ft_memmove.c \ - ft_calloc.c \ - ft_bzero.c \ - ft_strlen.c \ - ft_strlcpy.c \ - ft_strlcat.c \ - ft_strncat.c \ - ft_strchr.c \ - ft_strrchr.c \ - ft_strnstr.c \ - ft_strdup.c \ - ft_strncmp.c \ - ft_atoi.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 \ - get_next_line.c \ - get_next_line_utils.c - -OBJS = $(SRCS:%.c=%.o) - -all: $(NAME) - -$(NAME): $(OBJS) - $(AR) $@ $^ - -%.o: %.c - $(CC) $(CFLAGS) -c $^ -I . - -clean: - $(RM) $(OBJS) - -fclean: clean - $(RM) $(NAME) - -re: - $(MAKE) fclean - $(MAKE) all - -.PHONY: all clean fclean re diff --git a/eunumini/Libft/ft_atoi.c b/eunumini/Libft/ft_atoi.c deleted file mode 100644 index 3e0ce61..0000000 --- a/eunumini/Libft/ft_atoi.c +++ /dev/null @@ -1,31 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_atoi.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/12 17:50:40 by eunwolee #+# #+# */ -/* Updated: 2022/11/22 16:00:54 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_atoi(const char *str) -{ - int res; - int sign; - - res = 0; - sign = 1; - while ((*str >= 9 && *str <= 13) || *str == 32) - str++; - if (*str == '+' || *str == '-') - { - if (*str == '-') - sign *= -1; - str++; - } - while (*str >= '0' && *str <= '9') - res = (res * 10) + (*str++ - '0'); - return (res * sign); -} diff --git a/eunumini/Libft/ft_bzero.c b/eunumini/Libft/ft_bzero.c deleted file mode 100644 index 2df6ce3..0000000 --- a/eunumini/Libft/ft_bzero.c +++ /dev/null @@ -1,22 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_bzero.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/12 15:33:02 by eunwolee #+# #+# */ -/* Updated: 2022/11/26 16:38:32 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void ft_bzero(void *s, size_t n) -{ - unsigned char *str; - - str = (unsigned char *)s; - while (n--) - *str++ = 0; -} diff --git a/eunumini/Libft/ft_calloc.c b/eunumini/Libft/ft_calloc.c deleted file mode 100644 index 4ab8b68..0000000 --- a/eunumini/Libft/ft_calloc.c +++ /dev/null @@ -1,24 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_calloc.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/12 18:35:23 by eunwolee #+# #+# */ -/* Updated: 2022/11/15 20:29:04 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void *ft_calloc(size_t count, size_t size) -{ - void *tmp; - - tmp = malloc(size * count); - if (!tmp) - return (0); - ft_memset(tmp, 0, size * count); - return (tmp); -} diff --git a/eunumini/Libft/ft_isalnum.c b/eunumini/Libft/ft_isalnum.c deleted file mode 100644 index f0103f4..0000000 --- a/eunumini/Libft/ft_isalnum.c +++ /dev/null @@ -1,20 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isalnum.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/09 16:51:21 by eunwolee #+# #+# */ -/* Updated: 2022/11/14 18:26:47 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -int ft_isalnum(int c) -{ - if (!ft_isalpha(c) && !ft_isdigit(c)) - return (0); - return (1); -} diff --git a/eunumini/Libft/ft_isalpha.c b/eunumini/Libft/ft_isalpha.c deleted file mode 100644 index 67b66d4..0000000 --- a/eunumini/Libft/ft_isalpha.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isalpha.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/07 21:14:52 by eunwolee #+# #+# */ -/* Updated: 2022/11/14 18:26:58 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_isalpha(int c) -{ - if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) - return (1); - return (0); -} diff --git a/eunumini/Libft/ft_isascii.c b/eunumini/Libft/ft_isascii.c deleted file mode 100644 index 5fd8dd2..0000000 --- a/eunumini/Libft/ft_isascii.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isascii.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/09 18:26:14 by eunwolee #+# #+# */ -/* Updated: 2022/11/14 18:22:39 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_isascii(int c) -{ - if (c >= 0 && c <= 127) - return (1); - return (0); -} diff --git a/eunumini/Libft/ft_isdigit.c b/eunumini/Libft/ft_isdigit.c deleted file mode 100644 index 0e510ac..0000000 --- a/eunumini/Libft/ft_isdigit.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isdigit.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/08 15:21:30 by eunwolee #+# #+# */ -/* Updated: 2022/11/14 18:24:41 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_isdigit(int c) -{ - if (c >= '0' && c <= '9') - return (1); - return (0); -} diff --git a/eunumini/Libft/ft_isprint.c b/eunumini/Libft/ft_isprint.c deleted file mode 100644 index ca57df1..0000000 --- a/eunumini/Libft/ft_isprint.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isprint.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/09 18:35:25 by eunwolee #+# #+# */ -/* Updated: 2022/11/14 20:25:14 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_isprint(int c) -{ - if (c >= 32 && c <= 126) - return (1); - return (0); -} diff --git a/eunumini/Libft/ft_itoa.c b/eunumini/Libft/ft_itoa.c deleted file mode 100644 index 569aa48..0000000 --- a/eunumini/Libft/ft_itoa.c +++ /dev/null @@ -1,62 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_itoa.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/15 12:28:06 by eunwolee #+# #+# */ -/* Updated: 2022/11/17 13:30:13 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -static int cnt_digit(long n) -{ - int cnt; - - cnt = 0; - if (!n) - return (1); - if (n < 0) - { - cnt++; - n *= -1; - } - while (n) - { - cnt++; - n /= 10; - } - return (cnt); -} - -char *ft_itoa(int n) -{ - int idx; - int size; - long num; - char *dest; - - num = (long)n; - size = cnt_digit(num); - dest = (char *)malloc(sizeof(char) * (size + 1)); - if (!dest) - return (0); - idx = size - 1; - if (!num) - dest[0] = '0'; - else if (num < 0) - { - dest[0] = '-'; - num *= -1; - } - while (num) - { - dest[idx--] = (num % 10) + '0'; - num /= 10; - } - dest[size] = '\0'; - return (dest); -} diff --git a/eunumini/Libft/ft_memchr.c b/eunumini/Libft/ft_memchr.c deleted file mode 100644 index ed5928a..0000000 --- a/eunumini/Libft/ft_memchr.c +++ /dev/null @@ -1,29 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memchr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/11 15:44:27 by eunwolee #+# #+# */ -/* Updated: 2022/11/14 20:26:04 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void *ft_memchr(const void *s, int c, size_t n) -{ - const unsigned char *str; - unsigned char ch; - - str = (const unsigned char *)s; - ch = (unsigned char)c; - while (n--) - { - if (*str == ch) - return ((void *)str); - str++; - } - return (0); -} diff --git a/eunumini/Libft/ft_memcmp.c b/eunumini/Libft/ft_memcmp.c deleted file mode 100644 index e5b430e..0000000 --- a/eunumini/Libft/ft_memcmp.c +++ /dev/null @@ -1,30 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memcmp.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/09 21:07:36 by eunwolee #+# #+# */ -/* Updated: 2022/11/26 17:20:33 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -int ft_memcmp(const void *s1, const void *s2, size_t n) -{ - const unsigned char *str1; - const unsigned char *str2; - - str1 = (const unsigned char *)s1; - str2 = (const unsigned char *)s2; - while (n--) - { - if (*str1 != *str2) - return (*str1 - *str2); - str1++; - str2++; - } - return (0); -} diff --git a/eunumini/Libft/ft_memcpy.c b/eunumini/Libft/ft_memcpy.c deleted file mode 100644 index dc64629..0000000 --- a/eunumini/Libft/ft_memcpy.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memcpy.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/11 14:09:56 by eunwolee #+# #+# */ -/* Updated: 2022/11/23 22:50:36 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void *ft_memcpy(void *dst, const void *src, size_t n) -{ - unsigned char *dest; - const unsigned char *source; - - if (!dst && !src) - return (0); - dest = (unsigned char *)dst; - source = (const unsigned char *)src; - while (n--) - *dest++ = *source++; - return (dst); -} diff --git a/eunumini/Libft/ft_memmove.c b/eunumini/Libft/ft_memmove.c deleted file mode 100644 index 1f9c422..0000000 --- a/eunumini/Libft/ft_memmove.c +++ /dev/null @@ -1,31 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memmove.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/11 17:43:24 by eunwolee #+# #+# */ -/* Updated: 2022/11/23 22:52:37 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void *ft_memmove(void *dst, const void *src, size_t len) -{ - unsigned char *dest; - const unsigned char *source; - - if (!dst && !src) - return (0); - dest = (unsigned char *)dst; - source = (const unsigned char *)src; - if (dest > source) - while (len--) - *(dest + len) = *(source + len); - else - while (len--) - *dest++ = *source++; - return (dst); -} diff --git a/eunumini/Libft/ft_memset.c b/eunumini/Libft/ft_memset.c deleted file mode 100644 index 0959e11..0000000 --- a/eunumini/Libft/ft_memset.c +++ /dev/null @@ -1,25 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memset.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/10 12:33:34 by eunwolee #+# #+# */ -/* Updated: 2022/11/14 20:27:03 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void *ft_memset(void *b, int c, size_t len) -{ - unsigned char *str; - unsigned char tmp; - - str = (unsigned char *)b; - tmp = (unsigned char)c; - while (len--) - *str++ = tmp; - return (b); -} diff --git a/eunumini/Libft/ft_putchar_fd.c b/eunumini/Libft/ft_putchar_fd.c deleted file mode 100644 index 7fb1548..0000000 --- a/eunumini/Libft/ft_putchar_fd.c +++ /dev/null @@ -1,20 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putchar_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/15 15:41:40 by eunwolee #+# #+# */ -/* Updated: 2022/11/17 12:34:30 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void ft_putchar_fd(char c, int fd) -{ - if (fd < 0) - return ; - write (fd, &c, 1); -} diff --git a/eunumini/Libft/ft_putendl_fd.c b/eunumini/Libft/ft_putendl_fd.c deleted file mode 100644 index 88597d8..0000000 --- a/eunumini/Libft/ft_putendl_fd.c +++ /dev/null @@ -1,21 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putendl_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/16 21:45:36 by eunwolee #+# #+# */ -/* Updated: 2022/11/17 12:34:37 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void ft_putendl_fd(char *s, int fd) -{ - if (fd < 0) - return ; - write(fd, s, ft_strlen(s)); - write(fd, "\n", 1); -} diff --git a/eunumini/Libft/ft_putnbr_fd.c b/eunumini/Libft/ft_putnbr_fd.c deleted file mode 100644 index d3e5e80..0000000 --- a/eunumini/Libft/ft_putnbr_fd.c +++ /dev/null @@ -1,40 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putnbr_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/16 21:49:13 by eunwolee #+# #+# */ -/* Updated: 2022/11/17 14:47:44 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void ft_putnbr_fd(int n, int fd) -{ - char num; - - if (fd < 0) - return ; - if (n == -2147483648) - { - write(fd, "-2147483648", 11); - return ; - } - if (n < 0) - { - write (fd, "-", 1); - n *= -1; - } - if (n < 10) - { - num = n + '0'; - write (fd, &num, 1); - return ; - } - ft_putnbr_fd(n / 10, fd); - num = n % 10 + '0'; - write(fd, &num, 1); -} diff --git a/eunumini/Libft/ft_putstr_fd.c b/eunumini/Libft/ft_putstr_fd.c deleted file mode 100644 index d3be0c6..0000000 --- a/eunumini/Libft/ft_putstr_fd.c +++ /dev/null @@ -1,20 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putstr_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/15 16:25:54 by eunwolee #+# #+# */ -/* Updated: 2022/11/17 14:45:35 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void ft_putstr_fd(char *s, int fd) -{ - if (fd < 0) - return ; - write(fd, s, ft_strlen(s)); -} diff --git a/eunumini/Libft/ft_split.c b/eunumini/Libft/ft_split.c deleted file mode 100644 index 2c4a6c4..0000000 --- a/eunumini/Libft/ft_split.c +++ /dev/null @@ -1,100 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_split.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/14 21:52:44 by eunwolee #+# #+# */ -/* Updated: 2023/04/22 14:58:31 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -char **ft_split(char const *s, char c); -static int cnt_str(char const *s, int c); -static int exe_split(char **dest, const char *s, char c, int *idx); -static int cnt_len(char const *s, char c); -static char **clear(char **dest, int idx); - -char **ft_split(char const *s, char c) -{ - int idx; - int cnt; - char **dest; - - cnt = cnt_str(s, c); - dest = (char **)ft_calloc(cnt + 1, sizeof(char *)); - if (!dest) - return (0); - if (!cnt) - dest[0] = ft_strdup(""); - else - { - idx = 0; - if (exe_split(dest, s, c, &idx) == -1) - return (clear(dest, idx)); - } - return (dest); -} - -static int cnt_str(char const *s, int c) -{ - int cnt; - int len; - - cnt = 0; - while (*s) - { - if (*s == c) - s++; - else - { - len = cnt_len(s, c); - cnt++; - s += len; - } - } - return (cnt); -} - -static int exe_split(char **dest, const char *s, char c, int *idx) -{ - int size; - - *idx = 0; - while (*s) - { - if (*s == c) - s++; - else - { - size = cnt_len(s, c); - dest[*idx] = ft_substr(s, 0, size); - if (!dest[*idx]) - return (-1); - s += size; - *idx += 1; - } - } - return (0); -} - -static int cnt_len(char const *s, char c) -{ - int len; - - len = 0; - while (s[len] != c && s[len]) - len++; - return (len); -} - -static char **clear(char **dest, int idx) -{ - while (idx--) - free (dest[idx]); - free (dest); - return (0); -} diff --git a/eunumini/Libft/ft_strchr.c b/eunumini/Libft/ft_strchr.c deleted file mode 100644 index 5200892..0000000 --- a/eunumini/Libft/ft_strchr.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strchr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/12 17:03:53 by eunwolee #+# #+# */ -/* Updated: 2022/11/23 20:24:50 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -char *ft_strchr(const char *s, int c) -{ - unsigned char ch; - - ch = (unsigned char) c; - while (*s) - { - if (*s == ch) - return ((char *)s); - s++; - } - if (*s == ch) - return ((char *)s); - return (0); -} diff --git a/eunumini/Libft/ft_strdup.c b/eunumini/Libft/ft_strdup.c deleted file mode 100644 index 5a58a49..0000000 --- a/eunumini/Libft/ft_strdup.c +++ /dev/null @@ -1,26 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strdup.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/12 18:07:32 by eunwolee #+# #+# */ -/* Updated: 2022/12/02 15:48:12 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -char *ft_strdup(const char *s1) -{ - size_t len; - char *dest; - - len = ft_strlen(s1); - dest = (char *)malloc(sizeof(char) * (len + 1)); - if (!dest) - return (0); - ft_strlcpy(dest, s1, len + 1); - return (dest); -} diff --git a/eunumini/Libft/ft_striteri.c b/eunumini/Libft/ft_striteri.c deleted file mode 100644 index 60e94c4..0000000 --- a/eunumini/Libft/ft_striteri.c +++ /dev/null @@ -1,23 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_striteri.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/15 15:01:23 by eunwolee #+# #+# */ -/* Updated: 2022/11/17 14:44:32 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -void ft_striteri(char *s, void (*f)(unsigned int, char*)) -{ - int idx; - - idx = 0; - while (s[idx]) - { - f(idx, &s[idx]); - idx++; - } -} diff --git a/eunumini/Libft/ft_strjoin.c b/eunumini/Libft/ft_strjoin.c deleted file mode 100644 index 1962922..0000000 --- a/eunumini/Libft/ft_strjoin.c +++ /dev/null @@ -1,30 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strjoin.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/14 20:57:36 by eunwolee #+# #+# */ -/* Updated: 2022/11/15 15:18:15 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -char *ft_strjoin(char const *s1, char const *s2) -{ - int idx; - char *str; - - str = (char *)malloc(sizeof(char) * (ft_strlen(s1) + ft_strlen(s2) + 1)); - if (!str) - return (0); - idx = 0; - while (*s1) - str[idx++] = *s1++; - while (*s2) - str[idx++] = *s2++; - str[idx] = '\0'; - return (str); -} diff --git a/eunumini/Libft/ft_strlcat.c b/eunumini/Libft/ft_strlcat.c deleted file mode 100644 index 54737c8..0000000 --- a/eunumini/Libft/ft_strlcat.c +++ /dev/null @@ -1,31 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strlcat.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/12 16:27:27 by eunwolee #+# #+# */ -/* Updated: 2022/11/14 20:29:15 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -size_t ft_strlcat(char *dst, const char *src, size_t dstsize) -{ - int cnt; - size_t dst_len; - size_t src_len; - - dst_len = ft_strlen(dst); - src_len = ft_strlen(src); - if (dst_len >= dstsize) - return (src_len + dstsize); - dst += dst_len; - cnt = dstsize - dst_len - 1; - while (*src && cnt--) - *dst++ = *src++; - *dst = '\0'; - return (dst_len + src_len); -} diff --git a/eunumini/Libft/ft_strlcpy.c b/eunumini/Libft/ft_strlcpy.c deleted file mode 100644 index 4f7b7ad..0000000 --- a/eunumini/Libft/ft_strlcpy.c +++ /dev/null @@ -1,29 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strlcpy.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/12 16:08:41 by eunwolee #+# #+# */ -/* Updated: 2022/11/17 15:37:54 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -size_t ft_strlcpy(char *dst, const char *src, size_t dstsize) -{ - size_t len; - - len = ft_strlen(src); - if (!dstsize) - return (len); - while (*src && dstsize > 1) - { - *dst++ = *src++; - dstsize--; - } - *dst = '\0'; - return (len); -} diff --git a/eunumini/Libft/ft_strlen.c b/eunumini/Libft/ft_strlen.c deleted file mode 100644 index cc14ae3..0000000 --- a/eunumini/Libft/ft_strlen.c +++ /dev/null @@ -1,25 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strlen.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/12 15:48:24 by eunwolee #+# #+# */ -/* Updated: 2023/07/03 08:52:25 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -size_t ft_strlen(const char *s) -{ - size_t len; - - len = 0; - if (!s) - return (0); - while (s[len]) - len++; - return (len); -} diff --git a/eunumini/Libft/ft_strmapi.c b/eunumini/Libft/ft_strmapi.c deleted file mode 100644 index 5b493b0..0000000 --- a/eunumini/Libft/ft_strmapi.c +++ /dev/null @@ -1,31 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strmapi.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/15 12:58:33 by eunwolee #+# #+# */ -/* Updated: 2022/11/26 17:05:28 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -char *ft_strmapi(char const *s, char (*f)(unsigned int, char)) -{ - int idx; - char *dest; - - dest = (char *)malloc(sizeof(char) * (ft_strlen(s) + 1)); - if (!dest) - return (0); - idx = 0; - while (s[idx]) - { - dest[idx] = f(idx, s[idx]); - idx++; - } - dest[idx] = '\0'; - return (dest); -} diff --git a/eunumini/Libft/ft_strncat.c b/eunumini/Libft/ft_strncat.c deleted file mode 100644 index 8087ffc..0000000 --- a/eunumini/Libft/ft_strncat.c +++ /dev/null @@ -1,44 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strncat.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/03 07:51:04 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 16:19:01 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -char *ft_strncat(char *dest, char *src, int n) -{ - int size; - char *res; - int i; - int j; - - size = ft_strlen(dest) + n; - res = (char *)ft_calloc(size + 1, sizeof(char)); - i = 0; - if (dest) - { - while (dest[i]) - { - res[i] = dest[i]; - i++; - } - // free(dest); - } - j = 0; - if (src) - { - while (j < n) - { - res[i + j] = src[j]; - j++; - } - } - return (res); -} diff --git a/eunumini/Libft/ft_strncmp.c b/eunumini/Libft/ft_strncmp.c deleted file mode 100644 index fedb6ba..0000000 --- a/eunumini/Libft/ft_strncmp.c +++ /dev/null @@ -1,30 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strncmp.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/12 17:23:49 by eunwolee #+# #+# */ -/* Updated: 2022/11/17 16:34:45 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -int ft_strncmp(const char *s1, const char *s2, size_t n) -{ - const unsigned char *str1; - const unsigned char *str2; - - str1 = (const unsigned char *)s1; - str2 = (const unsigned char *)s2; - while (n-- && (*str1 || *str2)) - { - if (*str1 != *str2) - return (*str1 - *str2); - str1++; - str2++; - } - return (0); -} diff --git a/eunumini/Libft/ft_strnstr.c b/eunumini/Libft/ft_strnstr.c deleted file mode 100644 index d719a2b..0000000 --- a/eunumini/Libft/ft_strnstr.c +++ /dev/null @@ -1,38 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strnstr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/12 17:16:09 by eunwolee #+# #+# */ -/* Updated: 2023/04/06 19:28:36 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -char *ft_strnstr(const char *haystack, const char *needle, size_t len) -{ - size_t idx; - size_t h_len; - size_t n_len; - - idx = 0; - if (!*needle) - return ((char *)haystack); - if (!len) - return (0); - h_len = ft_strlen(haystack); - n_len = ft_strlen(needle); - if (len < n_len || h_len < n_len) - return (0); - while (idx <= len - n_len && *haystack) - { - if (!ft_strncmp(haystack, needle, n_len)) - return ((char *)haystack); - idx++; - haystack++; - } - return (0); -} diff --git a/eunumini/Libft/ft_strrchr.c b/eunumini/Libft/ft_strrchr.c deleted file mode 100644 index c2cdf10..0000000 --- a/eunumini/Libft/ft_strrchr.c +++ /dev/null @@ -1,31 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strrchr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/12 17:11:16 by eunwolee #+# #+# */ -/* Updated: 2022/11/23 20:46:02 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -char *ft_strrchr(const char *s, int c) -{ - const char *tmp; - unsigned char ch; - - tmp = 0; - ch = (unsigned char) c; - while (*s) - { - if (*s == ch) - tmp = s; - s++; - } - if (*s == ch) - tmp = s; - return ((char *)tmp); -} diff --git a/eunumini/Libft/ft_strtrim.c b/eunumini/Libft/ft_strtrim.c deleted file mode 100644 index 0bc375e..0000000 --- a/eunumini/Libft/ft_strtrim.c +++ /dev/null @@ -1,55 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strtrim.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/20 14:30:50 by eunwolee #+# #+# */ -/* Updated: 2022/12/02 15:49:00 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -static const char *from_front(char const *s1, char const *set, int *size) -{ - while (*s1) - { - if (!ft_strchr(set, *s1)) - break ; - s1++; - *size -= 1; - } - return (s1); -} - -static void from_back(char const *tmp, char const *set, int *size) -{ - while (*tmp) - { - if (!ft_strchr(set, *tmp)) - break ; - tmp--; - *size -= 1; - } -} - -char *ft_strtrim(char const *s1, char const *set) -{ - int size; - char *dest; - char const *tmp; - - size = ft_strlen(s1); - s1 = from_front(s1, set, &size); - tmp = s1; - tmp += size - 1; - if (size) - from_back(tmp, set, &size); - dest = (char *)malloc(sizeof(char) * (size + 1)); - if (!dest) - return (0); - ft_strlcpy(dest, s1, size + 1); - return (dest); -} diff --git a/eunumini/Libft/ft_substr.c b/eunumini/Libft/ft_substr.c deleted file mode 100644 index fc44b76..0000000 --- a/eunumini/Libft/ft_substr.c +++ /dev/null @@ -1,36 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_substr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/14 17:55:14 by eunwolee #+# #+# */ -/* Updated: 2022/11/25 16:48:59 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -char *ft_substr(char const *s, unsigned int start, size_t len) -{ - char *tmp; - size_t idx; - size_t size; - - if (start > ft_strlen(s)) - size = 0; - else if (len > ft_strlen(s + start)) - size = ft_strlen(s + start); - else - size = len; - tmp = (char *)malloc(sizeof(char) * (size + 1)); - if (!tmp) - return (0); - idx = 0; - if (size) - while (idx < len && s[start]) - tmp[idx++] = s[start++]; - tmp[idx] = '\0'; - return (tmp); -} diff --git a/eunumini/Libft/ft_tolower.c b/eunumini/Libft/ft_tolower.c deleted file mode 100644 index b5b54b4..0000000 --- a/eunumini/Libft/ft_tolower.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_tolower.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/09 18:50:14 by eunwolee #+# #+# */ -/* Updated: 2022/11/14 20:30:06 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_tolower(int c) -{ - if (c >= 'A' && c <= 'Z') - return (c + 32); - return (c); -} diff --git a/eunumini/Libft/ft_toupper.c b/eunumini/Libft/ft_toupper.c deleted file mode 100644 index fc084ac..0000000 --- a/eunumini/Libft/ft_toupper.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_toupper.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/09 18:47:05 by eunwolee #+# #+# */ -/* Updated: 2022/11/14 20:30:09 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_toupper(int c) -{ - if (c >= 'a' && c <= 'z') - return (c - 32); - return (c); -} diff --git a/eunumini/Libft/get_next_line.c b/eunumini/Libft/get_next_line.c deleted file mode 100644 index 6500a3a..0000000 --- a/eunumini/Libft/get_next_line.c +++ /dev/null @@ -1,138 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* get_next_line.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/12/26 16:01:43 by eunwolee #+# #+# */ -/* Updated: 2023/07/12 19:41:52 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -static t_g_list *get_new_nod(int fd) -{ - char *buff; - t_g_list *nod; - - buff = (char *)malloc(sizeof(char) * 1); - if (!buff) - return (0); - buff[0] = '\0'; - nod = (t_g_list *)malloc(sizeof(t_g_list) * 1); - if (!nod) - { - free(buff); - return (0); - } - nod->buff = buff; - nod->fd = fd; - nod->next = 0; - return (nod); -} - -static t_g_list *get_fd_nod(t_g_list **head, int fd) -{ - t_g_list *tmp; - - tmp = *head; - if (!tmp) - { - tmp = get_new_nod(fd); - if (!tmp) - return (0); - *head = tmp; - } - while (tmp->next) - { - if (tmp->fd == fd) - return (tmp); - tmp = tmp->next; - } - if (tmp->fd != fd) - { - tmp->next = get_new_nod(fd); - if (!tmp->next) - return (0); - tmp = tmp->next; - } - return (tmp); -} - -static char *get_done_line(t_g_list *nod) -{ - int idx; - int nod_cnt; - int line_cnt; - char *line; - - line_cnt = 0; - while (nod->buff[line_cnt] != '\n' && nod->buff[line_cnt]) - line_cnt++; - if (nod->buff[line_cnt] == '\n') - line_cnt++; - nod_cnt = ft_strlen(&nod->buff[line_cnt]); - line = (char *)malloc(sizeof(char) * (line_cnt + 1)); - if (!line) - return (0); - idx = -1; - while (++idx < line_cnt) - line[idx] = nod->buff[idx]; - idx = -1; - while (++idx < nod_cnt) - nod->buff[idx] = nod->buff[idx + line_cnt]; - line[line_cnt] = '\0'; - nod->buff[nod_cnt] = '\0'; - return (line); -} - -static int get_read_line(int fd, t_g_list *nod) -{ - int rd; - char *buff; - - buff = (char *)malloc(sizeof(char) * BUFFER_SIZE + 1); - if (!buff) - return (-1); - rd = 1; - while (rd) - { - rd = read(fd, buff, BUFFER_SIZE); - if (rd == -1 || !rd) - break ; - buff[rd] = '\0'; - nod->buff = ft_strjoin(nod->buff, buff); - if (!nod->buff) - { - free(buff); - return (-1); - } - if (ft_strchr(nod->buff, '\n')) - break ; - } - free(buff); - return (rd); -} - -char *get_next_line(int fd) -{ - t_g_list *nod; - char *line; - static t_g_list *head; - - if (fd < 0 || BUFFER_SIZE <= 0) - return (0); - nod = get_fd_nod(&head, fd); - if (!nod) - return (0); - if (get_read_line(fd, nod) == -1 || !*(nod->buff)) - return (delete_nod(&head, nod)); - line = get_done_line(nod); - if (!line) - return (delete_nod(&head, nod)); - if (!*(nod->buff)) - delete_nod(&head, nod); - return (line); -} diff --git a/eunumini/Libft/get_next_line_utils.c b/eunumini/Libft/get_next_line_utils.c deleted file mode 100644 index ec97127..0000000 --- a/eunumini/Libft/get_next_line_utils.c +++ /dev/null @@ -1,36 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* get_next_line_utils.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/12/26 16:01:47 by eunwolee #+# #+# */ -/* Updated: 2023/07/10 19:31:14 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -char *delete_nod(t_g_list **head, t_g_list *nod) -{ - t_g_list *tmp; - - tmp = *head; - if (tmp == nod) - { - if (!(tmp->next)) - *head = 0; - else - *head = tmp->next; - free(nod->buff); - free(nod); - return (0); - } - while (tmp->next != nod) - tmp = tmp->next; - tmp->next = nod->next; - free(nod->buff); - free(nod); - return (0); -} diff --git a/eunumini/Libft/libft.h b/eunumini/Libft/libft.h deleted file mode 100644 index db6e378..0000000 --- a/eunumini/Libft/libft.h +++ /dev/null @@ -1,73 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* libft.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/07 21:00:01 by eunwolee #+# #+# */ -/* Updated: 2023/07/12 19:42:12 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#ifndef LIBFT_H -# define LIBFT_H - -# include -# include -# include - -# ifndef BUFFER_SIZE -# define BUFFER_SIZE 42 -# endif - -typedef struct s_g_list -{ - int fd; - char *buff; - struct s_g_list *next; -} t_g_list; - -char *get_next_line(int fd); -char *delete_nod(t_g_list **head, t_g_list *nod); - -//Libc functions -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); -int ft_memcmp(const void *s1, const void *s2, size_t n); -void *ft_memset(void *b, int c, size_t len); -void *ft_memchr(const void *s, int c, size_t n); -void *ft_memcpy(void *dst, const void *src, size_t n); -void *ft_memmove(void *dst, const void *src, size_t len); -void *ft_calloc(size_t count, size_t size); -void ft_bzero(void *s, size_t n); -size_t ft_strlen(const char *s); -size_t ft_strlcpy(char *dst, const char *src, size_t dstsize); -size_t ft_strlcat(char *dst, const char *src, size_t dstsize); -char *ft_strncat(char *dest, char *src, int n); -char *ft_strchr(const char *s, int c); -char *ft_strrchr(const char *s, int c); -char *ft_strnstr(const char *haystack, const char *needle, size_t len); -char *ft_strdup(const char *s1); -int ft_strncmp(const char *s1, const char *s2, size_t n); -int ft_atoi(const char *str); - -//Additional functions -char *ft_substr(char const *s, unsigned int start, size_t len); -char *ft_strjoin(char const *s1, char const *s2); -char *ft_strtrim(char const *s1, char const *set); -char **ft_split(char const *s, char c); -char *ft_itoa(int n); -char *ft_strmapi(char const *s, char (*f)(unsigned int, char)); -void ft_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); - -#endif \ No newline at end of file diff --git a/eunumini/Makefile b/eunumini/Makefile deleted file mode 100644 index efcae68..0000000 --- a/eunumini/Makefile +++ /dev/null @@ -1,59 +0,0 @@ -NAME = minishell - -L_DIR = Libft -L_NAME = libft.a - -INCS_DIR = incs -SRCS_DIR = srcs - -CC = cc -CFLAGS = -Wall -Wextra -Werror - -RM = rm -rf -MAKE = make - -SRCS = $(SRCS_DIR)/minishell.c \ - $(SRCS_DIR)/init/init.c \ - $(SRCS_DIR)/lexer/lexer.c \ - $(SRCS_DIR)/lexer/tokenizer.c \ - $(SRCS_DIR)/lexer/quote.c \ - $(SRCS_DIR)/lexer/expand.c \ - $(SRCS_DIR)/parser/syntax.c \ - $(SRCS_DIR)/parser/parser.c \ - $(SRCS_DIR)/utils/env.c \ - $(SRCS_DIR)/utils/list.c \ - $(SRCS_DIR)/utils/list_clear.c \ - $(SRCS_DIR)/utils/tree.c \ - $(SRCS_DIR)/utils/utils.c \ - $(SRCS_DIR)/utils/temp.c \ - -OBJS = $(SRCS:%.c=%.o) - -%.o: %.c - $(CC) $(CFLAGS) -c $^ -o $@ -I $(INCS_DIR) - -all: $(NAME) - -$(NAME): $(L_NAME) $(OBJS) - $(CC) $^ -o $@ -I $(INCS_DIR) - # $(CC) $^ -o $@ -I $(INCS_DIR) -fsanitize=address - -$(L_NAME): - $(MAKE) -C $(L_DIR) - cp ./$(L_DIR)/$(L_NAME) . - -clean: - $(MAKE) fclean -C $(L_DIR) - $(RM) $(OBJS) - $(RM) $(SRCS_DIR_M)/*.o $(SRCS_DIR_B)/*.o $(L_NAME) - -fclean: - $(MAKE) fclean -C $(L_DIR) - $(MAKE) clean - $(RM) $(NAME) - -re: - $(MAKE) fclean - $(MAKE) all - -.PHONY: all clean fclean re \ No newline at end of file diff --git a/eunumini/incs/init.h b/eunumini/incs/init.h deleted file mode 100644 index b7cd230..0000000 --- a/eunumini/incs/init.h +++ /dev/null @@ -1,21 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* init.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/11 10:29:44 by eunwolee #+# #+# */ -/* Updated: 2023/07/12 16:17:39 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#ifndef INIT_H -# define INIT_H - -# include "struct.h" - -void init(t_data **data, char **envp); -void env_init(t_data *data, char **envp); - -#endif \ No newline at end of file diff --git a/eunumini/incs/message.h b/eunumini/incs/message.h deleted file mode 100644 index a6061ac..0000000 --- a/eunumini/incs/message.h +++ /dev/null @@ -1,23 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* message.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/12 18:39:04 by eunwolee #+# #+# */ -/* Updated: 2023/07/12 18:39:31 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#ifndef MESSAGE_H -# define MESSAGE_H - -# define E_SYNTAX_PIPE "bash: syntax error near unexpected token `|'" -# define E_SYNTAX_INPUT "bash: syntax error near unexpected token `<'" -# define E_SYNTAX_OUTPUT "bash: syntax error near unexpected token `>'" -# define E_SYNTAX_HEREDOC "bash: syntax error near unexpected token `<<'" -# define E_SYNTAX_APPEND "bash: syntax error near unexpected token `>>'" -# define E_SYNTAX_NEWLINE "bash: syntax error near unexpected token `newline'" - -#endif \ No newline at end of file diff --git a/eunumini/incs/minishell.h b/eunumini/incs/minishell.h deleted file mode 100644 index a19a6b7..0000000 --- a/eunumini/incs/minishell.h +++ /dev/null @@ -1,28 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* minishell.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/06/29 11:05:33 by eunwolee #+# #+# */ -/* Updated: 2023/07/12 18:39:51 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#ifndef MINISHELL_H -# define MINISHELL_H - -# include -# include -# include -# include "init.h" -# include "parse.h" -# include "struct.h" -# include "utils.h" -# include "message.h" -# include "../Libft/libft.h" -// #include -// #include - -#endif \ No newline at end of file diff --git a/eunumini/incs/parse.h b/eunumini/incs/parse.h deleted file mode 100644 index e216be9..0000000 --- a/eunumini/incs/parse.h +++ /dev/null @@ -1,34 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* parse.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/04 07:53:54 by eunwolee #+# #+# */ -/* Updated: 2023/07/17 07:09:31 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#ifndef PARSE_H -# define PARSE_H - -# include "struct.h" - -void tokenizer(t_data *data, t_token **token, int *i); -t_token *token_create(void); -void token_add_list(t_list **head, t_token **token, t_bool token_flag); -void token_redirect(t_data *data, t_token *token, int *i); - -void single_quote(char *input, t_token *token, int *i); -void double_quote(char *input, t_token *token, int *i, t_data *data); - -void lexer(t_data *data); - -t_bool syntax(t_data *data); - -void parser(t_data *data); - -t_bool expand(t_data *data, t_token *token, int *i, t_bool quote); - -#endif \ No newline at end of file diff --git a/eunumini/incs/struct.h b/eunumini/incs/struct.h deleted file mode 100644 index d6b01ca..0000000 --- a/eunumini/incs/struct.h +++ /dev/null @@ -1,71 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* struct.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/11 10:24:15 by eunwolee #+# #+# */ -/* Updated: 2023/07/16 17:37:07 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#ifndef STRUCT_H -# define STRUCT_H - -typedef enum e_bool -{ - FALSE, - TRUE -}t_bool; - -typedef enum e_type -{ - T_PIPE, - T_WORD, - T_CMD, - T_ARG, - T_REDIRECT, - T_INPUT, - T_OUTPUT, - T_HEREDOC, - T_APPEND, -}t_type; - -typedef struct s_token -{ - int type; - int redirect_type; - char *str; -} t_token; - -//tokens와 envs에서 통용되는 리스트 구조체 -typedef struct s_list -{ - struct s_list *pre; - struct s_list *next; - t_token *token; - char *env; -}t_list; - -typedef struct s_leaf -{ - struct s_leaf *parent; - struct s_leaf *left_child; - struct s_leaf *right_child; - int leaf_type; - t_token *token; - t_bool exist; -}t_leaf; - -typedef struct s_data -{ - char *input; - t_list *tokens; - t_list *envs; - char **env_array; - t_leaf *root; - int error_code; -} t_data; - -#endif \ No newline at end of file diff --git a/eunumini/incs/utils.h b/eunumini/incs/utils.h deleted file mode 100644 index 0a48943..0000000 --- a/eunumini/incs/utils.h +++ /dev/null @@ -1,48 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* utils.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/11 10:32:09 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 08:38:22 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -//환경변수, 자료구조 및 기타 함수 - -#ifndef UTILS_H -# define UTILS_H - -# include "struct.h" - -void env_print(t_data *data); -t_list *env_search(t_data *data, char *key); -t_bool env_remove(t_data *data, char *key); -char **env_to_array(t_data *data); - -t_list *ft_lstnew(void); -void ft_lstadd_back(t_list **lst, t_list *new); -t_list *ft_lstlast(t_list *lst); -int ft_lstsize(t_list *lst); -void ft_lstdelone(t_list *lst); -void ft_lstclear(t_list **lst); - -t_leaf *tree_create_leaf(t_leaf *parent, int leaf_type); -t_bool tree_add_left(t_leaf *parent, t_token *new_token, int leaf_type); -t_bool tree_add_right(t_leaf *parent, t_token *new_token, int leaf_type); -void tree_clear(t_leaf *leaf); - -t_bool error_back_readline(t_data *data, char *str, int error_code); -void program_error_exit(char *str); -void input_free(t_data *data); -void data_free(t_data *data); - -/*temp.c 임시 함수*/ -void tree_print(t_leaf *leaf); -void print_token(t_data *data); -void env_array_print(t_data *data); -void check_leak(void); - -#endif \ No newline at end of file diff --git a/eunumini/srcs/init/init.c b/eunumini/srcs/init/init.c deleted file mode 100644 index 06a0839..0000000 --- a/eunumini/srcs/init/init.c +++ /dev/null @@ -1,43 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* init.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/06/29 11:06:52 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 08:50:37 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../incs/minishell.h" - -void init(t_data **data, char **envp); -void env_init(t_data *data, char **envp); - -//필요하신 초기화 내용 여기 넣어주시면 됩니당 -void init(t_data **data, char **envp) -{ - *data = (t_data *)ft_calloc(1, sizeof(t_data)); - if (!*data) - program_error_exit("bash"); - env_init(*data, envp); -} - -void env_init(t_data *data, char **envp) -{ - int i; - t_list *new; - - i = -1; - while (envp[++i]) - { - new = ft_lstnew(); - if (!new) - program_error_exit("bash"); - new->env = ft_strdup(envp[i]); - if (!new->env) - program_error_exit("bash"); - ft_lstadd_back(&data->envs, new); - } -} diff --git a/eunumini/srcs/lexer/expand.c b/eunumini/srcs/lexer/expand.c deleted file mode 100644 index 12280a8..0000000 --- a/eunumini/srcs/lexer/expand.c +++ /dev/null @@ -1,147 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* expand.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/11 12:20:49 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 16:19:42 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../../incs/minishell.h" - -t_bool expand(t_data *data, t_token *token, int *i, t_bool quote); -static t_bool check_heredoc(t_data *data, t_token *token, int *i); -static t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote); -static t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote); -static void replace(t_data *data, t_token *token, char *name); - -t_bool expand(t_data *data, t_token *token, int *i, t_bool quote) -{ - char *name; - - *i += 1; - name = NULL; - if (check_heredoc(data, token, i) == TRUE) - return (TRUE); - if (check_blank(data, token, i, quote) == TRUE) - return (TRUE); - if (check_other(data, token, i, quote) == TRUE) - return (TRUE); - while (data->input[*i] != '\'' && data->input[*i] != '\"' \ - && data->input[*i] != ' ' && data->input[*i] != '\t' \ - && data->input[*i] != '\0' && ft_isalnum(data->input[*i])) - { - name = ft_strncat(name, &data->input[*i], 1); - if (!name) - program_error_exit("bash"); - *i += 1; - } - replace(data, token, name); - if (quote == FALSE) - *i -= 1; - else if (quote == TRUE && data->input[*i] == '\"') - return (TRUE); - return (FALSE); -} - -static t_bool check_heredoc(t_data *data, t_token *token, int *i) -{ - t_list *tmp; - - tmp = ft_lstlast(data->tokens); - if (tmp && tmp->token->redirect_type == T_HEREDOC) - { - token->str = ft_strncat(token->str, "$", 1); - if (!token->str) - program_error_exit("bash"); - *i -= 1; - return (TRUE); - } - return (FALSE); -} - -static t_bool check_blank(t_data *data, t_token *token, int *i, t_bool quote) -{ - if (quote == FALSE && (data->input[*i] == ' ' || data->input[*i] == '\t')) - { - token->str = ft_strncat(token->str, "$", 1); - if (!token->str) - program_error_exit("bash"); - if (quote == FALSE) - { - *i -= 1; - return (TRUE); - } - token->str = ft_strncat(token->str, &data->input[*i], 1); - if (!token->str) - program_error_exit("bash"); - if (quote == TRUE) - return (TRUE); - } - return (FALSE); -} - -static t_bool check_other(t_data *data, t_token *token, int *i, t_bool quote) -{ - if (data->input[*i] == '\"') - { - - if (quote == TRUE) - { - token->str = ft_strncat(token->str, "$", 1); - if (!token->str) - program_error_exit("bash"); - } - else - { - if (data->input[*i + 1] == '\0') - return (FALSE); - *i -= 1; - } - return (TRUE); - } - else if (data->input[*i] == '\'') - { - *i -= 1 ; - return (TRUE); - } - else if (data->input[*i] == '\0') - { - token->str = ft_strncat(token->str, "$", 1); - if (!token->str) - program_error_exit("bash"); - return (TRUE); - } - return (FALSE); -} - -static void replace(t_data *data, t_token *token, char *name) -{ - int j; - t_list *tmp; - - tmp = env_search(data, name); - if (!tmp) - { - token->str = ft_strdup("$"); - if (!token->str) - program_error_exit("bash"); - token->str = ft_strncat(token->str, name, ft_strlen(name)); - if (!token->str) - program_error_exit("bash"); - } - else - { - j = 0; - while (tmp->env[j] != '=') - j++; - token->str = ft_strncat(token->str, \ - &tmp->env[j + 1], ft_strlen(&tmp->env[j + 1])); - if (!token->str) - program_error_exit("bash"); - } - free(name); -} diff --git a/eunumini/srcs/lexer/lexer.c b/eunumini/srcs/lexer/lexer.c deleted file mode 100644 index a21a25c..0000000 --- a/eunumini/srcs/lexer/lexer.c +++ /dev/null @@ -1,59 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* lexer.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/06/29 16:24:37 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 16:14:38 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../../incs/minishell.h" - -void lexer(t_data *data); -static void check_char(t_data *data, t_token **token, int *i); - -void lexer(t_data *data) -{ - int i; - t_token *token; - - token = token_create(); - if (!token) - program_error_exit("bash"); - i = -1; - while (data->input[++i]) - check_char(data, &token, &i); - if (token->str && *(token->str)) - token_add_list(&data->tokens, &token, FALSE); -} - -static void check_char(t_data *data, t_token **token, int *i) -{ - if (data->input[*i] == '|' \ - || data->input[*i] == '<' || data->input[*i] == '>') - { - if (*(*token)->str) - token_add_list(&data->tokens, token, TRUE); - tokenizer(data, token, i); - } - else if (data->input[*i] == '\'' || data->input[*i] == '\"') - { - tokenizer(data, token, i); - } - else if (data->input[*i] == ' ' || data->input[*i] == '\t') - { - if (*(*token)->str) - token_add_list(&data->tokens, token, TRUE); - } - else if (data->input[*i] == '$') - expand(data, *token, i, FALSE); - else - { - (*token)->str = ft_strncat((*token)->str, &data->input[*i], 1); - if (!(*token)->str) - program_error_exit("bash"); - } -} diff --git a/eunumini/srcs/lexer/quote.c b/eunumini/srcs/lexer/quote.c deleted file mode 100644 index cce7479..0000000 --- a/eunumini/srcs/lexer/quote.c +++ /dev/null @@ -1,114 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* quote.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/03 07:46:30 by eunwolee #+# #+# */ -/* Updated: 2023/07/16 20:16:29 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../../incs/minishell.h" - -void single_quote(char *input, t_token *token, int *i); -void double_quote(char *input, t_token *token, int *i, t_data *data); -static t_bool find_next_quote(char *input, t_token *token, int i, char quote); -static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next_quote); -static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next_quote); - -void single_quote(char *input, t_token *token, int *i) -{ - t_bool next_quote; - - *i += 1; - next_quote = find_next_quote(input, token, *i, '\''); - while (input[*i] != '\'' && input[*i] != '\0') - { - if (s_check_char(input, token, i, next_quote) == TRUE) - return ; - *i += 1; - } - if (input[*i] == '\0') - *i -= 1; -} - -void double_quote(char *input, t_token *token, int *i, t_data *data) -{ - t_bool next_quote; - - *i += 1; - next_quote = find_next_quote(input, token, *i, '\"'); - while (input[*i] != '\"' && input[*i] != '\0') - { - if (input[*i] == '$') - { - if (input[*i + 1] != '\'' && next_quote == TRUE) - if (expand(data, token, i, TRUE) == TRUE) - return ; - } - if (d_check_char(input, token, i, next_quote) == TRUE) - return ; - *i += 1; - } - if (input[*i] == '\0') - *i -= 1; -} - -static t_bool find_next_quote(char *input, t_token *token, int i, char quote) -{ - if (quote == '\"') - while (input[i] != quote && input[i] != '\0') - { - if (input[i] == '\\' && input[i + 1] == quote) - i++; - i++; - } - else - while (input[i] != quote && input[i] != '\0') - i++; - if (input[i] == '\0') - { - token->str = ft_strncat(token->str, "e, 1); - if (!token->str) - program_error_exit("bash"); - return (FALSE); - } - return (TRUE); -} - -static t_bool s_check_char(char *input, t_token *token, int *i, t_bool next_quote) -{ - if (next_quote == FALSE \ - && (input[*i] != ' ' || input[*i] != '\t')) - { - *i -= 1; - return (TRUE); - } - else - token->str = ft_strncat(token->str, &input[*i], 1); - if (!token->str) - program_error_exit("bash"); - return (FALSE); -} - -static t_bool d_check_char(char *input, t_token *token, int *i, t_bool next_quote) -{ - if (next_quote == FALSE \ - && (input[*i] != ' ' || input[*i] != '\t')) - { - *i -= 1; - return (TRUE); - } - if (input[*i] == '\\' && input[*i + 1] == '\"') - { - token->str = ft_strncat(token->str, "\\\"", 2); - *i += 1; - } - else - token->str = ft_strncat(token->str, &input[*i], 1); - if (!token->str) - program_error_exit("bash"); - return (FALSE); -} \ No newline at end of file diff --git a/eunumini/srcs/lexer/tokenizer.c b/eunumini/srcs/lexer/tokenizer.c deleted file mode 100644 index 5433ee4..0000000 --- a/eunumini/srcs/lexer/tokenizer.c +++ /dev/null @@ -1,91 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* tokenizer.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/11 12:26:13 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 09:06:12 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../../incs/minishell.h" - -void tokenizer(t_data *data, t_token **token, int *i); -t_token *token_create(void); -void token_redirect(t_data *data, t_token *token, int *i); -void token_add_list(t_list **head, t_token **token, t_bool token_flag); - -void tokenizer(t_data *data, t_token **token, int *i) -{ - if (data->input[*i] == '|') - (*token)->type = T_PIPE; - else if (data->input[*i] == '\"') - double_quote(data->input, *token, i, data); - else if (data->input[*i] == '\'') - single_quote(data->input, *token, i); - else if (data->input[*i] == '<' || data->input[*i] == '>') - token_redirect(data, *token, i); - if ((data->input[*i] == '\'' || data->input[*i] == '\"') \ - && (data->input[*i + 1] != ' ' && data->input[*i + 1] != '\t') \ - && (data->input[*i + 1] != '\0')) - return ; - token_add_list(&data->tokens, token, TRUE); -} - -t_token *token_create(void) -{ - t_token *token; - - token = (t_token *)ft_calloc(1, sizeof(t_token)); - if (!token) - program_error_exit("bash"); - token->type = T_WORD; - token->str = ft_strdup(""); - if (!token->str) - program_error_exit("bash"); - return (token); -} - -void token_redirect(t_data *data, t_token *token, int *i) -{ - token->type = T_REDIRECT; - if (data->input[*i] == '<') - { - if (data->input[*i + 1] == '<') - { - token->redirect_type = T_HEREDOC; - *i += 1; - } - else - token->redirect_type = T_INPUT; - } - else - { - if (data->input[*i + 1] == '>') - { - token->redirect_type = T_APPEND; - *i += 1; - } - else - token->redirect_type = T_OUTPUT; - } -} - -void token_add_list(t_list **head, t_token **token, t_bool token_flag) -{ - t_list *new; - - new = ft_lstnew(); - if (!new) - program_error_exit("bash"); - new->token = *token; - ft_lstadd_back(head, new); - if (token_flag == TRUE) - { - *token = token_create(); - if (!*token) - program_error_exit("bash"); - } -} diff --git a/eunumini/srcs/minishell.c b/eunumini/srcs/minishell.c deleted file mode 100644 index 4ac6e53..0000000 --- a/eunumini/srcs/minishell.c +++ /dev/null @@ -1,47 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* minishell.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/06/29 11:06:49 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 16:19:56 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../incs/minishell.h" - -int main(int argc, char **argv, char **envp) -{ - t_data *data; - - // atexit(check_leak); - - (void)argc; - (void)argv; - init(&data, envp); - - // while (TRUE) - for(int i=0; i<1; i++) - { - char *str = get_next_line(0); - data->input = ft_substr(str, 0, ft_strlen(str) - 1); //-1 개행 떼기 - if (*data->input) - { - lexer(data); - if (syntax(data) == FALSE) - return (0); //free하고 다시 input 받기 - parser(data); - - print_token(data); - printf("\n\n"); - tree_print(data->root); - printf("\n\n"); - - // input_free(data); - } - } - // data_free(data); - return (0); -} diff --git a/eunumini/srcs/parser/parser.c b/eunumini/srcs/parser/parser.c deleted file mode 100644 index ba26787..0000000 --- a/eunumini/srcs/parser/parser.c +++ /dev/null @@ -1,67 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* parser.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/03 18:35:07 by eunwolee #+# #+# */ -/* Updated: 2023/07/14 07:52:10 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../../incs/minishell.h" - -void parser(t_data *data); -static void link_pipe_leaf(t_leaf **cur_leaf); -static void check_token_type(t_leaf *cur_leaf, t_list *cur_token); - -void parser(t_data *data) -{ - t_list *cur_token; - t_leaf *cur_leaf; - - cur_token = data->tokens; - data->root = tree_create_leaf(NULL, T_PIPE); - data->root->left_child = tree_create_leaf(data->root, T_CMD); - cur_leaf = data->root->left_child; - while (cur_token) - { - while (cur_token && cur_token->token->type != T_PIPE) - { - check_token_type(cur_leaf, cur_token); - cur_token = cur_token->next; - } - if (!cur_token) - break ; - if (cur_token->token->type == T_PIPE) - link_pipe_leaf(&cur_leaf); - cur_token = cur_token->next; - } -} - -static void link_pipe_leaf(t_leaf **cur_leaf) -{ - *cur_leaf = (*cur_leaf)->parent; - (*cur_leaf)->exist = TRUE; - (*cur_leaf)->right_child = tree_create_leaf(*cur_leaf, T_PIPE); - *cur_leaf = (*cur_leaf)->right_child; - (*cur_leaf)->left_child = tree_create_leaf(*cur_leaf, T_CMD); - *cur_leaf = (*cur_leaf)->left_child; -} - -static void check_token_type(t_leaf *cur_leaf, t_list *cur_token) -{ - if (cur_token->token->type == T_REDIRECT) - tree_add_left(cur_leaf, cur_token->token, T_REDIRECT); - else if (cur_token->token->type == T_CMD) - tree_add_right(cur_leaf, cur_token->token, T_CMD); - else if (cur_token->token->type == T_ARG) - { - if (cur_token->pre->token->type == T_REDIRECT) - tree_add_left(cur_leaf, cur_token->token, T_ARG); - else if (cur_token->pre->token->type == T_CMD \ - || cur_token->pre->token->type == T_ARG) - tree_add_right(cur_leaf, cur_token->token, T_ARG); - } -} diff --git a/eunumini/srcs/parser/syntax.c b/eunumini/srcs/parser/syntax.c deleted file mode 100644 index 8e58659..0000000 --- a/eunumini/srcs/parser/syntax.c +++ /dev/null @@ -1,97 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* syntax.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/07 22:24:38 by eunwolee #+# #+# */ -/* Updated: 2023/07/17 06:40:42 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../../incs/minishell.h" - -t_bool syntax(t_data *data); -static t_bool syntax_none(t_data *data, t_list *cur); -static void syntax_word(t_list *cur); -static t_bool syntax_redirect(t_data *data, t_list *cur); -static t_bool syntax_pipe(t_data *data, t_list *cur); - -t_bool syntax(t_data *data) -{ - t_list *cur; - - cur = data->tokens; - if (syntax_none(data, cur) == FALSE) - return (FALSE); - cur = cur->next; - while (cur) - { - if (cur->token->type == T_WORD) - syntax_word(cur); - else if (cur->token->type == T_PIPE) - { - if (syntax_pipe(data, cur) == FALSE) - return (FALSE); - } - else if (cur->token->type == T_REDIRECT) - { - if (syntax_redirect(data, cur) == FALSE) - return (FALSE); - } - cur = cur->next; - } - return (TRUE); -} - -static t_bool syntax_none(t_data *data, t_list *cur) -{ - if (cur->token->type == T_WORD) - cur->token->type = T_CMD; - else if (cur->token->type == T_PIPE) - return (error_back_readline(data, E_SYNTAX_PIPE, 258)); - return (TRUE); -} - -static void syntax_word(t_list *cur) -{ - if (cur->pre->token->type == T_ARG \ - && cur->pre->pre->token->type == T_REDIRECT) - cur->token->type = T_CMD; - else if (cur->pre->token->type == T_CMD \ - || cur->pre->token->type == T_ARG \ - || cur->pre->token->type == T_REDIRECT) - cur->token->type = T_ARG; - else if (cur->pre->token->type == T_PIPE) - cur->token->type = T_CMD; -} - -static t_bool syntax_redirect(t_data *data, t_list *cur) -{ - if (cur->pre->token->type == T_REDIRECT) - { - if (cur->token->redirect_type == T_INPUT) - return (error_back_readline(data, E_SYNTAX_INPUT, 258)); - if (cur->token->redirect_type == T_OUTPUT) - return (error_back_readline(data, E_SYNTAX_OUTPUT, 258)); - if (cur->token->redirect_type == T_HEREDOC) - return (error_back_readline(data, E_SYNTAX_HEREDOC, 258)); - if (cur->token->redirect_type == T_APPEND) - return (error_back_readline(data, E_SYNTAX_APPEND, 258)); - } - if (!cur->next) - return (error_back_readline(data, E_SYNTAX_NEWLINE, 258)); - return (TRUE); -} - -static t_bool syntax_pipe(t_data *data, t_list *cur) -{ - if (cur->pre->token->type == T_PIPE) - return (error_back_readline(data, E_SYNTAX_PIPE, 258)); - if (cur->pre->token->type == T_REDIRECT) - return (error_back_readline(data, E_SYNTAX_PIPE, 258)); - if (!cur->next) - return (error_back_readline(data, E_SYNTAX_NEWLINE, 258)); - return (TRUE); -} diff --git a/eunumini/srcs/utils/env.c b/eunumini/srcs/utils/env.c deleted file mode 100644 index 5f216a9..0000000 --- a/eunumini/srcs/utils/env.c +++ /dev/null @@ -1,90 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* env.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/11 06:38:21 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 08:49:50 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../../incs/minishell.h" - -void env_print(t_data *data); -t_list *env_search(t_data *data, char *key); -t_bool env_remove(t_data *data, char *key); -char **env_to_array(t_data *data); - -void env_print(t_data *data) -{ - t_list *cur; - - cur = data->envs; - while (cur) - { - printf("%s\n", cur->env); - cur = cur->next; - } -} - -//환경변수 이름에 해당하는 노드를 반환하는 함수입니다 -t_list *env_search(t_data *data, char *key) -{ - char *tmp; - t_list *cur; - - tmp = ft_strncat(key, "=", 1); - cur = data->envs; - while (cur) - { - if (!ft_strncmp(cur->env, tmp, ft_strlen(tmp))) - return (cur); - cur = cur->next; - } - return (NULL); -} - -t_bool env_remove(t_data *data, char *key) -{ - t_list *env; - - env = env_search(data, key); - if (!env) - return (FALSE); - if (env->pre) - data->envs = env->next; - else - env->pre->next = env->next; - ft_lstdelone(env); - return (TRUE); -} - -//리턴값 더블포인터를 data->env_array에 담아서 사용하시고, 쓰고 나서 더블포인터만 free해주면 됩니다 -char **env_to_array(t_data *data) -{ - t_list *cur; - char **array; - int i; - int cnt; - - cnt = ft_lstsize(data->envs); - array = (char **)ft_calloc(cnt, sizeof(char *)); - if (!array) - return (NULL); - i = -1; - cur = data->envs; - while (++i < cnt) - { - array[i] = cur->env; - if (!array[i]) - { - while (i--) - free(array[i]); - return (NULL); - } - cur = cur->next; - } - return (array); -} diff --git a/eunumini/srcs/utils/list.c b/eunumini/srcs/utils/list.c deleted file mode 100644 index f2cb7b4..0000000 --- a/eunumini/srcs/utils/list.c +++ /dev/null @@ -1,66 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* list.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/02 16:53:01 by eunwolee #+# #+# */ -/* Updated: 2023/07/12 19:39:50 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../../incs/minishell.h" - -t_list *ft_lstnew(void); -void ft_lstadd_back(t_list **lst, t_list *new); -t_list *ft_lstlast(t_list *lst); -int ft_lstsize(t_list *lst); - -t_list *ft_lstnew(void) -{ - t_list *tmp; - - tmp = (t_list *)ft_calloc(1, sizeof(t_list)); - if (!tmp) - return (NULL); - return (tmp); -} - -void ft_lstadd_back(t_list **lst, t_list *new) -{ - t_list *last; - - if (!lst || !new) - return ; - if (!*lst) - { - *lst = new; - return ; - } - last = ft_lstlast(*lst); - last->next = new; - new->pre = last; -} - -t_list *ft_lstlast(t_list *lst) -{ - if (!lst) - return (NULL); - while (lst->next) - lst = lst->next; - return (lst); -} - -int ft_lstsize(t_list *lst) -{ - int cnt; - - cnt = 0; - while (lst) - { - cnt++; - lst = lst->next; - } - return (cnt); -} diff --git a/eunumini/srcs/utils/list_clear.c b/eunumini/srcs/utils/list_clear.c deleted file mode 100644 index 2dd2dd6..0000000 --- a/eunumini/srcs/utils/list_clear.c +++ /dev/null @@ -1,48 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* list_clear.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/11 12:03:31 by eunwolee #+# #+# */ -/* Updated: 2023/07/15 09:38:40 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../../incs/minishell.h" - -void ft_lstdelone(t_list *lst); -void ft_lstclear(t_list **lst); - -void ft_lstdelone(t_list *lst) -{ - if (!lst) - return ; - if (lst->token) - { - if (lst->token->str) - free(lst->token->str); - free(lst->token); - } - if (lst->env) - free(lst->env); - free(lst); -} - -void ft_lstclear(t_list **lst) -{ - t_list *cur; - t_list *tmp; - - if (!lst) - return ; - cur = *lst; - while (cur) - { - tmp = cur->next; - ft_lstdelone(cur); - cur = tmp; - } - *lst = NULL; -} diff --git a/eunumini/srcs/utils/temp.c b/eunumini/srcs/utils/temp.c deleted file mode 100644 index f6442b2..0000000 --- a/eunumini/srcs/utils/temp.c +++ /dev/null @@ -1,99 +0,0 @@ -//테스트용 임시 함수들 - -#include "../incs/minishell.h" - -void tree_print(t_leaf *leaf); -void print_token(t_data *data); -void env_array_print(t_data *data); -void check_leak(); - -//트리 전위순회 출력 -void tree_print(t_leaf *leaf) -{ - if (!leaf) - return ; - if (!leaf->parent) - printf("\n\n--------------tree preorder--------------\n"); - if (leaf->token) - { - if (leaf->token->type == T_CMD) - printf("CMD, str: %s\n", leaf->token->str); - else if (leaf->token->type == T_ARG) - printf("ARG, str: %s\n", leaf->token->str); - else if (leaf->token->type == T_REDIRECT) - { - printf("REDIRECT, "); - if (leaf->token->redirect_type == T_INPUT) - printf("type: <\n"); - else if (leaf->token->redirect_type == T_OUTPUT) - printf("type: >\n"); - else if (leaf->token->redirect_type == T_HEREDOC) - printf("type: <<\n"); - else if (leaf->token->redirect_type == T_APPEND) - printf("type: >>\n"); - } - } - else - { - if (leaf->leaf_type == T_PIPE) - printf("\nPIPE, exist: %d\n", leaf->exist); - else - printf("CMD\n"); - } - tree_print(leaf->left_child); - tree_print(leaf->right_child); -} - -//토큰 리스트 출력용 -void print_token(t_data *data) -{ - t_list *tmp = data->tokens; - printf("\n\n--------------token list--------------\n"); - while (tmp) - { - if (tmp->token->type == T_PIPE) - printf("token: pipe\n"); - else if (tmp->token->type == T_REDIRECT) - { - printf("token: redirect, "); - if (tmp->token->redirect_type == T_INPUT) - printf("type: <\n"); - else if (tmp->token->redirect_type == T_OUTPUT) - printf("type: >\n"); - else if (tmp->token->redirect_type == T_HEREDOC) - printf("type: <<\n"); - else if (tmp->token->redirect_type == T_APPEND) - printf("type: >>\n"); - } - else if (tmp->token->type == T_WORD) - { - printf("token: word, "); - printf("str: %s\n", tmp->token->str); - } - else if (tmp->token->type == T_CMD) - { - printf("token: cmd, "); - printf("str: %s\n", tmp->token->str); - } - else if (tmp->token->type == T_ARG) - { - printf("token: arg, "); - printf("str: %s\n", tmp->token->str); - } - tmp = tmp->next; - } -} - -//배열에 넣은 환경변수 출력용 -void env_array_print(t_data *data) -{ - char **array = env_to_array(data); - - for(int i=0; array[i]; i++) - printf("%s\n", array[i]); -} - -void check_leak() -{ - system("leaks minishell"); -} \ No newline at end of file diff --git a/eunumini/srcs/utils/tree.c b/eunumini/srcs/utils/tree.c deleted file mode 100644 index 15092c9..0000000 --- a/eunumini/srcs/utils/tree.c +++ /dev/null @@ -1,70 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* tree.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/06/29 11:48:39 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 08:36:07 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../incs/minishell.h" - -t_leaf *tree_create_leaf(t_leaf *parent, int leaf_type); -t_bool tree_add_left(t_leaf *parent, t_token *new_token, int leaf_type); -t_bool tree_add_right(t_leaf *parent, t_token *new_token, int leaf_type); -void tree_clear(t_leaf *leaf); - -t_leaf *tree_create_leaf(t_leaf *parent, int leaf_type) -{ - t_leaf *new; - - new = (t_leaf *)ft_calloc(1, sizeof(t_leaf)); - if (!new) - return (NULL); - new->leaf_type = leaf_type; - new->parent = parent; - new->left_child = NULL; - new->right_child = NULL; - return (new); -} - -t_bool tree_add_left(t_leaf *parent, t_token *new_token, int leaf_type) -{ - t_leaf *child; - - if (!parent || !new_token) - return (FALSE); - while (parent->left_child) - parent = parent->left_child; - child = tree_create_leaf(parent, leaf_type); - child->token = new_token; - parent->left_child = child; - return (TRUE); -} - -t_bool tree_add_right(t_leaf *parent, t_token *new_token, int leaf_type) -{ - t_leaf *child; - - if (!parent || !new_token) - return (FALSE); - while (parent->right_child) - parent = parent->right_child; - child = tree_create_leaf(parent, leaf_type); - child->token = new_token; - parent->right_child = child; - return (TRUE); -} - -//토큰은 환경변수 리스트에서 삭제하기 때문에 트리의 큰 틀만 삭제 -void tree_clear(t_leaf *leaf) -{ - if (!leaf) - return ; - free(leaf); - tree_clear(leaf->left_child); - tree_clear(leaf->right_child); -} diff --git a/eunumini/srcs/utils/utils.c b/eunumini/srcs/utils/utils.c deleted file mode 100644 index 5b6eb0c..0000000 --- a/eunumini/srcs/utils/utils.c +++ /dev/null @@ -1,51 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* utils.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/12 19:40:44 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 08:45:57 by eunwolee ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../../incs/minishell.h" - -t_bool error_back_readline(t_data *data, char *str, int error_code); -void program_error_exit(char *str); -void input_free(t_data *data); -void data_free(t_data *data); - -//input 관련 에러일 때 사용 -t_bool error_back_readline(t_data *data, char *str, int error_code) -{ - printf("%s\n", str); - data->error_code = error_code; - return (FALSE); -} - -//system 관련 에러일 때 -void program_error_exit(char *str) -{ - perror(str); - exit(errno); -} - -//input 한번 끝났을 때 사용 -void input_free(t_data *data) -{ - ft_lstclear(&data->tokens); - data->tokens = NULL; - free(data->input); - data->input = NULL; - tree_clear(data->root); - data->root = NULL; -} - -//정상종료 시 사용 -void data_free(t_data *data) -{ - ft_lstclear(&data->envs); - free(data); -} \ No newline at end of file diff --git a/incs/bulitin.h b/incs/bulitin.h new file mode 100644 index 0000000..35c13de --- /dev/null +++ b/incs/bulitin.h @@ -0,0 +1,30 @@ +#ifndef BULITIN_H +# define BULITIN_H + +# include "struct.h" + + /*signal*/ +void sig(void); +void handle_sigint(int sig); + +/*builtin*/ +void exec_bulitin(int bulitnum,t_data *data , t_leaf *leaf); +int check_bulitin_func(char *name); +void ft_cd(t_data *data, t_leaf *cur_root); +void ft_echo(t_leaf *cur_root); +void ft_exit(t_data *data, t_leaf *cur_root); +void ft_pwd(t_data *data, t_leaf *cur_root); +void ft_unset(t_data *data, t_leaf *cur_root); +void ft_export(t_data *data, t_leaf *cur_root); + +/*builtin utils*/ +char **join_cmd(t_leaf * com_leaf); +int count_args(char **args); +t_list *create_env_node(char *key, char *value); +void add_env_back(t_data *head, char *key, char *value); +void update_env(t_data *data, char *key, char *value); + +/*execute*/ +void get_input(t_data *data); + +#endif \ No newline at end of file diff --git a/incs/exec.h b/incs/exec.h deleted file mode 100644 index 001b38b..0000000 --- a/incs/exec.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef EXEC_H -# define EXEC_H - -# include "struct.h" - - /*signal*/ -void sig(void); -void handle_sigint(int sig); - -/*builtin*/ -t_bool (*get_builtin_func(char *name))(t_data *, t_leaf *); -t_bool ft_cd(t_data *data, t_leaf *cur_root); -t_bool ft_echo(t_data *data, t_leaf *cur_root); -t_bool ft_exit(t_data *data, t_leaf *cur_root); -t_bool ft_pwd(t_data *data, t_leaf *cur_root); -t_bool ft_unset(t_data *data, t_leaf *cur_root); -t_bool ft_export(t_data *data, t_leaf *cur_root); - -/*builtin utils*/ -char **join_cmd(t_leaf * com_leaf); -int count_args(char **args); -t_list *create_env_node(char *key, char *value); -void add_env_back(t_data *head, char *key, char *value); -void update_env(t_data *data, char *key, char *value); - -/*execute*/ -void get_input(t_data *data); - -t_bool execute(t_data *data); - -/*heredoc*/ -t_bool heredoc(t_data *data, t_leaf *cur_root); -void make_heredoc(t_data *data, t_leaf *heredoc); -char *make_filename(void); -void make_unique_num(char *str, int num); -void read_heredoc(t_data *data, char *content, int fd); - -/*redirect*/ -void redirect(t_data *data, t_leaf *cur_root); -void redirect_input(t_data *data, t_leaf *cur_leaf); -void redirect_output(t_data *data, t_leaf *cur_leaf); - -/*pipe*/ -void set_pipe(t_data *data); -void link_pipe(t_data *data, t_cmd *cur_cmd, t_cmd *pre_cmd); -void close_pipe(t_data *data, t_cmd *cur_cmd, t_cmd *pre_cmd); -void recover_std(t_data *data); - -/*path*/ -void abs_path(t_data *data, t_cmd *cmd); -void set_path(t_leaf *cur_root, t_cmd *cmd); - -#endif \ No newline at end of file diff --git a/incs/init.h b/incs/init.h index 23dc0fc..b7cd230 100644 --- a/incs/init.h +++ b/incs/init.h @@ -5,8 +5,8 @@ /* +:+ +:+ +:+ */ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2023/07/21 19:06:16 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 21:10:55 by eunwolee ### ########.fr */ +/* Created: 2023/07/11 10:29:44 by eunwolee #+# #+# */ +/* Updated: 2023/07/12 16:17:39 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,6 @@ # include "struct.h" void init(t_data **data, char **envp); -void init_env(t_input *input, char **envp); +void env_init(t_data *data, char **envp); #endif \ No newline at end of file diff --git a/incs/minishell.h b/incs/minishell.h index 6fe19fd..43cb559 100644 --- a/incs/minishell.h +++ b/incs/minishell.h @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* minishell.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: donghong < donghong@student.42seoul.kr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/06/29 11:05:33 by eunwolee #+# #+# */ -/* Updated: 2023/07/22 14:49:27 by eunwolee ### ########.fr */ +/* Updated: 2023/08/03 17:06:43 by donghong ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,24 +14,18 @@ # define MINISHELL_H # include +# include # include # include -# include -# include -# include -# include -# include # include "init.h" -# include "exec.h" -# include "pipe.h" # include "parse.h" -# include "utils.h" # include "struct.h" +# include "utils.h" +# include "bulitin.h" +# include "pipe.h" # include "message.h" # include "../Libft/libft.h" - -//signal -// void child_handler(int signo); -// void herdoc_signal(void); +#include +#include #endif \ No newline at end of file diff --git a/incs/parse.h b/incs/parse.h index d71c55f..79b03b2 100644 --- a/incs/parse.h +++ b/incs/parse.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/04 07:53:54 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 21:16:53 by eunwolee ### ########.fr */ +/* Updated: 2023/08/03 17:34:30 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,20 +15,20 @@ # include "struct.h" -void tokenizer(t_input *input, t_token **token, int *i); +void tokenizer(t_data *data, t_token **token, int *i); t_token *token_create(void); void token_add_list(t_list **head, t_token **token, t_bool token_flag); -void token_redirect(t_input *input, t_token *token, int *i); +void token_redirect(t_data *data, t_token *token, int *i); -void single_quote(char *line, t_token *token, int *i); -void double_quote(char *line, t_token *token, int *i, t_input *input); +void single_quote(char *input, t_token *token, int *i); +void double_quote(char *input, t_token *token, int *i, t_data *data); -void lexer(t_input *input); +void lexer(t_data *data); -t_bool syntax(t_input *input); +t_bool syntax(t_data *data); -void parser(t_input *input); +void parser(t_data *data); -t_bool expand(t_input *input, t_token *token, int *i, t_bool quote); +t_bool expand(t_data *data, t_token *token, int *i, t_bool quote); #endif \ No newline at end of file diff --git a/incs/pipe.h b/incs/pipe.h index f151f0a..adb1c25 100644 --- a/incs/pipe.h +++ b/incs/pipe.h @@ -1,14 +1,31 @@ #ifndef PIPE_H # define PIPE_H -# include "struct.h" - -int g_exit_status; - -void set_pipe(t_data *data); -void link_pipe(t_data *data, t_cmd *cur_cmd, t_cmd *pre_cmd); - -void redirect(t_data *data, t_leaf *cur_root); - +int g_exit_status; +//info init +void info_init(t_info **info); +void pipe_init(t_pipe **pipe); +void count_pipe(t_data*data); +void execute_cmd(t_data *data,int flag); +int fork_heredoc(t_data *data); +int check_bulitin(t_data * data); +void heredoc_flag(t_leaf *leaf,t_data *data); +void check_file(int fd,t_data *data); +void check_redirect(t_leaf *leaf,t_data *data); +void recover_std(t_data *data); +// void mk_heredoc(t_data *data); +void mk_heredoc_pipe(t_data *data); +void link_pipe(int i, t_pipe *base,t_data *data); +void check_redirect(t_leaf *leaf,t_data *data); +void do_cmd(t_data *data); +void exec_fork(t_data *data); +void abs_path(t_data *data); +char *set_path(t_data *data, t_leaf *leaf); +char **join_cmd(t_leaf * com_leaf); +void close_pipe(int i, t_pipe *base,t_data *data); +void wait_child_processes(t_data *data); +char *search_path(t_pipe *base); +void execute(t_data *data); +void get_input(t_data *data); #endif \ No newline at end of file diff --git a/incs/struct.h b/incs/struct.h index 2c04678..f7e42dd 100644 --- a/incs/struct.h +++ b/incs/struct.h @@ -3,23 +3,17 @@ /* ::: :::::::: */ /* struct.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: eunwolee +#+ +:+ +#+ */ +/* By: donghong < donghong@student.42seoul.kr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:24:15 by eunwolee #+# #+# */ -/* Updated: 2023/07/22 16:45:52 by eunwolee ### ########.fr */ +/* Updated: 2023/08/03 17:12:05 by donghong ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef STRUCT_H # define STRUCT_H -# include - -# define CHILD 0 -# define P_READ 0 -# define P_WRITE 1 # define BUF_SIZE 1024 - typedef enum e_bool { FALSE, @@ -65,37 +59,44 @@ typedef struct s_leaf t_bool exist; }t_leaf; -typedef struct s_cmd +typedef struct s_pid { pid_t pid; int fd[2]; - char *cmd_path; //명령어 경로 - char **cmd_list; //명령어 + 옵션 - char **cmd_abs; // 절대경로, 파이프마다 갱신해줘야 함 - int infile_fd; - int outfile_fd; -} t_cmd; +} t_pid; -typedef struct s_input +typedef struct s_pipe { - char *line; - t_list *tokens; - t_list *envs; - char **env_array; - t_leaf *root; - int error_code; - int pipe_num; // fork 를 해주기위해서 갯수가 필요함 -} t_input; + t_pid *com; + + char **cmd_path;//명령어 +옵션 + char *command; + char **cmd_abs; // 절대경로 +} t_pipe; -typedef struct s_data +typedef struct s_info { // 항상 기준은 파이프 한커맨드라는건 파이프 기준으로 < 히어독은 포크로 진행되기때문에 + char **heredoc_file; // 한 커맨드에 여러개 리다이렉션이 들어올수 있다 int oristdin; // 이놈은 redirection이 나오면 fd 가변경 되는데 안돌려주면 계속 그 fd 를 사용 int oristdout; // 같은이유 - int parent; //signal에 필요 - t_input *input; + int pipe_num; // fork 를 해주기위해서 갯수가 필요함 + int parent; + int pipe_index; +} t_info; + +typedef struct s_data +{ + char *input; + t_list *tokens; + t_list *envs; + char **env_array; + t_leaf *root; + t_pipe *pipe; + t_info *info; + int error_code; } t_data; #endif \ No newline at end of file diff --git a/incs/utils.h b/incs/utils.h index 9756363..0a48943 100644 --- a/incs/utils.h +++ b/incs/utils.h @@ -6,7 +6,7 @@ /* By: eunwolee +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/11 10:32:09 by eunwolee #+# #+# */ -/* Updated: 2023/07/21 21:48:54 by eunwolee ### ########.fr */ +/* Updated: 2023/07/21 08:38:22 by eunwolee ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,10 +17,10 @@ # include "struct.h" -void env_print(t_input *input); -t_list *env_search(t_input *input, char *key); -t_bool env_remove(t_input *input, char *key); -char **env_to_array(t_input *input); +void env_print(t_data *data); +t_list *env_search(t_data *data, char *key); +t_bool env_remove(t_data *data, char *key); +char **env_to_array(t_data *data); t_list *ft_lstnew(void); void ft_lstadd_back(t_list **lst, t_list *new); @@ -34,18 +34,15 @@ t_bool tree_add_left(t_leaf *parent, t_token *new_token, int leaf_type); t_bool tree_add_right(t_leaf *parent, t_token *new_token, int leaf_type); void tree_clear(t_leaf *leaf); -t_bool error_back_readline(t_input *input, char *str, int error_code); +t_bool error_back_readline(t_data *data, char *str, int error_code); void program_error_exit(char *str); -void free_input(t_input *input); -void free_data(t_data *data); - -char **join_cmd(t_leaf * com_leaf); - +void input_free(t_data *data); +void data_free(t_data *data); /*temp.c 임시 함수*/ void tree_print(t_leaf *leaf); -void print_token(t_input *input); -void env_array_print(t_input *input); +void print_token(t_data *data); +void env_array_print(t_data *data); void check_leak(void); #endif \ No newline at end of file diff --git a/libft.a b/libft.a deleted file mode 100644 index fc303919b57ed5b4ff209fbbf756378d75592c1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37376 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