From c49f0f2f8960f1f7025b1e868af501e3079d3e53 Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Tue, 2 Dec 2014 23:32:05 +0000 Subject: [PATCH] Add importing PNG files as icon_states --- tools/dmitool/dmitool.jar | Bin 194661 -> 196131 bytes .../src/main/java/dmitool/DMIException.java | 3 + .../src/main/java/dmitool/IconState.java | 96 +++++++++++++++++- tools/dmitool/src/main/java/dmitool/Main.java | 58 +++++++++-- 4 files changed, 149 insertions(+), 8 deletions(-) diff --git a/tools/dmitool/dmitool.jar b/tools/dmitool/dmitool.jar index e82d12e5b4399837ad0447c7e4c8ce8f5e0a8125..4c2fef9f873adf8666332cad4f304663da9de7ab 100644 GIT binary patch delta 13072 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 delta 11703 zcmY+KbzBwO_xE8?8bP`{q`ON+x=TvByQMjb(jd(Mf`W8QmxOd9-CZIL(&016^Sk$c z&p)$1@4fb#9c%4#&b%h`8g2am4MRm9;Q=Zf95OOoONM_820g;vh0o;gnU*J&q9Yk?`alp@2I* zUgUbIp)ob2Yq$RjOu2lyG=4pAB-fa zk;AF+yXy>T-6tB#86cmaWHX5UA@NDl$f-+#v&^R9m7mb(eU*=Aqj9DT0$)E!$1}e6 zoh2sIecR_8uhEtv{P>B-C4%JhP+agqnDQ7`lNv9V zK;ODwgvTO+kEIR9BTR^RON7Y~o**|K>B@)~DdCbW0sGX7FFFAuZCrYA zLyL4yBiYTA-q%4q?H;C-|2(_Oq|yQ_sP<{A3R^m%;wfLx6?H>=Eh1w%v8W5)_1LkD zdK9{Yibf8Z=>iH#E!!beWgG+PDWNb`BdUWGDId)vXZWF?H5lw zP@k2KIHBvLQCy?xMDGUvc39>!O2ha4{5YEZ?OVT9W^D1{>kn(eL~4?|*w#wJr8}{P z{Z1x9EUcimpyk;sIjvY1CN+gf4h8ITmgJtM$5F*~{q%IUF7F#)aQ~Buk~8+(uH@)& zaCG=_#T=9{&sUmwxBGVc18W03v$jcmtQlx#nbv5L(QH3h%_*&IvE^ppypC0fV~k7Y zNOn`zNQBFN5~jgyTcwSv`_Lv1=up!LTWLyXVN1_@62=TvVf}GkG_!B<_u5SJ*{eJI zbkgj2`CB-O9NsB0#caty9QPEZPPzN$c@u66Shn~S_71%XyG6_Vt1coYvX@G?#PdfF zWSa0>p6y^#28fAYI(N6U(UYU3!$l!F5k@^ca3_6yRQom){{67!3W^s@qMKjQx34{} zm7M!9KGgB!`G?S4Mc>KxGX-D659e<~DN@d3LMc9;hlYL*I~_7Rw!A(U^ru?W5xf!< z|I~#>?+>$H(W3V!YjHgI@)iUHkeYc98sKaW%A*%aYUf)h0PXkUs9tm}WVdTwpAQS7 zn~^UHqbFZnIX=H-dwt#3B9150V`Zs8)$E||=32@0Sg~4**J9+*?8mFdgU zY*G$6Qd6}yb$w(+VO?UTr)8ynd)UMLH7h;Rw4mofMnZ-|y=^xvI-^E9ep( z!m4R2hw~?_OcZ&@KLfPKLR+)&749?Xk%*Q7uZur8G@)Lhi+OE35 zT)l{wyE($yHCLA}a!~1YY*_>Ye~xF#b1DRWrOTbyWtk1UWc$5YBUM{g4LFW;f{g*n zvBKMKY)ZMAvngtWa)F^HzdeNuB7KuyEAynmK2ga=(pk!=$l{V6*POV$=FNUt`YMBi zZd*k}v#Nk$bUbdEzRZe&hA7l(e=9NU*jf`AqodlmBep}NYre|8nAX=$wr(}eHjuv7 z$wr??e>~+^(XXj7gYg8r#WgG0m>03w6dv+JQjDV^3yx_9ioaxs@h=6MycA?DMe0~S z!SLzpHM!~Os;uYf>CJT}KFgYa2{o^maN#lhX#cn>P&v3g&_aoPu^-u$fo~+~(CsC| zEW2zMcUk2sk8A9tNHu_Q{n6bl*7_VSptU!)7y1DJyZQ;Po`=6C2>;z9Pg3h zvYA>Q1*^Pg7Cma@?rNLbwO9l?c@m9*39#o2QHaz9fmP=LftuQiFRFfo(4!Ib{U#o6 zdJ$A?HR@XI+1BzAf8lvtYo##`P3Vgv(G=}ehy9op(sK2TIqQsAtMcM@_|LI}pY{}F z<%?)XA2V;|WW7I`{In&YSS>zCU;PyYBsnkrri|>Rmtkc`#J&~EFk_-nXj6Ug2vG*s zP17ZqRoPHf{@#m?>UT_YzZxpzL#8}yUm*2YVn{p-E^9MfmIcCXQ6$&FmAh6l!ZI;LDc_kU4)yR2z#6DsFg|S}oRi0>0 zwIFb?XIW>oBXSNqa)>nHCu*AclTkH)7^xO=v#kzS%F3oJsst}1s$gQdhDyeHV~Pr{ zL}E(13u{8|5r(Ew{`0bVeD;-AMO?Kkr7{gdM;XyF3D>Td2Tz76W$->sHa|F1Rs6zX z>bb5~XYn$JD^gTnKi`dhg73@BTs9y#v9xk&mHOP!R9(W%dX&&@@Jq%|VT%*96<8<} zMuy#O`N&3`uoG#_n}%npbR)6Hk`47HF8ry23$hHM<-GlaY;2L=CM%PPfRmLGXAVE@ z(Z%`Eku=S!u2~JY2^L4~@&e8g9wFJt*?Mlypat@PvGG?N5qS?+L$-Xu2y9stg#8D8 zbf0e6z)l~dJS7tL$?W{WlKQC)ZP@cYEx$Ge)*JCY7f*4%YN@!;T3**Gf#SKrln;8`Bg#K~ zxIvB5IXhAZ9Hzo@Xo=I?7-x?n z?9ETV<#{KKnZ^9%KrG_RGezrnsm~O*kZe^(vs!!!bJ1-OKaVuFYAuW5Y6zv_kUCq* z2+5Y7?obrO+dNqBVm@}|a}g}R*mj^F?07Zt!>cGtQ@e$OC2KVNYh)~J)>-V-IP{TX z=<073t37ET4Lx)K^T8G~IOs?f5aa~}_LrI~E*Uzg=#0rxCn!oH@X`rp2R}COK#n_N zILp)y7>Q!MP$yepz0O~|QaxHyDfjiBcd?IL--)S`%CL2Uoe);(q!kGKsjR=YKDijx zvcN1@^1tAgVM>#DrE>~X*i5aDvEdHhC4_z_7{?*yl6^}NRNF?E4!33|bB@S5=fjQE zU?KTb{;Gk~e(hCVMJVrO-cs4HF5ZWiPQL{+I5#yca;1zcS&wAcm!7nq8+5ZZhU}_z z$>muNzWfqA2YpS?_s_ytw`T6_Z%z%dV?RUsYH;zRh@KNIHqM0swl|$xdlBg#*!h^E zxnX4O)j=WP7U#OH+Y@|7wqvp>42x6xEEtN>qdaAoEz*M*z=)RAb9C8D6FxUiKFe*6 zDaUL-wB!1XMjxj%+_R@2`;WJ%&0+wR=c7>6{CJ|e0fHY-9>;8#6)icCY0Su=(2cod|ii znOfgUBpJrx4ECIynZhUdDw|{!cDiUG?WWuBd>8R>?|wAhB$`B2y|eU6c#V)?#>i)9 zDX1tkvXQFu=3;?zYjjYz2dZ3md0dk0H&5=&MQ$DhOva?O{XMdKqRTW)=)U2c=rUh&LKUb^R-Zna%}f3A6- z)(QTP_6F}`nNp0+5Z0=h)03G~v^K#TZBE~2gCTYXtX=dKeKuzcq2Zhqyfh0|N6W@N zvyO%Dz0-ZVUT-vykhfQfnhclD>0SkDIrAEH@v;QldJVx&3PfJz(yw~+;_&B9Pn9Gt zNmU^VkI~O%iOG4fyT4wta7Qb7+2E8=k5-c>dR|#FrloC(W(#o&Ph6Jzs~-@_R^gRA?Pwh!;}+3hl5F1Oq3!pnm}Io~pWvp~K@%+sanO}c>N#7NZmt_N|C@2g&8h}H(#sB=DsDOVK1N{9Ln;?;h{MTSp zkOi>s{?7V5z;Wrug@fZ}fP=$^1F1#;Tv&n*nvuqMmHy^}@YzDLf(#c{>(l2Blt~Y; z1D?RQNOpi&{?isRr)4&}!2m#a#=%>QiDtX5bxW_f**X{F-XpRjNCyWeA%na7*KkOGc6X>C@6^x$kEe8;-sa`fc~ek3_@s%7}7J?A3LAeQBf2|UA-6uYt?*x^563}xE7 zcGVr&dMs5PTzV`u9Z;NEd}i8uSC+C7{6f33nRn#FCZW950+aZ~)dEBKo3kdxtTT4Q z4&m+_w2(1mUPK%P4wBCNNO=wrnXF}$T=%0uoS+yn_(H7 zagO0ul;Dv>*%NeiZ;tOZ$Vbys9}WbLS$Z|?i?L~^FSh7uRbv0RYi8vJV}FrusbWn+ zcg1CWVmQ0z>9_pCQQ$>y^x~RA9<|_jZGf5{Q;wdpuE+qcTbHTmu#AUXsLj0S$atL> zVk;v`5d(GFwn>tjUGe$T0+{59)yOnX#Zx_N7E1H@E-gtymrPb#l8REg$2)Pu_S>>J zGfFFX!U?lJqYL|u3WGxY=LHAm2qW=nb9l1uj+p9l;b+`oG&Ie*Fo8>MX=+0up@}|g zhlw7E2pX;Ke7Aiov{UA7e72ewZ%%qz2UswRs1kpEZI?_my7YXxzXyACmP_4lCT~Z( za%)6Q^zu<&F`2y|dhq!0Re&JXPXu9H!k^n{^rsxECZefYnx8^{6I+EcTn6Ot~&n^4U5=NC_3 zmVa`3B;Syk?7oB2j)XlATXyTLT@OfQw)b?VD_JS%eP}94{dg{u`nj@CN5_}ZzLgR4 z&;f%oN#Bqd+bH3A=X!d47w@%N`P8>&Q~5CubAm)sq}38@+nKAw(n03P?V9to{Lvl^ zgU8s$?4Ww7mL0)k_SYsLK|@&=GaKH#L79YGe!;}(DxT`Fv=EUpEUWgx*o^T`TZ4M2 z5x-A=+VYF6;0&&{ss8U1+Ait23?pPHU22cwywjszsAcpSm127*;GWi+SGlNFuFL8< z*RRRVt~ev9=Q|m~dSyG(o=E)6st!(D=pJ>9Eh`J zvf|d$TCr}1tVF>4P|?y%iY8Cig**aX`j>3`RcgA6s)$tbo>S}zuW9XqETRXO8>%67 zDrra#Ze``gGIpZdYsoLFgHu~khz)HSMcs48p>+xl%Jgn+IIwLs^#LPyHgMePb5|N( zudn7od5II7m0{drV}vAPu!ei=&9VcLY+|ER%`0r1rh=cW85Vz@_U3QJ^bkjOdOTjO z7EP_XOjV71k8`4y8&gq=lE#wE{W0ORR$0xX{vGF5V0v8EP!b!bCO6?%^zrDeXh9-3 zY%Vx1Jt-Y>^CvK7b@oW}x*(PWNBT^WQsWHVM`OafCxgGdElnG7jBt!*2dn)u)k!i# z9Xji%h(6HKFm8CINvH3u1^Ns=rR|M3b&fGt%z3BP{$h^#vcufq8d>}_>^%#kB!hiw z5f3$^JP^h9k}^#OP(MPOu78V5(`MZIU5s&XB?cQ|j{F#=&~uw+P$s`~8YXH|8o!kI zV;N5?#LwW+*qP1)p|n zIo4%RAA>|&@-pWsMa|oOq+b0W-xGMF`C@x;G^I)LTh+5f<7Ir0pAhaeM&h$-l*kIX!20pyluJ6m^WfTRpqC|GtD*1x6c>X_X94kg&9cHtQ>yio5+_=`L z$(_HL1w}L={D{mPbQQtF9LjLlCwE~cL@makw}$2M{830GH=KVFVP@v2t?#cZ{Yn3n z!(Sxi=bUX`nrM)Ii(Nl%37uEwhP&&Se~+XoLu87_ALp~+Hep@Q(9B)gD)-EcvX@_{ zXw`ZmW5!OMcMhn3Dm}83w@}i_t}1pn)jvm7J4~2;hvGi7>TA2bw%$8GWY31svOo@% zpdsu^L5hk{@xvQ{3%kZf(T0 zA9dH^9UTP{YF^nWc}ey(YtLk>7~sy zgKcSH=Sh23_KMP9X>%8et2jMD_>>75^C}-l8ou=U2$uw>D8zIrl!9k>ZSqH z6G%os4N?unMT8@C>LWp8toc^?^`uYqX_b}{1^-*jxCstun-(h0Z;^e7r(L4n*q$1P z1jl!e`+h8_fTLKS{fOV<@2im9j5w(l)+@;yFO2b3@5A$L5p=)Zo$5=|z7zV)u{?p0 z@=G;S{|eg=izfo;7*`mao-2`pQEhav120dCpsk7^Bk^|fnwGeO%JD1Ipe4~aWG9_i zsKFc=jmz3`8T@r}`q`b&DtY7U2kp4z2au2v1c%brH%4pVNFTL?Wn7x2bS3 zS{ZtxsaaRC!p<5(R*XOBP=Do|clvo6WFcYeav@lvtb;@~f`&N+(-C64{NkDhbKAnR z`dvRZb!_nJ`>7Pmd0(2{WJ;umJo?9*AjcIfda@R&FXZjsN7-S9rZWByFM7fZf5u*K zt@Ys=n#whWUE_9uIL?d169O4E~rN3pj2(mxHc*YW3#@Le{ ztN4gQPO4naXEx_t#7)L$1XuD|R}2<}pUvoHH#jW#LGq5&L6h7m!HCO^p4-q{+1s95 zHCP7E?2lJcvD%xL;R&;0KdY&DF8j#4MC$U+3NnakVf9asasR}3aT+ec<;eYtsIG)kTU=OXQw_*T z*qFv!5)qZV&}O|x$@fN=87CST*-}i%9>vS*<)JM{;*@@_!w?8Nj?kx!6daklEGqkc zwofyKw!YG5$PABa#=xo8Ca%ajpa04zd)=+&x0?S?!uH!g>L{-}O9Yh$ztK!8CtwTf z)AMoDQcO$6+eL@)nQ4}{<(Z-@Q_Kj~2L66E)gSNDFTp!IofO4=?twD6c02nXpQT-B z?^=~5$Bo-z6ZAQUt^1$)ky$Qtyj)@|!u{N7GVk;;JAa^3a2zv z|68E@ilcUE!t!%_AwZXmZ6xLEGrbRyGpKGho2GI2Pr-@6ff);5neC33ySfjmK9(s8 zzllB-Xr1x+ktrIrJEQz~_`|B&uKUgp|94`$_U)BtSd*;3w_#$ha)zXz8%AU`p(1!A z3!jipW$(9>-&9N$F23zM@hMY=;ZjU|?o7Bmu9btKXl*+hHQ!3V%7neyMkkph!8ori zgX1R*cgh?N{TMM{J6(%iLpZteauw0Hx0dKLr$d`%WW#~rs==JaT<{P{)Y9u!6yNWj zk35LQ+X*7ULps>1J1NgXJE-q4w|ivtgO}*6-eSpLOO)J+wOy+}TfnU3JI#i-h>b&Q zG*P=TcUV_{qksu{i|X<5d5{;KFrYbu5##-%zfXTv}p=hoS?hVaz7DoAR=C4;=YcZ<%=8KHenlT)TdstRRn#jnD zCr?nDp4I`o_F71Llj zZETsCo(s1Ikf3H_*S4AIsnFJa)Z2=jq*KXx{-=tIF8Gh1>p8`iqmCz{C&8fj4;KKZ z^DRHcXlL?Nh&W9&pSI^q?~x0bwVEt4Q5_~$59Ui%=jCr_WeVplItf_r3sCwZ(!ryWTk^h$q!J8nAe{xtEYW&vjIPeLO~PHwwCnFZk|IGBJ;& zn42+g43W1cA~J4i?Ax&;^)PyKaIhQ!S8LaAZ0^rnXc?>ItYZMk55)Zz^9PtwIY3Yhq!WP0uMFl3fks#iLU zcu_r}DVTqKQ{UiYByv9rF?F2+0vfT zV)@s*G3g6Mo-_X(*>cO50ACKLamN?JEDGmHUTbpKbQxRP^$MA)f8y45>T*GpzIyDR zntbML5{)mkChBr({C;xq;&SF&^6y7OW(}$5Sk!fyEKElaJv1U&e4_8^k@)rX=?4w_T(1GI%}Vpc|`K{Dz?70ETlN zKL(s1a$mo?nHtaF6Ux&ecq+cwDnHA5-8z(i%XKxXLx9mEF8^C%&K@(PcIp;UB(0vE z_$QCA-&-Y+9sehf-{I5T^=(YInWjD}W0xH1kR zuwe#3|Lb}3Iq9h?^x_fO1L(z&e;whn-u@7QJaIs+Vc_q(N}%^JKmwSF|Ahs^0RG?Z z0Tdw;Bv5w(1UNXH|LJ}s4K57>RDZqx_i^yQZdq?-jVwunIULA0Yyq6V<~ zgYM%1AHW3zi^lp9CXj0R_Nu zKJIW02i%u>;FR#!6j2@0sQaqqTxMmUW1Au*yJC94pOc| z!FMeF)60Gx+8Gb)ds4FwB}$;*y?C$z2ms=5?gd*AJU-a62~FQ?<8E66?(x+IfC|=c z0{CF>9qxMf4}K0L1l|jcO{fHQg6~DaCbZ!cq4(lZ6gylPGxbM*=+gT@GM@91~E5r6Q!RNaR11!)VK^Pj(h9Q?WkV1Nc& zP$g`Dcg=r^DDXYyUSRx!s<$ZpUYPxYW_a@DUhL-GXA2V$ReDc?tDp-1n?JnU(B#z1 z@30oYTyfvry$!8gdBeSM>V!uGzkY{Dy3di1ZSYwCsp6r=|9B0wL0+&OXw051|6mMI zdLEkL#tw9&l-7GpxeHZQRPR4N55b5Z@K|8jF4VQ7|9>$uh&>EogHDsc1MqAY3W7Lw z=RgFq>_G?K%JjX6egYta^NY}WCf(hwZ4Yw9UHG>xaUV(#wzYo&sJ;*Iz!!p?`_TDP z0NDW7{(o9oPoR`TJAlUHaD0zd4xkgF`s_bGr3X;2%j^FT#6yS({`n8lzat&+;Ikv> zRBl0na;oVN3R;SCPtcB_W^=4Np#y9`zK4wvgl`6)9zi3kCxyC@A46TrN$*>WsUb3T z0!`BT3Gm;oNTUWbjsZ>hRWSV+paB=z0F?Ws=l%^XhBU`rD>dl+8`|4Ao_i4`^nX6f zcRnu!?(tJG=xAj+fo{4hbbnKi6KI_2V)tV3PB2T}3%XNCbjsfgm^y$2cB=x9@3T7V z6bkxY@t-yfaPJffIm>g8OfQW=LTB;J|+fA=q>0Qyz0io`7UmQ1cp8o>zc2{2-`u1uZ+r zHB_ZDcMT}1cMa5cL=^a)aW4*X0ZcIc8VVwweMg8uu^XuL#R{SHy|}~Kx&L4h;78d% k0v#Nxfg+dOKt7yMY5vod<2!WXV%!2)h^al$PYt;L2Q!1HvH$=8 diff --git a/tools/dmitool/src/main/java/dmitool/DMIException.java b/tools/dmitool/src/main/java/dmitool/DMIException.java index ecc9d2f062..e929316289 100644 --- a/tools/dmitool/src/main/java/dmitool/DMIException.java +++ b/tools/dmitool/src/main/java/dmitool/DMIException.java @@ -8,6 +8,9 @@ public class DMIException extends Exception { desc = descriptor; this.line = line; } + public DMIException(String what) { + super(what); + } public DMIException(String what, Exception cause) { super(what, cause); } diff --git a/tools/dmitool/src/main/java/dmitool/IconState.java b/tools/dmitool/src/main/java/dmitool/IconState.java index 568f7c5cea..82fdc86369 100644 --- a/tools/dmitool/src/main/java/dmitool/IconState.java +++ b/tools/dmitool/src/main/java/dmitool/IconState.java @@ -4,6 +4,9 @@ import java.util.Arrays; import ar.com.hjg.pngj.ImageInfo; import ar.com.hjg.pngj.ImageLineInt; import ar.com.hjg.pngj.PngWriter; +import ar.com.hjg.pngj.PngReader; +import ar.com.hjg.pngj.PngjInputException; +import java.io.InputStream; import java.io.OutputStream; public class IconState { @@ -144,4 +147,95 @@ public class IconState { } out.end(); } -} \ No newline at end of file + + public static IconState importFromPNG(DMI dmi, InputStream inS, String name) throws DMIException { + int w = dmi.w; + int h = dmi.h; + + PngReader in; + try { + in = new PngReader(inS); + } catch(PngjInputException pie) { + throw new DMIException("Bad file format!", pie); + } + int pxW = in.imgInfo.cols; + int pxH = in.imgInfo.rows; + int frames = pxW / w; + int dirs = pxH / h; + + // make sure the size is an integer multiple + if(frames * w != pxW || frames==0) throw new DMIException("Illegal image size!"); + if(dirs * h != pxH || dirs==0) throw new DMIException("Illegal image size!"); + + int[][] px = new int[pxH][]; + for(int i=0; i= 0) System.out.println("Loading " + f); - dmi = doDMILoad(f); + DMI dmi = doDMILoad(f); if(VERBOSITY >= 0) dmi.printInfo(); if(VERBOSITY >= 0) System.out.println("Saving " + f); dmi.writeDMI(new FileOutputStream(f), true); break; - case "merge": + } + case "merge": { if(argq.size() < 4) { System.out.println("Insufficient arguments for command!"); System.out.println(helpStr); @@ -145,7 +150,8 @@ public class Main { System.exit(0); } break; - case "extract": + } + case "extract": { if(argq.size() < 3) { System.out.println("Insufficient arguments for command!"); System.out.println(helpStr); @@ -155,7 +161,7 @@ public class Main { state = argq.pollFirst(), outFile = argq.pollFirst(); - dmi = doDMILoad(file); + DMI dmi = doDMILoad(file); if(VERBOSITY >= 0) dmi.printInfo(); IconState is = dmi.getIconState(state); @@ -231,7 +237,44 @@ public class Main { } is.dumpToPNG(new FileOutputStream(outFile), mDir, Mdir, mFrame, Mframe); break; - case "verify": + } + case "import": { + if(argq.size() < 3) { + System.out.println("Insufficient arguments for command!"); + System.out.println(helpStr); + return; + } + String dmiFile = argq.pollFirst(), + stateName = argq.pollFirst(), + pngFile = argq.pollFirst(); + + boolean noDup = false; + if(!argq.isEmpty()) { + switch(argq.pollFirst().toLowerCase()) { + case "nodup": + noDup = true; + break; + } + } + + if(VERBOSITY >= 0) System.out.println("Loading " + dmiFile); + DMI toImportTo = doDMILoad(dmiFile); + if(VERBOSITY >= 0) toImportTo.printInfo(); + //public static IconState importFromPNG(DMI dmi, InputStream inS, String name) throws DMIException { + IconState is = IconState.importFromPNG(toImportTo, new FileInputStream(pngFile), stateName); + + + if(!(noDup && toImportTo.setIconState(is))) { + toImportTo.addIconState(null, is); + } + + if(VERBOSITY >= 0) toImportTo.printInfo(); + + if(VERBOSITY >= 0) System.out.println("Saving " + dmiFile); + toImportTo.writeDMI(new FileOutputStream(dmiFile)); + break; + } + case "verify": { if(argq.size() < 1) { System.out.println("Insufficient arguments for command!"); System.out.println(helpStr); @@ -242,6 +285,7 @@ public class Main { DMI v = doDMILoad(vF); if(VERBOSITY >= 0) v.printInfo(); break; + } default: System.out.println("Command '" + op + "' not found!"); case "help":