From 6b5b2c2d1e5582a871c1352939b0d515e792a2e1 Mon Sep 17 00:00:00 2001 From: Michael Kuc Date: Sat, 23 Jun 2018 13:08:29 +0000 Subject: [PATCH] Fixed not writing to output stream. --- .gitignore | 1 + deleteme | Bin 92128 -> 92836 bytes monitor.cpp | 41 ++++++++++++++++++++++++++++++----------- 3 files changed, 31 insertions(+), 11 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e0fadc2 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +deleteme diff --git a/deleteme b/deleteme index e67696216103d2d77c8224f2a5ae063d5bc21aa5..c563b4c9c73e70d8c73c4228688d4205a2e2dc07 100755 GIT binary patch literal 92836 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%0DGvoI5RyDyvP_dbPw*nfz~gX#6xmST4GLdD!4Xg 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 CI-Rco delta 30440 zcmZ2-mG!}S)(H}Z6ZjYzOc)p#9wad`Ft9MNnlLCZa588xC@{z~FfuR{9BE`=IMT=n z#u+RO3>gzWquC7F7#IxNCa#iV^I>9OXkear>YDcLHG{&(;F^XE)iu6E2y zm4ShQoq>UY1Bx}>!}^sEGEP3ts2j@7z`(%AfB^gq3=E=Bt{4LYg9HNugA|l64W&Vp z90LP`A_D`1GKd4kAbZpp7#P$iD|QQOXfQA^XhLPQp|mao1H+OVQQJ<;eOP)oP4Mg4 z(3gCZdzchtL}u_f>-*V$yUk}^e&}Mg=GEW@%{6ZY`P~^y`6r)X>S64i9Lj8;D8&Rd zh=GAYh=GA2nHiP;3{Acejo-k?z#zcO2-XDBznqDIp`ee6L5G2XL6AX=Vcld_7Ww)V zMh1or6POr!z@kzN&mkJ%x~$M_El0EECj$e6!$gGs>uBnKps5cVEWJNaNBqk;Xh883hXVFa94bcqtGspyEWD^(|7?{!I&!fp7 zVxByWS&mU;vnd-FBYSX(NpgN^$z~h&wM<<31*v%qxv9CusgoJG`X!kdSQ*$DSQ(f= z`I3Q&feFlGW?-7Un#|url6POr8 zSs`gxga;D2A~FmNC;FHeMEDpOzJO>0NGcZLhonXkVFm`C2}}%PTnr2XAXFfk6R8b2BigfM`ty1`QCc#lWBgqB$5C3_!Fr1A_^OmS}FI0Hinh!$dCh?u~{P%oy#zz_oxkYr#; z0MVQb3@IR5fq@|dM5{9}wfk}u#OqGFQ4oENbDU*>;xos z1QI&{iS2>Jc7U-RPxU;qfN?-kfW+27Vk;oAC6L$xpC<3))8kwH|Nm=?az=(JQj82Y z$|nEflVeqBWMo({S(aa&b^Qb;hBcEt`HflEfLV?F+Kgv5ujS8XV&s}EDO7E`@8AE| z3Y`A-`J=07cAnE!OrzyGgu80J4^ zo_tbBK6NWpXNbW3r_2ls9`5@0|Fwz0{HGEO(ob)*FuZ1AV0gvA5b~Ijfk8@uVgA#J z|Ng(;{_p>5kUY-???(n5dtcm{$ixs+&d88Z&d6|OA``=k2}}%UR2dm^${E4clfYzO zVfp&M>%L46kApKOu0Hi+Xp#%d17YDC(ObiUKKpLI?{eS)c z|NmDYA3tJecpU>WoMFL35TE0M_alLhy)Rmz;n!2n2yP5aDF-EpgCg3hzt|aGTY#On z;GsAuOcWM8v@wu=%3{#;6ecb>Sx{75l^Z1Mu;8JJf%hX&h=Jm`{r~^hAU=b@g2x~} z&tzXw@%nX0X8vSH!~slKDKs8nx=F$pYq2oj6`|Npgtfp++0yKk`L-j zP-=wvQVJS+AP1}kc>*bg?*#D!7CeNR%8O>+DUdvxCoh1+7{Iv%5^}~+UxF+JS)vd1 zB`87tXJ&Z4?C*bY_5ypdWA6(F58an68+spET=0El!NC30M{xdAAIAAld;da;5*I;8 zfiUUs|JNo4-j7(IiRA^TfB>iH1rK#WjxeZS@Q}e^@>322?x!GyAj<{V8D4V;&VTxc zVgA!fsDWRg*{kmF|JNEwsqxA`2p^WNBEg1&%)I=R)4=;FNG-_B-)xXPy@Fx>(-e@I z3ZM{=ep)PJ@c$X8&|_j)@UR0UVX)v~2h_6U$+Z&l_5A;#xl&-kLr|=P0vucvF)VmE ziJ9RwHv_{f5d-f>oC?uTIiRIP_W%E{L1G}2L3;MEGeGzZ3mz_IW_S$}W4Yk{h@oTe zi!IQM3Tm;RDQ9H30m`r*x-U64^ga@~;9LJlf&o-ENk3(AXnq7XlwrX`P;mldKVoA5 zm*0#E3m$_48kCG3{z4r9O3KU(ubH8a1cikTGsA10zyDvuN(up}Wil6hA1N?!KZT{F zyWmu(?G4UbTJW-H!NX&046g;ij)KTZFhdeM$K;8U!Wkg#oD9v61Pr8~f}8{@0wh7{ z$3Xfi7n-;*R2-JY#X!;L07=X+F-K;G*9-y+9>UB6d5`t)|JRcuMe5O=yb|nWh^xN+ zMHKy$&|Lh43F=}r_q_h|ADnGrneiPcXrbr9?#Bt2O`T1Jq;V8LT)1MjCGS_(u@wv`rV`o}UkOj^#(2byVJ47i_iFi1aT zfbu;IxSx6`ct3JMD)RE6atsW?kA)Z*xIl8CXzk*dyh~b6Zsi|H7W9E8;+8-EU&EB- za!mdvttM0Z=l^Sv4p<7j@bSV&P)`n&0w;e^5S#2LQ^sV%HTj*p(qscynaL4Je3OM_ z*D-D2nS4lgn&R%?;4=4-4m7d9`t$$wr{Diy|NZ^{_4D8VUo%gh7%9BDN6vte=^Ov# zeez~ZD=H@6OEa4sprEojK*4~K$yac4lVTj><;f2fr5TS+{;L?wcyDr`(q!FRzy80L zQJDW!MqvI^P=lfS*ZAe%1H%PqBcWxopt8DHG&jR*4roCOQ?;UEvY)aX z!HhRK1Y;*&2Zw=kwn4pnhxIZ?^TFnNQV$m9(w8cgjX zlh^qqO}0@z!l*r&QLUO$Ycivn^5g|-E{vZh8~RF5Qcq#L1Y%5XP!26Mj0-~bgpB$?p&ZsrHQ%joBc=ALIVOiCm|6jAH%zw%v z0%;AD{)FfP#fxsm{12}7_8CWmn`fYsDiS1Su;AewVMsX(QUkIP zq?c>5siwZvA5bbaSnzOz!R3b=480%1WPdPCuG5ra`p7hSmZqHBFJ^|<0S3}fIUJfF z!Bl|q2B>O=1pwD=c^j za{gomKat4+T0EkjzyH7XFz|k)ffPbwlMA)P84W=pWVr4JBoTvJO9DcW@LBNV|LYHm z^PheYgz!K7fS3XDv*P5dTH1`$Co^gbt9AbP|9Xnz{HIf(>Tdq{|9YQu^h0Dv?O~p5 zr7g$EFga3NpQ)I6a+kIe(>LbH>$Ih!{xUOwodz=YA=Im|tX~E4OTdDMAg6=mZ=%T; zf#ekyJltd${gBz9=>e!kEh8WeZtQ(yo~)!}CK>SK|7#v-GtT$Ne|VG5YjUBEzFy3a z|E~i;OD+0aGk*DxgW(N0)<1_Q&KrWwpr< zbXg`h=z6f+0LeYDk(m5M*MsEKtoE6`Tyrtkk> zpHZ0q^bC~G^aE5zdOw1t`)8B)8Y-KvLedGUKS71!obUf%mnh7CS_0Mi<~yp+{>h?7 z@?JLo{=epghRDM2h!C0g9ooo+wik>*ormxLUu!T(KZR9Y9uAtca9Kt{#nIwLE_ z*2z1K*S9{(v06H^BSvb{$XNxonwITh%!_Us1OE~ zm>keXi`L{=V`;`alPitoH6Nqt;ezV1FyMY_Vc`9U2dYPK@12E8mnubK-2Rc znrd_mxS#46ct7HW>iITV*F>6e#bi$tb-}f0dag`vG!bXKJ$a^yG-L1NttRS%lh9P` zocz{Aoaq1)C=oLjO;$8j*DOaFJ!>U@w( z&QD%zZp_Fu`Js6*DdkS&$zv%zx@3F#l=L*U5Y~T8v93TiQr-)KoGu%m7tG1&$JvOKe&gn_=NMS;5wV zwG3p&|7WPzy>CG@p3arKQ#uKV6fof zBv+Bi2KE|^+LI&gr5Q~om)cu1nor(nAI$i2^22oL$qEhzjMpXyItWj0P!^eF#xnVg z!yBd(UncKz^kUiyqNFA(IC-#c{Q|C3vy&$ukYiyH{rms*O8?DPTdvdRY%cf zF%4|U1a}ptOvcIYywoNun6rSDT$=naU3ikm7SSzGmoOMiehR9~KrUTB`J{(8?^2Kq ztYx!#q33;O#_Y+BzUqu+lUMp476tWlK$S3Z*R*MJqhB`T#mR5|q8WEh_VjmVG@IP( zpUr&s=l{v?-4!P%D2Plp2*_dFGkI=6KI65?yn*J7wrZcXayf)CDapUB-fzpiA zCvyh%i?%_#It&4m;eGzR$!mku8B-=-4N_;!1*;97EE#Oh=sGztSeVgsa%yn8V#53X z@Ua7BXiF31MhOAwr#cMMPt_;C4HlQ`d;kCS%=iCaH@}B8-vlmrKPu?h`=X;_vRsH1 zlic6QRw1ic1gem#EaUf+@8#%iHVLg^WVr*9Xz-Dk{2*Uqa!;uU)8==Re}%1Lx>GfI zS@VAJ#DB&OlRriZGq3*rfAVP$$;}E;GK`FSC)-AAi#EOe4<4x60BVbX zI@}D>PuEVajW%Xnuz6#&I3u&u+y9f_dr3~d5Xv$6P0SspN1rC2idAAfKKX5|JMYC$ z|KVdfn1A z6^smjsu;oS9B^GTnXgVvvjfazWH2=F%*!kZfVq&NqK}DTK_w%D8B|DXvfgj$9MJp@ zNM=PP#6p!SMh2H6MurJRj0^{g7#TQ<85wGdA#x2>j0|Ur85tx>7#TcD7#Sv%Ffy=| zLgYXW0htBDpqaK3S4QxR8_1ysRS<_xceG&i1x@&Z1bbkD591j9CfC)ou{^0_WSD-y zn^Ao7{CZXqk!py+Akw3nk%5VYfnmCjCZjPg*ux>!j0`Q+j0}^{{ng`O0DG>dda_=F zT7AQ$|Me|Svl%yR*wFm{KO{h0$aK6T=5amL*IK4NM^62~41=S_U1EK7^T~Dl7~PB}*84m>HfhvHW3Tn8FO1 zC}WxQUk=%Fu)-EbmOqRPR~T8|Ffz1E{@5Tabz$QF`WA#UcobL|7#vta7!p_}^EFB_ z&6zk^tI>%mV&deyMk^+niIe{|Nlm`f%p>$=!vFdf2e9)S{{LrWcrsz~qedsD1rsKF zHR*X3pvv-WVQgVN!Nza}G|3l&Ca1x|z+l4Sz~IBez+eHALwJrsW5VP^O-fQMAYp`M z96C_tZ~7m8>2uebU2zusr+ z|N59;|LgZm`(K~%>wmq%^#AoGzy8<1nEt=M;@AKBh8h3sYkvK&zcTZG{ghw->+3mY z{jZ<#>wkU9EQm!7vmg=&pyEGfL&RO?{IB2f>wkUCod5NEe*LdMFb5)jVlIULWiEvO zWFADF&wL1f%Yy&)TYmko|F8hU4_OM~zgY?5*E2A9#V2oZ=m1o6q1LlB32I0Vrka~LAuaTp@L2g<*51fpKxC`5kA(f{=( zzyH@)9Eb3q9EXJ5nbQ#dn==p(>70e|BhLP>2m7c4DzM}%#773_APPFpL3|`~9?Cxt z@sY@d|MeLlpIrD~U-0{X{fY|^`3D#N*XR8HUoUbI!VkF!QMceCMEu1?hrnm0u*GIAsT8fLnKx}`DZReG_YKO$SYid7!+_7!oP6!e|-xm&aXrGJU9N= z&-wko-sJ{_pL64X{fyuL>lZ-9zd*%j+=7U|slNr$pm7_bq2xA1V$E%c_y?%?oI4P{ z%Uy`NBX|GTulW7H{?Fb2^=m+B=pID;%{>Tz%6$m`!2SRAJAVJK{{ZF7JosO~<@f*k zkOvU?`W+Ad*Khd!zy8TXh`^P{5Ca&VK=>_BAr@_U3gOp0`(M8Vr2ZL%f9LuC`UM~# zzku*#j!mN)3L`@V|73;kX_NYSluDTyKufB?t2RJ|5@>Y>4+8_k79K_hUIqpRoASwe z{d$51Y>W(SphX?bj0{{13=Bq-bNl6;G#D8eM8L~}7#PGE7#MoE85sl_7#Kph8NmyZ zK((4MbeYw^|Nrxka4|Cc|NkGnfak;i|M^K=lNGv+>yg&O9N=MOpf{GqYvJUD6OPv_ zKo`(3Gq8dxY6ehnfEdi+Kw)4=;sS*oXpIVJWf=nl$fFQ>&?+-XfI#@1APO8%AOr!Ux3#LofqqMI1x`6e*x+fmsMyuI5q>ry zGQjMc&s5LAARx%dkODQ}JQD*$i6A3G43z(qiGd*i%?BZPd<~Z`9j{zY49%>-} zfK0&Dznz(Z;e#|H$Uz?XBLr7p4|bt~FkAo}cR3;mKFERwJQjfDHxQ7&gHyg9l8QUf zEM!neH~{2gj8soRK8ApN4@|xuS^^^-kRv+)WIzX+h8<}9IcVhosGkisAL^htXzG`sss8|x2c>_A zi_jG)=t5iw@-Zkx8qoOY>RZs{pP=#4)xQACgY1X8_>Uf{g%hAb1j=S02cR3kqmQco z0Gj$WNInMXe#Wu3!M$&%n#@9W9%fvoJ8|$RG+PkcJ#1gaIG}w;)*nl3#-+ zzXwhJ2^M*X{S1&?U}21E0lEPR1mru=JB^ z`4TkwD`@g_(BwJlz`b2ix)lKD0(1>O&@|jZGf>79)j?0tR+I#7eSL(fbTVcgqRGnJSbns;8VcBz|esv z&ti=lA}9tjFfi~Ckat0nuLl*7=myjvDZnPb15G{wErig`OR+(9unHms!olsD8E6W0 z5DLKZPYB3M*rHmX(>z&gfgF=g^JK3Da`nijO=DqT*dl{y`GV?$6BxQ-ra_W?g&m9! zi9lrYK>AnUm#=3ygI@u|2LkdE_NWfXK?`qm2Nj^GuV-LrLDOJ@7QQD?G%zqsK~ryo zre4MY)j=+3@(#%Ipd`Kk%|IVC4F$*=K%)<6@-xunW68zA9` z>Z24i3j)yObI{~V(ByZZ+E>qjuHgcjh7vRbf1t_NpvfyZp*r{os)Y=w>gyR80?;(H zpc%LaO}+$f3!3^VXbv`TK{%KVRE*7O zp8RUDT>Tt0bv;PxAj)9+Ald&60eKNun0iR@a0kuZ$o73^VW?-AAj8O@0_`~4v!a$q zb66P|{>U&gfYLLl9}6m9LeMN&g64q|H2F1X@>@{k>lql(6>zwr`rrkc575HJh&$xf~J56%|Yk}PC!$C z1c4z33`pwSf=AQWJgFCZX4g@F7HxO_b%l}e!b7~Mf%;2I$6pP>23 z1-|7HBL4=Xo4b+xD zXr^31Q_s=@(+|n)3;{4c#9KUQ@(yV7^~ees*-$fY8XE(HjT|F*GcG7IUu9!pm>|c< z-~i418SD%UGV+jp(jfUK>mhUr{58R{7_eW{sdn6dIp9cXbMu$q5$1Ohd|UI7C{T*5;XY&H1lMT)q_ft zHE0@CkQIQ&4bkKif>0e$gJyvan*J0t^(IL2;L_v>nu3sER0}%LEU-Z`02BogXzE?i z~LJ)IGP>c9hN>O&9~fYt9oQ-1-jz8;d9W6(74z;}Q{ zvQY|}ybqfE9k_uI^K#JCcc7^+fyviHJ8c)x6udw)um+|9s$L}wH3Yt(sc%73UxKEd z0krX+fdMow1#xi?nua528hD@@V54MH(A2L9M|F?{n)*3N>Q{2Y%awZYe1HTO1H%(} zM605Qivguv_{hb;z@dPUPvvG{&{04XJfMwD2?~f_Q4SAkLGz4Gj9)?`V$eL zc^M=FkDw`dgJz%&nt^A~)T>0H`uGZ(dKweSg= zJWC9!{2MfRix_yefdnbKf*1k@>>wcj15LgM%|mbM(Onda>f$eG@)>CIGtdnDgQk87 zn))SZ>g!orVHQH7fFTaXhlB_ZntTPCya<~71_JUwQ040xkPR^5XJCj>WMn9SX1h)N z3=GKm+E{>r;e;Zh99S*D!0<*9(Le!bt9VooAe#@84?&TyXJA-?BEW#+AYDP!a$uey z1A~MTsNjH<8z2MMpy}U$7R2Zd;7CAnASnOuLDL|E7NkDN8W;amx9?;o5NafcPGls4O6nsEcfFUmdnuSMl5CeQp8&b)l zn-_tmo(Dxe3j;$;>*QCP<&sj++;IajO;FAZH1qbjc0F8~OBfA*YK_CkZ2*`(^$p;{X zAh;|*4}lIe4NK5M=mMJj8Z>#93{(fB%j+QIAtMXu3PKPH!2N1;`3eH^3kb;Hfy+Zj z7SJu=$;9si3j*>n1mqiF@~|}mF-UO&DsIsov<0RCI-9x$Ey(|%$?rjvH^@Tu5KO)v zwAc!ih$3((fXO!ykY7PS{t0$@Q2K{7LPWB$yAb982Q>K%v=D>&2&TRQP5lw15CMg7 ziW0~^kp0lM`wKJ;XOJ|2LdYWrqybdILRv{BXbwPEzXMJE6*TkifaJmUL*w)gngWho zR14ANEeOab5Rl)I%gA5{@(-*t(tze8bPF}$N0dQA;7RLbuHAAtwIp za!hYpCui-Jt4CL@k&o)j9yCXwtFJ&)KL?Hf1* z2oZqrLEC&_{PQ9V;B8FN(18Y!0}wljAnIWofk06P@<0Z-Gy|Ey%b+XDzyRXILKvif z4@@3Z;ea%Nwljg0!+hL>2qJKmiylIttxw46(d9wgqLAg6pe1UUdU%Bc+Czn`K?E(1 zVf(9K4m<(fZw2Gaps5G#!9p>w1QunG!V0P$l>Q;v2DD)dSp!r7cwIRtgg~3Qkma|a z`3PM-XyX^MdKEMWLN?)$X_5J5AqPqgYQ5NMDl<)XaMsM0Rt4u5IzL?7(Hww2*}sqlLw`tEqD}|iZd{P zwhqc7Wnj>5J&2DW85p!x519|zwuj8`fv%(nW$;jO2JrR?(8wdG3}prRh-Gr*QGKNw zXwEQzFZqTHNLrLnUUgJX2;qGphB|TZI{aHl>*_%}5FnQFfHVCC_#${7aOe06692Y1 z13212TmO_8cp0Q67#KjS7C{q3AbyAh0|ThV0;&i={2mDg22e8^rv4h}5L<|4;7uAY zB^c@%G~yuxIUo)4k_-%>DMgrpUXlz9plM*xcq~Z1Mv{TSL7b7Hf)RA=EHA@kNd^W` zLmp<~TS*26P*n$-i2|v2mSSK4Ef4_h<^=KQNHH*gW`RL96NrCWs-A%XG<*pvCqV)V z(hLlsRUj|}9iZKXLNB_Zmv;d^u95OWq(tic%XkH-(28OTF3=E(J<)GLC z$@9xFfOm?5R;+{gDfKc844~0Q(28`Bzyuiv22jp`S#UvyfdSOH15LbxhShQm44`?F0H}uJatsWhktUdh3i1r#{jV?|)yp$5fEIngv};5d=!5PO1zHpk*#F1Cvx47(lBxK&piYB<0n~qnC9?k-3=E+DHY}BwXfiN>b|JugG((et0W_Khv*5EP0|RKS1Iz186c2mZ*5O8NmDDVR5Xe&AbthB^!k3v3~643L9!bQl;w3&LRqSC7GQbL=09^)#DISdV;3Y*M1M78B%leJF3=9t@LQ=f|gA~I~T?Piw zVhdOZi0LsffKCcn0Cq4hgQ*?^185=%v@RE9-by_N22djg7De3p&;$Zj&%j`&&%h9o zTn|~60Mf8TpMe3i)dl9_lb~~pqY#OZ+kk-qwA>jM#}NjoWqXkU0|RJ1H!RNk3>X+d zqf{^l957&D0Il$W>3?s)z_6kony&?!BpLn~Fff4j;=p|9V93A#8fAiMSYgP(09xY; zi(>;L1_saqK3I_V88I+`dMU7?{Fo5~185lpESFp}VqgGmyMUFPuZ$QN>OqtEu z_8^@Rh-{V);zR8Og;0kDYMjonU|XOG&%Dz}HMDup>w6p`u$oEaEEgUuSCg(x5gI6Fgp2O>c}40C2+ z0Bs6{Svb>~0lWbMX5m(6)HYx?S{ga&%)kKJ%>+|_%^9_JlyqTW04<;204je#4v2GM zV0htxNX08$P@7P%T^JZZs}5i-A}d!02GBxYSQHhxGBAJ^)WXXCyRIOwKrl$pCs)XR z2v{4@&W(Wqw0K+tR{v+aF@O(QgQQA+hH^Is@cB2e5a@PeU;r&^fCcG0HwFgKT1Qx_ z_I77r0Il1A)qeZkQ5!HOpq2;3J>agFhX(@#Xx_6PmTK2}Fo4gl0jUFp2#+Uf{jTN7 zzyO+)ffdaGo{+WKu&&igPX_Q|JTM0~#xcORj)MxC9i9vfpcQGbt{I;fxQSK|-ueo% zP|b^h0koAB=HoOksB@v&ZnYO`tM|MYvJh1YqBjErsLKtybp=$GukuE{{NsW*0|RIo1hnL0_~?yV9as7=Fo1T1z)Hp~ zAO_SAphSJs2eqUW@?~K7Q6Gm$bm6`X44_rpuqfE-%fJBIg_yt$>APL=g_;Hpkx#x1 z3>Bt`qFTU@fdRCF4VDNs{TLWPdtTN+L#V}%fdMo{3=4rBehdutpcS~VIDPKNzyMk& z0jvL&{23TPqmr;jsGUCp18Bt>xa4BsWhnD!U;wQ&fi*x@`!g`8NHQ{906UPE;gmlE z189#1O#Kgk2Jn6`m;-DA80t~_=Tie17(iQF7qCElyatrK0}wvE9>Boxz?+fb12jb3 z15raHA`rE5Iu?kUD6a-GFo4!P!_t^~P(1?!Xvyy#Mu>%ZK@1F_Mb@xUBt=5DvFj&MQ(#*pU1_scq6)aoXhB7dKR&B$gG%}Qd0dxiytOb=7%D@0x#R&6Y z{i0BW4?rc=wonEJ(7+bVfajqM44|QFKkz+6{0x?13=E)k>@fL^Fa`$DIu2Nz&Iv=U z?M{K@-4U&9o^S>Ro^*I!P|r{j&cFcL6#@&gec`A*n@iyg44|bfuv8rxfm#sNM=*d- z0E6l8i(p^?txAL?x=RrZ44|n`m;-$y85lq(ih-JJ;QBu<61BG58Ogu^+8YJ);oV5c zy)Cfr_?Jk?Jujd%0BW*nMxl;+B}OqYfHsE0qO2;40em7Dti5nEih%)i%o*4L^$h$B zuc8^~T8Mj9>Fo3qU!m`=NXa)w*DnghA@-YkypveSK-2p1N ztU(H)u?i}9f?^mLGF;$6&M+YcF{T8r|9`|VFo532hT$UKgL0kkAS1y=tj$DuaCs*y%KK!Zjd zaSRNgmHVI)739Eeaj0WLN8>>72A`ijWi$~4YYsF!0%6ibkRw;&Bkb-zb z?{r5z0|RKP6P5;45>V5GM*;%_XmS@Oza@cz0knG=79}a-3=BU&=Q=& zV@7U?&;|~y{_jjg?VHU_1oci4*@im_8lm8#m4QJuiGcyMwE*UT6g2s=BnAf1q7qn$ z-AH0!0Bv=Gr7?kI1_sasQa#AUphV-5%)kJeCxscK_u|AoB0koS8CjT#)fdRC< z8CF?Er!X*p)7x_|1_KvF$3!6&H46Pw85k<;80+C2N7MQvpM zPeo0H+-aySp87Nf2GAOPkcU8NWK$YyLG>^VHs%8<>Lt@bz3qBN22dRX(h!@@zyR7V z4dbs)XJ7y=gMs-_Ap_M%aTyE@pf&t32lr;6M$x7W1_sa~5SYAFCTgyz%4A?zQ*VR_ zqCJ_Y1CKW{85lrw2B3lh6h+)w3=E(Ne^^Q8l*PaR8vF;9{h%gRP!_5KQnDDp=Ow~Q z#)>Qk2GBMOSO{&-VqmC8F1w$DYCB6rKIP9wZIbzCGcbTQX~NnE`PnFCIm7jA1_sc! zVpt35OEv=oXbU~e!4^3T;I&>b2ZZM^)H8rKc*7D+cMbysXtf?p!LJ;6M*%!esGE!G zL*HBm2GA}8n1y*Dd8C4AV=e=DBQ`7-9M5H708Q(_)U)J)@*mVpP*JIn$G`wux&(9a z>^#)27H2+GF*F-$$E}!2GHU! zScpC-M2&*_|Ah<;pyNzniNv;ufdRBa9A;sC5o)u!rwFy@bEJrY0W^^X8eIb=((gr3 z*Fi&wzZkWnl2gpU0NPj$bx=J+XEACv`&W!Q!y#4zxlRpK8G))>A5c9CwFA^($tYn! zNkel=7#Kinb73KPs)T_7v~?U7=TA!*7(h2sfkw-P80vW$zJfGFF*3lqPMM_)44^gl zAPYfJFtZeOhGSzX)OM&3FP1VefL5fyqR_F7fdO=$OAc6`mm#_gbzHHbjDZ2PSqSVP zQ2&1|NJB1U`7_8u`Et}@GM{n=2GH6mSQITQXJ7ywsRLTU2Fmwa$|1X%U^)qK*m%2GFJfP_6^l|CcKm7(gdUzsQ(X2wMEsa^Lmp(8r&dT z+CT;zsYWe2|5r0GfEI&+awAB-um-hcoLGa}g4$Yx+Vy%_!@vMK9l!)s{(uZ%t3|D! z?P^g6p@Km2PK*qoLnb!0Ye@2Dr4K9q_+qn!GgZV_DH#Isq zxchiIIY&gq8|#@&ZsgFMej$>PZ#uIHqug`_Sw?~F`|TOm2yd?qW@KaBK0AbQ66^F$ zjEu6|W1<-Ixu>5=W$abyCg0K zhNS5i(-`Ghk8m+E9GU(#jZv8ubmCvgblG%9Wlqo`fIZv{3>wot(;4MiK?ezLnVt)h zIRHM~kAdOB^qJ|5^59!uC-5;atU;=>LFEA`70v+9*n_Tygp8cplru1JOgBtp6rTPk zosowVG}Go%&cF~mT`+@Do)dIh*OF=m28HRCAnuVy(A}^M3>niCL0r(JyG|Pe0}I4} zIT?(17?(`nn87GKy(g2AhZQufw`BUVR!%l diff --git a/monitor.cpp b/monitor.cpp index 0f66020..dbdb6c1 100644 --- a/monitor.cpp +++ b/monitor.cpp @@ -51,7 +51,7 @@ struct ContPacket : Packet shared_ptr getStream() { - static shared_ptr stream{ fopen("/dev/hidg0", "rwb"), [](FILE *f){ + static shared_ptr stream{ fopen("/dev/hidg0", "ab+"), [](FILE *f){ fclose(f); } }; @@ -65,7 +65,12 @@ vector readBytes(const size_t count) { vector bytes(count); - const auto readByteCount = fread(bytes.data(), 1, count, getStream().get()); + size_t readByteCount; + + do + { + readByteCount = fread(bytes.data(), 1, count, getStream().get()); + } while (readByteCount == 0); clog << "Read " << readByteCount << " bytes" << endl; @@ -90,6 +95,7 @@ shared_ptr InitPacket::getPacket(const uint32_t rCID, const uint8_t const auto dataBytes = readBytes(p->data.size()); copy(dataBytes.begin(), dataBytes.end(), p->data.data()); + clog << "Fully read init packet" << endl; return p; } @@ -102,17 +108,16 @@ shared_ptr ContPacket::getPacket(const uint32_t rCID, const uint8_t const auto dataBytes = readBytes(p->data.size()); copy(dataBytes.begin(), dataBytes.end(), p->data.data()); + clog << "Fully read cont packet" << endl; return p; } shared_ptr Packet::getPacket() { - clog << "Making generic packet" << endl; const uint32_t cid = *reinterpret_cast(readBytes(4).data()); - clog << "Grabbed cid" << endl; uint8_t b = readBytes(1)[0]; - clog << "b: " << static_cast(b) << endl; + clog << "Packet read 2nd byte as " << static_cast(b) << endl; if (b && TYPE_MASK) { @@ -128,27 +133,35 @@ shared_ptr Packet::getPacket() void Packet::writePacket() { - fwrite(&cid, 4, 1, getStream().get()); + //auto stream = getStream().get(); + auto stream = stdout; + fwrite(&cid, 4, 1, stream); } void InitPacket::writePacket() { Packet::writePacket(); - auto stream = getStream().get(); + //auto stream = getStream().get(); + auto stream = stdout; fwrite(&cmd, 1, 1, stream); fwrite(&bcnth, 1, 1, stream); fwrite(&bcntl, 1, 1, stream); fwrite(data.data(), data.size(), 1, stream); + + clog << "Fully wrote init packet" << endl; } void ContPacket::writePacket() { Packet::writePacket(); - auto stream = getStream().get(); + //auto stream = getStream().get(); + auto stream = stdout; fwrite(&seq, 1, 1, stream); fwrite(data.data(), data.size(), 1, stream); + + clog << "Fully wrote cont packet" << endl; } struct U2FMessage @@ -230,6 +243,9 @@ struct U2FMessage p.writePacket(); seq++; } + + auto stream = getStream().get(); + fflush(stream); } }; @@ -288,6 +304,8 @@ struct U2F_Init_Response : U2F_CMD m.data.insert(m.data.begin() + 14, FIELD(minorDevVer)); m.data.insert(m.data.begin() + 15, FIELD(buildDevVer)); m.data.insert(m.data.begin() + 16, FIELD(capabilities)); + + m.write(); } }; @@ -300,14 +318,15 @@ int main() resp.cid = 0xF1D0F1D0; resp.nonce = initFrame.nonce; resp.protocolVer = 2; - resp.majorDevVer = 0; + resp.majorDevVer = 1; resp.minorDevVer = 0; - resp.buildDevVer = 0; + resp.buildDevVer = 1; resp.capabilities = CAPFLAG_WINK; resp.write(); + U2FMessage m = m.read(); for (const auto d : m.data) - cout << static_cast(d) << endl; + clog << static_cast(d) << endl; }