From 6ae028967d593073f3de5a6c6bcab8c78295ea62 Mon Sep 17 00:00:00 2001 From: sparky4 Date: Sun, 22 Mar 2015 15:22:36 -0500 Subject: [PATCH] deleted: src/lib/jsmn/example/MAPTEST2.EXE modified: src/lib/jsmn/example/maptest2.c --- src/lib/jsmn/example/MAPTEST2.EXE | Bin 14140 -> 0 bytes src/lib/jsmn/example/maptest2.c | 165 ++++++++++++++---------------- 2 files changed, 76 insertions(+), 89 deletions(-) delete mode 100644 src/lib/jsmn/example/MAPTEST2.EXE diff --git a/src/lib/jsmn/example/MAPTEST2.EXE b/src/lib/jsmn/example/MAPTEST2.EXE deleted file mode 100644 index 5773caa3b1116937bd11d81c72ab55627ed35662..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14140 zcmdsedwdkt-S?T<*-P#bVvzeH7{vf)0f8kOh!A$gVhBVMx*8hYDw{M>B1jHk!BP}n2ry6h3ChYx!!gwXbi zCqpF-0#Rx$i!rb^i*=kQgp1HvftF;VY(Pu-BKm2dgQrdOtSnG>To#;R-&`8vj@Ma# z7!+r^##LteoUYB{!>;9`!!=zTuVuRI;{C2PakML`Qg9{vhRVZOZ9E~nDwLMj-$bKTzEMAyBN1M6X4Aup)yXDc;gr4Lw*g{HoxYk!op=;7J4ZJ&uK zSL51A^=0B(Ce4zCLT9%(p9+b&Tx%-_`Nq2{E7N@UyCiYAOB6?{PZHM#t;_XLWwLLv z>uK=`*D_6Y-K%}-2m-QXtwhHzSjEQ$JXL%ims>Xg8HD2uU@q`UeYjtD5r$mpqDHxrANc=I3aRHOt$8`yS>G7 zMO3bdnT8vOQ&{^xj%S1~-?bbYUxY(i;QGFpr&e;VrQ%qeRgwA(=SoA{a@W1$G923? zwT$aKwbkmkIQ0jd8Yems7!jXf$h$7PW6F+R8e%8)maeXgYcsV;SW%uM6zIB`!bpyG zabbOq#ozmVDW!oUT9P`6Q+JRCp43`dS2Ji(p2I&%=LqUx4pZOq_imQVtgDH2YGmMe z_($J1Z3|XUprPXzxf_8kye^ImY!P&6@bp2V8R+Tg#bn_*jI8gTMau=v^r&`}ZQ`Oa z@Sd*?%rFKfVP5JH)IX3%wKKZUMz6^g-Evu!b}PGke;C|sQeW)_tbL%gV`KkNHxRsz zyls+~3v3&pVqSdL#feWd0IQ8=)d!e zOKB)>68wv&rj!@ZS)eol7@d{NG^Ij$A)MhtAulL()fmns9KCF-l5Z)ICxR6h~#@L zn>RRGoYyvIG)zYOG}iuzc2%pWFXE^>Dp%Yb+XGBQk6)185wnd@cZ_S4i=$XhnW}T) zhN&3Evr%8`YATEMb;)8~*urNybODmJ7whM6+IL*M^qfOCTHa?ZcWmerM@xN??mW0T z&DhiHtivN(N5gc?^9%NYy?t#p+9sDp0*yBA5IxAY^}BfAn$PvG`MM)$2(3`V7+x98 zl`dFl2-B?{>HNMz(lCoCb4=9Tjb8331S?=Xz>|9Sb!B?IA(JR4OtcAHma4o68Kh5b zSVpwLwb!!LjpBX zB0bXZVqe<{vQj&TR+p;eT0VD5We?fI56zRI?}HQzFh6S+|Ol7=43evT-!Y^CDL zRnOVy`_@#heSTxrC{nsGp`Pm9$@LX+xy%MA8fJ0miK&+?4V5nFQ((XlJr2Y0+_tnD!~PYVEE{ z$?R|8P*}+dKhQpGNFvI2Y>s2J)qn=TRM`SGF(S^;4!K0hhS51%P;O_x%(&X~s& zUNWH{J*2&8Kq&i?X}Gr4zuFSZyOgxdq71WPtIs)tkq|F3sTv6tisk+fc*n7Y5Je^B z%8?`x2`#d*Q(G4OP*(PRD6Si;|p-v$dqq zPNtIu;{Slt{ul{y;vfhO)-@|NldU%p>+SP%T7APPqJ5rPs9n~~tgnXAUnDz%TCo3k zcp9c3(UbLMaWu`18~VkXz-P!2RPIWljoX6afRZ|4LEa^~I1Vk|t(bMZTDA64$7$tn z5OAenFjzn%I{9s`g0bsZPwk^VNy9h^WMd)PyL8G#PM$J>(+)d= z?7eFurv>GC$rMvLZ&hY&KSgg~5|e>gX;gmtM6Sv#i-PtmilX)<+Rmq8fuCamP8D_F z`PU5{e5m0HAL?T%+rkC(6g`YRM?4lzGO6zq+S;`?VqnIkzD?v60#p=1%U)P0H^KBE zB#)&K743wUK@;4Bn#UrOX(QxWe|MNKO20c+^ zQ$9`u@Dp1W6u@D7)9xqR>%aUtu=0)6)6b}cY zY0^D`&1fFq-;BmO!JT)BK3p(_NcRFT>>v|74=Q~dXCeKUx(KwS{DGAZsdM#O>ulW} z&9CT|{zJ{zzY>M1hA2#ikdxguWvb~LqL8N{+J?=~fsA`pS&{+C*seUCf$o_1KES)Y z*C>k<={2zBnLE*szNvQs_x-|-wkqR$wQEXOCiwX>y^i+m4DAefhJFM#6js2^0I{8< z;T?_TZ@%%v;JK)S9p<0zYPs>oV(lDJ>&W~~Yc|-+SBk4PuD8#AXm)O{V~TyDv|;=c z&#qr%_kPzau3109Ub3-Le0JjouYLB$P2a72_L+5}{ejtI?WNy+dZl;GIQ!fUt0veT z&S}%ePt41kIN`wuAG8-Qnm5nB((8TpnGNgLY!L0M*NAIYiECDq;*Fwx&4!KAGwbZ@ z*R0=I`CYPV;|7wJY$82-XPI^!+|LPtP=^0vXAT`v#^-DwQNo)(PSosZlP{unF)tr) zyPWu!LI))eX@+nh$ z&dw5kM=-a2&tpeMZ9lssd|)f7dtCn;iM?gN@#lI;--o?4=EyU!1v+CB_F<`nEPv$2 z>kkIsc#FI-e^1_#Q8~X~$mi7Nl=AY2E>q>=9V5n(+{phBP8QPa_5#2-U~4r$ZK`y? zzgj4eMg@*=+OUG>*Gfa+D5j!Afs|QSB&6D*ovd3w)#HICv)@JDl%jY_``&cB@qS&3 z?l>i1qfSqwLqj7I0Y2dgUe_1T% z%k2$gfWiOXDwLKi-2UN?v-?WZ8n}WZqvZCHOXTaZH?hGU`DpH;xqAwaj6!pH+FqWp z^5T*PLiS}4r9ETuo_R+`l{8?5_Qj#Yht;=qILQa;N6P3-aDWN4Nt+>srGO)1DjTX+!mhS(L@u&GBP|og6PkXWmD{^G1NxwoMwN<8+Q`g+Llb(m`QvXpUj#VuVf5EYfi-7D~J{}*`=9y7K&L=o-qF%E$oyA zAEO7i9jl%csEO!OfzivUrPI)!8LX`#g(yRHY&;>8F{-cLO0>^ze?eG%FjV_kdrVn- zi$a4Jfcg$|W_h^miHFUEU>BwaKPP9u%Xb|c)#^C5+b@}z`3zV(6^+60>wXwk1!}s9 zv<{!jn4x1_OeIAWH@b)>|53YtZFCDPX=ZgDG8rZ{3LFYheEvf`wx5Z9hy1iPwGeQd zL^qzi$P^l;nLP|obrMX31QhDX+r@3i;CD{b;f5NU0(O;`hp>G^>8kN~pRKn~`+F%Y z-TI1T*;?WVmcWG5eU?CoS1bf(+;SZ4g4?EWW|+pThb)KdC+Tx@4)1?{~60wF2fNVJD=CCmX-m-RRXJn zqBR^#I<;bHKk=l3c+NtpgLEz8QV@NngHVB$m$A$;D8TiqPlb+Q^)q(C$9Yd9-#ijwqsJqwwBEbv$9iqwR76iK$I7kU}mu#Z3@%mD~D2d z1k2Flufm@KrgPoh)O~aCaTs2wa@{xSVH9ESC_1wkhV-wk#D}nT&5UGgK@P)pu-6Z? z``LzJ9Kk6AGj!8KN;4aFv42=@MRaI!OgpH25y#?cp$@SD-@GB z$wu*JCkH#LnUx`)>XT@jcG0jR*)SM|S^Fn*TYKj5-sLc_Kze~tx^`7w#>?dvS=f5P zRJiLp53=2xPUzXZVEG7Z-8rU#VNSiVf|gql_}dAaw@RQ>@DgY{>|rd~kV=$=Uo!tq z9J~(>U=Z?Zv+(vk$$?uIuW7G^fPEg57un?H z7H6Ap0fqL=l&z?IoG!ABZPw?cGHd=x*n>wY!i|Ewg{K*`nrC6yB7sV<|Ea{o#{(k+ zDX^;8sz6EtypX&+3x4NrXRBctuMnI!q~9^qYf&=mr+uV9o-SAMm>Mihs|D?yen@O! z#y0G=)qvt4NW`R8k-!x`B5>lDh2iT? z;pLh*TLQa|%7W=`S`%}ABo&y&G>hTuOr=Tv4uMNn^;>|6&sQ)+UXf1Q3$ZNY<2k8ts@>5pUpH-Z zwtL6GN*~+acEQ>1D?zaIhHTxTn&JR{N7NHcM+_P|rz+6GE2(t3a5gNIWv zvlTIMOnQy=S|-5JFFU#m9Fae$Qr#KkSu1U1Cq4)^{|QKU^c>r$od!tIDkVD`8FwZH zW)$;r$!0i{>UzB%p_*5im(vN%m|(N!w0|= zuX|FJKNxYwO5J(GXJ%-AyAKb}PVZaV6$~gCM!Y6iNwa#PR&5MOt@<#+bt*q^YdIMkL8K{QaIt^ZY zcfBW-DZTkt)`G5(Syjx-Oz1x=PHnd!TG3EQw0(FHUi&NDHXEW63t2j5nc)J9^XiJM zyX|7~Zi{GXAass8BSyni(t#_ed4!ezcEyOFJiwHf#3R($7p$U);vjIwu$ zMnFsZD|5>JPPU&?qBpd|&=_Guhtg0R5(f0t@e2ngb7M~-PKf{zcLEffD^HbI@E{ZD zi`|8iu-hgkW1~O6^$5M8optt9c5m(Z9_Q_Vj8WxruD^jpyTp4)qg%teG%tj-;=feG_)5)z z*WrKaxWq&Y>9wu#>(H?A-v? z)(>nyP*)M`2TmLL9449W9-#dadqWsgt%!qWaVCr8DG``r;$&x2l}*m#t~(p6X44z8 z$SPC6RyhIk;~P~A67fChZWgFRTN1R=QWlH5p_OP~pYVZyH{rm;=p)fZVeV;Pwu2rVq11F9 zILGfl%F}pl^VXhoyf+)kGRYhWS+vgS9&x*`Gp!HXlN&*QviHusUf zwaiMUu3f=Gqjc@_#6nnyg#0rQzmrU`5*L%l zjnMK5feBwxeU_;ULz|c(Ikwz-mk5Dd$X}VQMR@B48YLb%B zcNfCD(&$8UZK8D>Kr#!dboAC!Dp8+UC4V+Gl;C+D(RxV6oz` z`xNXD_s7k6T!1m+Zl`6)w?&P7@v{2)oa;U@qqec$-JTbr#ZkR1rk$^^XqSchvYYU! z;BX(}pdwHb>a4SC-JK8^$d}xU_)$rn`!tl{kboe_uJ@M5>fEPxXNp7X+!u0ct=g~D zT5dNV5cuuw@-Xo7inw+L8WACc3pv!PeqY~RC}!g0Rea^pa$bE_*GBI4i)Z`l-p*jP zImaOa$_4yd)JJvrxqW+!zyqvzzoc+x8ioT1mFm7^a(`xWD<=14le@#@zCz2o$GXo% z+^1~f;QES}0yURN&4YD=3`hayY`yrBcG+KZ%`Tk})SMwTr}x>BjcZ4fUVKLD2-JK= zYSQ=R-LCsg>!@>gy1Y^m<}8$k1!@#hGiC=|&z_vVX+6eZMMK6S#x{z`Nw<ay11Diu!|GhF!hGX!cnNKN*?Y3tA~1!}I`xwR`=2ZIyzHzsbt(sd^+Kxsli zvUmXV6izjH2HTZs91SP#hBWyL9u!9-CzeyAPVwW9hm~8|#F;OXKqh*XYI( zXrIsz17=<>kmtmy2b#Lt=?;5vhsE!jAkAe(Lj0}=#c{?=(=gLyVLZbgi)X z=kqpXF1|J;ETQUA$jH?{!MWCXN4VyB%UpA%C;Zji6lsdTnx8D?soz5!4ohn7_0@b; zI-1r=r8JJYGPQv&(VOLZUb=635hvYkRQe&aza+kIxxOcQkny|bMn{&HO4sbJZ%Y^4 zTj%pgSe^1kT;<{bSFzMeKl0Bv@mjN%;&Mxk=x!3U{j8F=Ykv(inY1_D+Mi%HA-!nW zgaCECnBp2OrJ)Pw)~@1Z!!40qDH$b%PxxNk60u9E5f3j&XHmy%CtZ1xxz;mSYo(pA zlZ-<_#BoR15p=fV6p=T&;m%>#M{X8sU-VlMJeWE}PdHivab3#U5zdjVkOx^5%o}Hs zp#v$*ME{&Ss9i+tAmM)X_qxY)?_6}YxXCPfG`$ojNQ^R>&o&JBvO!gheiNo zP1?<_ig=SSzN;b{sE8A{)|?ne#D|-N3AkatDyNVgva(FtW$xT9@cDYG#FygD`a6ST!Yd6rI ziI#eat3{YR&xnrV+l{HzH)C-@{bS6C2JtrJlD7=blZJt9ay_ZJp7dN#X0B&It|u$k zlf5liW8ysNw_|4(I4;;7thg{ePtVeU?yOmo>fiO=GvZFko@5$V9PrWZX zH*iZAkJn{U2x&KyG4nGuE$qp}HL;vnAA$#zAZUFi?8#Pe>_ zct7`SuZSYOJ-V)lhn#&PV79TiX^h3vJh+g6++4RjA2_?NJ?`2lp2W4Mf4W`}+gyvq zBd*ob+QhJx|L0-q0a(rAtbkeQn->>dFkQT^=$^2O2#M|L>u`lf%d}NAm*13`PMiVZ1{l@jI z^lO9#)DDd2)oZ*uUBEsD{>wfzd;i1;8^!<*&Hx%|B?y~U;0xJv7$f47Aka)H8G&jd zL3rO}ruq`OC>62YijG-ah(3|pWF2pGo#F`Qx~~Ig$UqE*l62oR3QRqrFu0i>RP{Kt z;vcZ#SF~4H$ zyu53p*Nq!*^Qs=lXuDW+8+Cw;9U{wdf<1BXr9+tzgTsLWtS5I5Ey|>w2xTkX2xfJw zuimOk$5Gpe`n0a5va4h+ulGByO~{_yWdsPNlt__DFpfTn_*e6{5+^brQDjsXv9Q>1 zxvT?A?uT{r?H&L|o9oNXO&(!7t6ALRufC@Q@h@y-t<~5FyU?Zlca#>Ts$N|k$Eyy$ zY8=J^zPch45Id|7nz+0L&J^M`I>L%I2pC7z@tm5?xn7VSXGg$^Gr$(>fU^Mx&QcAW zSs2d5G2c9aJXEmFHFBX@pkGh~NZ8$(NpM5XCE?Ik#?=wMu4l!F>lr{luopW#kMO&~Q;ET=62lP#R|-s*W8+ zN3B(*aWL}#!h-O~x_W)TcX`Cupsq~nj5tJ+(YM}xMJ|skZ?JGT8p_$oI`@@YYhXqk zS?DXZp*+3rMb0#a%ew^nK4Uart@Us^FgX^KmpGagMo=d~TEKm&G}#~#q|h1S5#3b^ zZ-ELJy;c7*zsOeeGZrNO4Dj~1&%C9bF<|J>4(Yy5AOg;q3Fs@kUP7DY;+x8OGiF|# zIMtWTU!Ce_-Hg5(F>Cc>n1MzAUg{0hbS7`^!j6;PgI|c-mEvW+C|#}UHAp@^fmX=^ zB3Fm>0w}o{OR|eg;1K1<7VSTOJVlWbMG-elN$kAZrLD7VgFYKTrB2KlzCATt%%N7g1Sa;doLAnk*6i?mCIZyG{pA z66H;vMTp0>L>m1f%P_H>BXQ6T_t6%@gZWu3s#)8ZcS(8TA}(!kUZ;P?Lf%xF>+dO% zgm=<4tH0;o%B*(=)*ffn`Ud}s61f1E2SG7^53U!#W7az~N!HT=7NzU};-mnO9LyCJX|O)Qkrfx#mK} zqvvC&_g;Fk?K}d!BjFqF5acPldG4tHXd#82z;Y$P^)WD$b}iAOeV(v0l_@a5wpgSA z+fMt^ksnR=f8YnmoyrcKM)4YeR3O$y49vLtWg?iW&&EI;tG*^y+scw_duAOOHHDg| z&_#UPv9?19x~3-hEa7P=W8$wOcmVvuY3|E{IwISSZQ-SK+KgM?;a=Fjj3nU4zN_oX zi1XU#I6Z`>X?7#OBxFMLn^93?zGX3AnUBlu?2g894dHgvev-MpJ#h;oWqWI`rG)1~ z#@z~bvtnov)Sa@k81obxsWfHE>AsXWVs%#%TauCaavVeKWe8$m+vZykXP>Nf&O!z+ zQ~VO>ygQ~{p{B>ZJmI(-7`RkiC)Aof zKLn@C?o)m4KpFig(31=u7_7D`Z{ng+MX0NN77T3d8u@9-Pf~&+-*w?-yo9ccrsl8dWQ<$s8tgO8)~*SUz{T$ZpMljEvN-D{7H9p*8TO6NzvU2}%LgZ&p45WgXXIwqTRSed$>B*YlXTP_k-Lq$ zMg$_^JXQR??l%^WrF-1*+Tp;_4?qAWgd(8xZ-Lpr)R9N`#p`gTET+3-wYV56b>K>s zfjnG$>;r-~V1T2YoGjsLNcG*41w;witNW65I8FnAS6su>$DW|k126(Vq_^1XEbU>h zFztqe0hHr1vUa3z$}y!2`p@*NT+z-FD;05oHK@|^lNZ~%roM~=9t6ND;&s2p84q(~ zwT;ph z0yEhR?QLj<3rIYAxI)py1owQdP&so8M}3{O;m;)Ib9U5&%#>z`Zp7Omy^%eqZCk^{ zH1^aNp`=vbJ)~%GIpuzSZOYUA44f%?q21 zn|Jm(^WDh=-T!rxf4!7v7dP6Cjw{7A_O;JGkE?)UrL;Gk(*? zXK}U9D{b0@`+@cixY>u6)wtxB=a@KY^21Z6PIIn&de!PRYoA&7?6;qLe*K1xo4!-& z6(wKQ3*Y_Top>XJyQ6}?;~Q75zt(EPUu%8!!{e{F{y+WcM+yEO?f>m33s_^gGTni% ze>c|8lO&Eyu?S|fnK$X_)-e_vrxTKi8TLN3_o3JFUdzKc`#%sDAof#3*z;YZX6I0p Kv(Ahs -#include #include -#include +#include #include "../jsmn.c" /* - * An example of reading JSON from stdin and printing its content to stdout. - * The output looks like YAML, but I'm not sure if it's really compatible. + * A small example of jsmn parsing when JSON structure is known and number of + * tokens is predictable. */ -static int dump(const char *js, jsmntok_t *t, size_t count, int indent) { - int i, j, k; - if (count == 0) { - return 0; - } - //what the fuck is going on here? - if (t->type == JSMN_PRIMITIVE) { - printf("%.*s", t->end - t->start, js+t->start); - printf("%s\n", js+t->start); - return 1; - } else if (t->type == JSMN_STRING) { - printf("'%.*s'", t->end - t->start, js+t->start); - return 1; - } else if (t->type == JSMN_OBJECT) { - printf("\n"); - j = 0; - for (i = 0; i < t->size; i++) { - for (k = 0; k < indent; k++) printf(" "); - j += dump(js, t+1+j, count-j, indent+1); - printf(": "); - j += dump(js, t+1+j, count-j, indent+1); - printf("\n"); - } - return j+1; - } else if (t->type == JSMN_ARRAY) { - j = 0; - printf("\n"); - for (i = 0; i < t->size; i++) { - for (k = 0; k < indent-1; k++) printf(" "); - printf(" - "); - j += dump(js, t+1+j, count-j, indent+1); - printf("\n"); - } - return j+1; - } - return 0; +/*char *JSON_S = + "{\"user\": \"johndoe\", \"admin\": false, \"uid\": 1000,\n " + "\"groups\": [\"users\", \"wheel\", \"audio\", \"video\"]}";*/ + +char *JSON_STRING; + +long int filesize(FILE *fp) +{ + long int save_pos, size_of_file; + + save_pos = ftell(fp); + fseek(fp, 0L, SEEK_END); + size_of_file = ftell(fp); + fseek(fp, save_pos, SEEK_SET); + return(size_of_file); } static int jsoneq(const char *json, jsmntok_t *tok, const char *s) { @@ -56,68 +34,77 @@ static int jsoneq(const char *json, jsmntok_t *tok, const char *s) { } int main() { - FILE *fh = fopen("../../../../data/test.map", "r"); + int i; int r; - int eof_expected = 0; - char *js = NULL; - size_t jslen = 0; - char buf[BUFSIZ]; - jsmn_parser p; - jsmntok_t *tok; + FILE *fh = fopen("../../../../data/test.map", "r"); + jsmntok_t *t; /* We expect no more than 128 tokens */ size_t tokcount = 2; + /* Allocate some tokens as a start */ + t = malloc(sizeof(*t) * tokcount); + char JSON_S[BUFSIZ]; + memset(JSON_S, 0, sizeof(JSON_S)); + + if(fh != NULL) + { + fread(JSON_S, sizeof(char), filesize(fh), fh); + // we can now close the file + //printf("]%s[\n", JSON_S); + JSON_STRING=JSON_S; + //printf("[[%s]]\n", JSON_STRING); - /* Prepare parser */ jsmn_init(&p); + r = jsmn_parse(&p, JSON_STRING, filesize(fh), t, sizeof(t)/sizeof(t[0])); + fclose(fh); fh = NULL; + printf("%s", JSON_STRING); + if (r < 0) { + printf("Failed to parse JSON: %d\n", r); + return 1; + } - /* Allocate some tokens as a start */ - tok = malloc(sizeof(*tok) * tokcount); - if (tok == NULL) { - fprintf(stderr, "malloc(): errno=%d\n", errno); - return 3; + /* Assume the top-level element is an object */ + if (r < 1 || t[0].type != JSMN_OBJECT) { + printf("Object expected\n"); + return 1; } - for (;;) { - /* Read another chunk */ - r = fread(buf, 1, sizeof(buf), fh); - if (r < 0) { - fprintf(stderr, "fread(): %d, errno=%d\n", r, errno); - return 1; - } - if (r == 0) { - if (eof_expected != 0) { - return 0; - } else { - fprintf(stderr, "fread(): unexpected EOF\n"); - return 2; + /* Loop over all keys of the root object */ + for (i = 1; i < r; i++) { + if (jsoneq(JSON_STRING, &t[i], "image") == 0) { + /* We may use strndup() to fetch string value */ + printf("- image: %.*s\n", t[i+1].end-t[i+1].start, + JSON_STRING + t[i+1].start); + i++; + } else if (jsoneq(JSON_STRING, &t[i], "admin") == 0) { + /* We may additionally check if the value is either "true" or "false" */ + printf("- Admin: %.*s\n", t[i+1].end-t[i+1].start, + JSON_STRING + t[i+1].start); + i++; + } else if (jsoneq(JSON_STRING, &t[i], "uid") == 0) { + /* We may want to do strtol() here to get numeric value */ + printf("- UID: %.*s\n", t[i+1].end-t[i+1].start, + JSON_STRING + t[i+1].start); + i++; + } else if (jsoneq(JSON_STRING, &t[i], "tilesets") == 0) { + int j; + printf("- tilesets:\n"); + if (t[i+1].type != JSMN_ARRAY) { + continue; /* We expect groups to be an array of strings */ } - } - - js = realloc(js, jslen + r + 1); - if (js == NULL) { - fprintf(stderr, "realloc(): errno=%d\n", errno); - return 3; - } - strncpy(js + jslen, buf, r); - jslen = jslen + r; - -again: - r = jsmn_parse(&p, js, jslen, tok, tokcount); - if (r < 0) { - if (r == JSMN_ERROR_NOMEM) { - tokcount = tokcount * 2; - tok = realloc(tok, sizeof(*tok) * tokcount); - if (tok == NULL) { - fprintf(stderr, "realloc(): errno=%d\n", errno); - return 3; - } - goto again; + for (j = 0; j < t[i+1].size; j++) { + jsmntok_t *g = &t[i+j+2]; + printf(" * %.*s\n", g->end - g->start, JSON_STRING + g->start); } + i += t[i+1].size + 1; } else { - dump(js, tok, p.toknext, 0); - eof_expected = 1; + printf("Unexpected key: %.*s\n", t[i].end-t[i].start, + JSON_STRING + t[i].start); } } + //free(JSON_STRING); + } + if (fh != NULL) fclose(fh); + ////} return 0; } -- 2.39.5