From bb90704a0caa9ed2d90f074d36f814bbb67d5506 Mon Sep 17 00:00:00 2001 From: hugogogo Date: Wed, 1 Sep 2021 19:06:07 +0200 Subject: [PATCH] g voulu implementer le code client dans le handler et g tout cassee --- builds/client.o | Bin 118288 -> 119296 bytes builds/server.o | Bin 122736 -> 122376 bytes client | Bin 139640 -> 135288 bytes includes/client.h | 10 ++++- server | Bin 145896 -> 85544 bytes srcs/client.c | 93 ++++++++++++++++++++++++++++++---------------- srcs/server.c | 25 ++++++++----- 7 files changed, 86 insertions(+), 42 deletions(-) diff --git a/builds/client.o b/builds/client.o index 58a2b53acbc942dc79e8814e6c041ec9b890d4cb..c04b4b1d5347169eb7fa0ede6c31b35487219d94 100644 GIT binary patch delta 27863 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%0DnZI~c=;LHI6O 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 GD*qp$KvORO delta 27019 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 M^J8%oLiIA|U;Zg@Bme*a delta 2393 zcmZ{kdrTBZ9LIO|pxm8cPasfGlqCV~uqk3yC{}?QEiE>M#-t`%3foE$EpO=`KEPN_ zi7|?o^xM`KtF?lEsLeH16cG@435t)3f|_F!TeNAyAEq^Fwf)V`p1G2G$?nYO`+Lsp z%zfD!G|?8c$0?T|{~;;H5|+Jl>BP=VN1I)er23w5dQ0xNEott(mWY}EW7`?XJ+`&8 z`apNLWnV${%Rd>)7wsG7WD8?A_GAU_3t(yPd$!mQ(hpfA$1&dkx|ACVO!9c`@iHyM%^pQ~VnPlkvhAMMdG7`$Sd(Q}*n~k>mloVvNO!%Ouv7^ZGG4kYOE@2s$++|B;+M|YjBX&bN^vdxXriPNAA3* zk?b*lM_EE7DOAdojxy2iS7z5%cg3?v7HYhsJQdFZL&7W9mR1)@Mb#fyRacgjtt~C8 zT(bt7rmzGS2PK$AG8eY;AsHQ0Xvh(iXAok8nH9ZLn1gK-&h^L(X0r_GbX_pZWhrl( zEy&cu06hU_E6eQl_%VTE_Q+e!SWpdVJNQU!c$O z(?|UL6a4g1KYg~T^Wlb{K40jkd#18ND?57H70H4cXiRBhe>&)hBB_Nfu+ulC7)go^ zKnXD`gVw?_Xc(ixR%TpfNeYDPEK6n8C_KwDgc&M#xv2BHMjU_1#&HXHmErm`htATQ!Vjat%o~PJw zg3m)OL!fgT^s)C3KFZP&x?5S3&KdF63CT0*55JaOOiN-4^Q8;p(EC z`A|DajeD*(w;8I=)w!nnBV5D6_aYVg1=>X_@`UEvuADdR3EB+2a+P_K~3Ny9@bypbb%Y?*`~Yl&v4iHNwmqsMjbi zJyB%aL+7`X&i?1nN#9X72cZ7U+cMP%DtMmSItZO)TdpYsu1<13 z2=x|a{1w_Q$~fK#ozVWq>muWFquEq;80s*2ZHG2YUYSRrbMy!tKLYhO;TW{rWZm-} zbdH5k?(inRhkA#w9vVmK7<7)`2%K{a>Ih-8zyh*zY=JV$Q;~I)dY(34v{R4fQI;xu zo1l}-zJ+p^yyiZHdY5oDG(uK@F|IyoLfk!yUHM4FHe&5PmTG(QOkg6K3GI!|;-9gP J7TUsQ{tIuNvRnWF diff --git a/client b/client index acb8105901fe430ad86c40bd0a5efa4ef58c60b6..53afcb2546c8f3813aa8ff689f69861dc9022b65 100755 GIT binary patch delta 31084 zcmeHwd3a4%+x}i_?|sh6JdZLD5VPD+$TF)BxdY<*HVehQ$JUDK8 zu)(yX1~V2%ZMBU|lEf96RD7`>+oQR#dBMwKtg@=SlUe0EwS(+k_d0#{Ili#gsq8@G ztVL?u@7v{9iw-MU$rmWjJtHJ3waDR{>O_sEaV_3>%RC;j*Qk8i7e+nQ`>o8>f^Spv zZ#Wk`D9C+Kka>50%0s8aDGx(a9?UtK<5ZY(_pmKW6r3)b{zrLvWlF9{vA3oSK+2Lc zk87I#FtyNQU1E?_s4fJiu1sa;oDN9l*++Bw7OE2M5!_D_rR4D@(YA$5jXm)ek9YWonTPQjpE zk=<%Z%^*p-?gh}hAouoZwHVpxI;|EWl!s7Z%EJP+>0HE83sY{V7O43MF0mTFGpz4j zF#QI~UO`I^!k9__50Fp#ekPzWB=h1U2Uf&mLu|>}?n>>3FVDsBt|vKjk4q zD^mxYLkp2i9X9)D?je+TN|szZ$Nf*TnibVVYh!D8%1(0zYiA+@&AL*jQ|?k*3R7;t zngyt@Fy%@r+V76`&pGNedlnK?^QS+MCc7W0jd0n^)gZXv`@wZ3Kjki3b=TU0E0wJ( zBiYK-`Y8{l1&ZXiQRjoyRjK!XEjVti{#3!IwS}vy8Ht z?rZHFr|^aMO3pa0VS%^qBKsUaXqsBMKNXanS|=eq5?bb{W&9T{-#Laq@YD7=NAq|5 zw5!f5SR-w!OCx5`4!Wcn4#N;-30j_uhqlYbj<2bvMY#^*p+9R&T?g`uzS^&@S$wLm z*3+$3asyx3tf+2FA~eIrOOmcfZ46`FXrXmnytrlKHFO>@bKd!ytQo}x%^izEx@zTeGDot8)1jCVM6_)x_!O0L!SNl zvLCfzuU&l3P3@dlM}F$I7UG@6PkCs)yn}3acvxFC$w8azJ(1PY{_yU{d`tTJ*fD<6 zO&jUkn7{mkw##=0GikM|b>PEqmQ1fEGw(NDaI@tq6{c>*z&Vv#@M#&-R{AYq{#vMi ziuXllWZ9)u&Eliw`FCuTLy0MWO5E!}*;8&`55Z9GOnHL;l&8o+o9XYS1qGz@D^A*o z03UwRNt+iihIQ2*1T5#L9JR%P9{jFd$=1NVocH>sq({gW#`pglMsO=}3v*(;_zH!! z#PGA)x7C-h0Bu4v&?2)+7^Wm zate|%Q;TX7cWzejD6QaL+ZwcTm{N~DlFI_M!?kC*#>PoOk>NvY1l10DA$(}>pz!fp zZ7-FVKLo!E_QRB&|7Cf3GPon`)C;VARbHM4{uR7Imdw(GE9K=!A*l6rdHGfF zYOsPnzxqvic^G)s)$;O|;7j0aaQ?UD<+H)&vhwoH;5px;q2RMWpgcJ1MtQjjy|?LR zd3i1H&L7Lm+k)e7m6wkI9|kW3XWlL^->I4<>7Ad-%in{*?M`|54e)-jJ(iBE;9B6W zKcfQhTi_AkHkdaSf+yZX1>h~1V%`IXJV1HyNU%K?@ltRt@R#7W;CFvTdGP$-P#!$x zca*Pzz)-9c?}3{=LIvPjSW(78mEm z(zUd>KyxefU%GG&N9Vb`g@b{o*c(yU53;rRKL+W)J(d1TW%`?tr=!2?J()gMBuinC zUBdsqNFV=XdP=^`hg$PMY%6Z0z+rZ1Kg9+1Gr&ELJ(-=qS$Vsb$h8gWVuEW{(cF^C z^lYRzfjhnbRQb0>dJtr@k$yuP8z0K;E@>;`19+!P+5yn3m$XmfLwM86+HZ(0x~%!u z31F{j_3H%kdRMfbbprU9E7}yu?rW>+1hS8`gTRB@=fJPEU+aYO4%f7Rgpg*V;aN7g zhg8uvSz&Z@GGz`tv^zX*F2a@Rd}d|amm&SIHZvixSrq)y@>H&+mAO7fu8l~~ed;b_ zD(`X^>G!mMCj^=U;mt2SRm+Q&wIsmXHzHl^M=RPoOeBl8c0u|cq>p>5{K(4kIY{Ri zB_p3oA5xjVOp!vQ4#+V7sSNp*8TO%qQf*`1K=zh)40v7(u2)TU#~6y%njw^cP!FwN zy=viI5X#3mtNvt7{T??p2k8acOq5xMP&aKOLi-T9s~tn=V}wp=|3>I8Ld!Llh`V5< zwbOzVLk-CYIp5RL6MfZQ2sYJ*Cbm#FBQ&IBZ{lcGo8Ksj%`Q3CXbERFmSZw^)2=YZ zwH8{!rT&;qvC)u|j2hn1*Eb)kA}dv=MvdadeI=L9$joB$^qvw+jVSpCO1gd*K#6)u$>lhnPFX}fJ+D}{ zMBbLXHg1FFMTq_>9^p#nVG-7XLtM!w6|ro|t&MiARfxGRZlL>1uN{&!9REY;R03MX${)U zoJdPdL!Y+pXwF2#73u6_%{J+pJ)V_>V$wzQR4>eB|BPn3QnRot(v>niR?6^LDZ^u> z49`-^_!=n{kwq^eaEZkp%+|V-R-^iltL({MHuH8hs$Sq*EKXWNdFSX6(M zu^lEcS8I3#mL|;biZq8Ne(NNYwA1P| zUJll(wksHgba`VkiI4d^wpC4IQI9^)7c+2 zpcWfDDDW8qwq*eNZ`TTd>GKEV@m8d87~H`hnG~rB$sMjhZVf9A1BINdW^$NU5w3=L z#`M`n++n~8q&QAQ0xKXB+B$0;+IS?#2>~@+E`BiG*=4-M3azmvGhE+8^=zRvx^jl= zHOgB=h2`RfGh8)oLmPkl2b5Yy!Y8^+?a{cYRW zN08W`vSKl}Z|4tjRJ$PaM%n^cUE?rv(0p0@_4Vfnt;g|y$1_Hwwu<$qV$?x| znS^}rZ;ZOlq*Mm==Oi}(F3d{eVr#u=MVjVJlZTnKu%wTJDhz&+i zSF#ya3CZ|1rHKhG+Ep9cKHC0O5_nQNHa?r$$C`&@Ez-^Q3)0AJp4g?(^#~TFD+pVV z%XrxQ>yy>92bB50A5s7FfYJvGgNKRw28&JQV8K|i_1c9Mhh++1^3cBM z5W?Qm{^$^G|07u`k;G%%wWN*>>_c`z5J>`T4`*~tHn+jjq?@e;(#ULX-efFEs*OD? zU9VP?qap%Nns%&{yZs0% zvYd+iTuu9Tr{DllL&-ZuRl*wj%~&eHme`xUFO? zqQq8|=;Nb(nGx(H+9m|p9-%P~ovXFpM}3-REt5^_jM!_@9>~51m3OD|6@6%^Y?zIx zOC<8*?l$|h(Ve5s9_V7d_uoQU>iwqJD$y0751KcFBxwQm!GC?w{D15H?WArUQuq5n zZBQ4z_k}>13))zdX{OP%&0T`*S5pzON6HA)&UMi(ECiy+(o8@5*C~%TReLHxi_8o* z3(E;XrBms#?vmZVD7RSlD=aq`CFx>oO_<*F9l;Q*{q>mcniabRNs2;0Dbl&e-Ejxi zQg`$T)^`JG)=H(m;dmL+=Y~3K3#O|wE*lB z$J;N{v$kJ0@~g0b8(9%gmGirHH|OA4NB1>vq>*ylf{~2tB`ZmzYDiMOrvHC*>$3*+ zhVZJ&{T1C*(*-ox#@2yUj3*WGoP4NTsyT`Tb;(+A6o*)f)w9NiNRo@_;##IkE7a4i zkQRahxMHj%&8dyOQ;WY~1@p5XFaO-jOK~^rgM+n~#TfWcJGnKf=r$EqkrJBRqk;Lu z#|plnD>zA4aGb8-(l|-_I^{1Y_-y@j*ZpT6hdPl~Vy48~4ZEHh=HWJ#oi zk-AP>>f#wA_5ZF;BPw;m3!0iQq?#4%81&(2(RJz;YE@>wuG2wG4U5|R-_@yzbP`hx z-Z3@nm2Q6Vu}&}RI(?<B+&zqy$yC3VDNk2hppdiOHd zwyW%-)4Do#)vano>+5=ab4hB@>HnlUM@XIeG&|z`-sC>1W>+x*9(t_Q6o0&bI_4z|m7IU~nN%mdDB zMs$cIeG9oFSsW_+y`FB1$`{dO2wd|sBxz}{zhevX-^Y*YcsxgE>k|%A{>H;oO;X>f zYJ;(B#S2g;ao6GzlJo^8PDS!`)HO9r_L;h>WA$#&#*;T)OX1!_vi><$|4U7qihas| z`Yv!KsroOPiympav%}19RmSO=Z)atUp80IW3!{BByz%P6_61-!b?0_|` zyJVbB(Zy7+V@&|ATUNs6{}84-8&P_(wREcW6(O?I*uZ@kiqce>T>Pfl_I-*L>vh|W z8i?21ODkG2hSD^;5!}yiRDX#r)0-sO@1wL)6!nYJb_@&+5U(>wSu;1a5ltS|7~Lqe zdqcZ1Fg#f3INn-&Hs%cq8B?jE4iwC)p~VjhW%IPIgQ^F7N@DTurJ~1wL>9W}t*5qn zP%ZPr3ipug?;K?_Wovu_XNs}-T+z0+0b)P*4W~@QI|IDL|O&F=? zbX0qN$k9YMCOg{MHLz=F$MEjX&OwqLDU#-vWQQjb&&nuX;U-i@n)qm=NBKol2`5#O zP1X_|?~t6MSrZ>?6%jrz%+=V`+tS>JGP-DA4fSz#MRxrLl-(^_()LdD(uzhUYE6b3 zwX9)hw9}&#w9-kfwXa4-mqd(kve6TkmRy=JnrVT<&05hglh$#ho%X@#fRbsG<}eeT zoZ(U(RVyx8t2u8DD>*Y|j#5(&jyA>Y`gYg1OP8BECrQ=?otH(hoxc*W``yRk!}`8fvD;9OHo8_v;2gD}Al zWC9~hFknc(aV2|-A9Cl4l>-JiW9q@>lETkqg^!IaS#s%!!Y-6_{I`$7j+PAjc9&ur zpEY2_(1D|JEU`h%M{EAWA&YSltMRYv!;PjcS)J2*rep<`485~Sac-H?BCTDswplIH zT4!Yi#mAM{+)w28-CA^L-zBYmW=hMTq>?7TZg8>$+pvT7<8yNRXN?;;Vf65UL8ZUi zFr#g0m^*vVM#&jCDW~+7KbtSx4j7#~DkqCtT{z>sjazKrs0YRamL78n!o5itiKI+J!qehRjyqeCwmNPS2 zm#%5UzL71LO{}@L;jWM6Y$&s{Oz*^Ow4HYyC}t=<+=12L7Us@EOMmIaMsml_X|2;b zbO{1AYo5`ibV?WYIkQ}}VL_#%yRu=jWk46^Q|i-`#j?_lFR=NxrS^kZE7jPdb5{4} zo$G3G_x&snd!Vfu!`XhHQujH`M=otSpCvQ9p`(UEMPcAla{-&EXh*NR^PsrW=tb-i z_l3(2j2<8j%E_v9;epbCAp-{tFC9|M9A(Sv%UFi5HJJ=0jUP8)e9Yr`sm*exGP{93 zSV9!8dNm5Q%>0EVS~{+Pc%7y1CFX7!wu0H(dDvpFAO|?9?u#wv70k(yT&l&r&E9A~zs+?+~DE+8IksEj$$79}5 zj)$r4Hrr5%SGel_&Wi}NtFF2^m@Q+z zU|uFgzQ!X|_gR)>7UpH1fgc(x@=O+`a{Bp!BF|zqRo-X?1@l=gl{-vEP+h|8Vo^^q z3o!b5QrcQpTXj#~fS_>*eyAWHXVJzf6bOq^jdBdhS5P!LR`ni_Cs5f>S5yrQn~!K{ zoa)mn1dD}YJdAvb+$di4o<5VxofYwutd8pW1)hQAfCSl7FKqP1G^xnpbya=}%e`Vu zrnveZ+hJM1k_`*LRR{U2DXPbfnvg5TkzthGn5;T}-x?{-ja2UzftKi1tQuQwNngbx zSSw51MReZWRm_*&wQO7klZ=Z-R;Sj+R(OC>=)&$#Ql)uV%T(#7mW0=ggs)X6l+op? zl#Z>xD#gtv48~nm$=jVUYBAv{RHaHKXtFAmcOcBzM%Y5soPftZRf_LMn3<0Ktt#CK zBjpr74B)bs>DsmyioT>pz3S3$b5S zrIluJ%QDf3EYYJEga&KJQF2^$LIWaRfENt_;u;R_(B>!5t@ZMD6|29J7z1t}vYysgSVbV>a zS)Ygz94Fd7N({VyjVaHunS={A5@xE&H=j+oO<2@0 zUHJcA7ZPP`AWRU3ig}U3L)#FZ6&ep1PvKJy2)7H#d13tBn7uGu#ciq!&2EXFu5U;3 zQAWZ9F$(^$rSRvXn;eHxcrn@AEDaMk9w4fY5kA>on5!XHB2^maKv>$H&|4H{3WW~{ zxsUMb!G$DwD4feybV?d0Nw(-3ZguU^BuVojJS-8;6|QRDmrao-LYr)1v~9IXvR?Gu z#`zSUD12DWrSJ)1twiDB^`?+y?n7Z$(NG8B zA72ZNM~)!*QQ_KKM2CJaJn5FO_XSts|A*iRs^l}4@Z+t7bif%af^fGc!ndyZfWSA)arBZPde@Dm5J8WH0q77k4_r z$D&P!ll(m@af<&)>&9)qD+hF!uYi5keECi4yh7Oz-ey=WKTr@`Bab4dSTC=(2W^n= zK_&Gixr<{(2hE39@Q|#mj*=mCzIi!Pqkakl*0dwd5_^!+NeLmq`d%Y}4N7|ed*qWE zee!I9S+!}-XOmY zD~Pe6ELa4A{h}s7#~ZD5>2W!OTKkrq3(J|+6LLJ+>!e(^5_C#lNB4PK4)O<`k=sxY zd@RqSF@Hh!ry2B`EU(k6vVEQIZ+C1C(7t#n(81^qbhOC;I^C)Vbe=-3a#@@Pbale` zP~Cb{ce`IE70ezV${^3!e4tlj^pI$Ie~;dX511PY%-%}V%fKrGfP-G3)(uXN0_K+Y z0#0zEzM9yIOg<@zJa6)g8-P=S9D!3mr0}#qCIV-;qHNo< zUjvNDqY5I=Cjo2tE(1oLfv#%Jy6b_pN0Nro>6?Lda;YH+OYMMlU13PI-d9Dy#K1y%mEz*ebqfvue;08@L>xJ?_p5t#l>ePGAlU4WhK8UnlCaRBzJg?fa(?wL?s_4A{f z`zMqC25cwe$Ij_Trj4ul5-|Q0-Mmg+8JO@@H(=d^b%99@$yoJ!t^zh_oC9pQIUJZg z+6UO^B$aJEf|}gqJh@?WFY5IcuTW!KzLW<{xj}BzYT7hl>jgC4Qa#Am(vm0A`j_5` zbZOIkHL$IPs%~d#3T*F0qrn(F zk%m|vo7)aFlX+A3%wn_BLHX=^8kVzJ`ZCZQ=1Yz?m&No4&11dD^z+#{>g@t%zC8xK zfN`2B3R#C_&_b3>{!_$0jRGxVMcqM**(~bsB`lK)EM<#nTxhJrP|z}VCsS{RO-DM_Vy;N#iVs!&BDZm3*e>Zh?gN&{~b3-9YPA6kEszY@*zE1>U0AF!MT0s`d&Z^Y+;}4%oLDbxHrvoPgOfS#eN3N*xls z1vsp<2sri?YTS79QOcA%eiCqE*;wF=kH~m=teoyYi?x3VG@IQaJ?FBI$@HsPAx(~J z*=WkSj(Jd)4eU4#%$Jxi97o;EmQY#38g$G6vWY-2Tz5bS3~ zF}fsdz(NSZ%e{eh6BJ;*6}^Co=V24G+Tb`1p+*O(n#SGSflY5x`&#TrpQ^3eQ{mR< z;()26;qPkOYJtFZjI?b(0CM5HZmX$Jt9|YV^t;v(=)c2JPkV!`~0G(v^ZlF`FI>k=2dgNDcvu49V zXP67s@(!zp(WHLJwoStb{E-#b2d$Nl!_!17-5p;+vM0S=qd0Pyt7dUKKx?r7NK~Lk zUL#ebc4JjC%;G2E|JGV=!?bF(MazK!w=i>9rNhn2O4LtR}*K zFJLNC{qrM%wO%!+fodOI0*szVgC=J83SjI6GJYLKi%CK$`c|#`2KjDc6Y`*>n_Gd6 zM=b_6!Hpy}V-(Hs-3PVRZ`*GJ<;XrmOd0Q`Xk)8{vGlq5~zZ|udW~JPt2_*Jvk%Bn&71TBwxHi{P*cK^fURuEEUkUX(No``2_ikaBd|@UKESqau!Y*r z3rbk^_j?}}RD?clZBZDEYI_F4%!U`V z2w<=77%_(48A?7LwEu;1%#X#E|SO+$B3;T+)L^mTem&$2HjLvVrB zjR##~XBL63uvR-jS6Mi6iB@>UlKLU}W?)^dGqA<{*}zt-Cjiqs2LRh=Q?F)h8U*Z` zxd7NR7-mqjU3Sp@2fs|dJERCxi8}Q3dfVeUj)NSKii~&wq)m6WtyM-$7dWU8d z-&HcuzkN+$(3uv%(5}?&)#>PuTBGsHz*^}WficHT!1$3-zl}L3S+6 zrw*P+T|cZQ-E8=am^{>xbv6S>Z=zXX+(@!(t}7H$Clr{+fhMZdh$(U1fz$ht$K
vpEP4n>3sYSji9&mS@bYSdd@O0xe~a$m+{kGIhjCHk0aI!<=YdS;yW^0BvM* zjiAkJ1g1lE8yge}dWEHspP6?tAIh_beXtBv!uG!m+Q;^g)l1pp0if5|*bbnB>^*Ac z>ufL07>8IV41VDQNiVN~p#Gs@zy=Y?z($!g${Meux|&R-0hSfj7TC89b<)5B8mEK& zsZ#Th&eXP{{h*+z>;j7-Z~uhF&`kF!TTfHiH{u5(@Vm{JnkZYv++Hl7A$?cKZ^BMb z&h+{GilAx`t}&>GRqYQIot`FEne4D6)=gB?io(55qi;p^)HBkpVh)^H}xYvykN z*6x}EjQKZ>CrY0o5>jSL6n<{PiQ-5Hi`s9F34lrOdhl#)zvqk{Z z8FgCQ0o{P@-_Hbg{N_bq#;oDME&=4cT@TTXyLU_l_8d#2tCuG=u21_dz`p*}!~M)B_HBlX`8)PBO!=9GVJ8oTc$Q>UX-?m<0NSwKI~Ty{7QG>`e1Kn3hG^AK<$TTf0<#C{$OTFgqQ zO~q`hJ!l2XAeC0KzEtUI)}8uuE&Fl_XdP=oowR{{kPUi?nW&RDv*`;!TUio0z{{+$ zFK7qr8V%aTWOBOQ%!l;a%d&gZyj8;T7K8S)FR7)atOqIgI?E+p-ek_TL5JCJ^4X*8 z6{_?&i}M7XU|S18r`UTGdz+0R!@a}mQ}?~cu2H|9WgpP!Jjd!#n?7Wj8K93@JS};j zupgbs|1Po_^AWwoejw9cX2sM!SJ-D{sIS@GDWI#Ydr#1J>?C<(8JpD`^aDE-2)e-( zs_jQMyE^DLJE4H?u+XibyX;@1LHF3v7|;XOgXnj*%@*{C^_flUPdU4?5z(1Ej%KHP z-j)*Q@Y0o_`Ft1+#s&OA3(!KIo&s9L{oO!Ic;I-@QXWN3Th5EAX%-&d5VVRXQ2(yw zZ&Q|aymtX;10S0P+QbuH0&U?g)aT}H{AVh$ohOqo@8G>L!qi=S7%8)x<9C?pHA&kE zpb{>V3+(6Fq;DzrY!5ofC*_0Q;9D)AL%ib(&=G!t2G246-3HKGoVNy@ks(_YSRT?M7Q{qKS%_9&TUEiFL)NkF7wS)%@uyc z2J|%_LaXGr{2+PIHJ(Fb>wA8Kdh$9KPIi-@A?Loun^V93#5ekbe&*({n}UDg8_6;5 z^TJ7>UwL3%(C>T~8R`))iv^W)yEdSia_u^xeEHZW&>Y!9-84_;!Jq>9<}08=`TAl| zk^GVdpv|X;g1GGc_JOZ>!zDV7)TfRo_yca(Y2bIX<$XWKwgGi-P z*_Qn2pnQ&0dPBAiq49TEewn7uqq1c!=(x;>gHFiH+k#HZTVDj7k!7mwU3t<((EIWo z>d_D688kzDD34tR`dA)DxBo=$LVf?4ynx32MfspN=#qS{5Oi5iRY6zegc+c(<)L$F z{9ToU$cW#`8KXdD@;d6uALMyapd0dGQu{~Qlg7v$xdy3ySAIYpb6-B@1^QLC=??l` zzVrgF>fh>RQ{xL zX$|PKvU4oxjMB9w=v`&pV9@)DAsh68l1$_0yz={0&_{|B%@-Gxh{m8#m1aFapDQQG z6TVQ+&jDRlqR3^hn3XLZ!Cx!id4R4edpCo=Q|2as%9O$6b|Qa89?`x_nU(rDAmdMzbW6$20c_hrQ+qvZL-r$b|(;d z&OmZhVIIOU$#l0mgRux0l03s9;FBdzMcZxt}0$|gxIs>(R#rzaaWJ~xDFZP;04ZsUbEMsfM_6+}033qhEyq=(MdG7)2NoOdb}#g6fLQ zqaLmGvL7&R5pt__TlWPfb(#*W|A%=2sKF3&*M?`&XwgwMdy#L|nopy=_I%PWdIouE zjMr*l?0$D({8jXo$n7rALOl4YJ+Q`o2-UbGnr#wO#siz@(hzEYHCoRdvWfaA^d997 z+rr2T!#}ADtiG1~I$;r2UiTwAU_Dy;&Pl&nfc2M>yETaj1a>_{{@8yj2M+5` zIN?Mu;1agT8MKypWP&!cEhOB-QsF|Pxveiz1Mr)vz^?x`)3ANv8yaW5E(QVnrpbCn zx7%boFY+uZXz*`15b;pA?RvW7t~|tDF1@111M85bf_|BXydfWKL^y(e!Cj4+1fNi2 zkCE--e5j6upGoa{KLNwkp?Orzh)I-nv}*(4xSI*U+)>aQH|A#5l6Q`I+loU)PH?+e z%el*JAWnkqImrUJhppw@NfzN}J&hz+IgRA(CJrGr`&b-8>h~?9Lr62>N<@|Z( z5m|Bg%KuM?ube9nUj^XsmF3D?%q#85vsS?sXRS=uLuD0btwO|EE2;9RRcO_tR$(}5 zWodeX`PRAy6=fyDxERAs!AYw~{iKx~QA3r**|jImT=o5oRo73N;WU`_q*=5$X?FAk z^I=JrJ*Qa^j#ZsMU3sjkPUW#G(e;1*G5tS%N;m&kk8z?6SD1Kp^rt5}^}l;d_#eL{ zH2=qM37|Z9T*5X}NWl*;Srr_IrGu8S7|;iwFG4#a$|0Jg|z32k9;z{IrXQ zRJeGR^UR^b#RooKWW%2DapB_O73Z0&S3S=h9D(EEV&RRfbo&~WZXfk$x4-;BrQ1hW zxP45;5pSOk^n*J1`T-@@=m}?+y>%^()yehM%?5oy#L<9=uNV+@Dh5QtQv>4FYR?D6 zUmOtp&7kMD`>VF=8*b_I%hQWqm8m1|(z6#m>n3|6<8;zr-(=&Y|Nml>tyInk|HCG` z$^`Jg+hpIqSh>Xg?M*g*or5;neJ@vTvMVNH`i#h*C*s)ub|QXm&1YDX&9UJ3lsqg= zKViy~+t=sb_|zlcGrf^7jiXu6-O*KjY9sLck@+e6{rQo(V*9_P?sNOmzU8m3BnRtT z?dS5`|NhFhp1yD>J~;-Yd7*;!gb0WY>p>(|`PAWN=N)40;+D$n5f z&bp&i@j0Di_#rc0$1MGf$o;;RE?JHlc?^4Gjd@vuO-KtRiebstSgMt}S!sZkMp|j2 zmGZ5$*h(*2=@ly-wbFS(mJK%C+lPK>hM}EwjQy!gw8H!Yk|oJaTGA-!snp*^F%M~F z6}f^l0hE7!6}gv?yGRv((6OSjD9D-QDa~&ZR3Q@F6mnO|(N)T$GYq&yd2mNdu`T!V zp|b}_|I;VQ##)Y1a*>{V)j<@NS_n1pccd&oAvtcXp6nN8O}=9#X@@Sa`a#VSaZ`3m zkolsXtLo>lzR~4Xzjb>Pa%ag)a&8)=-^WUKE9$|?9lCJxL0k%cyh6HF{kVL($nWGT z&DL$A=a(EU=k2+dIZ7`VjUVjOm98sYPnTEyTOdt!d7jCd|2Hd1?R0t7&%gH6<);Fy z8F3^=Tm!7~=JXwBaiv*F8mSkk`a#cJU7mrT{Lp2wk~CZB;j#(IWG|`0UY0ZVJkaNa zUaIO>8_!ze9H9M|dh*XWuR~W$UHk7Kci~==siHP(vh=f_zv}1B%XN9x@4z`Is0Zy@ zq8lGkarq$tgIi8JaF>43BI5X`k3QGet$0 z4>~(b-cnK(UAJ3iI>JQL^kVcu8M;2RlC(sZSN)*+I$iFCV{&xS-<+ch zf4xIEXvH_R(yd}?Kjd`#s*ZllnjgP*Z)44gGfLt*RdEA-n7*&e&*}0kyyT|qkd>q_ zb$P|#D)Q6i-{|tHA6dPr%YA$(BhE*p=}z&Ro7ujlbd6Q1lf9*iKlI~m730m6 zRpSVpwWDj0l_Y0fUZl%$zDr!8y8NlnrPB;slWqWStZJe}y}o;U9=^KlWDo_;*qreflpZ7KHSiLMnx zxq>-9RfcRX6^m2_@3i>%^BC8rI2%Y;1(z90d;0Skj7LgTeSqab0Po8>T6zTXMB9Rv z*373vEUWRi@oeZf*yxJ2d``)E6RpuX11!ElNLIhF#%o)81R*)T(CUys47RLBvPaO* q)_9&iP=b*=)$(l+uW7qMUm8!V7T;iA&vr2Vnh>rw%;M|A1O6YUDD0I0 delta 31996 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�Ooo9 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 diff --git a/includes/client.h b/includes/client.h index baeab8d..8e64d16 100644 --- a/includes/client.h +++ b/includes/client.h @@ -6,7 +6,15 @@ # include // for getpid # include "libft.h" -int msg_received; +typedef struct s_client +{ + int mask; + int count_char; + int server_pid; + char *text; +} t_client; + +t_client client; #endif diff --git a/server b/server index b7577da1f950fffe7d69e41b909aa56d5628f496..27056d6231da6b4482dfa6ffde1c4935b46d9a1a 100755 GIT binary patch delta 5572 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 Y`}RzZnjaH5K~>++;pI{o%q0)`zms>~(f|Me diff --git a/srcs/client.c b/srcs/client.c index bdb3244..767461a 100644 --- a/srcs/client.c +++ b/srcs/client.c @@ -6,48 +6,77 @@ int usage(void) return (0); } -void send_char(int server_pid, char c) -{ - int mask; +// void send_char(int server_pid, char c) +// { +// int mask; +// +// mask = 1 << 6; +// while (mask != 0) +// { +// if (msg_received == 1) +// { +// if ((c & mask) != 0) +// kill(server_pid, SIGUSR1); +// if ((c & mask) == 0) +// kill(server_pid, SIGUSR2); +// msg_received = 0; +// mask >>= 1; +// } +// } +// } +// +// void send_message(int sig_num) +// { +// (void)sig_num; +// while (*(client.text)) +// { +// send_char(client.server_pid, *(client.text)); +// (client.text)++; +// } +// send_char(client.server_pid, *(client.text)); +// } - mask = 1 << 6; - while (mask != 0) - { - if (msg_received == 1) - { - if ((c & mask) != 0) - kill(server_pid, SIGUSR1); - if ((c & mask) == 0) - kill(server_pid, SIGUSR2); - msg_received = 0; - mask >>= 1; - } - } +void send_char(char c, int mask, int server_pid) +{ + if ((c & mask) != 0) + kill(server_pid, SIGUSR1); + if ((c & mask) == 0) + kill(server_pid, SIGUSR2); } -void send_message(int server_pid, char *msg) -{ - while (*msg) - { - send_char(server_pid, *msg); - msg++; - } - send_char(server_pid, *msg); -} - -void message_received(int sig_num) +void send_message(int sig_num) { (void)sig_num; - msg_received = 1; + if (client.text[client.count_char] != '\0') + { + if (client.mask == 0) + { + client.mask = 1 << 6; + (client.count_char)++; + } + else + client.mask >>= 1; + send_char(client.text[client.count_char], client.mask, client.server_pid); + } + send_char(client.text[client.count_char], client.mask, client.server_pid); + + ft_putnbrbase(client.mask, "01"); ft_printf(" (%i) - [%i] %s\n", client.mask, client.count_char, client.text + client.count_char); +} + +void init_client(int pid, char *msg) +{ + client.mask = 0; + client.count_char = 1 << 7; + client.server_pid = pid; + client.text = msg; } int main(int ac, char **av) { - signal(SIGUSR1, message_received); + signal(SIGUSR1, send_message); if (ac != 3) return (usage()); - msg_received = 1; - ft_putnbrendl((int)getpid()); - send_message(ft_atoi(av[1]), av[2]); + init_client(ft_atoi(av[1]), av[2]); + kill((int)getpid(), SIGUSR1); return (0); } diff --git a/srcs/server.c b/srcs/server.c index 89d633d..c088d80 100644 --- a/srcs/server.c +++ b/srcs/server.c @@ -4,17 +4,21 @@ void sig_handler_1(int sig_num, siginfo_t *info, void *context) { (void)sig_num; (void)context; - kill(info->si_pid, SIGUSR1); message.character ^= 1 << (6 - message.count_bits); message.count_bits++; + kill(info->si_pid, SIGUSR1); +// if (kill(info->si_pid, SIGUSR1) == 0) +// ft_putstr("client->server signal 1 received, server->client signal 1 sent"); } void sig_handler_2(int sig_num, siginfo_t *info, void *context) { (void)sig_num; (void)context; - kill(info->si_pid, SIGUSR1); message.count_bits++; + kill(info->si_pid, SIGUSR1); +// if (kill(info->si_pid, SIGUSR1) == 0) +// ft_putstr("client->server signal 2 received, server->client signal 1 sent"); } void handler_1(int sig_num) @@ -41,13 +45,16 @@ void concat_msg() { if (message.count_bits == 7) { - if (message.character == 0) - { - ft_printf("%s\n", message.text); - message.text = ft_strdup(""); - } - else - message.text = ft_strjoinfree(message.text, ft_strdup(&(message.character))); + + ft_putchar(message.character); + + // if (message.character == 0) + // { + // ft_printf("%s\n", message.text); + // message.text = ft_strdup(""); + // } + // else + // message.text = ft_strjoinfree(message.text, ft_strdup(&(message.character))); message.count_bits = 0; message.character = 0; }