From 6a222885fb18a21295363e3becbe602fce7ae07b Mon Sep 17 00:00:00 2001 From: wes Date: Fri, 7 Jul 2017 14:42:44 -0400 Subject: [PATCH] clean up --- .bfilter.c.swo | Bin 16384 -> 0 bytes .bfilter.h.swo | Bin 12288 -> 0 bytes .bfilter.py.swo | Bin 12288 -> 0 bytes .gitignore | 1 + bfilter.c | 14 +++++++------- bfilter.o | Bin 14832 -> 14560 bytes bfilter.so | Bin 22152 -> 22040 bytes 7 files changed, 8 insertions(+), 7 deletions(-) delete mode 100644 .bfilter.c.swo delete mode 100644 .bfilter.h.swo delete mode 100644 .bfilter.py.swo diff --git a/.bfilter.c.swo b/.bfilter.c.swo deleted file mode 100644 index 8d23e6865d9be42ce141160bd4449e26f8a62db4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeI2dyE@L9mgjveL%USFNwBM%jBXYKA-Pl-{mgVC6|(tz==kpyiF#$j{#%4-sX#wH>n8{u zzjoGGLOh7Uk@<>S50xKZhf6&qOrxXnycq7fX&oIsz9nh zsz9nhsz9nhsz9nhsz9p1|BC|Q(naEfID1j#@Uzi%!;0(0(fwp}J+V&sGwX!^>vj8C zFMX6Oy`&1H3Zx383Zx383Zx383Zx383Zx383Zx383j7xoaLPhlf!&Ms2A}u;@&5n! zn}ql|d>5XAC*e^z4xfbJcn+S1 zhv6Y;z@0D$dtn;-p$}faT!??dU*MPUBlrQFgcsmza2!4XABPYED8l<72ZOK?etnq` zzk(OxN%#tU9v*{7;nUE9c{m80;d;0ZHo?o6;yavx$H9j?pa5@&&2R(!_7Wj}1K)=y z;Boj6+y%3+4{m|IFaO# znka_R4-)DpnVMS8$y!d@oQ9^o=3-IR)nd}q8j%ayIqh0a?&i+AA=@9FVQuBZQo{>E zS*kjIR%auk|C>{!a2ZNhbbQ}g#-nUhOo0_4v^u^Do4#iiSzEneJ%O~JXOriDs)g(p zgM#!XhILvO&$b_Xf5aUu+)Mq`!fMe}XvI64qa_q_a?vz4twj@I#|kK&XfK)CP+=h1 zW+HoeZ4D#C`o36@+vK9oGYTE;3eDTlc5t$Fm7IFLQOeM?GJ$(cHE24q8v_G))-Fd> z*ER#4RXekFTxo}|=}ag68s4DF+TN^e+qi)SMo|@Dh?}U#6!}TtTWW?BLOY%5G;^6X z0XZ3$RQD`hdMqsJ-eC(_>~7`J&|n46%fU$NxB{}$9f)f|7miQTq-BfTO+NcZDBYIsFPES|^abUZE6QKv4q%hCHsqfaIJXd8*R zqjB8nX*tI5LMYNsjL$8Volxy-Rw~NRY}eLulCP#h%FwSXFJtbaHe`~_c#M@Ms%=<2 zTv_V2rxWA4U0}l2o~h1G4Q6dtx~`H&tWvh$CC4TyM@D3AD6C4xGwB9$lv1dApv)-U z72im>Dt?~$dQ@d79Gd2fAs+22b!S1lpe5laLYd3%-EyfB*phgGyWpv^8R?@qCI>wb z6Nw}>8jaS~&IY>Y*GBYxG_`aMz~s!J5s%?(48vGSy11w7&N^&s(7O9zCgHHHljhnU zNA7jIyvpZz%wtXqGkFY3K1)81Rx0|YhGZy}j;V=xwcPM{R#mdp^nFFi>h7W& z=IjM6wjFCS@97`qd%XRab-jh*;o*C{{+umadm<#7$xv5QX9%mw=}3fjL|tQ)(oRel zP~P{O+E2=x5LZhvl9jVnw-TE2nlQxBWk*#C*6<{wufErfw54RrL61nU?1<^Y=TJE& zze8(S*X_skOh&X7XIWa?=5f3Atxg>!(a~CJhp%M4(Wp@y(qUyVLh)=jdc#-!xmUce zf@VE56>EPcmR|_ga?4>gYrAkV9Hn&sHo?03<1j?$@x0OA80~6W09 zaxq#Kngy+%*>pcjxRmXhrpzKa?)mgq(=}}iF;7VtBuCSgy?Mk8W4h038BOZ-R!Chj z+bboLOVP@bR8D4zuU*##TeXOdJ>FJkeDN6K?I30y_vAE#Ni;#YLqpxe+lnNus#{kw zLz?z7yj@#*kS`5ks3S!?%xkYiN^LK3IVg#|bQcfkzY z1Xsc)c#-}5$6zm90WYyne+VYwG<)*L;BGh!n_wfHV$c0;I1Vki9R}eNc$q!+bMPss z!F@0eud#3b9()oG!xlJAc}~HPLGPhYz%yXV*}eZu?@|R)1yTi41yTi41>V>SY*k*_ ztt3}(`w!0?D$dT`dh7n#*=VI+S5BbXtJY8j`Xq>TcxR1gc9F@`P8}&H^>>jo3^q6U zQN67+%g;2~e zojt`G?s?Lk%>2~|5sZ8Dqe5BlV=Kdf?u<_6vl&T&d%lN03S_(WlzQ-Q_k zEk(cSZtGdn=ZgKR98^>#C|6pFT`|}4LS>+7^C(9gdxaD~FzSXUGWmS>4&Fou!-e6vu+1G0Jj6=VI tjNkF;g9_dD3E5CdYMqYRi@Ld{a~uCVHp zVVh`c!$)bvfEW-1Vn7Ut0Wly3#DEwO17bi7h=C3?V2>;He791UdMKXX|D*5!zxOJ& z0$<<*yn$CR4|DJs9)Jfo;Tnv=DD*)Zx}gh}_bBxpmf#~Szzdj!DvZDxI0}ELV--Hb zGk6NqFa>^%V=w}}a1au(O8q}z1-`*oScJFm8s=dRW?=?yz;!qcSvU-b;8(X&KjA&R zgGcZXZo@^m07qcCi~YbSSb~?Z0CI@|F(3xSfEW-1Vn7W19|NVT(XLZ=Y|pX6zmFz! zC1csHYd0*TQ@vTG{GeNop@02YS~C&_=y1A4WP4bCvg#R~FWPP@n&an;W_a705tLD{ z65LkEx}5(QRz=$@Iv%_7Z<1?8X)@F)XeeWuwDwAO94pvX)Tbv*(F*1is#C#@pJnqo z@rYm@i=Nn8fzX)Yly)jL(`d<$8LhcISh?U;#ErJzNf1CTFBw%Duii9j&bU)(?JO0P z<5$ir)jD2imgjq*TfxoJGyXt(=b+!|8MmG{`mPFB@iWGDwMoJh`)HE9NEeKXU=*62Jtawmbu$M}0Z)&Bzh#)A4M=Pj@ih|z!zR4szn=Wpl6fC@f4@us< zzrW19Z0RhHADrJWr%U64<6$9|-}PR+(5wyZ+bhIjm6*~Ek3^T_#)h?oI8KLSi#5Ng zRor_mwK_M^(pIqv*aU7Vfwr!VPHz=clN0H!zRMYw+qW&;QkS-|O~58#6R-)`1Z)B} z0h@qLz$S2KC7@eF;#H=+DVz2)+3V22YxdE;*aU0>HUXP}O~58#6R-)`1Z)B}0h@qL zz$S19CQz;lvHLzDp1YsP^Z)<7fB*mTkPz4KEk4HuoW&Wug*R~=D`;Q=dohXvp1|XH z1e2~}TZQ-ymv9m9;V6z^9*8Yyvic+nYf4V3?edv&|?9=F-Q+ z+yaBj?1+_a$DwTci>0ixx1_Y2sAjFS=<7u35!q0kk_szPRk_Z>fw|FXr!XSZ8jXUS znUND|Z&g*3o@wlB6?k6SMcTIT^bNxuh})_^h5Xozck^TShb>pD>kpS(1{u_9erc)V zn(d)gE9Qf@n8uyYC+))ImsX&!#O=*A zKYQJ2Df6xO&K1+?n3*#JDf1KE!{=k^WzwtMo%*CXA^Saa3nxrrqT_Z&%OfHi#q^k4 z)jAy(Sx2|KZoo2Z2Og_P1`35pm*x6ltF2vg`Bl~G`|MGzi&?iTVwuqk^TF{?qO!%%is8R54$aUSm5zX z9i%(k4I8ETm9MZbv$Z)w@Ux!XTGeLMQlaaV`j5#ck=cZ(PmQ^`dGmKsEsg@2bQ0+Y ptti%P!_}y*yTuh#Gb^XM5W9xuSUcgddp{gg;fic^bUg~E#J_sxV #include #include - #include "bfilter.h" int @@ -30,7 +29,7 @@ bit_array_t* empty_bfilter(int size) { int width = (size/32) + 1; // 32 for a 32 bit int - uint32_t *barray = calloc(width, (sizeof (int))); + uint32_t *barray = calloc(width, sizeof (int)); bit_array_t *result = calloc(1, sizeof (bit_array_t)); @@ -44,7 +43,8 @@ empty_bfilter(int size) { int setbit(bit_array_t *arr, int k) { if ((uint32_t)k >= arr->num_elems) { - printf("Tried to set a bit beyond the current limit, limit = %zu, k = %d\nExiting...\n", arr->num_elems, k); + printf("Tried to set a bit beyond the current limit, limit = %zu, k = %d\nExiting...\n", + arr->num_elems, k); exit(1); } /* The position in the int we're looking at */ @@ -66,7 +66,8 @@ setbit(bit_array_t *arr, int k) { int unsetbit(bit_array_t *arr, int k) { if ((uint32_t)k >= arr->num_elems) { - printf("Tried to set a bit beyond the current limit, limit = %zu, k = %d\nExiting...\n", arr->num_elems, k); + printf("Tried to set a bit beyond the current limit, limit = %zu, k = %d\nExiting...\n", + arr->num_elems, k); exit(1); } int i = k/32; @@ -131,13 +132,13 @@ hash(const char *input, uint32_t k, size_t m) { fnv_hashes_t fnv = hash_fnv(input); if (k <= 2) { - hashes_t hashes = calloc(2, (sizeof (uint32_t))); + hashes_t hashes = calloc(2, sizeof (uint32_t)); hashes[0] = fnv.hash_1 % m; hashes[1] = fnv.hash_2 % m; return hashes; } - hashes_t hashes = calloc(k, (sizeof (uint32_t))); + hashes_t hashes = calloc(k, sizeof (uint32_t)); hashes[0] = fnv.hash_1 % m; hashes[1] = fnv.hash_2 % m; @@ -186,7 +187,6 @@ bfilter_get(bit_array_t *filter, int release_bfilter(bit_array_t *filter) { - printf("Releasing bloom filter\n"); free(filter->arr); free(filter); return 0; diff --git a/bfilter.o b/bfilter.o index 8e305aa0b0efdf5721e1577262c1bda53aec9187..854ca79eb7197a1b1b20892b75e878a530e9f824 100644 GIT binary patch delta 6884 zcmZ{o2{;vP8^_NavhUj%%i-9w9S7NxB`K2S@Cs3qC0j`;)XSkn6vZPEl9UpsETN=A zD6z0oa&y6V)1JYL(2||5JUNd?5wk;X!lCR z%3j#27-@TMJgCaQ(QbibBzmGRZ>sT)cJBR~qfh#7+__;eag)a%q9@zzT3Fk&*I(b| zz7XtcBIwF#$0OEPQme>kEK=~Kqxp2e^Q8HX@sKK!MEACmZ25RZmiKptiS-ZRd!Li8lE07_)ZdX?=;XIfKO*kk zY!Nfa2oM(4ZH-sTP~oPha{e$$icUK6@M40TvXaT#l{PAxt#X;t3fxl?nQ9gS?_!nO z|E3&)Q}4}*Z)L1eY4#;l+nqnukq~pzjzZ_U=e_2qikDhe&ajOVVy`QP3~DLriXz!n zo5@)t>P;OoN9|^k%?~9-@9QgQUdbaF4|ln5pR|w(NxGIIzu}h>y;6f@kQ~QBQh)l6 z*4AS@9d2-R=z03?xTN>yLxobe-L^RwWb0NYJ}udP5WYO=pLAJt)s(@B{L^AB<5BKS zEt{!=D#RnU-;@s%#jXEp9z2yBYTY@>A08p5RA6vZ*`d3i_FSd^wUI|e*cyk(q=o8F z8&_nl|5{UiwlYydPhYQ+e73J6Sbeag%5 zCpKC^Ul}5%7CJ%Sq*SA0{yP3DN+n1ud4r&O%?I9is}CWe-%K_7CdS_!dubwRE49e| zVC_ggpW#*cA-h~+ah2ow1bXbZP8H7Dt*1u4Hj@H_^|!n4e*x83y@YVw745(^nU%PZhrR z|G9eFarurj4mLf)O5Z=^21k^g-%ctDTo8Gh6sbmv2nk~ZoG(k6jF4|XJ>D)k5*xi( z-ni3z;>wml2if^uSIN((Zv8qCH*n-!Deo)A&k^Gvk~dgdmA~7;kQ&w6D_GrNl=o9K z$HuJXn7rSEj9vMbExn7PJFm(P(H|H8miG(o4xNZoYl-r#k8Yc|-tOGHvU{J|Wv6Qo zX7kTZrWqYB^G`db8{A%!d4Fz|+1Z%IEccd%fT`|}zLz$yKf~uXZZtL@9v^wV_h+WY z!|33mmYLY&Q>n8Cc`1S4EaaA*8%PnFlxUG05cM(W*|^BC4b4zhr?^;(UF=xpLFD5| z5*4!eIn3EKF|-*mw>ZP?sYZ8_X?A(o>HlQ>RQ`~{W~1bWep~-b-ZHE2@4R6rLyhhU zzUOi%aPNjuSvq!7F z4sTpzJvUi%q=tK)d}L$f-UrB{_ySMF{%^wrD~c~%yQnttAuj7v&T1L2hl!uxoY>SI z#C=Jic|luDB*0Jbb*OTs@WLa0?%d?Drn-2;s~N>br%Rgj!zAq++&Xk-U2o-IP;-nG zCtW?onfh$_Vz$rfrtPKl$hdU|O7?Rnnz_b&`mVW(Gr zr~caFud_dGvE$PtI}T1t8hc=l6sUdwJ9pMkTZ-v@8CtvOajAt7BJoL|-xDI=7- zmg>#Go8N-&8O(?gspUJoXF@5m&yRz?{2IGtK+TB&%lTIS@ z(z1@pwB+1(LLmpdG-XTw$#f(1*-$SBX_uT0`R7xP9C2`^lOy5wMd`nJCN*2h1l=Qx zs}oMe@=P{pr4X(^Ssv~6E%b{BNo-zFHa&%QhN^ni?ThW@Df=XEj)FH)8%m!+3vJ8c z$zA=qm8Y}lh+$m^BxH9tp?2m5;efyX(c#*AGhR)wME#}kR^1-Y`18_Q7u6k%UKZuX z-`?O`GQxFV%DsBjSJJ^qjHao%<%7rDYi>bT3&hMG4Su}nIBirpw>^ZzrB5yDq|H^I z(tyqW0m*!VpH$ZW)vvwZGb*KM*l;{;H;pjiA}|*-_L*MblW6J~TvpStzO($gPq0;r zTWr&6$7Rce%fnW4Hf~ub(0i?D+v-&rv(qzuzrF^?ExV!o`~gpMR~GTfBl~lw%Ls09 zzc(@xWaez`50?dWHJ0iB(vNcA!0ahkT7^fK4;Xpv+4Ws>ti zMfkah^Z9H4?xI^WVk|ut6#DJN8#1{#Vs^N{=d=BtM!e!Ca61Sd`&_{TDZJpV`kKV^ zqq|E8>v|@F&G$s$D{W7wtte-E}F@H6_ebe-*cn9oLuiw`zvste%{XB$s+mQ zm6xmhqa!X~?OoVp-{@G%5p!v$nP)nm=&tZC>b4X&{k2WU=*OtygMk^;;*(NFYYXdp zr1$R3H+wXEtvTK)@?^di;TO%d!8EyE!m?6N_{UK?n{Sa?dX(zlrr4JRk3Vd;%)%?v1b=2hXYy8UilBB-e9V)$WIsTx!O84tWkhxda z(b)E1kdyILt~SULf{7uV0FsmfXAOBktB|z>7jfxf>3`2m{@VaaxCW{N&xN%&iS20f z`4CtXKJmn-4E7G{DA?XLT9e?FYhxD^na#WB@Ttvd@-BzA2)JAp(N-m7rx^xa`C9E* zyZ6O0-TWz^=DfqHvCeUvd%o%hrN;gqov+c;FY*gEayXx<<5^ zJlZ~gqQ?D!gH^%#HNxAw=b*{S#GExLHT4Of6||@IW2DJ8saQ_r@I!Q~9TDRkBQXoQ<6E zjR6XqxeTMG<^nHpSNHW6Jk%+)4L+gj=;QNKbbF_JY}vQ!*2hMaj=A>9EqcwO3T?vt z8S!?o$fn|+k0aE#eIaWO2<#~pnGh2u_1pM_+|A;DbC*uZ*kuPkiOF%GYo>-v`~xJ2 zV5`SkNaPUFLx=}d87QDjowG(xG8+PVl3d`alo+U#;snD|5|9EAg<)s~wnfZQFERAZ z!3A?io7d8gVE>2G&?Agi;_7;Q@B4@Dz$x>^gXtUehlb&FE55*)GzxU0;~rr8;@2S- z3u{S#e2=0%Y}{QqmHxvBgyVoJ4I|l1ip?Hv%*bakU$D!VQx)@lhSR7eBSICr|1(qk zIzzw>X*uvlx&k7AG(;1U1hohSkwmQ)elN8{xF_Zy4i*s@fm!Ga7K#8J85lxr%Mxc9K1a+(0enU&iG@C9p$L$dg%L#->VVG?^F@H8EG$T7 zp%uVd76wOT1rTKxl>;+I8@3|@hAeC^kM@{zrm#>}FRy>m{aAIdO3nZp2a$3xVv6UD z)e~!c=uZ&+*@9xZbx;Nvmy3offuH<3#1EfCGG>N0rlmP(mWLq&&?CPNiUwqoFBAq6 zNif6(@<{OW`$F!4TSS z1#@Hyae)J9D(ONxz)Oh&-2kad>!4)NiS`2lq)Z`i#*29g9}3F`8!Zsm?}9{SnBLAt znG1aw*O`e0;)#A?(RtBm8_*xt7TNUNC7Hm7kA}s;?1yn(cuC*%-!o*52SC^ytnez5 zSaj^%7vKqLu;|zT{ge^+8~}? z4uDi)guzCc#i<8Wls;ggSVr=Ard_~K6}ErPLb1rqdB0=PF|Yf$*C?(tb3BV@!U>wu zv3QrErf6f*N}Q6w6iQdI(MFuQ0^vmkLz(PI+h_n9xV+ds=>%9 zHd=zyQc#7`au&)u>sl~`X3~ID<}9pm-;RIr>S58bOn&1vdJC-8VPuvq8Uc?c0U}X~ zaAEcOU&W+xY6gncVY(X|?O@gf*O@h8UM6vD_RRm7Y&Lu5SuSJIvCMbixz;V|z*s{R zX=Jg%YPB9q7i|xKp9W0tXQNtJ(a<)^qGOT!@W`K7bSzo}KBE~H9kZw5$MY;Y>zPvI zMvc&KgtKUd8cY2@*Dn6K@DDTwg|hm3fJBsT#VKd## zH{vVA0~Djw52wrwx8lABK_^O&v-n~;$Y2|^6#z&Jwl8O+891$E(XpB{M{HoxG1CUz z{tocdf|tF(D3~%3r;gxu%$#oEInA;7V{y&UAJ#ZPvlfh~;L)&oV%^{PF%?Xq)PjvN zFf+6{0<$3RpEM!MN(Fizh9YaQ5rn2lEBbeu)UW+#c?UuJNfIj`4PLC_`+iqWyO z@d`25O$oksjX)<#Jy<9fW&t0|2SB!E8E$0 zA?6*FO=sGtvgwO>{F6(%*nb}om=48Yhyp_wuq~Cr=G=oXnW}%$ZvbmO7`pXmdmlui z{Z?#C?_{%oiznUvFM2q#=IKHQVK@^&Cr-w#{52^!R!tiYAh?mmNAGl6$gqdG|&fT`xTbF zi}=!h2{Kn0^HyT-5@_=To#;^)zTAC)sF5)*^TJvIXhz0F9zBp|WB~<$RwGNIiyq)J zwt%vMy|E>4x6o1y2FNrvCMM{CHe(CkgCa{J`krWF4AldB6HDTAv89hFCK|-oVxY~$ uf|!fOF}09Z$RCC#RW*ANM1h?FRl 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