From 4e0a049e1daa48c08a0c56fa7a8a300ae6e9e6c3 Mon Sep 17 00:00:00 2001 From: Adam Joly Date: Wed, 3 Apr 2024 16:41:58 +0200 Subject: [PATCH] =?UTF-8?q?[=E2=9C=A8]=20feat:=20started=20exec?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clangd/index/main.c.259C23514E408AC0.idx | Bin 684 -> 756 bytes .../index/parsing.c.B79530D8B421E683.idx | Bin 732 -> 868 bytes .../clangd/index/pipex.h.D099372D6E124AAF.idx | Bin 0 -> 570 bytes include/parsing.h | 4 +- include/pipex.h | 19 +++- obj/src/main.o | Bin 0 -> 5480 bytes obj/src/parsing/parsing.o | Bin 0 -> 4256 bytes obj/src/test.o | Bin 0 -> 4152 bytes obj/src/utils/ft_freetab.o | Bin 0 -> 2480 bytes pipex | Bin 0 -> 23552 bytes src/main.c | 83 +++++++++++++----- src/parsing/parsing.c | 12 +-- test.c | 46 ++++++++++ 13 files changed, 134 insertions(+), 30 deletions(-) create mode 100644 .cache/clangd/index/pipex.h.D099372D6E124AAF.idx create mode 100644 obj/src/main.o create mode 100644 obj/src/parsing/parsing.o create mode 100644 obj/src/test.o create mode 100644 obj/src/utils/ft_freetab.o create mode 100755 pipex create mode 100644 test.c diff --git a/.cache/clangd/index/main.c.259C23514E408AC0.idx b/.cache/clangd/index/main.c.259C23514E408AC0.idx index 829a1c39ae7992acb82fca16dcf73f68d3a5d256..633aa6a7f13014258c63ca1732f993bf15c2dba0 100644 GIT binary patch literal 756 zcmWIYbaQ*d#K7R3;#rZKT9U}Zz`!5`#Kk2=nP-7?HzNZ>#hl*0gMNn{cwGKE#|c}6 zI6XSns{bG&caPtuqr3a|c!vJlm&wi4>AbTd<#lBmgWw0=54NlFg72KwuZpr^GJ3#~ z(V%xWEdAh=zpbw>WNcFEO|qI%7ZmV##g%0*oW9QBo_b@=C7GYfebUFJUeDNf8RRY<@+~lpVWHSSC=x*ZJzT^_{yB^4`P^^*PdO^xaxS*UFEMkg^YP3pU!-- zFMQpa>`Ax9mi@Q?r)9X~MBTGV4{q~r^E&KQz!PpbQvHzj1l8ecaqxJPiCmX?|9IJ}?23E=o-+E(3;3%%l13 z@1I>_VC3Ob;#A^?8G3`ue&h7N(q>FNeB#{Vf^ft5B!nd-VZ0k{XB}?yHroIdDRU@u z!}Rj-sR*fv!gw&6kqfKyn7B}!1=P!^!UfaQyZ_z#DCa8+fR0n;R27A}z0rQruRept zYk>BOh=_>8oWsK>#v{fL;~C5D`}{-5aSKq97?T(qOqhpHno*h+#`~sp`p0L*u46z8 zB$y?5VZtwtxUbMETlg3#tjwn@4s*`rrDo5|1lPO+8mYjjzyT8mhMc&P9E|tMslK_(-3o|P_8;39_BR2y86p0vk literal 684 zcmWIYbaPw6#K7R3;#rZKT9U}Zz`!5`#Kk2=ndgA?E=C51iaAsLPx~D);Q7LDxvU_9 zvr}4pUxRYd-7RMy9hrK0-L(Dc-i``|5j)O!EUvuK!106S$C*{Ui+BHQJ-^y`0fS!y z+l!62o(UCt{BuZMV-nprwZdZ7zQ6$CuvNy@ONzW^8ii|b*|6u+m6}B{%N|aS+vU82 zvwX?Q`=YP-KJ5N-G3E5eHB+Z;Ir6!bJ#@O+94~>;!jyce!oOs% zw&=y&j<>AqSNbIWtKM?9?{(k*&c8eUWy^fi+HoS`@5kH8ANaO(%=}ecnVTdJ^wr<+ zSJe-f^0)DT{L0VI!p{LFfHDwJl$us-5A^vBF8hts|4N%N^YBZFNy)&q@vCyH3LLNT&;|GV{3&Q}&N^6+bOYKy`wYP4VUtIuHZ8WtXYaWQeYAw2w&ijpcY zqj>n0#gvic)OpnTVRFW@`#%2=a@@ki!>`Vy&IS|a;n!l+VukTCO@6=ED)v1BR3ynH z$qf_c;g@BW<$>|ODV_fDS+VOF(1mKuYP>Mv7f0MzXq7E|3=|e+7ZrdBzcP7x^U{mn zpFkr883oy4!aV#!j6!f8Ls4o@BFL-7Majj=AO;_Z00Tz;^;@WO-{ e7?N{Sas+`~E`A;+0VY8fW>$7K4q;A4ZUz8as{vL3 diff --git a/.cache/clangd/index/parsing.c.B79530D8B421E683.idx b/.cache/clangd/index/parsing.c.B79530D8B421E683.idx index b9700ac4119b4fc6a9d9c8566357be68de743f7d..a63f21e558c2588d2c4b5ffad97f0626083ca6cf 100644 GIT binary patch literal 868 zcmWIYbaRVgW?*nm@vO*AElFfyU|k;%El^XZZf&X4cCIh{S6lXm~OdG2#{*@Mg?o#|U9&Ut#} z>eM^)mleFrls58Q9%*KIPQS%w@4ZdQGdniFIW@CMK;fQajaPC~$eBKO8+8^M@yg`s%}XzOf3oq2DljOp!K~yFRbfsqN> zY!`RU;QNwy%6`**w^-$iJITc5-`vM@#JA+>nnuHf_Xq5D2HA0C_s;!rC7Q3N;pzb% z1MNAII-Fr%zq@u7-Ix((@#N{j75Y9?6xUs-jBKo$qPy*mWUuUU<@L7xBG*fII?Q`F z>G>1ZsX9*Vmu3Hm)f$^@ar(|@eY5j&GMkn6y-QXvRmFWc3JS`;1!d(#?mFs}rNVS7 z?05g()7JlO_jTm2^3s~9Xje96)|G&+)zP272ksBN+Wuqy#^2`u-Y`0f`V{UsZDNqB zG{3K8?xeqSzCL`#5Xf_Xm&)ZU48@hXNlw7fI(qQNBQNg^1s(<|1_n`nc76e2F?KNl z22N&125CV?Vb&K%+*fFoEqu(wAPH0;!yzLmEY2Y=$iT_M#2_OCR8W+fR{RgiBqlDf zF+dS8;1Si})ewW3a)Zl$`7yarpSiA+t$#o7n5f^&h=PftaoAN>^^$WuR&xBR1tj8>_|7lssrhP)|!itB? z9nRZ2E*x|1ct8DR%dWcr9W(PhzyDr3Q)j;C#Ty^_GkoTjd+bRH_uW3_wb_5a_jBdW za)+xVoo6Vn%uSjPbOYOtdpwNGg!uUwIJg*?CD|l-!2|;bP!0%g2gZLj3HqwS$G{Gh zmSB_M0TVFk8*OJDZu2(V@G&p~rNueLdB6lrddi%aPbN%!l*-1y$-uxY$}cJgCO|wO zU}R>UywvP@nc$jt+zi}61yW2>oL~Z>fT1Wgt#~0&G0dHeTwwRXOoq7+C=7BOOc>@a zpfJc$Fku)C6b3m4>kzAMdxxsR<4D9p>rD*zLQISwccav4ncmC4hamtOS#WCZ$^ zQJfuS70{(Qi6Aw_Majk1AO}0Q%BZxU0tH`Yv-8CKgsU24M1l0X7(efdK%9 C;G1Xw literal 0 HcmV?d00001 diff --git a/include/parsing.h b/include/parsing.h index 6d3dfd3..03dbe73 100644 --- a/include/parsing.h +++ b/include/parsing.h @@ -6,13 +6,15 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/28 16:54:40 by adjoly #+# #+# */ -/* Updated: 2024/03/29 10:41:40 by adjoly ### ########.fr */ +/* Updated: 2024/04/03 13:56:08 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef PARSING_H # define PARSING_H +# include "libft.h" + typedef struct s_pcmd { char *cmd; diff --git a/include/pipex.h b/include/pipex.h index a651169..6227919 100644 --- a/include/pipex.h +++ b/include/pipex.h @@ -6,16 +6,27 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/22 21:14:06 by adjoly #+# #+# */ -/* Updated: 2024/03/22 21:16:23 by adjoly ### ########.fr */ +/* Updated: 2024/04/03 14:24:09 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef PIPEX_H # define PIPEX_H -typedef struct t_pipex -{ +# include "parsing.h" +# include "libft.h" -} s_pipex; +# include +# include +# include + +typedef struct s_pipex +{ + t_pcmd *cmd; + int infile; + int outfile; +} t_pipex; + +void ft_senderror(t_pipex *pipex, char *msg); #endif diff --git a/obj/src/main.o b/obj/src/main.o new file mode 100644 index 0000000000000000000000000000000000000000..c8b672cef49fb061123c9b0b4e651b610b6c09ad GIT binary patch literal 5480 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 S9oa9)L|0{psi6Cvp8wwnDih%V literal 0 HcmV?d00001 diff --git a/obj/src/parsing/parsing.o b/obj/src/parsing/parsing.o new file mode 100644 index 0000000000000000000000000000000000000000..ee7283f75c3960921daaaf9f56ffa2cef57cd687 GIT binary patch literal 4256 zcmb_eU1%It6h5<)JK5|en{BpDTNN8ks}HujNh{cDs4Kd5(jO_MkqFk!W_OaTZg$uG z328A{n<}h9t)LJ7V2cQ%;17tjQ0$MDwhxMZP^q9$q(WMKh(1*;#B=VPo1NSy=!1uy zJ@yl!>&zSv!@c* z>{?>lK9`uG5VWW5$&Ju@aE-F2Hcm^AnV7-I88_mTpR%reGdnwrz>GclRmYw)t*iD^ zB=dJ6|Fk_dF@2%~L6@VJxP;-CF!v&AyqMeNy@)tGiLi&>rL83{xLutJQ=3zX%l9R&x4zVmfrwu~>=wX65p1*KE6mWn!TW-DuI!E6zY@R{;A5ya0?=^xJX5qoZ^TUiuvUW^+8hi9 z0U9HQ843o82*BThcyEM^jc7KtVh-Nr3%DN|P-B4H8J?XWQTH#2KA*B5!-4TASw=XD z4%7GQxND6QneWx2wA#pr)`+wstx&DO%{kv^pE0;;$q

-XB>tq$yBM7bMlZYAb&Mq&JO3DOh-0ffpT`AlSEa_Wh=?_Xa?jpk}5%= zSivr!oGcPlaTS$!WE?UAQC3Eal#@)2xg-Q6B^{*FKqb(Vbweano$&E z-!3r5!^X|cjs8P8b+;f!7YXf3cpwyh!S`T`<=c%BuCIr16xwlh|CTxbT0<(Ezl$4a4|5)Itg&d^3XKSqO+#%cWQ@I~dF5#zxn5ua{%FkTG`wW7&K(}l2T|j%Ne+92uSYakBN%=_tk^0-NNM>xBf>f^8jcI!ln5lL z6`zGOM|ZP`e2I7i{4u+b+pIt0^V}xCw&sCom>{1+9Y*}dR~xN;n}=WSA;ga16~2K1 zpmP!Yo<;Coi{Kw4PIW&;O(ORm>i6&>d;m3x+_R|HON-_RAb{6(JVr>yJUG2+6#lXY zZ}Q;ZdvKa172m>(L;N&L3YV`Yw5g`tji^b~OcG8xO4@j!@H^OU_uxVWqrS<56OVdU zZ)Kd?n%n<4zH1SD6XUAx6KrqM@Xy%p)9|Bgr#1XI+XdFDp8>WfSgX3vu|1{XC)s{O z!_Tt)zJ`Cz_U9U|cuzB~`ceDnTP^+rwtv>}AK3m)!&Tg08m{J{kqV-y`@JMBfMpu~ z3*(&{ewFbJ8orP5do_H7@q~uI%lLK;e~azXd!uX_y|Hya;YucOM z{TbKr0k)M^@oK%EXFrwk@&uawO^p!EID^&UWNL7*;XFDD0 z?kUTmPuE59qVkEBcwxicatQPsN_+BZ$5nNGOihSAGqmUV#@0(Q73n zewe|7(yIUIu@5hj-^rWlMJ+)y;Q`EFsQ)-Ox`HQ{`lt7{-v3&z--X&MA93EFUJ%Es zzS8vmr?H-Yn47xuU-E}MoZis03*FQLv2VIq(fjNX&w0*Q>qi)gx_{RKcpV1|mFnmH zXLBIUAH6eGzFPkpVrnipRH`^1k~=h~X2L;?Ua0;NuCMA)eLA!C`tGl5sK0_ce literal 0 HcmV?d00001 diff --git a/obj/src/test.o b/obj/src/test.o new file mode 100644 index 0000000000000000000000000000000000000000..437b00319d4a204a53eed1383d5052e334eec312 GIT binary patch literal 4152 zcmbW4Z)jUp6u{5R>w8U`HSOBDO($C2rUTi_(m8c*ZXGTz9Yb`pvWg>3lh-zye~?(otNtUG%30Sf!ZwHuWbzT;z+Uc9jFra5aEE1v z+t#cLuQb|ifPjOr-R@p%hMx@W2=#RAz8k=N6arNM(69l_@UBn@XV)@}o(=%}0qE&? z9PP$dEC2+_BNW<2^M4JW29aP;tPvXf<+20o0uqy9yhxVO{xQDIz*N7mR(HCPmBe@p(*cu{iO z2x1X}jTZTeYRtEHppy40ovCaxKh!zmmdcqzzBAh8Y;mHSquVQ@b}N)isfg#6JtqZ` z{9rjUT*$fQNHYCOA$v5kw~(sj+`Lzg6f;G46mrQ-9x{0kQn@swhLa^oB=#IUxTi01 zsOP0v;)TBFVu=J4lio0Sbcs?I45p!&5l`3u%?e-@eG!WB`av*8+l+N98iS{B?C(WJ z4++f$>oc)mc7$5?ICN$X9x~kjrLQbB4`gI-f1=2XIS?M-E8++Z5U|ow}SR* zD}XL7h-!ycsv#?vhEOXM+H9W_+OW?Bn(#v?<$7`!D;nU|LalmparrK(HhJ+cfoPau z=}6eP=IZd~I=pom&m(DDMghLA!-wkdy><9**8$xGl4Ck9K&oC~idGag;id^L1anxZmH%N*w4WU*e>z|E{HYt63%d$+g`r&cvQGEi zS|@%pf6%WokhLC9e{5>yKgWsAascH|NY8&gGIEjkA{K=-^P+lR0@kvBsp)*I6@P}~ zAO4T{9*)=C;Bu`+UBmZ1pB44_zrykQ{LAl`{k?;QTH`m&`$w)*8bA6yAmb&c^H+`q z78ivZ{biAelI~0AdaeGC*XW=2n%;jOGV{Pf0o8GQs`3HH%Y9Axlj!}=BGbo?{H}9S M!yG`0`qumZ7dkQ7*Z=?k literal 0 HcmV?d00001 diff --git a/obj/src/utils/ft_freetab.o b/obj/src/utils/ft_freetab.o new file mode 100644 index 0000000000000000000000000000000000000000..f8b2a9c2b300496f69bdedd9efe83e2e9f29edea GIT binary patch literal 2480 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

+25|CseTKiJ z?30At{IYjz5_j(Aj?J5Qh><2-DS}hiLAQrvZhcZboI(e zL_}8JaP?(PtFHhVZzzj|!m2gA@;VW@a_u#jU$!=K&8k(`ht@~dUv~N0P=sH+71S@; zqBm=ua4b9FWnDHq-pK_s)uD&q>}5BRCOHH;Fht_9Xeuf=7LLOsyM&LC2rd}p>%3Ub zJ_qK#=nIU=o=8U&x5apk*y?K_5=(SP(#d#?<>;m}_gJJ(GxGgoIrbqRVj_b3>%KT% zO%_eXssB`>6~{_?McJlgQW<2wp-diJ={03JifEwJFpVNzT`}9?V__=0GcK2&@~)G<9)p%(A|@Y2im*Sf!;ot*O%JrAZ$0BS?S)uc=vz!maDc_>x_4^=~IGIt``=chW&Xd>Y>|3x-Q}OdPd&!so z1e$2?)8pT(`roVMmn%`Sk&3oo>-jin_|uFYEq_GGA5rq!fBEvP43{WA_^QqBe^SX$ zD)|w#QIYo%+5T~ocCe z*L)h@igx;qna1_+%$6$oIwhZPzaooWsF0~zUjMEQ52U$hdELMEzaIaWl>FtAUFhG* z?NsvgZ3z{UCz*Wt2S79M@!-Qn@AqopG(Vh0$6eFDii%U-ujKtoexqhoP?2#aljWZP zobub1{C33hDltcWlKEK8_{13?T zmy1fF{++1zBg+2H znw|2vQIP_55-3a}xN12KO$a;X^?goI$AYIyieZF3& +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/21 10:03:04 by adjoly #+# #+# */ -/* Updated: 2024/04/02 11:08:15 by adjoly ### ########.fr */ +/* Updated: 2024/04/03 16:30:07 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ +//#include "libft.h" #include "libft.h" #include "parsing.h" +#include "pipex.h" +#include +#include -int main(int ac, char **av) +void free_pcmd(t_pcmd *cmd) { - t_pcmd *cmd; t_pcmd *tmp; - char **option_tmp; - cmd = parse_cmd(ac, av + 2); tmp = cmd; - while (tmp && (*tmp).cmd) + while (tmp && tmp->cmd) { - ft_printf("cmd : %s\n", (*tmp).cmd); - option_tmp = (*tmp).option; - while (*option_tmp) - { - ft_printf("%s\n", *option_tmp); - option_tmp++; - } - tmp++; - } - tmp = cmd; - while (tmp && (*tmp).cmd) - { - if (tmp->option) - ft_freearr(tmp->option); free(tmp->cmd); + ft_freearr(tmp->option); tmp++; } free(cmd); +} + +void check_empty_args(char **av) +{ + char **tmp; + char *tmp_av; + + tmp = av; + tmp++; + while (*tmp) + { + tmp_av = *tmp; + if (!*tmp_av) + ft_senderror(NULL, "You have empty argument"); + while (*tmp_av) + { + if (*tmp_av != 32) + break ; + tmp_av++; + } + if (!*tmp_av) + ft_senderror(NULL, "You have empty argument"); + tmp++; + } +} + +void ft_senderror(t_pipex *pipex, char *msg) +{ + (void)pipex; + ft_putendl_fd(msg, STDERR_FILENO); + if (!pipex) + exit(EXIT_FAILURE); + if (pipex->cmd) + free_pcmd(pipex->cmd); + free(pipex); + exit(EXIT_FAILURE); +} + +int main(int ac, char **av, char **env) +{ + t_pipex *pipex; + + check_empty_args(av); + pipex = malloc(sizeof(t_pipex)); + pipex->infile = open(av[1], O_RDONLY); + pipex->outfile = open(av[ac - 1], O_RDONLY); + pipex->cmd = parse_cmd(ac - 3, av); + while (*env) + { + ft_putstr_fd(*env, STDOUT_FILENO); + env++; + } + free_pcmd(pipex->cmd); + free(pipex); return (EXIT_SUCCESS); } + diff --git a/src/parsing/parsing.c b/src/parsing/parsing.c index 42624eb..e20573a 100644 --- a/src/parsing/parsing.c +++ b/src/parsing/parsing.c @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/22 21:13:26 by adjoly #+# #+# */ -/* Updated: 2024/04/02 11:08:57 by adjoly ### ########.fr */ +/* Updated: 2024/04/03 14:20:56 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -44,18 +44,20 @@ t_pcmd split_cmd(char *cmd_av) t_pcmd *parse_cmd(int ac, char **av) { char **tmp; + int i; t_pcmd *cmd_arr; t_pcmd *cmd_tmp; - (void)ac; - cmd_arr = ft_calloc(ac, sizeof(t_pcmd) + 1); + i = 0; + cmd_arr = ft_calloc(ac + 1, sizeof(t_pcmd)); cmd_tmp = cmd_arr; - tmp = av; - while (*tmp) + tmp = av + 2; + while (i < ac) { *cmd_tmp = split_cmd(*tmp); cmd_tmp++; tmp++; + i++; } return (cmd_arr); } diff --git a/test.c b/test.c new file mode 100644 index 0000000..4121ad5 --- /dev/null +++ b/test.c @@ -0,0 +1,46 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* test.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/04/03 15:36:42 by adjoly #+# #+# */ +/* Updated: 2024/04/03 16:27:03 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + + +#include +#include +#include + +int main() +{ + char *cmd[] = {"sleep", "5", 0}; + char *path = "/bin/sleep"; + char *cmd2[] = {"sleep", "5", 0}; + char *path2 = "/bin/sleep"; + int fd[2]; + if (pipe(fd) == -1) + return(1); + int pid = fork(); + if (!pid) + { + dup2(fd[1], STDOUT_FILENO); + close(fd[0]); + close(fd[1]); + execve(path, cmd, NULL); + } + close(fd[1]); + int pid2 = fork(); + if (!pid2) + { + dup2(fd[0], STDIN_FILENO); + close(fd[0]); + execve(path2, cmd2, NULL); + } + close(fd[1]); + waitpid(pid, NULL, 0); + waitpid(pid2, NULL, 0); +}