From cc9365965ee6f0dd398fe45aecb58b9acd38082e Mon Sep 17 00:00:00 2001 From: Frederikke Levinsen Date: Wed, 15 Sep 2021 16:46:38 +0200 Subject: [PATCH] Groupies working hard! :D --- A0/file | Bin 48384 -> 50720 bytes A0/file.c | 33 +++++++++++++++++++-------------- A0/test.sh | 26 ++++++++++++++------------ 3 files changed, 33 insertions(+), 26 deletions(-) diff --git a/A0/file b/A0/file index d2e53098c36de048315cb9cf712eb2b0a1551b20..720d513e44e7a11e4fb91a4323329f578add6bac 100755 GIT binary patch literal 50720 zcmeI5e{5S<700ieq)mTp?j%&okI}cSS$}Me)2>rYQ<|_AXx|+BIq~W| z2R}P)re-8^EY0<-cayh1{@{}pLU?L~5X(^4q8_UgA|o_tLVN*L zM>UMjwu6Ch2EKlndMk^k(!8TZajs*cVRQwKbyZH0{;idL!m+Ux;Z~Yq7)kR?k~CGS z|`Qp^*R%(<89rm_Lp_W$u2Jyu`ys6DeH993L8-? z5|?&mK3;d?QO>E5T^&P>sFw2jGOA%5XzOY-_8;yzs0D&>lPbB56y zFH7sE#?vrYmR9BOSc3SkbPY(_R{>S+t88GTYG1HrX;s4AmwRTzhy@LMsJ|y3GX|20 zPmSmDqF)!qa0|XIahGdA8b&yn3@&z5?@u35`>S`RkX;^c(Nk%Q-{+zBj;{p{w7cKd zWYsxgQ_-9sDsiXkmivVmX(D4%2wJ-yvUDccov_CtXCeC_iO+h}V^cyr3^{OFhzkg~ z8hR%x71|qBT5{Y%6-{cjuPPI6uXidCcumlGgR3 z(iok&F1!ZUk!Nu)*w4`+J8AYe?rX%pqCJ>|@*pb3*Qb=+;@HHC3lm@hOn?b60Vco% zm;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco% zm;e)C0!)AjFaajO1en18E`e@6`@WvOq3PM-TY7HzR>6xGMAL!70*an{@|K<-zWFP9 z)S_pv>e)97b9h{%r{{$?L$BnDe?sHE7`Q2W=snccz=9~!o0I9l99oeco~!r1_y{zb zHZ{LO&ZJj6xxidDP$<$v7dbTRc|LFxo#{zWHZWJbgbk#J3k%*%DJ;EVn-0vbt)Svg+3hJ8$DZexVr98G7gK~u3vJL%0g$yj8hC$(H& zDpU1(={K!y7EC@S6z zy@*o2o+7>OQaO`RC~ZWM-C{KP@@m#1wx{j3+$b{6Yh%{+lgI7=%Dc^1+lrJPX=)p_* zzF)fUa&8kl6I`sVG9dL#hy;j65w4yjj5pn_CxM%7SUdN2W zbJT|$QOB)^>y@r2XUbY^>U!Z2#&b>B(DgzK*x=T~&W8U{p1y+=LZ+`lde^-o_l>jB zQk}HadzgaFd>*1WD<=&X3Y-4Du<$c{IQTV-qT?D`;`*v`eU~PkcU^CMywr8`64x>1 z`a^Pk+I1cMXsPQ5m?)D`+VHoPYlK`i=~{Pf$)v+-QX5S|Eo&%&g?rKEBq$fSjnp-r zxHP`dFo5|B4GGyMWjiR_GqQbFwr6GgoNPzX9?IW43ek3Sp`qP_C#v)|RTTe@g!Fky zdzZ9Lr2Ub!X42>;@7qV(Z%I2s+Uum9B<<&<#Yj6(+Owp+1g*i|t%ZV?6;EnmGifIJ zqn4>{Zm_qk5>F-KRNfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP?L4S^Zw|IxqW$T>&;(~NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 zU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0{&_~qY zO?V%6*cl_S-BW4%VMl5_;w!cLf;0|OG@==AQTl1<8_R4O--y~o3JQr1H03t=Px{r^ z2z2syZK%>;$kQ(Rm)p{Rw;FrF^>=L7f07gw610A~P5vW~sj-)!)B3IrRj%*yBAfin zZStRS{C@=_F$DgT4ldbWq+^A{y~-f<0|_XRrYID_8V39l`4A!Yz>uu zV-2VeqHaRnjJgGNE9!ly_oF_5`Vi`WGCr)WE)_lMB9mR}4pXYU!Q2bTxq3>Mj&t3(7ma(xEM6{4EXDQpY@C{G!)tyX*pvxN5U<;{DaMX;Zr^RkM{VR jP!iL*Px<}d{X%j{>@Rl literal 48384 zcmeIb3wT^rxj(%3Om>pql3r;`3*EhvUXspC?m%fK$)qzhw`L}^mCKMOlQxhW$)vQ% zO-jL1E7YTi=R-x0M}55F9YLXhe^K#x#BKBp6i8mu~N4#Kt8 z8mkcZ1(K(pH>e0t)pgRB8yD+*KVsHf!o)Q3a+PhF*o=@d>z(R)tM0(WmYxUeIjp4b z^W&$AREs7y&olkG>baE{yLx^m_SPe8o+(%Lp4pNczg5@!hK@}=-m>1Sy56h0o{692 zfN+`Ez>_fHU!8_$e%yd(yc#65to(WhbiMqzS(i64``{ISD&6;w^w+8DrCn*p%8wH& z+cL4~ZwKlTE^qWQXztSeoeB?2H2h7h!E0?E9N1G+wRy0wd~jfR;z0R$l%re8c+jf1h({S4&gF zTQ)^LKl4a0%WxiSlVx}@kALRk@JsQ>G6Eka?72SXvF`e_-nP8{#iNFekdu3@!R`Fq zEV=t2LU)>cvdMJiFFZy5`KQRAeTw|EPLV%)iu}$~ss( z_Y4eLW2vhLhWn788XFrPNe+(m_M`_!hOO~*-^fJT>hB#K8Bg&J&#nHkR8ODPKRPxr zobE@R-UB_!{(<41!GUX7W(;LU#*h!f?qx?~>Euw)z_7)8(shlstu@xzlnhl=Wm2Jv zYAYE_v?b9)YVW{!IyIJPYZ@FGP9=Kw45rZ9-l36U-C9x=owgum?~^|tVn6=)&zr|P zUN-V?LQLA_wQyiy4!PuQNHcHZ%z+uKcPAg>GIG_x`QCXd{{<~KP5$LNe_w-oZt~6j z$*n4%JY>egoF_f`rVjI;@#N2BhQ40#_mO zpGf;AzZ*UDwcR_sISIyr&BC>>YCdS>99ic=krQ{}}J7Mm#$z_aEdvRk3F; z$34d%{7vl06PHDg{33ejS1)uXT8}xepnmk&oEs$C@*n7Ja?y(wmi5vd(PLWl){q^V* ze@ib!1OKWUD4u+>zjQ@&wm!#q!Qk*CsgqDQwpjho3uqX?hr z#bmzjEJQ*3(ntF%N>|*>VOWp$XVZi~+k18|%66j-ATAI+a^1Qf z(a6c@k;k67=Wmmfk42s*)S^ebPezYLo{JuN;(p@lK?W?-iZYma>CLwxI)b^S?@0=~-;;#H)qp`_j7d;zOu>H1g7Uk>{^H@oXo?d&hk;z@y!-_C+@? zl)0syXC6We-+WYN{+8!EK~vEqU%l@ylao{Cf0((P-g{BwvBTfRos4qDQAr=`EK-T+ zT}R$|_(?oHB>DECud-<2^(P-Y{1+saq0(cA|I^f7eN@uNqQyGV=|+1W&a}XCXo1nC z*Z=2ZhfkV%>yAqLShQa!?zjgHd#kc2sxrFl`X{1C-zDQecKAEUn1ZtRFcZXj+1C&M zJCYdTPZ{BQuDtY%Qm6F6?;e%h=v_x|mI>BBGBHDyx1XDPNS>iXR=n)`Z=n`jI`o2l z^NI9Z6haH9N5T0hmqEb^APFdlf`+D|fVo7$nW*vD;RNnvh(H0;f&wN41(zdnNb)f# z<_Zd~MM9xq7gACiC}3JpAPIv4)dI870wbURaFjtDJKTkgDRA8JzZp2j@f>ixgpq+G z>j)f~D{y2V3XUukUSO5T9%5fce7*b_& z1K&6vd)PA}>V2H7cR<0))!%ra<y%z8_#m=@&SJ_kn3ah#PZje{a3ien(#I z$I;hwn7gX_Bw#nS>bq6dy?IsdVAb`xy$q_N9eG7loRRKhJ<@^)qQ)zpTs-)uM|K-| z9p2e`Y|ES1SyuR>*pVNEyJJUQ4kyA#{?Z*iRz8UAc*g~+kE8L;mL*n9X<4@9j*VbiT~mHeDS5>OTw3iFAFEVYXsK^uH1}eUC*rK zB<$1IX$YK#z-b7ahQMhEoQA+@2&nUxwd3cyy*! z9+7(kXKWwkUQV`A2}cETpBXnB|G#h4aJ<#B z&N^Q|IaST#5gh9Ho>+VV%K3|nZlObIL6HrVFDjmc1}wi_JgWGv#Sy5OIsnZm=UxR~iBS7P`l3xdUS zF*o~nm6lamqzK|)!74Q~-o*y&PRylN(sS)U!6Z>9=_Ph^fo0W8+O_ZMw5)R_U1lc$ ztn(xtu)n$4vd))uo&D{wWo?mkgMAy?Y>;%+z6eteOS;qkBL>na>0S0!XTcD1#(Lyj zZo7bF%fbqz_t{(9aKyKlf3ztz4Qb$8D>f--m5OObQ&;x>eL*-5xnU$S&3()ZY9 z8!hWn8N)~I>w(V8W)Lm++8+&CR&r(t>HF*-!d!E?jOT>?FKaDpPw^$F`!%b$Y#j)q zXz7PhYU$J9&w`C5B};+hf;D(v!0Z{s2uCxMB!JB2NSBoeJ25wLA?9DSW^;C(05s!dXecXxL#R4`^vB1}5Cwci)3z zvzG&N!zC=>JKj3`-*|T>ANYjietF?RVCDR&)`& z_aDFS+QL*E)H&nh$oC)r?zJ+Ugbc@j{E=%5$1%F@nXKhM{^+$u{klO=lUzM`;0#!; zGEe{UuU%^ueMlFn(?xDpMLKnnZ(M85o24h!sEeS5i|2Fr{^Q@i7NPBX;%tx;a~?o# zA*Ylz>u{}Qt&w?s4kX7*Y=(&KyWbCRAqY5Ck|RgD;G$Ycza7-m#89}%+yh2w=M!PDAx_DNWe_} zpf&GNUBol>bIsHb>N$TJ)nv|Jv(EYj7{{I=lQshS&$@N{ZcKQ_LPbYWncyr`zzKy^C#@`G0^VutWrE4Gwux2ut!3O3d@STak{|5$T2nqrW>KTL?bRh8cGBu3A z+0WazFt{B-A?0P^2NBpGXWkbXJi_2{1pXf|_!WcSGx#$CUm-Lg%dQ&b+89WMAma9$b>{D9oq4E(2I~1_m$Qjc+F7#QDQAtbOb!3| zP0pO%&TRjD*TJhf1@`X3UpZ$M?k{#Zkdj|J&ikBI$oFq{RxrAQ!7rU9ESh#!{F77i zeik`P72$CFcQ`9mVRPr-Gn#A-(OJGlkt-095rt)A~Jyx5sP;mmlSbH-+8 z1MMU>m6!3nVBp#Gg-zV zZB}#Eh3?27;Jc>|aJ^@MYte-7bqDw+0D65P(EOBR`!+3bRt0|L6hH0E*z3%F%31mW zr}QSLxcFx0Y=B^wv$VpQans|-xZl~d8%bxbZ`}f?^nNF}UEQsgyDGWc=v%#zxlZxR z&g=&=X!R9=xstJtmc|x0fH%A1iRNTtcW1;+9~@2frT9u&OKTz+s!O)T+LOURGP0{P znRLs_tLiI*>+!TX(!{5c&Umb~qaBZek@CvQ=2kq4hA)aFn`7}rti36LW;()b$PMCA zcdR{88Iqn*Wny@IVDE6M&!x_tOk%f?3@19;Vok}NP0?^yGLdZUXxg4^>54?$P_}kk zco!-M4)p7*+ls{EO&#s+ZZJ?|McO+O&9N>w6yUpZ1H-O_sEzs5RAF%OWURd<)*egj z=BV+Yzox3}ziT($I}ygk^sS2Dm^ha>>>vble;=PBkiH>b-Us*D;|k#PsSq&!I7E( zh7xNFw*tW1*lsOq^$cF!b8tL4FpRfXQ*JVw=t-x?2KG#(Qz%(hmRB&DTu(%5h+}l| z?zRX466;9zj`XE^_X|?wH9?N6Invn`X$mJI&B=IExV;5+`v+48dd9}wi!a5Erk5Dt z8)-_`1gfj+(QU|zv^2)Hxgib|JHaH{>k4-P_P8fGBwNDqM6f2AkJSuzNm9*?tx_OE zh?RjlE7Dro6;HTT0)os;M<>QOT}(EUr6#W)aL$8aa~*RC z9bL_lu4HF(XEM^>91D}=E31MeOJGFTRZLP@hxaH64k5N?5M);yN)zMgtIklrrv2W1 zJ!2%=wn%fVyUh)TDph5$NiM4Ekqpb| zOE#7Du6KLYC{SNl8s9fEmKF{q=d_10gkT*C?H!)L+oO0JS~?mSPxg%W4h(?R+B>^C zwsl3~aTMeWqaDes#|A)RdwTGCsu%3TBZ?x?fHzxVBl}ROki0K)Bfh)6DcRJ~)*0@K zB*X2XwVmP4WRMKh+0xz-@9ymE=t{WtVDzSFtQD-J#TV*##7UeQE?S^jk?!_zqABWD z)w4!d`!=_VJdRhqlQmU>l+H3ZI*hNUyTdrBHQe2raDym=H*l{+Nd;jvi!_i5yig>f zmx^F*bya;;Wp$t~6bjYVRtIY9YwBt%YpN@2krAq@uBl6vSJt&uf=U3UmRM^9Z49SU zeaU2Ue-FSro@T4S&g&6hOAAUQl!(TVc65i8yjEjM3W+J|t*odDgz7?-RW&sr#1MTl z>Vm=AKvl4=vZ}7CI#^R5s!nahu*_JlCJ83V?AhrVaUTp-Q%JNb1_ZY%u_Hne!t#Je za2}9J^1WouSb|TF_=l7h!AwTTKC29AnIkNzi3kHBL~@s&%0Mm0GLBcAlLEJ{)>s>W z(nkD7;z`~TN`h296)Y85nL)Dd#%i@qFG0Dy0`VlW4pOcwvZHLM=Za16jae^(Q$0z# z=b!HeYu39PT~ioC?C1h9T(AY@P-T6#NEvIdCu>J`MVef8-US|q3{8{`_Y9>rjgF0^ zM>gS=?H&*xb6m+m+dbn$XcGcE9B%_hM%=R1su<><5Q22sZoIR}4Y6G%n;>ShvZ<;v zL^x-`pfHMs7`bLSQ*<0D$7-dP?)DB4V{5FP(gf8(7#-Km5lF>8yOrG9SQhIwnm^eWR}v5A}Nch;Z1f3x3s1ZsYt6iQIKW02^8BEaciop zD~TGz+@O=hu0&&ew<{Q%MvcXQMH3^{$;6V$o!~ttGwn#P83l+$6NmDg$j&%-RTl+L zxKzO+pPBZ`7aV#AdxrNWNAX#Q)Kyu@M5s2AR%2KUGHZhtZg}QlbHjDu^bllHSIhQT zYpWaN%B1JdaeGv}ZIMJ=jhSRiNo<-3g2rSEfJLl-bYwi4#s?$t?Fs1d!u>=KbvlaT zQ|TqifzqTj*iwm)@_0QfQgU> zgMkp&eGx=E&1R^3$=MN1r`o8mSGf)CCp-~)`n4P$uhM|S-*6b&5>|(>vp$N z)XjKf>-JO2BE1qoI8M8!W_9JOd&Y)=oQZKLDPyVeiNQ36I8}X{t{4?Lf*OMc<+VbA zYbL(}cGxwP9oTeG?Xld0$ZXjaCkFEgCM!I0HSlf?yFgnCnwyU=hGh>ffux;M8r zYGcEpbGD#Jp#qYlY}cB)yJTMaVRJ`!BZLkgi=H)@8r}<~oOD8}s3Qkv1baqTk!8!P zCbeVfQ1sUvX_5Ao*b-i7$9^!L2zOz}y)799Re(KWZJn)=wn%#-oQQR_0}(QQtO2Mm z>m@%kGcknTJ7XLk$05uC)pbxjrE84Oj`R997Tp@N=UAF8W?;v0mr z3mAv0prN7(V4j+rECN$D%8|;ts^(^tGKx^LJrVuKl_58oOhmgncA`O9;HYPHbGCvw zFg}zLC{L@fVJfd%WkCsm^3>hb#Jvk;C#E}vA4J7eaL8G!YwK%kVETXxU4x~%x;9W3 ztf~&xR)s3DghRW=5)P$0P^X}vaFZueW!H?30p0}mF>a)zQ>8lfSaMee>{lAY&0Ra1 z+-gdWCefs!-?+)9k)cuSyxnBW;7CszS~wmntr&Pjx?At=vifaylP9x=@X0}P5PODT zsJ^bM25Mtf9p+OTsK?Ag_0@Hip}P9|U`?=k!- zbVu$B2l`S;dVzEJo!y{{`1X7e>XB#QrzvvPMJCyc%dC=mDZa*YL2zEmQGaRS}Wq8)+ zy83GDitDh83{1UJ<+X~QP+KHMcF-JiXIsL%G4~2X>S0)FVT7R2b761MU&qoQP|MsD zg+=Rt@yL#36Se~+3`Mr_4gjpCiZ+!{0MuX83i;eFwgQesiRbB5Ad*l%@kGLuFwm_~ zlg|M&WqE;p(S@zD4f`uB+OmGcBd{if#m=ZTAR;eYoXcKjanS1%)GrEJy}ZPuFo%fv zrnG>Bu#cnuI_S+(y}MQN5mjkdeX@~ef@(I;~Mc@G1zd! z?eUl(9*YM+-rU@U9kN?T3Dwfk4oH%~IoI6L%c|YX;vPK);GkNF3P8KjEn!QmsH_PE z1K18#27@3SSXF95_*V<+!72_@OQT;_6&(FUj8lrbwdDi#U&mM_1`RE*F~NL!t@d(a1=5xmvKW9joz~2aW_F!$ z>q)cOiDwP1jV-WC?oxJQWmZn52S@h8{0$)#?M^gz?4)^|)GR$`jVQU|RcWJYdyDP6 z2X9kEv)0``HaSwfP^(C0ssgRDxUc5~VV&3p;z@>EW82!Pmyn>iu=T_KIM9DE**`Jd z%MaeU_yXPmyqGjR#jc&j8@^{Z&_B>S&@%|x3=~5T#x}@RsqJV~nfHWdX?mk64;HQn zH*Q!xUlj5B?}{X?Hd(uPOron(v0qH+~Ev6YhYgB~Rp=K;X17b2)9_D>DQ9)j8NWuDg7(`HanjJk% zz|;gYy+b;g1yc6LM(fIFV$pTgLl`jgG&0mwpK0XT6TjA&OyZM|z1UWf4zaP?Gtzgk z4A!+x*g(U;Xh;vw2d+#F9;C?;56Umd8rLy-u`%Z7;|OEDyVV7O?oW;N4~|@o*7`>` zxn(&f5%$r$Z~b}~-gx;BHcZ#o#*Hovnoo_WP?8z-Un6Er@FPo`yS9sd2 zvTBEwJp?uTWvschy%Ijusobgnj!Lvxp62W`N9F}QLN7qFq|~Dr2QXECW=9vP7ZWUy z*8x#y4Dh%k?1arTRukrAl>V%7RAd)5UN)Rn{A7iiZh^~)m?Z3Z!n3mNxG0PRMd)(Y zo{^D3H`$2LiiEd?V-PH&VZkP@Niqx8xF<6UTPX4%F1Ln=Ae4=bF$-zfoS`tAvuW4r z;`tPT912#|R@GJ3;3zV}Qz*6C%Hg1v(9?k4oM}?d;tQ|%!s_~9#T(sbwh}Xx)ybaT z-qiRw&tbfZjS}AK8Hnis4nnZ7Ds@&mcR@Qp&=U{gRB<_b>k>Jj8nOwsL3F)Bv~Yh-BYxKM|iYGjP&<& z%?6aWMR3-N9Fzk&#k(81HD__*lt4x9-h!S8b(Lagn2wUPs-)?ty&HDWvNE-qT_2G1 z8fwv19D%4xEP*r-nK#CO)z+AVwMR$*+|oxBshrg-G)rDPC7+?}@-@EM()K!IW@>B~e5_bNu%U0nS3x+Z*yLB}%)COyVsq$bw z87jN3C@QFjABQ^JG)L_@{D#B6U|mg3Fj8BV+^%bP5>LU}SOWl%QwPTVHQ{ zRFXaW@sVwQ$C{{sQXmJ_a@;KJ+3eQRkL1caMO$>+VL^|2;^_%Q)aKT55FkOK5OeVy zkjkl&SSH=6G8rFU*f%zEHM#-#U}X}eIwNSXQ)-EX6WyRib*QOK@gzxM8^{{0Olm7C z=NX>;R<12I??~AgO0(sIuW5Kihh$|~@wZ_E4abE@ysHgc{Thm~>?T3Z38p(BP!H6O zA?w#gl#y=pj%mzN=oJT9Zh?VH1H%ZYt_X!676k*ADF-@AUgrV}&P(l0s0kq&B8?dJ zeb-d|{eT5$5bY{M0h<-FM$b|)gmZiNqHqk#U66nQjv(39vJ|Qa!R%Fw1KB!65aw8v z0`-AVWvCVw4cJ)&Fs#FJu58BgC3k-Mou6$V8SLZgH=g417isHA;IL9okARVILZJg@ zMoe!vJj!T$tmlCDV+2|02ob?y8?uFVi*0gqSF9a)b)kbpwyVQm5!D&FHN69la^F)H z0i*8Wj?0*^iROd+jo;KQb0hF3`{smJq(q5ti$FqZxvTW9jLI1}V7##~Vh{Dck)s1c z^rU3j3gU>j4emX$Xh)}8tNQ~zW;~;mf}!x2Q6nN<9e{Bq+1;b!%b`#121ht_*K|ir z9-E8EDL8@9Kpn=(5DbNo&msEAQ2?QhWLLO3#uX~d^;1?kP%l_XZ*ovHNBC=3L$#Vw zZxXPvjr`N)EF&u)L>%T`J?bNnanF8tSt@a*sLona8!gHcXeg3t}X<%xF!&S z_^%4Ut)a3eh!vo|4(CO1dI)k6=o#t*4XNc^Llj3?9-8Ix6g?COi>%WSWo|bP8@5A2 zL3nVlGR@{5rQCJvFclf5M;NT!LdBCRG?*mc0nw0~;dBfWzqWvr_i=I9LM1O1Od$iY zF}XDy@9@a*@WkL?*=WyL&k%fkrovR0!2EO>qt+|0&EApGgXZvoas}+{6_I8u;*(*cTLN@n|c>XUset;!#e-j!IBn`%+3&C$>j9=7;gy|MTGXW0o-iIlCHLU3qJFdw`^yCIL+ShrkIY# zJx`?%oIzly@pvcg4m|6Jp&A>Qo$x`3({=?@2)x>`*@pC@eCP+sWnAKrHsU+hfdW(~ zWMj#b7!RHdeoQQ8^XZKl9?!q5rIw0M0!}Mj(;9at;CCgis+^xnwZ;+&96=kuRT!r- zzYhZX$4D~rPfM_W?Br9OL1}y_&kv=FX16q})N7!tG$e2=C#C^_bviEyitQF`dtxoS zu_#;=!D`#l0>g+hgosfm+z6Wx4z*iEV4~Tbgl^BF{w$Bwq%g;>G{)F`hx8hX&9qIZt<>>cWX zPheINM>BgS`n3zLG*0=WIV3Ar73XD*8>d)5vSKk?z+>m)62&D_i6Wpw`G^WoWj~g` z%BU^Hz8?4x8=velrYLf9a$S{eMc_Br6}b?elA^3pvm!0D!Ob5@O{7XEd*db(oHYV# zT1CrORAk-FobX^HF3v=>?;H67)ga^2!ohHF6{KHsGKtZ8c7+;dsw=HI{#{PFYGadC zInmN+Pao;lST*yO`}PhwQmmo=AjmcnUM!j!nBzPJ_Gfjln|zH$$y+SDE-9Q`1eZqY z&y?W60}?XBi~&#kt!NY}fXar9Yo^}Q%37{yLfN~^aM%VjHV#`R1_sju!#MvLP4%W> zmXQaWl;u;7wf3gd2f5rCtjJbT)44h1H!BRVl;^i);3tE}Ybj#mdR=iDY2MM@0W~)S zp5iog-yDWch1;dWMB4hW&3i9Ma?j@SEeZMU}4MY6jzT5CVEAVBF;er zES=u&;)X3FZQMV(vU!&ML3=B3mSqy9>}Gc9Sv6MDQ~*NRQ?#mT+=EzIb^spS8L#_XPc&DRP;U5}T;+04V^J&Kk|XUy=7Dx{ z++DMaYd-3YItS}9UYg+n5Cw=*PzQnO|T33=!Z@05lBGi$`+pLslFKUTrSsTji1lEc-vq=DKf6w5>p-azmuS1V!nHH~! z%#G0|@;l%9ze7G41XE>m1e! znw^@WFiDUsU{zIU%$(y*cdVcZ(8KeheoP~_=)@=%T&`PQwlPSU#!1(pZ`UrGtMqV` zZ;yBxi{5YAGOP!0EBL)cupPn)YfvmW-85NYbCOk|ay46Vr;tOzzvC4PwILu^mUos z(nH`IR|@!L0Zn?U2H?}!Odu-pjx7(NA$~jBTluzaz>=2;lY0)Pu|ONE3U)4NQ7duc z$5|JkvQeY_sllGq7(whN{usW6O$TX9O-j75{L zBYK=QDNf;-6expRh*xih?-KN8(ePb9+r<4O4EH!_t+d2J#x2{B{{y3PM5)f#M8ngD zS@vO+CiQwKj2PU62=5uh8%{GZ6%B4i@yn(Yqk2CoRI8B8c^h3c`*^TWjdL2zfeb6 zu1ul1I-v0v^DMkFI#e<*->V<4MN@FxlNn-^^xnvhlAyzZUrhk7T~x!56XzN@46MZ) zX|(&+1#58H0mE;wM(@Lg2R*Oh^`}Pq{|=)GUb~?4QPyZe8HJgvwIP9hA?F=w>x5;j zl2pOXNyZN~)Y3;xPK^5G{3AlvE#SwgHG%a;X@b~zw(rlFZm0ujx7-wq0 zQuH&77;lQJc55oCYOCS(igP8r+yWaqJQnLie9;9y`JqrPyp^k~X-BWAX+dShbua;` zciKHZh%PvGy5%~f9+M(oQ#C$?TI{8M9*E+#3t{PLoi{U%hB+_yVQkqoN^QKR_#1XX z`N4bLc=g_6<%47<#7-fabKOC5?jW@@FS`==9t%Z(Whi616_qwSG;M!|s@cz9Ku(tR zY}zy3@~O*VCR}55VQeHexqG;f0>5xGP)-nfg%V+E3>IEBfe!AP)czqRgYK36b!hWu zw9(%@FR8*44Ngo(w-iUsZOTy-d2*)R2wfXiSghk*NUh8ZZ5W>R7vW2l=13N&Svc&( zGhBQ-kkT$^!=(47MmCy-!^BuXB4FjNxLZea7LPMUgOH_(uYxvVnK#G5B7~-{32FnJ zJ=crKyM3bd)r-n*Tv*Fmh{fz0L=Szg=y*4urxBz4eQvz3Rpwn|^PXY#wD|r<>`i#( z53dda#~7tsskc)`oz%xR+IL^W4KNGuf;o-4u-WL9K~d`;IItkEQ+}*sx96H*j^&I?Rb0oK;Lzr=qcB%t~c{U8>O7K*KeU!dKQWkzMkAjEsYMWLFD4xvE(vOWxCJ`I_});YQck z?0_EBJNlf%G#i#+jhka-fd;%kO<$7CDLt?xuBvrZjzzHKc!bDXz8Q(D&fJK{f9M+k z7>hPsp)bC1g_o)fXB$zUHAw35cnBqvQ%Q-Un(C@IICeh+ZK*drRdwsQgcbv$M;bXYMerOr-nCiypf6 z7+=7xo!htJO>oR4VqTJvgFNiKJ*&Y1v>=q{0ps7XKlHdeiN0y}4*flY<0-Wj*84#1 z%cZuBno!k|mZDTh7r3aBOvPD{QW0}V&_fVjAdr|wyVjc_v5#jLGVgm6?o_yY9~-zs zJ)L3`Q5z#FD&`ERzKRD|TDHFi=gX^Q`n8wjKJGDqS_;X346s_`)qoOPT;_dS+CD@_ zQ3ex!D?}Mh zj|{c;E3WtQCd)K$dI(@My}nV$Vn9@#auBA6SxyZ0S`VN@mrT zqc`mY4%1~8lUccsL78p+YYm+AN{fvtroFCFMwBl^|o zb#}f9P6=OeckfEJv}-1qx~PjohmmC>XtSE+H19?!IZtNNlh;P@>_@hyqYy4ealk_a zOoolTN^7<&mXX)6&=rhpJ$#m^7!32J+8r zBHc}>#P>r;)8edwkKGNbEwI={^=4I!1k}=8c|9O+!$;Ge^7MetqAjKJg@G2hgTjAT zu``$myCmqYQx{wHX1Of0*#(*htvI8f&Ns--19JO4~48g>x#d-gD(mpA9r>ZW+%Jh_U$fx0+4!w-Au^Bz zl<>L^Ay~}~tB4302HA~Wcu#QEXVJL&YR589D`qpI)GHCk86JJ(pBDg=a*u=;+ud5) z(hM+i_BbLAv*HHj#h#1eIE+eQ&u;vN)vZ1WkqKoF0CQdmgxJfOit-sTZ%Mwc*NFI1 z5iCYFcK2gzYZJrn(+l@o(@u8-)!D9 zkRG3!vzf0Z<>u!W8b6r(bTj(NEg{|KX5lk+Q!>i6F2^@uv4&Lav!rXp9%(FheFGyZ z7tWYS$nk`F&|3~;hpNo4UzP8}QkEKnDv13FO7y3C@V(U3IFh|6#rW!xu|B@FjU?B| za%IlP9j(kPATg9mN%q0GgG71&4s@!Lj1fr|WwsPFpSMDu=M^`(GnOs6q4@&|On6`f ztU81=giud zYUC_4jV_<>EU8651x1gt;xT(c(S}kMeY?G|Xajx^q@eH@_KypgbIu~iw`Dd8IcGS& zh>NTOf7xQkcX2bHu3zH#HskB|1^x|=nvy@^9RTqhAy(ioD0UV%ZbsJfvz>)om^gEV-*)}>O2=P;udMr>RYkM# zS@eRUpEE2daL&G(eK_lWiyuKK@H?xEYR}*UAQS%|h%tQoN{08!7thbZ4-h!kHvlTf z`Wt>o!Lh!NpBizjt6LcMS4cX-@V8R36zE3Xbqx2%8T#?*aL4)$zIE{#EFeh*hN{fLw)04N+QE_3;wgllIoCnzm{06##0 zF|21eB(+AR)+-VY)-iwnSq%TOgW-Lv8II!1?vB+V<2)w){-vEcZx-l{3WPromT;^C z(*Dab)9+uvoI}eQ9+UYl2{3&dzJU*z*D&mq{Hwqg7_+q8E-k!SMm~<;`f#jw1sPs{ zF2i3W7_Mz)*a!l4tX(pO+hxq(k}_|SvHe8KRLK~=vW6wUF7y5UMy9_fZ5|U0Hgqv( zTv~eul;~Jz2<}!2h1@Rq`mD6y3hHvKpGy9G8Trr8X3qcMrx+Y-slcjS(%Y+JVwP5hCGX9g&{#QGhf4M3taQmT*>WNLvUnNv(3pActz?^SM`tdl^1=8A`QY$K$ zy+J7dDxtueOIW5}sQrkPpA=|cA(VNiz+t1z?*9?U-zsx?hs^6I>sWWDz#ktIK>BZU z89KrXw+P?eHjg=%Ntv$+3_m6CxkVtkOep7K8R3J%p&zJX`A-V2Z;~D zMtH0A`%#(2McerFT7lcslK!jIZ4`+8Qp(2#7ylb!NjuE&w=(OpLZ&NZJnICuFA4>I zNYb~;EY2xrnGGEbKPB9^DaQ2iHiiuXlLn!^Il|-53U&Qj;PVcl;ZF#5)(NMSN{_!0 z-2J?WE&Nz=?h*);${Zh%aRvldQGwx00z>ygmj9r%ym0~34+(7qT9`g0vlx)k-X(2* zRA}JerQ|1t3x2wtB^OI;okIEdG%=@Cu=WSR;PXP&t&)C9X7o|vf~SSHSI%a6kSfB@ z3RJfUorGnMDQW)-fzoxtU!N2>-y$%N3H_gtHqVuDwh9K9cCocx(#|b{{pUo6Ob9(( zD_l7=i)Fqbqnca6^gh*21Jk$393NfB^qYmkZ{d1kT@) zk<<#Mm5RJNByg^lF~3vj;g8bei!%2;LTQf+G`=R~cMA>IO08>!98_-&PuL@@=yE%oFNbE~A|#-2FYF-Zu-54wkU)2c*^w!nq$8%GoFMIZyJJNsk{9 z$lolye2qZhap~n6nb&fZL_?Od;5X#_b(+nx8Rz^T&Xs!fWpWE()*vHDF$N{ZBET!W+)Pd<$>1&&N~?-(tVYvNzd7 z0C?dcdlC>SyxHCZ@+>@T53N)!pt%!ba9^Qv7>hMBZ~LOj3Ue+NPL5&u_+?+5+6AV>-y_m8m6Z~HGH zdcNy-*w_>PbJ)Xw_)9>w3QqT;b>Au&n61LqE-7Wh(gg@NUXEcpwHFh^b(3tO{-fll zbA6CEv{hvx8dawT)^4W*{{h$fwOa5ojZQ)n_?_z%s`^NzzdtvYx2I^FQ0p$v7|IEhEd(uU^v63v_(gCV0jQ)bO z*?K2XUbv%;MA&^la%9pgUSbdKTQMEE|APIkc}RWHUW1;TFWJjU^7q;QN;G`gK2DOj z-~K#F;sJXPIMn%y{TUL^SM5(SdeAN)DL!O>89eTsur1y_YLWIIA2I$fxqBVLRkxFwRyVNXx`#RVbB3!BmVKL?y#55+-EaZ%yYUK!<&Tg_ zD!#k}VdYsIP}N7-TJ?XiR!t)bwf5H}`nvCOy7gC*-Ot@fLOJhSa}b_?7sD+VU?9!~ z|IArzefdI!4JX40!~aDJXY87oaSCqQKW?+XnBMf-u7Gr!st3qDE1{H>cVvd z;r1&ymmQl)#fb*i-T5Fv@TUF*!b{<(4WaVnY%~9_k|NJ;2EPeB7W|BD^k3bD@QMK{ z>LXv^Y(|f=x3O~xkMYE2gcH9)TIyVi*m5pgSBo&&L8YNL8bP@4vlR%3`1@DR@QzZ1 zBOlNd?kxB@XS=lCMR;aKH^OB<1WF6nR8y3#?ZeEa?PKSBVYrhZZMztxFQr#~h?7`-kfqn`rEFUJ$%P2l6_W|8780G+ zFB4TYza?AME+>fVdI{Y6Pf#vw{S+A5X}O2fxO6sq8o)0jfgYE}5MH;1Ex+5ofDro^ zdnKcf+kah$=u7s;LBkw{GQ0eL%G}F^xzDn~p7j{%^Xz$~vK9SYPTjAv-<3TJ5Ux6hBUwGc zzSevYZ04+ulOfmrtE-_>^bqG$yo04@{HYD$`~+EU;m9e1$Ds`g`_r*^rGenIPOQ-w*6MJ@=40_f)aR-XGT^?0bbGIaSJ>{$|$Q z8!1P)ub1J#ImGgnxA_qc28h$4-w~d}$r%Vo&LmSdQSjh`j>>;#D0$O>OYbG z4%VU_;kC1t5GyOcO?qGV3fn#BEgW~K5F>b<3-hoFtlv-O7vn->B<9>)8>OBVAw9PUVxPFUXaR??}8+~7oaHl=J(9aGr$AmS!#W>LFI7Vyps5%GGl(9 zTrv^dfVz8Rgof z^UW_){#oZ&Nxr`EL_3i0dhSh<3^EV+y0Jm!K#s|^5#w?3YwMRc=nNg*i1LsXQ?BEu z$p06~FR}7}h4|AtKmT`l???Vz^gG&++r`7DXn!5^eWlh(4IfkMKTlEqcc;krVZPJN z%a#0+DZhiv-|pr(^Wjr-igqqUzH0{OiFYG^9)90;UxOzTNiJIRNDQvZhjfx_LfS8} zF4yx->HO~@o(nwQ+n_Uav{{!wq3LR~&OeNNmd}Utaa}(DC#mn0{M@#AM?)#cpWn{s zk?&3|Zhhwz?feq?tEMUcH{_E(?`cpE4SiZYdj`t!N;pqv;mEOPAervjYYhw!q><4( zmd5E~e?O8qrA+O`kGiGs`v^nHUK~Z@&^4Lt8-YvK$R2#Gx-UI4hOb~u9I*JU^}!Tg z$g7}-&om{H_(`1seyY9aAYST7j~#?d4}4LQeG@}N2T{dy2dByb`Ko)is5(i;NqrYT z1WOlx{@!9vId}&(@5ZNVV*I9t=ZPG%A`7m1$w*YU5N+;)TVQKPBfbHN?|#W=ZTa;o zwyJ)iXnaCO%=ekK%dMPg^3&Tr{H%9_at(lEPzBy1izV9NVq~C|Xlo*@5_GBNIV#+R zbBg2Z$>TX0;@y;!bPu9`fA794;r28zn0Z*G-_glr$bi)> z1vdDK??CQ!(4qQuL|_t!{cL$GZQj4gYiBRtAW`iQczxp|_y)>wA0|%EP97rT_jmB? zJ6^yNJGkF7KCYXVpB9pLvhrF7Bn`F+;!^-vef}q}YVUy_Vi0e=Uz5stgfRh?IayZ4 z_`xA~z#~qNsd%4B!F?_@HfmJ}zrc;40>5fEni@+V^knfvAARKmeL4%@11~2>Rj@cb z7WY{deFulpg^KavZ+U`GT+@p&=O&3~W2wO&R?w-@!L(H&Agf5jmCLFiC*j$MkU~Xj zpXQx?eW+{hR1L*%s)k9U;hv#^Ui3PGwh&ZE2dXik#H!%wK3EikP3@W3i+cF6E-=2n z9T@H(G3lN?d+<>Ma|f4-lt}}6Cdq8zIdd-`0-8oz{ry?oZ(~Wq+OMu9T8}d^_69i@ z%X%+p#a0piO#M1t-^2~x!boT2r_RUjDyRMdUEjoO^6Hy)$Yeu*&8ctnP!qeRppNtF z??nD9lasXb%5_5bZ({1Dyb4t`W&AzJhnAh0|1-M2iSN)0&>DzndYvaBOuR_X$24Q=oBL1Z)i-*iiRYMtI?f;e=X8Aof6LVc zb)43>Cd#k>03LAuroP!Pm>B!-oGZWnH}TY4{~N9|1B*bWzS-Zs@CNHYhq|O4)4$nYy{hX!smE{7X!+8rAx7|IKdbB4 zW(0$3H@|-H6!o9w!i4Mdc@^?*t*xi1|K2)Pf6M?@-AKD3JI9RyqD?U z#21~Se(!NrtKBfRZp73xalfwb?Stvh{FBPrO+$|7GWARr@AJBlM{_@>N|fpKY&CA# rl%ZR*{>?yM9*Cr3-KQn8=H)%i@1JIyydqLD_E}YbJg-9Dt@Zx`7qf*Y diff --git a/A0/file.c b/A0/file.c index 0106c1d..24cda25 100644 --- a/A0/file.c +++ b/A0/file.c @@ -8,12 +8,15 @@ enum FileType{ASCII, ISO, UTF, data}; bool is_utf8(FILE* f) { rewind(f); - char byte; + unsigned char byte; int char_length = -1; for (;;) { if (fread(&byte, 1, 1, f) == 0) { break; } + if (byte == 0){ + return false; + } for (int j = 0 ; j <= 8 ; j++) { if (byte >> 7 == 0) { char_length = j; @@ -40,7 +43,7 @@ bool is_iso8859(FILE* f) { for (int i = 0 ; i < 7 ; i++) { iso8859_CHARACTERS[i] = i+7; } - iso8859_CHARACTERS[7] = 27; + iso8859_CHARACTERS[7] = 27; for (int i = 0 ; i < 94 ; i++) { iso8859_CHARACTERS[i+8] = i+32; } @@ -48,23 +51,23 @@ bool is_iso8859(FILE* f) { for (int i = 0 ; i < 95 ; i++) { iso8859_CHARACTERS[i+102] = i+160; } - char byte; - bool is_iso8859; + unsigned char byte; + bool iso_byte; for (;;) { if (fread(&byte, 1, 1, f) == 0) { break; } - is_iso8859 = false; - for (int i = 0 ; i < 95 ; i++) { + iso_byte = false; + for (int i = 0 ; i < 197 ; i++) { if (byte == iso8859_CHARACTERS[i]) { - is_iso8859 = true; + iso_byte = true; break; } } - if (! is_iso8859) { + if (! iso_byte) { return false; } - + } return true; } @@ -81,7 +84,7 @@ bool is_ascii(FILE* f) { ASCII_CHARACTERS[i+8] = i+32; } - char byte; + unsigned char byte; bool ascii_byte; for (;;) { if (fread(&byte, 1, 1, f) == 0) { @@ -97,10 +100,10 @@ bool is_ascii(FILE* f) { if (! ascii_byte) { return false; } - + } return true; - + } int print_error(char* path, int errnum) { @@ -115,7 +118,7 @@ int main(int argc, char* argv[]) { } FILE* f = fopen(argv[1], "r"); - + if (f == NULL) { print_error(argv[2], errno); } @@ -126,9 +129,11 @@ int main(int argc, char* argv[]) { fprintf(stdout, "%s: ASCII text\n", argv[1]); } else if (is_iso8859(f)) { fprintf(stdout, "%s: ISO-8859 text\n", argv[1]); + } else if (is_utf8(f)) { + fprintf(stdout, "%s: UTF-8 Unicode text\n", argv[1]); } else { fprintf(stdout, "%s: data\n", argv[1]); - } + } fclose(f); return EXIT_SUCCESS; diff --git a/A0/test.sh b/A0/test.sh index af8bd1f..b65a9e4 100755 --- a/A0/test.sh +++ b/A0/test.sh @@ -12,26 +12,28 @@ rm -f test_files/* echo "Generating test files.." -printf "Hello, World!\n" > test_files/ascii.input +printf "Hello, World\x04!\n" > test_files/ascii.input printf "Hello, World!" > test_files/ascii2.input +printf "Test file\nTest\nThis is a test file\n\n\n\n" > test_files/ascii3.input printf "Hello,\x00World!\n" > test_files/data.input -printf "Hællo,\x00World!\n" > test_files/iso1.input -printf "Hello,\x00Wørld!\n" > test_files/iso2.input -printf "Hello,\x00World!\n" > test_files/utf81.input -printf "Hello,\x00World!\n" > test_files/utf82.input +printf "Hello,\x00World!\n" > test_files/data2.input +printf "Hello,\xa0World!\n" > test_files/iso1.input +printf "Hello,\xa1\xbbWorld!\n" > test_files/iso2.input +printf "Hello, \xaaWorld!\n" > test_files/iso3.input +printf "\x24\xe0\xa4\xb9\xf0\x90\x8d\x88\n" > test_files/utf81.input +printf "مرحبا عالمي\n" > test_files/utf82.input +printf "Hello, World or should I say, 안녕하세요 세계!\n" > test_files/utf83.input printf "" > test_files/empty.input -### TODO: Generate more test files ### - echo "Running the tests.." exitcode=0 -for f in test_files/*.input +for f in test_files/*.input # For loop do - echo ">>> Testing ${f}.." - file "${f}" | sed 's/ASCII text.*/ASCII text/' > "${f}.expected" - ./file "${f}" > "${f}.actual" + echo ">>> Testing ${f}.." # print + file "${f}" | sed 's/ASCII text.*/ASCII text/' > "${f}.expected" # fjerner tekst der kun bliver givet ved ASCII filer og gemmer svaret i ".expected" filen. + ./file "${f}" > "${f}.actual" # giver vores *egen* kodes svar i ".actual" filen. - if ! diff -u "${f}.expected" "${f}.actual" + if ! diff -u "${f}.expected" "${f}.actual" # sammenligner vores egen kodes svar og "file" kommandoens svar then echo ">>> Failed :-(" exitcode=1