From 81f16dc864109f319170a5881de73000687f1aaf Mon Sep 17 00:00:00 2001 From: Adam Joly Date: Sun, 7 Apr 2024 11:03:38 +0200 Subject: [PATCH] =?UTF-8?q?[=E2=9C=8F=EF=B8=8F]=20norm:=20normed=20project?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clangd/index/libft.h.F7455B850A972A1D.idx | Bin 5482 -> 5482 bytes .../clangd/index/main.c.259C23514E408AC0.idx | Bin 756 -> 1746 bytes .../index/parsing.c.B79530D8B421E683.idx | Bin 868 -> 868 bytes .../index/parsing.h.E14E231C05813896.idx | Bin 708 -> 722 bytes .../clangd/index/pipex.h.D099372D6E124AAF.idx | Bin 570 -> 1056 bytes include/exec.h | 22 +++++ include/pipex.h | 9 +- lol | 3 + obj/src/exec/exec.o | Bin 0 -> 5600 bytes obj/src/main.o | Bin 5480 -> 6328 bytes obj/src/test.o | Bin 4152 -> 0 bytes obj/src/utils/getpath.o | Bin 0 -> 3256 bytes obj/src/utils/set_path.o | Bin 0 -> 4544 bytes pipex | Bin 23552 -> 33240 bytes src/exec/exec.c | 91 ++++++++++++++++++ src/main.c | 27 ++++-- src/parsing/parsing.c | 4 +- src/utils/{ft_freetab.c => ft_freearr.c} | 6 +- src/utils/getpath.c | 30 ++++++ src/utils/set_path.c | 58 +++++++++++ test.c | 6 +- 21 files changed, 236 insertions(+), 20 deletions(-) create mode 100644 include/exec.h create mode 100644 lol create mode 100644 obj/src/exec/exec.o delete mode 100644 obj/src/test.o create mode 100644 obj/src/utils/getpath.o create mode 100644 obj/src/utils/set_path.o create mode 100644 src/exec/exec.c rename src/utils/{ft_freetab.c => ft_freearr.c} (85%) create mode 100644 src/utils/getpath.c create mode 100644 src/utils/set_path.c diff --git a/.cache/clangd/index/libft.h.F7455B850A972A1D.idx b/.cache/clangd/index/libft.h.F7455B850A972A1D.idx index d980302fe06af1cdf14824cb90ee15401528f94a..60d1674ed8382c3e8c86b827a8797240b7a4b439 100644 GIT binary patch delta 256 zcmaE*^-62QJvL^xc#+Ky+4vcm*^&e&e`a6C%$6oJc@Bp>Gh2edxu!9yvZaVJaC#~+%wh~s4hAIXKh>v57lh|y= zbAb9l&X~MFq=h5n(W_Ty M(q&Fe))BP>0KuL`%m4rY delta 256 zcmaE*^-62QJvL_6c;U?t+4vcmS(5}Ne`a6C%$g=Rc@Bp>Giw6>s4hAIXKh>v596W?sc zbAb9l&X~MFq=lnpt>(vg LA)Eh`bwup|pH4(( diff --git a/.cache/clangd/index/main.c.259C23514E408AC0.idx b/.cache/clangd/index/main.c.259C23514E408AC0.idx index 633aa6a7f13014258c63ca1732f993bf15c2dba0..999cb92f7fcc77ff972d8262a7652effdfde28fd 100644 GIT binary patch literal 1746 zcmY*Z2~d<(9Di?@J$dZ$?Y9fNxQG^MQ4Rzn;0g<@as^8)$HFdnfa@^=Ib0*dP-G}t z;uyqWC`bne$z%Zq79cp9p}{oR=o$)&k{k^(aikX71Lu7UZ{~aR{eJ)VzyI$U!b3u? zasklo2;ZM!$=PlP0HE-fos+d^9R#431;GAO)rOADiyo5B(4H>9f2i8vx;b^Cf6b`V zr_JR~|H*FY?Sk72)CSYnqQmO~ZVe6H>G3#S{n48V)#DF5&0DTnDth}S%1o2Zb%I_C zoE|zFKj*Nn$aCAHu7I{1W1kFav^UabRye`EMSk11aBmirMXtTD+009?{urLOY6>qV zYlc<2ri$G>%WqS6U(Y)wY7gJoe|!D#*|^KEyw|fe=IouB1DCnasyh9~OItkeem`*q zp&G-tO@45$dn>!e1-aj7i&Y#cx(e$na_YYv8*Uix6uj;J##@)Jz^i4G2P3ne)TWoW zK0kh}byxA8!yEJuy_$YXx$S*FA~U0SZP`fmJ%6jYVoEw=NKh+bZsUQL)Tb+bTp~NV zPp~svp9^w5eBJKK`p=9vX6I+5zKg53?|9AazNu$21e^e%eL22T%9Z0P1p*cXYB8iZ za9zI?2=+Axt5gj3j5EG+g-Jqu=b1x6m(emh3M5`k+_@v0+UWjQ8 z)QCt5+_pgk&ro7a$M9nqBW~ZgI*&E`Q<#qB$J!IytN+?<`Eg~k4AXk4UQTFYjDu)* zw!4_gp7vsUF-W*rC=w2$BUzCmVgS(ztON!P#B81QHq5@v!e01#hQ|3gM9YYZRjB>0 za^8784n;+&oJh^Ahk64C96s1+hv+~QC?=61I!G3zuptBAz$AreGi7FSNu+$X?f%z( z6Sf-%(_rFSDhg$(LQHFD4bx2`hQei&6W^bx*!0WLQ68cL zP=Lgiua?$2*-$)+mkP1i2YsU4nGRP#ZGIOpXMRg0qFoh7%W>6=ZL7Wrk)U zQ7OGJdCsK!y%y(^B1n;wsK{8HWUnl85Kk)!(^s6>cYN#52|`w*m&$E?lcJ;(Owd-B`BVb$IrxzHMjcOpWVl_L1bXMRbIFLVV<;c68rU~e3dp&VK9uDar}-rMz|0M#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 diff --git a/.cache/clangd/index/parsing.c.B79530D8B421E683.idx b/.cache/clangd/index/parsing.c.B79530D8B421E683.idx index a63f21e558c2588d2c4b5ffad97f0626083ca6cf..992622267c47279383ba3da741b60f2e436774fd 100644 GIT binary patch delta 286 zcmaFD_JnOi6eEWmyPSZq1iQrKBt{DkZ4PZgVMz|j$%`0W>OnFLP{1QqZjFCrFomHLt=)oJ0yu33M(sbl^aBW^^4-{78Ruh2N8lp2Bex*jRPiZX~b|s6wAoXcNc*ZKmT9bL1)i|6s Pb55+8ChRlWnpqP7PF`B? delta 286 zcmaFD_JnOi6eEWMyMlnQ7`xcyBt{DkT@GDAVQ~)e$%`0W>OnFLP{1Q<#cL(@;)weS zt+IuWZ*bXfoc>qZjFCrFlU0-Z=)oJ0yu33M(sbl^aBW^^4;0qm))0XSS3hj_v(^ny z0}88gstLk`8|@eU>N8lp2Bex*g99dPX~b|s9;F`wjUH8SuE) zPT`SVuxdlXnJbOb1q~WYG)=uGYj|o4JbJf-jl(|A`u+V*tSc^>X- zTi^FeTJd;!e@;@+UG15yr&0)N@Ah{w?{*}fb6O);rj`td5d%G38 zY{@-x?yJ?JoO9=53g2J3kUd+e>eH{Ll&O+Zy>V?G-?qH`=gup8d&=t`)r)Lvm&+gc z>2mJSo}liZv#u9LTC~65U79|rXj1D`1FNhDj8F0lwlhq8Aj%2!2?GPS1iQq5se1+tR^Cd|Vv!63nQ^x%z0UfvlB iJlv8Dl9T5%iOPtB6!5@Q0e$@Ek9wDvT<0l99tHsSC7UDw delta 555 zcmcb_dW5w;$kWYj4-*4}bBbq0ZfZ#)3j+g#5D*ua6lER&(y@#T3>9;F`yKh33`AW1 z2kuHxZ27VH^ty-&W`2iRK}*+0OqC(rzuex}{oY`(_(8LF-a*Tfe6 z@cMD#O3p3gl{Sernx1C!g*R=Lx0~6)CcSc!iUPae=K5DrJ8!itPUw<1Ke%e`8&+4B zt5$EmD9CJjw(hrjoQXX9!adH)y%h^W_Q*>&wneI6eS70?zt!n-orf|}@!P{XK5%C| zUK+NcY*AeJUU#>JB6D6Yy)Pv{TVqLs=V`XM*%yl67gy#cJqCK@=)oJ0yu33MctGCc z;b-R;;1**So5U!|A;clX#|9062(k-uaRZ6T4vaF)qO78m;~6D5dE_|c1i8gI z#3wfZ)${Z7i*f^r$qN}J>xG$wIk-Ut11HcD1_nlMR)(U~wBjpBRx)yetP%jr1Bn}4 z_8X`Fl{RDK0@=!!Sk%1K*jf5pqy3^^eFlry0EI!0fC+z7I{o9bV%IUCAwcKw!wl)W zU|!tizG1Q@le90;VS+Gmm^Pp(Aa}xqUzt3;dFe&(Pi8KNW1-?a++qx3Z1AAr7H1Hj XypTy$fEy&w{h)rL?W?dPIR*v*BrdGx diff --git a/.cache/clangd/index/pipex.h.D099372D6E124AAF.idx b/.cache/clangd/index/pipex.h.D099372D6E124AAF.idx index 824350912c2bd9a34847a14ca81d5d4125e84eed..208cc45df47fa014edcdf6394e95c2719f6cc346 100644 GIT binary patch literal 1056 zcmWIYbaRtnVPJ4h@vO*AElC728H9kixTGlaB9Okx$iPrBXKsM6|6v23ul_F++0A?- z3eL>@AJ}>%w>fBe*W9d(NBb|Q7&IoZ@Az@@{p$}8^2+NBZs{j33@*?3u&w?6jpXgt z_EP3I@5rV}u717yF?->gb?CgE4PpIc%<%QFKg|sKFpW2+$`sHR@AwC9nptKZ+6gQZFNf%6*cjw%P zf5JQr{1EjFT=J~)f()E2ObimNj9jd@1LMD%1btQEV-N!Bmu8dZ0TVF&H`>lR+~#ez z;bUL}N=tA`@PG-JbcB$3LdI`y7aj&dnDGj%3Oo#)%#0A@r_6czWWvNpsca0Q3=CXi z{9;NODN>fC-oddv9FMtyFec$paH$;8J2$;zL+4 zdAjA9b7BJLco+m=E>L7u6hTt3)a-eg;F@>b4B|i+$TG=tf(e8R7>ZKUij$E-nvn|} z!Z4@9LKr9v3SO8nEMyruAt4I29TuKI)u6zHsfL9kP#6@5Fkx8u0Sy6%8`Kb(G*C4t z$e^MO?7PxDnETk;fWo|-yfFVVz=9Ac3<^J(W?0Yx%?1Y<)D&2N0foT<1rvq_6Dt=a zc%Z^OT=GKlk}$vWa4GOAh`=1p!=)&yC<8N(hf9fHNepJ`E0d=;FTLpf$p}m@j1ufH z?*qd+ClO?HaZz%yJBYyzA|QYl#$aIJK`^=QtcX%=`mUeD%E`^k2TWQBDLw=f0Mzvz Aga7~l literal 570 zcmWIYbaOLeVqkDi@vO*AElFfyU|+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 diff --git a/include/exec.h b/include/exec.h new file mode 100644 index 0000000..535f50c --- /dev/null +++ b/include/exec.h @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* exec.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/04/06 14:15:47 by adjoly #+# #+# */ +/* Updated: 2024/04/06 14:18:27 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef EXEC_H +# define EXEC_H + +# include + +#include "pipex.h" + +void exec_pipe(t_pipex *pipex); + +#endif diff --git a/include/pipex.h b/include/pipex.h index 6227919..f4d56fa 100644 --- a/include/pipex.h +++ b/include/pipex.h @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/22 21:14:06 by adjoly #+# #+# */ -/* Updated: 2024/04/03 14:24:09 by adjoly ### ########.fr */ +/* Updated: 2024/04/06 17:26:47 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,10 +23,15 @@ typedef struct s_pipex { t_pcmd *cmd; + char **path; + char **env; int infile; - int outfile; + char *outfile; } t_pipex; void ft_senderror(t_pipex *pipex, char *msg); +void getpath(t_pipex *pipex); +void get_arrcmd_path(t_pipex *pipex); +void exec_pipe(t_pipex *pipex); #endif diff --git a/lol b/lol new file mode 100644 index 0000000..439cdc4 --- /dev/null +++ b/lol @@ -0,0 +1,3 @@ + "src/main.c",$ + "obj/src/main.o"$ + "file": "src/main.c"$ diff --git a/obj/src/exec/exec.o b/obj/src/exec/exec.o new file mode 100644 index 0000000000000000000000000000000000000000..b9bb73e3ed3565530f2e875ece89398dbac351f3 GIT binary patch literal 5600 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 S9oa9)L|0{psi6Cvp8wwnDih%V diff --git a/obj/src/test.o b/obj/src/test.o deleted file mode 100644 index 437b00319d4a204a53eed1383d5052e334eec312..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/obj/src/utils/getpath.o b/obj/src/utils/getpath.o new file mode 100644 index 0000000000000000000000000000000000000000..99f758f5450236a95052fc9d4d5d7fc8274a8ac2 GIT binary patch literal 3256 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 lCyw>81#QB9#;1JZ6Hc`bw_O*Z8j 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 DiOc@& diff --git a/src/exec/exec.c b/src/exec/exec.c new file mode 100644 index 0000000..f72543a --- /dev/null +++ b/src/exec/exec.c @@ -0,0 +1,91 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* exec.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/04/06 14:07:27 by adjoly #+# #+# */ +/* Updated: 2024/04/07 11:01:39 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "exec.h" +#include "pipex.h" +#include + +//void ft_printtamerelaputedemaelysdearraydemerde(char **arr) +//{ +// char **ll = arr; +// +// while (*ll) +// { +// ft_putendl_fd(*ll, STDOUT_FILENO); +// ll++; +// } +//} +// +//void ft_printstdindemerdemaelystagueule_ps_flocon_est_mims(int fd) +//{ +//// char *s = malloc(1); +// ft_putnbr_fd(fd, 2); +// /*while (read(fd, s, 1)) +// { +// ft_putchar_fd(*s, 2); +// }*/ +//} +// + +pid_t ft_exec_fst_pipe(t_pipex *pipex, int fd[2]) +{ + pid_t pid; + + pid = fork(); + if (!pid) + { + dup2(pipex->infile, STDIN_FILENO); + dup2(fd[1], STDOUT_FILENO); + close(pipex->infile); + close(fd[0]); + close(fd[1]); + execve(pipex->cmd[0].cmd, pipex->cmd[0].option, pipex->env); + } + return (pid); +} + +pid_t ft_exec_scnd_pipe(t_pipex *pipex, int fd[2]) +{ + pid_t pid; + int outfile; + + pid = fork(); + if (!pid) + { + outfile = open(pipex->outfile, O_CREAT | O_WRONLY | O_TRUNC, 0644); + dup2(fd[0], STDIN_FILENO); + dup2(outfile, STDOUT_FILENO); + close(outfile); + close(fd[0]); + close(fd[1]); + execve(pipex->cmd[1].cmd, pipex->cmd[1].option, pipex->env); + } + return (pid); +} + +void exec_pipe(t_pipex *pipex) +{ + pid_t pid; + pid_t pid2; + int fd[2]; + + if (pipe(fd) == -1) + ft_senderror(pipex, "Error in opening the pipe"); + pid = ft_exec_fst_pipe(pipex, fd); + pid2 = ft_exec_scnd_pipe(pipex, fd); + close(fd[1]); + close(pipex->infile); + close(fd[1]); + close(fd[0]); + waitpid(pid, NULL, 0); + waitpid(pid2, NULL, 0); +} diff --git a/src/main.c b/src/main.c index 1b7f7ac..44d84e6 100644 --- a/src/main.c +++ b/src/main.c @@ -6,11 +6,10 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/21 10:03:04 by adjoly #+# #+# */ -/* Updated: 2024/04/03 16:30:07 by adjoly ### ########.fr */ +/* Updated: 2024/04/07 11:03:19 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ -//#include "libft.h" #include "libft.h" #include "parsing.h" #include "pipex.h" @@ -61,6 +60,8 @@ void ft_senderror(t_pipex *pipex, char *msg) ft_putendl_fd(msg, STDERR_FILENO); if (!pipex) exit(EXIT_FAILURE); + if (pipex->path) + ft_freearr(pipex->path); if (pipex->cmd) free_pcmd(pipex->cmd); free(pipex); @@ -71,18 +72,24 @@ int main(int ac, char **av, char **env) { t_pipex *pipex; - check_empty_args(av); pipex = malloc(sizeof(t_pipex)); + if (ac != 5) + ft_senderror(pipex, "Error : Invalid number of args"); + check_empty_args(av); pipex->infile = open(av[1], O_RDONLY); - pipex->outfile = open(av[ac - 1], O_RDONLY); + dup2(pipex->infile, STDIN_FILENO); + pipex->outfile = av[ac - 1]; pipex->cmd = parse_cmd(ac - 3, av); - while (*env) - { - ft_putstr_fd(*env, STDOUT_FILENO); - env++; - } + pipex->env = env; + getpath(pipex); + if (pipex->path == NULL) + ft_senderror(pipex, "Error : Can't find path"); + ft_strlcpy(*(pipex->path), *(pipex->path) + 5, \ + ft_strlen(*(pipex->path) + 5) + 1); + get_arrcmd_path(pipex); + exec_pipe(pipex); + ft_freearr(pipex->path); free_pcmd(pipex->cmd); free(pipex); return (EXIT_SUCCESS); } - diff --git a/src/parsing/parsing.c b/src/parsing/parsing.c index e20573a..50968d6 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/03 14:20:56 by adjoly ### ########.fr */ +/* Updated: 2024/04/07 11:03:02 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -47,7 +47,7 @@ t_pcmd *parse_cmd(int ac, char **av) int i; t_pcmd *cmd_arr; t_pcmd *cmd_tmp; - + i = 0; cmd_arr = ft_calloc(ac + 1, sizeof(t_pcmd)); cmd_tmp = cmd_arr; diff --git a/src/utils/ft_freetab.c b/src/utils/ft_freearr.c similarity index 85% rename from src/utils/ft_freetab.c rename to src/utils/ft_freearr.c index 6a0e435..fd418b0 100644 --- a/src/utils/ft_freetab.c +++ b/src/utils/ft_freearr.c @@ -1,12 +1,12 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* ft_freetab.c :+: :+: :+: */ +/* ft_freearr.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/28 22:34:09 by adjoly #+# #+# */ -/* Updated: 2024/03/30 11:58:39 by adjoly ### ########.fr */ +/* Updated: 2024/04/07 11:02:43 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,7 +17,7 @@ void ft_freearr(char **arr) char **tmp; tmp = arr; - while(tmp && *tmp) + while (tmp && *tmp) { free(*tmp); tmp++; diff --git a/src/utils/getpath.c b/src/utils/getpath.c new file mode 100644 index 0000000..61276d4 --- /dev/null +++ b/src/utils/getpath.c @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* getpath.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/04/04 15:32:56 by adjoly #+# #+# */ +/* Updated: 2024/04/07 11:01:17 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "pipex.h" + +void getpath(t_pipex *pipex) +{ + char **env; + + env = pipex->env; + while (*env) + { + if (!ft_strncmp(*env, "PATH=", 5)) + { + pipex->path = ft_split(*env, ':'); + return ; + } + env++; + } + pipex->path = NULL; +} diff --git a/src/utils/set_path.c b/src/utils/set_path.c new file mode 100644 index 0000000..6f9751c --- /dev/null +++ b/src/utils/set_path.c @@ -0,0 +1,58 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* set_path.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/04/06 13:31:15 by adjoly #+# #+# */ +/* Updated: 2024/04/06 17:30:03 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "pipex.h" + +char *join_cmd(char *path, char *cmd) +{ + char *str; + char *ret; + + str = ft_strjoin(path, "/"); + ret = ft_strjoin(str, cmd); + free(str); + return (ret); +} + +char *get_cmd_path(t_pipex *pipex, char *cmd) +{ + char **path; + char *tmp; + + path = pipex->path; + while (*path) + { + tmp = join_cmd(*path, cmd); + if (access(tmp, X_OK) == 0) + { + free(cmd); + cmd = ft_strdup(tmp); + free (tmp); + return (cmd); + } + free(tmp); + path++; + } + return (NULL); +} + +void get_arrcmd_path(t_pipex *pipex) +{ + t_pcmd *cmd; + + cmd = pipex->cmd; + while ((*cmd).option) + { + (*cmd).cmd = get_cmd_path(pipex, (*cmd).cmd); + cmd++; + } +} diff --git a/test.c b/test.c index 4121ad5..08863ee 100644 --- a/test.c +++ b/test.c @@ -6,11 +6,10 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/04/03 15:36:42 by adjoly #+# #+# */ -/* Updated: 2024/04/03 16:27:03 by adjoly ### ########.fr */ +/* Updated: 2024/04/04 15:20:24 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ - #include #include #include @@ -24,7 +23,8 @@ int main() int fd[2]; if (pipe(fd) == -1) return(1); - int pid = fork(); + int pid; + pid = fork(); if (!pid) { dup2(fd[1], STDOUT_FILENO);