From 4f73c9a0c367e7f6382ee2c50b8b8ba1cf34fcc2 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Mon, 17 Oct 2022 18:02:08 +0200 Subject: [PATCH] [platform] getting rid of [somewhat speedier but nevertheless problematic] Windows FS helper GitOrigin-RevId: 41b738ffb7c1fd3f4daf224782a9f2008a9d6b10 --- bin/win/aarch64/IdeaWin64a.dll | Bin 80384 -> 0 bytes bin/win/amd64/IdeaWin32.dll | Bin 74240 -> 0 bytes bin/win/amd64/IdeaWin64.dll | Bin 86016 -> 0 bytes .../tasks/resources/windows/class-report.txt | 2 - native/IdeaWin32/.gitignore | 3 - native/IdeaWin32/CMakeLists.txt | 40 --- native/IdeaWin32/IdeaWin32.c | 313 ------------------ native/IdeaWin32/IdeaWin32.h | 22 -- native/IdeaWin32/IdeaWin32.rc | 35 -- .../src/com/intellij/idea/StartupUtil.kt | 4 - .../openapi/util/io/FileSystemUtil.java | 41 --- .../openapi/util/io/win32/FileInfo.java | 62 ---- .../openapi/util/io/win32/IdeaWin32.java | 134 -------- .../util/loader/NativeLibraryLoader.java | 30 -- .../util/io/FileAttributesReadingTest.java | 4 +- 15 files changed, 2 insertions(+), 688 deletions(-) delete mode 100644 bin/win/aarch64/IdeaWin64a.dll delete mode 100644 bin/win/amd64/IdeaWin32.dll delete mode 100644 bin/win/amd64/IdeaWin64.dll delete mode 100644 native/IdeaWin32/.gitignore delete mode 100644 native/IdeaWin32/CMakeLists.txt delete mode 100644 native/IdeaWin32/IdeaWin32.c delete mode 100644 native/IdeaWin32/IdeaWin32.h delete mode 100644 native/IdeaWin32/IdeaWin32.rc delete mode 100644 platform/util/src/com/intellij/openapi/util/io/win32/FileInfo.java delete mode 100644 platform/util/src/com/intellij/openapi/util/io/win32/IdeaWin32.java delete mode 100644 platform/util/src/com/intellij/util/loader/NativeLibraryLoader.java diff --git a/bin/win/aarch64/IdeaWin64a.dll b/bin/win/aarch64/IdeaWin64a.dll deleted file mode 100644 index f4ee553b05a54f2292d49ec5b67bc9c29642529d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80384 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 diff --git a/bin/win/amd64/IdeaWin32.dll b/bin/win/amd64/IdeaWin32.dll deleted file mode 100644 index ae77ff9b23095ecabd1f7dd62d26072b5d26b626..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74240 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%0A*TPInyYH;T@A?Qt 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 yUOMPEn^DkbX-8|-f%ZzUO06Mivt($s#b) diff --git a/bin/win/amd64/IdeaWin64.dll b/bin/win/amd64/IdeaWin64.dll deleted file mode 100644 index 62c674fab5222cce3839739a2df4a1dbcc30799d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86016 zcmeFadwi2c_CKC92@P$-6E1-wAQ6LB>!lje)_~@LM4m{hMZB;Iid*dBirQ@xKm}}l zS|p6ox?XqHU0huk_oA%2a`Vy)wuN%XOA!|r57t$z;XHFifVk_@;k;@%O*}(*^XPvFit!-Wa&` zw6*5&*3+(?cYCF~yyEVkRor@~yY$w(?z%hT{^@P*is)VL+wXD*uAbq(^X|E~o#$|5 zd6Gqcd0)jhubeXat<;B4JO0+22=i&j-r6p{o8Ec}-+%b&BX9jhq#N_r5qyuTIsVqG z;=5jazo4~Z1e~JQs1W4z!LHB&tjT`fXtNo`uDJmsXEVWx(=z^&o`U$D07|J zSu^TnWlO8q^SuQ|NQuWo=j$1TSO7)*l>J%@ZIm9-(;#k zuUsY+eMDbPSx9i{zoqk^S5a9}3Y4G;Xk!|HK;XyH-8TPjBos6Ptwg#j|1I5Q_^ zeuM&AY?deYI`w+>22DTU)|ffWj<9PzbAs&Kpm&qT_84_@z}jeUTqFl*IVk81p~Tp%o3GGQIDo6)TL zx);B#F_fb*6s$3eEXfdfjm`3uXzV>r-{@9vQE#5zv}KEI@AWsR*Q&DB)dyChD2>@J z#7xq>8?{)C=V=jB<1v8`f~-i>w;Nh4;3-j=I;@y=0`vpS)!3H+0|3$SZ^LY^$Dc%v zrg$wD_RI`ZyHsWUzp@nl8Wg9pkcTylhp<>ViT*@#t3QMMTv^>qev`-^j; z-)r${=Jhm%HOn?`&nCilVGyF3-ulj8paLyE1EU2Jzo)TQJ_-{_i(hXJ#dB^hjt9>P zvu!++;?RMa7)q+Yz`H9LS2IIwTT8%0QYQo7ZZzCvxK4kE(za`Qj}f_1i-QGFs^R+L zZIcNDe>n?y7O}7=62M^1A?mOi549LH@~0_>xGIVxqAKgZ$%e%(2m(Nd;Qyw?O`u>k?rA`<2b zergp751cRzpu)`7JsCW}c8e5#^h?Ha#0J^+6k=W)@evTkY)cAJo<=ka#I}k%^nS0!Fr84 zH@Xq@)@!BhA(pAJ4?}FbQI{wBhOyoo84V^dw0MqIrWehM4%GC{3~)^JTi~K@WGSYJ zCUX@a7fRAM7EnWOx%s9hgktkO<^JwZY4G#H2)K(!eWmLE$Oy;BuXxvFdWR%FrnY`G zBRaH9)t6>m8a)@ddx2wJiE#_uh`el8bfmz|iVgI1DH6-3k{XQxHfYQ%)t4jOyb%Rf9$987E< z86A!XXrhYQ_vCt-eNhF|hhK@dVdj5IlmxHDT^C?Fq0w6G&mNA_j1n*xNol3#b)*4h z3bfc8o_e5^^&MH2YI0IzB2GoIVxpfVYOy02j)x)isWn6q;u|-wJ3_4zGG{s!Cq@=P z01E@)2*8rqLsAUXc&cQj;W9)$1o-3KI~;$!2Oy_Jrmc(MQ8P zJBLQ3dLt3=mYb6D-=18n_GocO4s;R2b^SV|in~4)!w9K$h72n}f^=HU_Q7Q&7%YND zk|TdfO=LsEamPrc0*9R;67N8IELUBqPhv+%>@b0)RSu;+g3?ln;tm_3Vzvil6)34k zG=tI_b)ulS<1<77^Ce+owp(OUxfsech@CECXJOc|-rbVqA^!{^IjRo`f-qYcOG|Q< zt0EFHGx~idiVd;$F#8rA3@4}DOW;IxwHX5naT|`k=y@9H`TU~>mZT2BCX2-)axE%k ztzmFc9TFI>v#~UXNhb6dQ6S<0G#=jJk><0u#}>L~Ns4gpYVmLUmZJ1KSqV)qj; zh!W31=tG1eWxm7Fu@)mh5(Epu2dD~Kh?`G1Ospz&l%Eje6`oAjpLi{cU6Z}3A#0J09XpUUMn?^3m$OI#)MJV zl2j+L{DLTB8zfH_-;ErdcTg&1FGm2{AI<-Wryvl&BGbDorAmZjZ+Yeb-=|XS_#5@H zhd4>8afl+G6ayFe#3PpI>GoPLRREsDT!a7!81{GN;7y# zvRZ&hx`QON>w9b=7_a?GsaZjNsNJj7R0GhD+ZUXP39=MCo$6j2-v|u)HYi>`VC^ix zWw9wai8J)$)&-}P>AqRfQDypl8MC6p@MXOm{HfnJVAfh%DV0E1G0X92rOo+YYw=-I z&;X1()Lzm?XsLtf_G`ZOh#hmE{|e0)ja&T&VUs;%k^~8;!dPdv@k*o$gI9=j#4AK% zEG}VyG+4wNVran|ZVFd#q_KyV(X^!)oyhgpHz{k(Wmq|el=(8E4oz>!(DcTPkkK0b zCosyIto(+iE&ds#-+T8K*KUdq(&V3AQMb1~aXvzk5nAo8$Phx>%3>oEoQfU|h`$99 zy@B>}v0VNIddZqdI^EP1W_!YHS4i(QqN9uR+f`+asccHjYAKHUGpI4=hm6h9&O}}~ zzhR29#+qBE#(=v?;Ie>=*h0pp=oeI@6}VBwwY!wsyGY}sBD2e4v!%ry)~8asD9Ck~gBGiVzWTaVtfk9ohT{wHjJ#410iOouSgEE7>ro z#-=!#X4fp!?A@wGiR376susPYOM5zOX$^Z()h5w`P8aG!EvbL~_76VCS>w#6=wPj( z!C7{=!7!p32b;8pP0r3JNU|l2g*aFA8w-Yh#2j71|AC&N%e1Yy1kA|)j;#iT`2ipj zoxB)?H(cJ=K+u?N@l9qEUo%p`tC5`FF_=={lgZD(b|}%tjbRjCG?u?MLIA_Pn|Ssh zQDU}Xiy}+s7BrrhB3)v0?XKuG%ytW6A&efr7lUiG#%xz3T;w`y68d4|?|`;Egu+SZ zb@F`Vla}PlU{m! zEMk&-3_B`>3}KE4rOl?atPN~4+`EephKg^vru`(0^9i2i+39%mbF*cV(X&c`Sl7v}{*r3qn77K60Q%ECvODEP28c_|3 zacrhL9P{VKN}O6uv(w%I+*T4|UBpV?uE!XeVkK+QaiwUC=VB0vhHe*P<5LX1$Gi|s zY1;^{CH~K1yNw-e2S(kE89pM+n#D@T51}K;XgTy!A4*~`{vOyK%A_APM=t_5K&@!@ z?jnJ83UKMbUxeanyFOK03SsQP=EbHTwL~vTS6Pj;hucSOI(<9q#kSFn%?-1SPUdu` zlA*PtV%Cz#Aa(Rv&vNt(G%BG@4fbF}9}uQISBoujU#G=aX;5jfB(4TKpuqgG$tAIN zCB|C?{l8;-AX6eX-hLWZgt?vqsET3FMc!TN+Q(5e--Bq9+yz>^cn2xAZY>@ZKptZirR7L+rl15c^!(JRH|uWHw=IHOm9un(smP zBc5DhFmO;Oq}Rnjt85Rr4I4|t^@mqrDqWIZ+$)81bf6Zu9X{1;N?1Y4VU$SrQA{0di?aKr z+n!DrE9BqNSjWe#K^*nXs>NqIv3)xqt$>UcGfS5`w5U(WaxgK~r>Dwsiu%HF*T69( z`iog(AbzD?_1Pom8;!-52CcLan#;KrU&Yn0^q#>B2dpI_-&EZ|s^D5$67}9es&Yj` z6H=-y&}b#OFUBY}^&$Idof(7OTzqnecKBP(*Ho$Sc_^U81c?TjugJci+@G11SVe!r)slm1LUn&nKA%dJLEb zo47O44BiaEPRv+{b`A1kU@;}ZhV|fh+i#EnbNeuT#ccD?$fRk>HXl(fw#kU0YFlg* z0a069Y*!>9sny<5j{+T+QO*{tnQHEfXO8YusNk^Gor=V^$Fh$EWjo{HZRg z12Pp|P0^%bR~J1>(K#}84Pp`ts*4`$7gtMhKdml`_ltXg;;yPLdZb_6GK#yjx(Mq} zx;&~OaYl8~-!l5*P>v}vq`K%0ip!GqqTMF;7`1nu9e-3~M@;l0kwrveAuD3En4n2# zI|h%|6S3;f2WOFC7o&-t_S(|QJ3D->(M;Cb=@H4Wj?)O7MKp!bm1{XBgT_LIG^1_& zEv$kXo2JRoD>5`whE~eZJQ@0>43*1JjSMZ4p#>tus?c~Dahr@-NfB||Seo;`R#aDv z_;*SEK*~Le1*J}740{@4TC788(daH?U~~lX{0WSpLEkN)j05;EWUND`FqEEkBp&!R zGW&*l$_`19Plm7CPotV9eGTClIR&MBPmImVAPLp&OhaipIO;!i?JWDX}HF)g54{SILgAy3K~1;t6`cGUH5KcQ(De9lh-g_<#EYYxiNbSQW+OCpo+KL|$IOPk6nipQSer1gZ>U?JZ%c7!-0ZoB7?NEWMJ ziL&%tou(FbG}y+}QccT#6EH!-C%rV;~Si!WIUXL8$3;N;_8fBSdI>3|qkfJqc%XeT= z1~G1ij2j63jK86foG%-J;ln||R6$B9+ogOaBEz8S2p|Q~vmNOXb1E4u+xR|=r{QwG zgbF1+#li-n(upQ5Y_xS0IskKIP#s{A96k$W=#FoPLxo3*yv{>dHe?&I$rP(V-1WuF zv}zfyW4{;mjUpB=#Lk}L4cEnprG{Bya@&!tCAEgJJ^WR)iVh&wAlXT4G^G495VM9W zN(HbnPeP^&ll5NA0+vk^E1U29mc)LOJ^B?=L_~@<{uV{DF|#SCkEbs*pntAs`scbh znQNKIpM~wfIo2-k0rlHoKN+G*E@?brGHdc@Pe7JG3?dy_ptB5 zU71<~OhUfRnlkn8#7M)*#t)9p06!ben%-j9dak)U8z758-+8Nkz#pWYXn=K! z^gIK3>!1go3&l&R$pr0MY(J*}1|hI~!Yu${j;sBc#)LV}nMTuX!0#x~McWRnUQll^ ziwQeGVEOYD=n1w_c6$@y5UZd1SnbC~I=M?u-jVXrf z_o9e)!vB)MSf+t<4aY0+3@}{FB@*E$MR*ayVc+LbTNo?ex-k2k2%4v{gY+%z>7wRj zixN+PA+IB*h&#^17av25SX}Z++%bisvJh2=L-L3sX|xSALNIzpi%mI4l13u_287DC zatHRX_%>X_&=wd0X3+^##Ip!oK=sc$o(SZEcMMP)6j-IS&21C2oJ)|{$a3#(SBg`WGDtA)T6Wo03@B(VI} zux7zYQkY0-i=d#yTeK%GFApM33^_js4$>}3pXH&6^JbwExX)#Hd-P%`+jT{z4c@< zsYiohF@d$D64sLY3W`~2A*?2H%B1(>LXJtLEk5bXJhSN?Kk{j8EJ@l+w75>3ofxCv zmt%@#5z!6TThCE~Oi0a{DduRe*az9d8#_rII1>UMGTGP`U7M82DNCNT0m3?k(;=#} zK%aCOot;H(T*qwJ;*;hPr--8u+9rO~Y`YPY19EAmsB_Fnq}F1ShM=9)K3kQ~6opaa zQ`!(~bhw416LH3kqsRbGpsJ}arL>z_2MW=@v6}DO%AaVZVc2@0VpU#+!wT3Qc2)$j z1?5X<8bg?Y#1q1CE5E(czm2e~9|b8yi~x)qV1$DCsJ8SGQ4eg=4m)+n{bOf#4c9x}tRj1b7_{i@10 zE;`s-U;CB+&2h@(_3)EnJaLI?44|D#<_gR5On8GRZ+Z!_jq7qnAMyh{kp7zP$f(+{ zqOba^PPiij@ONPJ1uA1;^HjrxmDXtUc7w1=%|5iD%I79B4~*K7HSw*8Z$^AERT_$2 zPHj^St4Ek#y_*u0%xI|c&5EFmanT7io1@n@9n5zoMp%~Vl$fiN6?M5$H*Urv_ z)4;ACcA4hPS?B^$RF z5?x2WBoPu>zzje`n4dr2B|)k zvc`l?G#dsnjoiyx`4f3U8JsI7V=4Sk+G)0|L7_v*4vg}K{*$KbcngAEQo>a`09o=2E?u{#wmL6`;I zT0@5$(N4_^*c-%mLu#fY{pkpJ`)Yv&u>tG$cxnQAr)h^_0kNGbTC~wU8+0T4`N{K? zju-rfs~1fPdf{Y6q9LV{wPT$wh`=`6lmW;KAFLE~KrTS}?etxs?K}#18t<+EoYtW2 zBMSaTkbs8kMii@+a&YT(8b@OQb-#$)wELp@8t;*WVps6D;Dr<_;c}T zU*K$zp>^1p-#|sO<^&K3g%FZs2?m-Eb|z^z&$5%gZkm_P2pk^_noaT-&HAGRN_ADhr3kb zV8=(DvnBpb!eg=An1^}|*T0_ZI~2odXmX!uTZGMlcP|bL&qvM#a+3Cj7B8aQgQ@HA zdop(DJ@-P6Mlx7a%oaozFyn8VQb)JRy<^-l6r*LhWt0GE#z+&`D`j3?=AD?%d!fLdb5gyh zrm>?1c96tADD#@q*Z~6D1@#vdR!i*uj1)DxU@0+NyCgPQ@5VItV}X4`VwcFgFQu_t z1olaZy<1|Jr?D>y>>`Q1Rbqdh#y%~uH%jabi4CW*4+!i;i498Zd1>r?fjw1Xr%J3d zjlEuAO%kh0>~~PdB%S>NyZ=!^4X?z$pT?doup1@zT#0=%jU6ViFG=iJiG4baJ#i^f zayenWwrYxwyH24*Vtl#4{#;^92^+J0f;iGoNXS8;J%J{tJ`EUyeqkdcP8peNAZmZ+b8FrKAl#KIVnbQAvE#v-nEDmTjRGk&IqRa}~^FL`zWa zmVRf$Fi+km^F{tA`A#11lWbYV>{fd*D+;ln6c*sGC0#dH+_hPFURa9ko+H#}>|{FFxwT&H{`_V2(L50_YsE zzJ=hjXxRwwi26lKmPV?VnCR#!ng?U$$8h8@MNZY?j-7zGb-3774@&93hHE{dS@@_^ z9i9w(TYFO3n>XkI1}k3;}avWIY3X; z*cDoUa{Sd?Y}trIJEMgS^&L?jxDzcEM+jkZ48%qsPMLRLgI@_axycuva9g(M;~$0D zAmw@8=MM!xHRVnCsr5LO2WBCGvVQy_5A^@aK{vqq${Itg_23_GN!%G)XHNbLDX;EC zs%=P>p*-*`5lQdySDdOH-lKn(85sbNwoq(n$kJBKT0?rr<)Mbo0ny84AQJ&gWN=wo zSzVnL8;m1fJGr?X!VzvHYx!W!Xdt(|?htEgQpQ%HXcHyHe@YyiZpR012@QUHx8u`+ z%=qH?bm7wzZBIOf4D>H`U!+V^?rJPk=G1pLD3RgHU>scIFuy|)r_1@RSH%M+_$;=f zU73*!6XrVQEVFW!>eQ+msCs}a@mY;}@Kuk`4tzTB>56`U&fPDwS|h_!^&vkMEqa9n zN@Rel3=Y`4s7oi)5T4b)-C!6~SWR^_0K<``HH7~R`_<33A>4+~C-}7B(}mAJ@Y#dU zMtp2Rlj%6V58<;Np9A=OhR+B1)Z^2y{~*h^vFW{KvFXQ`Psgq^HvRj=cli5VZ2A#I zo}ie6vFS&X$V0K|$0({hg*%)?^k98S>XvlO>v$h$m9W<_2q%o46DtT!+DN86&?3(y zT2N@e?06YT`^%CmQkL^+pJcp@P4y8y~#-)PKBf_RjEpWPgB(KQ#>P|C=*@%)cyhk7~|%OmE; zOe3ffY#LS%oMY)eb94awNLC`Pb5CAT%srL*!1JIj7ovt6pe|&ca!;Z26|haJ`7wxcPk=MMfp?pO2zq zSO=8`{z|5Jv0sX7M~f6xD1WG5e3gLpRKKTEWs^}9S!J~9&J&b=mQ3$N)VozwMgDfK z$v6y~2o}j86~oV!F!dh8@-qxJxj&quuOmWG%P*2`p#6<-IM*Z5vOy zil%na(XT>X8bY0R@SVG<(}VaX`qu9U^>M6rwU|^{l)}be6&P6J^%ghHz1K+L{DBTg zQ>$|s5`uTgw*U%qLJWCt#<*jH1PHXkG^#Dwf zK|Cn%Pg5|FFWn8k!~LE*EiT*;H0F8+GKil6Jc^MC8sP0nwnKY-nwzivj4J5omrXJ- z?Oy=~pF$&XnZ`zHzKZ@1F19sjEsq@39{`e1|2v9}O~IN_ zS5N(lfgP5w70@*3L9Um=##6+NZO0GGPsW>wZD)&RqB*`Y$EkF69z~dBN zE##o6kN<@WUD1!8hz@D7{S+{D%y7L?i;;5aM~_E`wb-Vmqn|)DY}O<6qsO8{$hXej zVmmj9Wizc+kgr1Mz(k`zPaQihD)&p<(~qoMTKp%u@Oyq6yEu$|8*WOVVRz#&i3IM_ z94&T*Rf{d78x8Ad`YCJb%MSht>*j&uNS}XVg>~$5GJ4Z&I;h1T#u95w>T87RHJUn7}_~Q>`%Z6^Ppk<>FW}UQ72p;G-+_dmICalbi?L7_qq? zzX=&M_7qVE@o;kqmZM7rLb;~{pz;7~f}s>vO&-8X{G(ZF%h7?8bE#`hC^4Ba8yUkW zI2?zm9bkTo7JouqK8asFGMvA?JHs5wsv782R|M?;N;tYRG9u2Zfo=o`{%d(PQ7Mtx zEWTmwhsxO~E~aiuTu#oeSC53h$8X`K=+=8iF0`YV_+)n?N2Smplmc(qACzG<5`}kH zV5f|OUmBt8s2ZqfI-q4$$Zv>an0CwRjin&v&s(Sw{=26zy9#&6|>C93+yJaqyyb}}8djp{P8qr)Lc=F(!2a-*~Hty`%M+g(Vg#U2!S znQe{;!G%Gr@+eBy@EP4jOUbu(s5(g>GNGZ6fjDi0Po3eHyT$eU0@h16#(7se<>}(N zn8zCX4b=vRpW%>Z0oLW4V#Q@Tkbhks29vM;hSIdtX$+XQ74aHdCfnB*zrl)OSgc?( zI@qi@HK#H-t<|H=Wt;R-u93j>-e92koeZKhaL*++!0K0?xI$xtL&5g3^} zd3lYwToVaCqciqugSdRja2(dJs2NETh*DIAkfJ4lqhQAzEH*g*g6otS+827~xC$|{ zch9y_@5a!2gx;a~ZE(a)gJ3R* z^Qj1qabQ0xp<`4!tiuIwq1)jIX}-rT-a?QEt$wg*{?{M|$u|-l>|_2Z6mM@g4GZpu zp|Y#7Ja+~_Fp8<;81bADDe@Oqm?Q8XxYrDcni24|EF42O2ymd9t63V<{2n!)b9t5B8nU#6^0(t{ z1jrkI;e}BMttqFh!#p%q+3hJLn`W)Yr%LUb}Q=G!8U+YB{J3 z|9RUo0Tz*oP} z6NDR@D%rDg1bjh)7I@qQPRXSNLCZ%-v!EkIg8C4w48@kiq5N;6e+HogXm<5CqWfp* z-&nC({KgS+7~7-h`Gn^lls%vD5CQ13U&nNsGKsbMIa-1-PIn&}3PhT%r=YY~v z7Q=9aGD7(uMX?Ws?{1G+%!MB&gf&!I++mSc8b7Qw8YH!F!@zq8B=ewit;3L*_<5r+ zYkFW5lfkhFf;Y$LlXm1_&O;%?lreEX{>Z)M#ejr5wgnc2bJ0k;tAQ2PjxlWv>Ge)| zQDa2K0bGS7*is*2fd;!g%Z45>--C&Qqe%G%L-hf1os!uy5-3-`7vcwF!gK#w$Xh!9 zY!|ZhS76@wRTjSV6wzL#W=t~TPDIdb(kGotEmmr19#k9DY^A0Yuogep1&sRcFmxF5 zD3>hSY^%yX;xCV+1(-zS1|$SiP!ZA>q%1aJBv>lMKE(a?#h8Wh`~QV%Mxp=(1(0tO zWGwPi?z51a!tWuhK|9fVCN6*xa~pqyBI3nwA=f~vHlCxZg3wUvL;20x&K@nl2Ywzr z@gDqoP!cgN5`O_VfARLpR=y-x)#dFGEr4*9Xj=_6XnHOjSI`n^6B7;`@hfwAgRot-VvZQDqD7#8 z%y#2x;DMNJ8ht_Qu|Z@f(BISLE=t7l>E97gbyly?cXQlZX zHD&S+&9X!D?Wh<`Q^Wi(Oz*uQQS=nhWiMVLacjO0D?)_(2lWfYo2WGy7A-y+Qv|MU zH&E@+H_#N^^TxXwA`Cq43b-zn$Qc6p36;n<2rC49EKXXs$z~)aVNwqA1Z@U!6|(+t zyFo`+I3w>HXYvvlc#dVC0bL@F~Q%B?Fo9n3Y<3IGtX;4kD3GRW2gRQhElT;Z37Vb zDg7y?KQr|&Es+`emsYIQUk->2$Gz|gJk*-fgm?v}cEV5k64lHcCm=05Vell$nIWTa zzG6z;hwzsGkmPd;-@$hXg`M0?qT+hg9gs17*RaB+HvJxxspuzG*mB664dK$zVbv^+ zFdJ3ylY*5tN|u2+9sdQ6iY`mIQQ4icvNC)L?TPwnxXzCf_x6A_&EigOH(Cnst7w)Q zzuLl|gNC;SzF2nLrrZiA!aDUWC#0NyG<%^}RbKd{^4u_cWfgT!xWMQy5e&2)SEQG% z1_+gIUW*a^i{7V~)b80fN-@<^q{ zCW#E~VCpB4n1|j)1N8ARz;f#Loma#i7g067Jr#cJUDuL{!`Hs>B3c>N{^^h6-`QIJ zPVMlQTEh_-p*Cv`otJBt&0u{#8Dddce@CuDa_T0$tu##>x6)zx&nig_q|Ze@)_aF7 z8A^Eu{V>m!={#PU2P(qz-%v9)SHQv6HeNKTbz#1;{uihze{;Wf9q#}{;mPj99r6AOV&oL>Bh-HXPnB<1<)7xEW+{5tR@ z9VU1;byk4=(=>x5c95B#E^$Uj2bP=p9ZiOjdQjuBMogTf5f6_<6z8|9D@;?CTg@S( z9*&`KGu@0!M|dM)(DK3jLdrOf*y=qv;ck`;p8VTy{^0oU@E+~uOyVDZnukBh%JYXf{#{5>N6_KLqfsk4dHI|+0i zq4#zyTr8w17BEc-_JZ+m`yM<5Pg%UPa}eI&m<=XA9%`oC8jOP4g+zWN63&B$>+QRd zUU(Nq&ndEvz$}7SE;cKt;eZOG>PY;Fe~C9SadAiMa7uiZ-0F|DwccL|Db3R=MUw~H<+xSh?zO(;}_HhT0LOF}v1rgrL z#~_SbjUVts^-07{5@8hx>h^}z-06Sr==5#^GaJh9T5P|@G=@qD^Y}x6Fi&9Q*~|6> zSY!3UyCS#E53tQD3_#Ugx8HSJsQSC9x7`(GJdoXl)3QKzqpCdKs8%0Tqmg-P^|!a( z6}df_y{G!yQnfe`$ll{u9&h$;Qhpbp@>)S!DvBWEEoE|A%&$H& zXF!H2a(eZVa{3-s-MG5<7@py9FT{NpY{Nv$H06bzmBRweHW+3kRc|#1aK{~BA`@}P zv7r%u;cE3~CZ$VJt9wn#9Mj@#B*d=S_IKdd(!BBU#p9?|>}bsDq4k9trL6yaU?nBZ zK+@Nc6fYcpKCH5&#TJFdMH1+4K(t>b)Tqh{^fkKjycXLG#M9ol#a0Yx5Fmedi#q}f zd=bL1ZUW;4bRHm*FK+T3$|E6D03OsgI$`gjGb8Gwc)NwB3k&6HK8FX{uuh!2j)r#{ z6k5kAGG>&F$wQ1&#tf7(FnBr!$e6=xMXo}`9Q#U?^A8#0N6dFJX19#d5W{6mgN&Jn zm~I*Ks*EW|%mEqmoQzq7nEf(_i5ONzUGzCVkdX^yBy27e*(xJ%m63Haa)XQvQ>0j+ zpqE0bmi5tLAhOzIsxw4ZI)!l@Js>(XOvX47^R0}@kTEk6bEeGIwMLL(4r0d0n0*u@ zmqVg^7Y47dzL1^2BXc!2riIt0l^*#lNpoeO4v_uj)Y;}#rdy< zO9(#nH$jJa1ak?O6a0yU7ZJQe!c_!sl<;zb*GjmK;6F=v4#6uWyprI@CA^B@^ z@L~zmionYyTu<;^3AYkFQ^HRZ9G377g8dS1C-@=>cMzN>VNUR933n0flyDEhRtb~9 z;yrJOzS{{tAYmuL9TLtZ_7Pron!$#o_qnYglm2mGPV4%-5m=%+x_EFXu=yQYd@=fr4dSycnOn9%^&HBlbQ9s={Q!@)7SrGVj&ynp z{0#8KUj%i_7K>9&G&(@7mQ8kDi3Y>qSo0IGVVK=!It^DuH2iVHw1U@pp%1C-1Mb0& zSS#(Kgat^buA>G9Yda$sv*L1+#ittJ1*Xo5&VjCm%X%C1yDn_jx~hw45TZ7I)?d+%_|<(8xrl)2l@;4H?^eE_ z&}5TK_}_8*t)|HT5O<7LU8TH8yny3Lt!2yHSIfgJ?w*Hm4x#EoL17_T@?QX?A&X5{&|}F^4dhXd1my zirmC+VjAs33zsfTkN*AeQeF7t{F0hF7yKulv4E?@3?l0*_~7|8znHO;N%D)*k6*AY z|5Pv+O(XG+8dUybOFb|8z(Ak2LlC5%Y&LlV%6Md}fSy;9NU7q{48Ic~3)*sHZ_gOlBH$ zVt_gX@d%k1_w!-*#JJB)j(bUR+)pwV&ABD%cN3)T5xsXU}EEpH?ns{2b2Y4gA-dr*jdvHm6KyubLxdkvAgc1L{3V? zccCP?zg~s?^rUqQjYOA~dMPY0P#JzGIH_C^VES zC{&&y^FlNU=aN{;$dBo|euu=gZVlK$b4DBz;|2d-Jcq$}nC&-Qx6OfA0%LUXskFB) zn)JzGn%rITC?4jlb8yT{N4qA-FT=I$R+J+|U-VqVWkP1X=LV&gv=O8=AuZWN@T}(S zbV8-3QD9w1mQr5qfA6^k015n;2|;%EPbntu;xYw{Zr7s~hO3043IDFdx2N%!34B2c z|67UQk;b1P@Xi$eega}PH)2U@yXibD)tbc3$x3dNi4MYuYq)|4AmtdkOFK|J>iPmY zOD{Z}L2m=fwT6OtX3w!oWEqDnYq4=KbwWU)-Hw+Lt-uCSJ zHT4jo%VhGyjUar#scWx8 zSYum%mEVY2S=vs9RSRCj9QGl{9WvsKq4(J0l}5r6zt8MDv9t}Hq}!>u1znG)0pS@c zti1hh1kq1kK+UA9#_=+Ueq0S1sXeVt`T|u}Dwswg90sEtW^E8ury0FvOPGBU zirr)n#VUot6U(vdQL=f6M}h`!tv?ArycTmIf_lm<|@F51_$j* zoXew9eS_>~t;vL99T#Gpk_sVixYo@kTFjz5wh?jbwFC=w^30R%p{ov4!ucQL)!&?< zarNCY^7*os=?!j3;34tJ>4-*m2u>XETaILvLCD+6e48V1)oBbUYc>TSui=E6v~I%I zpT6&qdUqK2IhL)XHs$ZE#4F{E~6?_>69Tt=NaVofEA^?!5VSM zD65FE%BvAJrFIWEKn5&iP_|}iB7wO1(Spus2gKU2EIb07uoN@AMdDbp zLf(+5i((`!4MxZN0NU~S9G`FSu`V!~9QcgI=R$n0!e=Hvci?kBKF{Lw7kpaq*^keF zg(wJBX>cb|muEP``>~S)pV#RF;-33~?tHru8c=lq`)=ax1khcBM7dDU^w{HqLZE(~a=&QP zN%w1LJj3kTEF8QxxZ&>B5vKb%ERfYju|48~j@pIDp6L4+>#?2R!JilxhT!A$8Q2rI za`1w^6Fh-q3$T+jF-CFbP{>{NS(oBOIk-OqNdf1Krf`0}B*4qe9y zA*nS>afY+{-Q1}{d>s|Bk`T!|JS!2onj-5dl5X?VBW4H1bWluJ^e4u1S*utgb+ z^^tHj=zi*c6YeS!qOSpKzHU8sNt7*8tU4i;kV zVKz(_r{ZCn!QwvD*u=wfY;BO0q6-*aWONeA#PE)iAq+8V5F?CX8;qhFiu0RNgF6qG zs1go&ehFGSm9qv4PN4DWzy*jZ&uM> z6@7(D{I}ulH@*;O$@XG+iB1Zx=qXMbylga#=#|ttY5jKb_3$`JDwUuAK`5083sXl6 z%~GyidhZEbllY}bhwZy5F&WzGc|J#;ffeiwaZ|<>!E69Y=(!`jdZgX4X(mRiQF$j| zx9c5#oW0CQXXlGijj(%Tq3b*26lW}Cndy8Bb%?iqvDDaTrF9>kl56rqqr#P_Hm+i9 zaP+YY;+=dfl8YuCZJxBJapM=D$lGg=$1*V^dih~B*A77rJ3~?aJ$S5n>AAdz+%(t> zs6JQ``Hfgvd@WIhP06jPzemwKj>q8XlBrM2b>q4)Iqd7Db`!&Xn~sZOnA83JZg4~a zorV+}&@9~!=?|0o`K^Kg`_|j-HR4y9`JdrVSLfZU>RSz@cKgOW1MBsYrQy<}P~RT} zjOXHEgxM9D+dVl~kKBxYU$ zNS^kSUX$)8IWQHVV^^E`?pCxiev3u+>ODB&Eh*JX;mU9OD>>w`9QbT(iiAbuoxCWU zwiI|aN4x>$(T@&Wd;yX!OC`k-G2WZJmNGhiAtS%#?v*rdwp%Hzd%8?`)8|py^eeEb zk!|+VFp&y|$BX>ZzbZb-*n}KKlQ_O2$=fU*YA(HtgnPM&=CjDJBxZXLu)NK35CcV; zoHz+iDJ*^Z3ObJGc87VwM2liCuE@bvA)LRXSed;0wlEt#9%celv2Sv z?VI%cQB1=n^n*n(Ff<&sL9hKMEJj$Yv^%7ddX}U6mDD?f!7mk8!kTnMVvF{@`v#y+n~1@$hZ_4Src}q z(KLep<^{Pk6^tWPU~&*8UU4S-m3}u02lx2-G+aNVYb?3Eo^rZj=S~;a2^UB7bWzkd zX2TKm5_j03gB*nu7kW9~BzqaYqlbEVY%;o8D7twC*g7A#4yl{RCU*x4(a*u+XY4+t zd4w`q4<7rc`ebi-P*x4^d?Z)}3gKGOD1LsjK~ME1tp8oQcjT&_bo>%7u%eG{xfPdF z9+y+<@ygIzKYU>ME+`IUFk-fO^&mIx&T9+cMuKPhf(%O(=+H}V&A|fmiOLQIlP0UX zu;U>khMPZ+ssk}MA1GQg9KGNd%GPv-C=oHhc5HP!_ae~HYa<2##Wl>i&EY%v%;1W- zjzaQ1nixrf~iZRo{Mu*GeQs6uAN4`2jr_9{H93`xqfA@9kzb1u9u&|mTvEUGSq zl*9%Vei|AkoFDmcLX2kTG=x~#f$ivZ(~*+=XKOx%EQO~Aw&TH?FO-^12pX>QfDW+} z*x$_a)+=jT%K!!NnG+=Y^Z=aA1{kOGwJ)Hi6$<^R*G!P)!;j%~)0+jCN7yTn9*v?V zuwjkCqJXO;G8WffT;b(m&z;Kyp83HT;#4{=fI5GzXMQ52yt9dCfT6G;T@(VH^IJmr zF*JBND-XYpifH#9NM?ZRtsS!hLQSdJLpWR}7%lJg3o(O~{9mA@NU)aZffs@3u{-oc zL({OdkZBdc`Kl0V@)vk))EHpgD9>>H^D5C(qEk85ktFChduUgScZ`UlAUHK%WAhJPz%p&V6^3m(38^Q7rmEHJ}D?s`QY#Zm(ESUYI$nTWNe(670q5gLN(q4%ZM9w4dRJ8ShkI!aLC@K#cL@qw4VURQ_?Ar zUoS=+jR6DE$d-sf#oaMc4{@O3x&`zg2HFq3!b19iEQvhNOYxg=8rq_|VTIHDFth=c*8_?ma=Bg;&!5X=f`ik!8QM>vt7XT>+H`y?Cb0V>g*2S zMgQi3rBuPPLT!x~SK*QEzM(t+t6UUxL$u^wVAZBeZnuep7T9FB64}CHj$H8%B0Z z;tHYgUdm@4q!Qb3;MOeG>^5HUo!HJ?f&sxABORLs64s1%LE9e<_xsM9~q$EnrljQ@n7TU z3EFQPCoZLhxs9LxA>7*VE>hpK|0$)n-*-R#H-9H~%=U_LwA&vBe?;@8)~qOg)0JLA zL0t6fdcECfs>2f|8IenHJg)gr!c7`}8AJ17n;s1V z#JM&$z|lzn;T09g%8i~!HWqrOWGl9~V^em5XHxmGPnU1Ad<}GFLZ@K*!*T{|N~@-9 z!kM_Nz29C&?%5%}Kx91;I`_bvv}piHG&Yz8q8ZBKf$*z73$GjLF5J zoD&ZtL(z~AT)YPRxDoK>$doU>O&p(d7;Ql+oQ`}xHRU%5k{8I$CDsMMR4!9{+Voo; zP=@dJIbMOGrSfN5Dc0TzM|KjA_fXTI7R%;YPjm;c-HinBK1r?-nWRse0r_i=o(Y~B zj+=7XpxY>MohOmA?t8Q^VOxiDe}j&4K1PF}H=oe-91FM!dh*jxrx&p?0ChLrij;XIkZ1uo>V^l3%pE&t|Zb)cE@DfDUJl8(x zU8z^7VU8iQOx0Yw{kW9veGG?<4EDGG>C6N#XyQpDSViG80AJW$k)bq|2L*6H^9+(w zRxDE&K<=QtIpo1SYImB9w!iTd~q znBtnTyuq;oJ^+U6Z&Qddq{GD!t+bl5YCc{uDNwk;9Jz%3iXsw|WB~!zhB8pVdfH`+ zQotYZM?g_bv*KNIlm>DS;>#eFu>)=~olQ-_6<3X3;|P2F>Bkc~zedX;F>!9v`658l zX(50P6vB{Ue-DkIiIT%dLf=75_eK$8;DUkyqgrCTe2bP=MQoICK~8QU3|BFR8Kl^w z;73zQM9|N53EA}nn?Z6%eb?i19)5`Lr0t*@Eyh&5%{S)u1g7Hb{yXXkuWU`qIAJ$9 zk+vIL0=E442xJ@y25C3QMie9k?W70s1?lqT4!VriW7&?`Ff*cy8Ux-)s$Bwx!5h? zl$A#)udfL=@wW4M1e0kaTNPsm(?$^>Y1#n(S@cRgi@jZJnfH%{G+DJpXydKg9lK^W z2L{{W>=nsDcm1;ELUR*yM^2lh4U-mlC;*Xh0POVJcOfTV5I2nK(%i#n1m*`WdEr?R zdi?_#Q)j5m(c6f@PdzA)7o2YO6Eolx5bUB6BNWgJ5P8rWq5dPKqwX=

0}^kUt=G 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 diff --git a/build/tasks/resources/windows/class-report.txt b/build/tasks/resources/windows/class-report.txt index d0bc372f40b9..0d299e9d974d 100644 --- a/build/tasks/resources/windows/class-report.txt +++ b/build/tasks/resources/windows/class-report.txt @@ -675,7 +675,6 @@ com/intellij/ide/plugins/ModuleDependenciesDescriptor$ModuleReference.class:lib/ com/intellij/ide/plugins/ModuleDependenciesDescriptor$PluginReference.class:lib/app.jar intellij.platform.feedback.xml:lib/app.jar intellij.notebooks.visualization.xml:lib/app.jar -com/intellij/openapi/util/io/win32/IdeaWin32.class:lib/util.jar com/intellij/ui/RasterizedImageDataLoader.class:lib/app.jar intellij.platform.images.copyright.xml:lib/app.jar com/intellij/ui/icons/IconLoadMeasurer.class:lib/app.jar @@ -4061,7 +4060,6 @@ com/intellij/database/vfs/DbStorageFileType$Detector.class:plugins/DatabaseTools net/jpountz/xxhash/StreamingXXHash32JNI$Factory.class:lib/3rd-party-rt.jar com/intellij/ide/HelpTooltip$Header.class:lib/app.jar net/jpountz/xxhash/StreamingXXHash32.class:lib/3rd-party-rt.jar -com/intellij/openapi/util/io/FileSystemUtil$IdeaWin32MediatorImpl.class:lib/util.jar net/jpountz/xxhash/StreamingXXHash32JNI.class:lib/3rd-party-rt.jar com/intellij/util/ui/JBUI$CurrentTheme$ContextHelp.class:lib/app.jar net/jpountz/xxhash/XXHash64.class:lib/3rd-party-rt.jar diff --git a/native/IdeaWin32/.gitignore b/native/IdeaWin32/.gitignore deleted file mode 100644 index f7de2ae74aae..000000000000 --- a/native/IdeaWin32/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/.idea/ -/cmake-build-*/ -/build-*/ diff --git a/native/IdeaWin32/CMakeLists.txt b/native/IdeaWin32/CMakeLists.txt deleted file mode 100644 index dfda28f029cf..000000000000 --- a/native/IdeaWin32/CMakeLists.txt +++ /dev/null @@ -1,40 +0,0 @@ -cmake_minimum_required(VERSION 3.1) -project(IdeaWin32) -include(CheckSymbolExists) - -if(NOT WIN32) - message(FATAL_ERROR "Windows only.") -endif() - -if (DEFINED ENV{BUILD_NUMBER}) - set(BUILD_NUMBER $ENV{BUILD_NUMBER}) -else() - set(BUILD_NUMBER 9999) -endif() - -string(TIMESTAMP YEAR "%Y") - -check_symbol_exists("_M_ARM64" "" TARGET_ARM64) -check_symbol_exists("_M_AMD64" "" TARGET_X64) -if(TARGET_ARM64) - set(FILE_NAME "IdeaWin64a") - set(JAVA_HOME $ENV{JDK_11_0_ARM64}) -elseif(TARGET_X64) - set(FILE_NAME "IdeaWin64") - set(JAVA_HOME $ENV{JDK_11_0_x64}) -else() - set(FILE_NAME "IdeaWin32") - set(JAVA_HOME $ENV{JDK_11_0}) -endif() -if(NOT JAVA_HOME) - message(FATAL_ERROR "JDK_11_0/JDK_11_0_x64/JDK_11_0_ARM64 variables not defined (x64=${TARGET_X64}, arm64=${TARGET_ARM64}).") -endif() - -set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MT") -include_directories(${JAVA_HOME}/include ${JAVA_HOME}/include/win32) - -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/IdeaWin32.rc ${CMAKE_CURRENT_BINARY_DIR}/IdeaWin32.rc @ONLY) - -add_library(IdeaWin32 SHARED IdeaWin32.c IdeaWin32.h ${CMAKE_CURRENT_BINARY_DIR}/IdeaWin32.rc) - -set_target_properties(IdeaWin32 PROPERTIES OUTPUT_NAME ${FILE_NAME}) \ No newline at end of file diff --git a/native/IdeaWin32/IdeaWin32.c b/native/IdeaWin32/IdeaWin32.c deleted file mode 100644 index 62cefaefdc1c..000000000000 --- a/native/IdeaWin32/IdeaWin32.c +++ /dev/null @@ -1,313 +0,0 @@ -// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. - -#include "IdeaWin32.h" -#include -#include - -typedef DWORD (WINAPI *GetFinalPathNameByHandlePtr)(HANDLE, LPCWSTR, DWORD, DWORD); -static GetFinalPathNameByHandlePtr __GetFinalPathNameByHandle = NULL; - -static jfieldID nameID = NULL; -static jfieldID attributesID = NULL; -static jfieldID timestampID = NULL; -static jfieldID lengthID = NULL; - -#define FILE_INFO_CLASS "com/intellij/openapi/util/io/win32/FileInfo" -#define BROKEN_SYMLINK_ATTR ((DWORD)-1) -#define IS_SET(flags, flag) (((flags) & (flag)) == (flag)) -#define FILE_SHARE_ALL (FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE) - -static wchar_t *ToWinPath(JNIEnv *env, jstring path, boolean dirSuffix); -static jobject CreateFileInfo(JNIEnv *env, wchar_t *path, boolean isDirectory, LPWIN32_FIND_DATAW lpData, jclass aClass); -static jobjectArray CopyObjectArray(JNIEnv *env, jobjectArray src, jclass aClass, jsize count, jsize newSize); - - -// interface methods - -JNIEXPORT void JNICALL Java_com_intellij_openapi_util_io_win32_IdeaWin32_initIDs(JNIEnv *env, jclass cls) { - __GetFinalPathNameByHandle = (GetFinalPathNameByHandlePtr)GetProcAddress(GetModuleHandleW(L"kernel32.dll"), "GetFinalPathNameByHandleW"); - - jclass fileInfoClass = (*env)->FindClass(env, FILE_INFO_CLASS); - if (fileInfoClass == NULL) { - return; - } - - nameID = (*env)->GetFieldID(env, fileInfoClass, "name", "Ljava/lang/String;"); - attributesID = (*env)->GetFieldID(env, fileInfoClass, "attributes", "I"); - timestampID = (*env)->GetFieldID(env, fileInfoClass, "timestamp", "J"); - lengthID = (*env)->GetFieldID(env, fileInfoClass, "length", "J"); -} - -JNIEXPORT jobject JNICALL Java_com_intellij_openapi_util_io_win32_IdeaWin32_getInfo0(JNIEnv *env, jobject method, jstring path) { - wchar_t *winPath = ToWinPath(env, path, false); - if (winPath == NULL) { - return NULL; - } - - WIN32_FILE_ATTRIBUTE_DATA attrData; - BOOL res = GetFileAttributesExW(winPath, GetFileExInfoStandard, &attrData); - if (!res) { - free(winPath); - return NULL; - } - - jclass fileInfoClass = (*env)->FindClass(env, FILE_INFO_CLASS); - if (fileInfoClass == NULL) { - return NULL; - } - - jobject result = NULL; - if (IS_SET(attrData.dwFileAttributes, FILE_ATTRIBUTE_REPARSE_POINT)) { - // may be symlink - WIN32_FIND_DATAW data; - HANDLE h = FindFirstFileW(winPath, &data); - if (h != INVALID_HANDLE_VALUE) { - FindClose(h); - result = CreateFileInfo(env, winPath, false, &data, fileInfoClass); - } - } - if (result == NULL) { - // either not a symlink or FindFirstFile() failed - WIN32_FIND_DATAW data; - data.dwFileAttributes = attrData.dwFileAttributes; - data.dwReserved0 = 0; - data.ftLastWriteTime = attrData.ftLastWriteTime; - data.nFileSizeLow = attrData.nFileSizeLow; - data.nFileSizeHigh = attrData.nFileSizeHigh; - data.cFileName[0] = L'\0'; - result = CreateFileInfo(env, winPath, false, &data, fileInfoClass); - } - - free(winPath); - return result; -} - -JNIEXPORT jstring JNICALL Java_com_intellij_openapi_util_io_win32_IdeaWin32_resolveSymLink0(JNIEnv *env, jobject method, jstring path) { - if (__GetFinalPathNameByHandle == NULL) { - return path; // links not supported - } - - wchar_t *winPath = ToWinPath(env, path, false); - if (winPath == NULL) { - return NULL; - } - - if (wcsncmp(winPath, L"\\\\?\\UNC\\", 8) == 0) { - free(winPath); - return path; - } - - jstring result = path; - - HANDLE h = CreateFileW(winPath, 0, FILE_SHARE_ALL, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); - if (h != INVALID_HANDLE_VALUE) { - wchar_t buff[MAX_PATH], *finalPath = buff; - DWORD len = __GetFinalPathNameByHandle(h, buff, MAX_PATH, 0); - if (len >= MAX_PATH) { - finalPath = (wchar_t*)calloc(len + 1, sizeof(wchar_t)); - len = finalPath != NULL ? __GetFinalPathNameByHandle(h, finalPath, len, 0) : 0; - } - if (len > 0 && finalPath != NULL) { - int prefix = 0; - if (len > 8 && wcsncmp(finalPath, L"\\\\?\\UNC\\", 8) == 0) { - prefix = 6; - finalPath[6] = L'\\'; - } else if (len > 4 && finalPath[0] == L'\\' && finalPath[1] == L'\\' && finalPath[2] == L'?' && finalPath[3] == L'\\') { - prefix = 4; - } - result = (*env)->NewString(env, (jchar*)finalPath + prefix, len - prefix); - if (finalPath != buff) { - free(finalPath); - } - } - CloseHandle(h); - } else { - result = NULL; - } - - free(winPath); - return result; -} - -JNIEXPORT jobjectArray JNICALL Java_com_intellij_openapi_util_io_win32_IdeaWin32_listChildren0(JNIEnv *env, jobject method, jstring path) { - jclass fileInfoClass = (*env)->FindClass(env, FILE_INFO_CLASS); - if (fileInfoClass == NULL) { - return NULL; - } - - wchar_t *winPath = ToWinPath(env, path, true); - if (winPath == NULL) { - return NULL; - } - - WIN32_FIND_DATAW data; - HANDLE h = FindFirstFileW(winPath, &data); - if (h == INVALID_HANDLE_VALUE) { - free(winPath); - return NULL; - } - - jsize len = 0, maxLen = 16; - jobjectArray result = (*env)->NewObjectArray(env, maxLen, fileInfoClass, NULL); - if (result != NULL) { - do { - if (wcscmp(data.cFileName, L".") == 0 || wcscmp(data.cFileName, L"..") == 0) { - continue; - } - - if (len == maxLen) { - result = CopyObjectArray(env, result, fileInfoClass, len, maxLen <<= 1); - if (result == NULL) { - break; - } - } - - jobject o = CreateFileInfo(env, winPath, true, &data, fileInfoClass); - (*env)->SetObjectArrayElement(env, result, len++, o); - (*env)->DeleteLocalRef(env, o); - } - while (FindNextFileW(h, &data)); - - if (len != maxLen) { - result = CopyObjectArray(env, result, fileInfoClass, len, len); - } - } - - free(winPath); - FindClose(h); - return result; -} - - -// utility methods - -static LONGLONG pairToInt64(DWORD lowPart, DWORD highPart) { - ULARGE_INTEGER large; - large.LowPart = lowPart; - large.HighPart = highPart; - return large.QuadPart; -} - -static wchar_t *ToWinPath(JNIEnv *env, jstring path, boolean dirSuffix) { - size_t len = (size_t)((*env)->GetStringLength(env, path)); - const jchar *jstr = (*env)->GetStringChars(env, path, NULL); - while (len > 0 && jstr[len - 1] == L'\\') --len; // trim trailing separators - - if (len == 0) { - (*env)->ReleaseStringChars(env, path, jstr); - return NULL; - } - - const wchar_t *prefix = L"\\\\?\\"; - size_t prefixLen = 4, skip = 0, suffixLen = dirSuffix ? 2 : 0; - if (len == 2 && jstr[1] == L':') { - prefix = L""; - prefixLen = skip = 0; - } else if (len > 2 && jstr[0] == L'\\' && jstr[1] == L'\\') { - prefix = L"\\\\?\\UNC\\"; - prefixLen = 8; - skip = 2; - } - - wchar_t *pathBuf = (wchar_t*)calloc(prefixLen + len - skip + suffixLen + 1, sizeof(wchar_t)); - if (pathBuf != NULL) { - if (prefixLen > 0) { - wcsncpy_s(pathBuf, prefixLen + 1, prefix, prefixLen); - } - wcsncpy_s(pathBuf + prefixLen, len - skip + 1, (wchar_t*)jstr + skip, len - skip); - if (suffixLen > 0) { - wcsncpy_s(pathBuf + prefixLen + len - skip, suffixLen + 1, L"\\*", suffixLen); - } - pathBuf[prefixLen + len - skip + suffixLen] = L'\0'; - - if (prefixLen > 0) { - DWORD normLen = GetFullPathNameW(pathBuf, 0, NULL, NULL); - if (normLen > 0) { - wchar_t *normPathBuf = (wchar_t*)calloc(normLen, sizeof(wchar_t)); - if (normPathBuf != NULL) { - GetFullPathNameW(pathBuf, normLen, normPathBuf, NULL); - free(pathBuf); - pathBuf = normPathBuf; - } - } - } - } - - (*env)->ReleaseStringChars(env, path, jstr); - - return pathBuf; -} - -static jobject CreateFileInfo(JNIEnv *env, wchar_t *path, boolean isDirectory, LPWIN32_FIND_DATAW lpData, jclass aClass) { - DWORD attributes = lpData->dwFileAttributes; - LONGLONG timestamp = pairToInt64(lpData->ftLastWriteTime.dwLowDateTime, lpData->ftLastWriteTime.dwHighDateTime); - LONGLONG length = pairToInt64(lpData->nFileSizeLow, lpData->nFileSizeHigh); - - if (IS_SET(attributes, FILE_ATTRIBUTE_REPARSE_POINT)) { - if (IS_SET(lpData->dwReserved0, IO_REPARSE_TAG_SYMLINK) || IS_SET(lpData->dwReserved0, IO_REPARSE_TAG_MOUNT_POINT)) { - attributes = BROKEN_SYMLINK_ATTR; - timestamp = 0; - length = 0; - - wchar_t *fullPath = path; - if (isDirectory) { - // trim '*' and append file name - size_t dirLen = wcslen(path) - 1, nameLen = wcslen(lpData->cFileName), fullLen = dirLen + nameLen + 1; - fullPath = (wchar_t*)calloc(fullLen, sizeof(wchar_t)); - if (fullPath == NULL) { - return NULL; - } - wcsncpy_s(fullPath, dirLen + 1, path, dirLen); - wcsncpy_s(fullPath + dirLen, nameLen + 1, lpData->cFileName, nameLen); - } - - // read reparse point target attributes - HANDLE h = CreateFileW(fullPath, 0, FILE_SHARE_ALL, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); - if (h != INVALID_HANDLE_VALUE) { - BY_HANDLE_FILE_INFORMATION targetData; - if (GetFileInformationByHandle(h, &targetData)) { - attributes = targetData.dwFileAttributes | FILE_ATTRIBUTE_REPARSE_POINT; - timestamp = pairToInt64(targetData.ftLastWriteTime.dwLowDateTime, targetData.ftLastWriteTime.dwHighDateTime); - length = pairToInt64(targetData.nFileSizeLow, targetData.nFileSizeHigh); - } - CloseHandle(h); - } - - if (fullPath != path) { - free(fullPath); - } - } else { - attributes &= (~ FILE_ATTRIBUTE_REPARSE_POINT); // keep the flag only for known reparse points - } - } - - jobject o = (*env)->AllocObject(env, aClass); - if (o == NULL) { - return NULL; - } - - jstring fileName = (*env)->NewString(env, (jchar*)lpData->cFileName, (jsize)wcslen(lpData->cFileName)); - if (fileName == NULL) { - return NULL; - } - - (*env)->SetObjectField(env, o, nameID, fileName); - (*env)->SetIntField(env, o, attributesID, attributes); - (*env)->SetLongField(env, o, timestampID, timestamp); - (*env)->SetLongField(env, o, lengthID, length); - - return o; -} - -static jobjectArray CopyObjectArray(JNIEnv *env, jobjectArray src, jclass aClass, jsize count, jsize newSize) { - jobjectArray dst = (*env)->NewObjectArray(env, newSize, aClass, NULL); - if (dst != NULL) { - for (jsize i = 0; i < count; i++) { - jobject o = (*env)->GetObjectArrayElement(env, src, i); - (*env)->SetObjectArrayElement(env, dst, i, o); - (*env)->DeleteLocalRef(env, o); - } - } - (*env)->DeleteLocalRef(env, src); - return dst; -} \ No newline at end of file diff --git a/native/IdeaWin32/IdeaWin32.h b/native/IdeaWin32/IdeaWin32.h deleted file mode 100644 index dae13bf0327e..000000000000 --- a/native/IdeaWin32/IdeaWin32.h +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. - -#include - -#ifndef _Included_com_intellij_openapi_util_io_win32_IdeaWin32 -#define _Included_com_intellij_openapi_util_io_win32_IdeaWin32 -#ifdef __cplusplus -extern "C" { -#endif - -JNIEXPORT void JNICALL Java_com_intellij_openapi_util_io_win32_IdeaWin32_initIDs(JNIEnv *, jclass); - -JNIEXPORT jobject JNICALL Java_com_intellij_openapi_util_io_win32_IdeaWin32_getInfo0(JNIEnv *, jobject, jstring); - -JNIEXPORT jstring JNICALL Java_com_intellij_openapi_util_io_win32_IdeaWin32_resolveSymLink0(JNIEnv *, jobject, jstring); - -JNIEXPORT jobjectArray JNICALL Java_com_intellij_openapi_util_io_win32_IdeaWin32_listChildren0(JNIEnv *, jobject, jstring); - -#ifdef __cplusplus -} -#endif -#endif \ No newline at end of file diff --git a/native/IdeaWin32/IdeaWin32.rc b/native/IdeaWin32/IdeaWin32.rc deleted file mode 100644 index b0c9d91339e7..000000000000 --- a/native/IdeaWin32/IdeaWin32.rc +++ /dev/null @@ -1,35 +0,0 @@ -#define VERSION 1,2,0,@BUILD_NUMBER@ -#define VERSION_STR "1.2.0.@BUILD_NUMBER@\0" -#define FILE_NAME "@FILE_NAME@.dll" -#define COPYRIGHT "Copyright 2000-@YEAR@ JetBrains s.r.o." - -#pragma code_page(65001) - -1 VERSIONINFO - FILEVERSION VERSION - PRODUCTVERSION VERSION - FILEFLAGSMASK 0x0L - FILEFLAGS 0x0L - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "0000fde9" - BEGIN - VALUE "CompanyName", "JetBrains s.r.o." - VALUE "FileDescription", "Filesystem access helper library" - VALUE "FileVersion", VERSION_STR - VALUE "InternalName", FILE_NAME - VALUE "LegalCopyright", COPYRIGHT - VALUE "OriginalFilename", FILE_NAME - VALUE "ProductName", "IntelliJ Platform" - VALUE "ProductVersion", VERSION_STR - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0, 0xfde9 - END -END diff --git a/platform/platform-impl/src/com/intellij/idea/StartupUtil.kt b/platform/platform-impl/src/com/intellij/idea/StartupUtil.kt index b702342df425..e533b0494f34 100644 --- a/platform/platform-impl/src/com/intellij/idea/StartupUtil.kt +++ b/platform/platform-impl/src/com/intellij/idea/StartupUtil.kt @@ -34,7 +34,6 @@ import com.intellij.openapi.diagnostic.logger import com.intellij.openapi.util.Disposer import com.intellij.openapi.util.ShutDownTracker import com.intellij.openapi.util.SystemInfoRt -import com.intellij.openapi.util.io.win32.IdeaWin32 import com.intellij.openapi.wm.WeakFocusStackManager import com.intellij.serviceContainer.ComponentManagerImpl import com.intellij.ui.AppUIUtil @@ -314,9 +313,6 @@ private fun CoroutineScope.loadSystemLibsAndLogInfoAndInitMacApp(logDeferred: De withContext(Dispatchers.IO) { runActivity("system libs loading") { JnaLoader.load(log) - if (SystemInfoRt.isWindows) { - IdeaWin32.isAvailable() - } } } diff --git a/platform/util/src/com/intellij/openapi/util/io/FileSystemUtil.java b/platform/util/src/com/intellij/openapi/util/io/FileSystemUtil.java index 47c52bca08c7..0d09dc70dad7 100644 --- a/platform/util/src/com/intellij/openapi/util/io/FileSystemUtil.java +++ b/platform/util/src/com/intellij/openapi/util/io/FileSystemUtil.java @@ -4,8 +4,6 @@ package com.intellij.openapi.util.io; import com.intellij.jna.JnaLoader; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.SystemInfo; -import com.intellij.openapi.util.io.win32.FileInfo; -import com.intellij.openapi.util.io.win32.IdeaWin32; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.CharsetToolkit; import com.intellij.util.SystemProperties; @@ -57,9 +55,6 @@ public final class FileSystemUtil { static @NotNull Mediator computeMediator() { if (!Boolean.getBoolean(FORCE_USE_NIO2_KEY)) { try { - if (SystemInfo.isWindows && IdeaWin32.isAvailable()) { - return ensureSane(new IdeaWin32MediatorImpl()); - } if ((SystemInfo.isLinux || SystemInfo.isMac) && CpuArch.isIntel64() && JnaLoader.isLoaded()) { return ensureSane(new JnaUnixMediatorImpl()); } @@ -149,42 +144,6 @@ public final class FileSystemUtil { return resolveSymLink(file.getAbsolutePath()); } - private static class IdeaWin32MediatorImpl implements Mediator { - private final IdeaWin32 myInstance = IdeaWin32.getInstance(); - - @Override - public FileAttributes getAttributes(@NotNull String path) { - FileInfo fileInfo = myInstance.getInfo(path); - return fileInfo != null ? fileInfo.toFileAttributes() : null; - } - - @Override - public String resolveSymLink(@NotNull String path) { - path = new File(path).getAbsolutePath(); - - if (!(path.length() > 3 && OSAgnosticPathUtil.isAbsoluteDosPath(path))) { - return path; // unknown format - } - - int remainder = 4; - while (remainder < path.length()) { - int next = path.indexOf('\\', remainder); - String subPath = next > 0 ? path.substring(0, next) : path; - FileAttributes attributes = getAttributes(subPath); - if (attributes == null) { - return null; - } - if (attributes.isSymLink()) { - return myInstance.resolveSymLink(path); - } - - remainder = next > 0 ? next + 1 : path.length(); - } - - return path; - } - } - // thanks to SVNKit for the idea of platform-specific offsets private static class JnaUnixMediatorImpl implements Mediator { @SuppressWarnings({"OctalInteger", "SpellCheckingInspection"}) diff --git a/platform/util/src/com/intellij/openapi/util/io/win32/FileInfo.java b/platform/util/src/com/intellij/openapi/util/io/win32/FileInfo.java deleted file mode 100644 index 750e70e15198..000000000000 --- a/platform/util/src/com/intellij/openapi/util/io/win32/FileInfo.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2000-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.intellij.openapi.util.io.win32; - -import com.intellij.openapi.util.io.FileAttributes; -import org.jetbrains.annotations.NotNull; - -import static com.intellij.util.BitUtil.isSet; - -/** - * Do not use this class directly. - * - * @author Dmitry Avdeev - */ -public class FileInfo { - private static final int BROKEN_SYMLINK = -1; - private static final int FILE_ATTRIBUTE_READONLY = 0x0001; - private static final int FILE_ATTRIBUTE_HIDDEN = 0x0002; - private static final int FILE_ATTRIBUTE_DIRECTORY = 0x0010; - private static final int FILE_ATTRIBUTE_DEVICE = 0x0040; - private static final int FILE_ATTRIBUTE_REPARSE_POINT = 0x0400; // is set only for symlinks - - @SuppressWarnings("UnusedDeclaration") private String name; - @SuppressWarnings("UnusedDeclaration") private int attributes; - @SuppressWarnings("UnusedDeclaration") private long timestamp; - @SuppressWarnings("UnusedDeclaration") private long length; - - public String getName() { - return name; - } - - @NotNull - public FileAttributes toFileAttributes() { - if (attributes == BROKEN_SYMLINK) return FileAttributes.BROKEN_SYMLINK; - - final boolean isDirectory = isSet(attributes, FILE_ATTRIBUTE_DIRECTORY); - final boolean isSpecial = isSet(attributes, FILE_ATTRIBUTE_DEVICE); - final boolean isSymlink = isSet(attributes, FILE_ATTRIBUTE_REPARSE_POINT); - final boolean isHidden = isSet(attributes, FILE_ATTRIBUTE_HIDDEN); - final boolean isWritable = !isSet(attributes, FILE_ATTRIBUTE_READONLY); - final long javaTimestamp = timestamp / 10000 - 11644473600000L; - return new FileAttributes(isDirectory, isSpecial, isSymlink, isHidden, length, javaTimestamp, isDirectory || isWritable); - } - - @Override - public String toString() { - return name; - } -} diff --git a/platform/util/src/com/intellij/openapi/util/io/win32/IdeaWin32.java b/platform/util/src/com/intellij/openapi/util/io/win32/IdeaWin32.java deleted file mode 100644 index dcb9c87ef9aa..000000000000 --- a/platform/util/src/com/intellij/openapi/util/io/win32/IdeaWin32.java +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -package com.intellij.openapi.util.io.win32; - -import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.util.SystemInfoRt; -import com.intellij.openapi.util.io.FileUtilRt; -import com.intellij.util.loader.NativeLibraryLoader; -import com.intellij.util.system.CpuArch; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.io.IOException; -import java.net.URL; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.zip.CRC32; - -/** - * Do not use this class directly. - * - * @author Dmitry Avdeev - */ -public final class IdeaWin32 { - private static final Logger LOG = Logger.getInstance(IdeaWin32.class); - private static final boolean TRACE_ENABLED = LOG.isTraceEnabled(); - - private static final IdeaWin32 ourInstance; - - static { - IdeaWin32 instance = null; - if (SystemInfoRt.isWindows && Boolean.parseBoolean(System.getProperty("idea.use.native.fs.for.win", "true"))) { - try { - if (!loadBundledLibrary()) { - NativeLibraryLoader.loadPlatformLibrary("IdeaWin32"); - } - instance = new IdeaWin32(); - LOG.info("Native filesystem for Windows is operational"); - } - catch (Throwable t) { - LOG.warn("Failed to initialize native filesystem for Windows", t); - } - } - ourInstance = instance; - } - - private static boolean loadBundledLibrary() throws IOException { - String name = CpuArch.isArm64() ? "IdeaWin64a" : CpuArch.isIntel64() ? "IdeaWin64" : "IdeaWin32"; - URL bundled = IdeaWin32.class.getResource(name + ".dll"); - if (bundled == null) { - return false; - } - - byte[] content = FileUtilRt.loadBytes(bundled.openStream()); - CRC32 crc32 = new CRC32(); - crc32.update(content, 0, content.length); - long hash = Math.abs(crc32.getValue()); - Path file = Paths.get(FileUtilRt.getTempDirectory(), name + '.' + hash + ".dll"); - if (!Files.exists(file)) { - Files.createDirectories(file.getParent()); - Files.write(file, content); - } - System.load(file.toString()); - return true; - } - - public static boolean isAvailable() { - return ourInstance != null; - } - - public static @NotNull IdeaWin32 getInstance() { - if (!isAvailable()) { - throw new IllegalStateException("Native filesystem for Windows is not loaded"); - } - return ourInstance; - } - - private IdeaWin32() { - initIDs(); - } - - private static native void initIDs(); - - public @Nullable FileInfo getInfo(@NotNull String path) { - path = path.replace('/', '\\'); - if (TRACE_ENABLED) { - LOG.trace("getInfo(" + path + ")"); - long t = System.nanoTime(); - FileInfo result = getInfo0(path); - t = (System.nanoTime() - t) / 1000; - LOG.trace(" " + t + " mks"); - return result; - } - else { - return getInfo0(path); - } - } - - public @Nullable String resolveSymLink(@NotNull String path) { - path = path.replace('/', '\\'); - if (TRACE_ENABLED) { - LOG.trace("resolveSymLink(" + path + ")"); - long t = System.nanoTime(); - String result = resolveSymLink0(path); - t = (System.nanoTime() - t) / 1000; - LOG.trace(" " + t + " mks"); - return result; - } - else { - return resolveSymLink0(path); - } - } - - public FileInfo @Nullable [] listChildren(@NotNull String path) { - path = path.replace('/', '\\'); - if (TRACE_ENABLED) { - LOG.trace("list(" + path + ")"); - long t = System.nanoTime(); - FileInfo[] children = listChildren0(path); - t = (System.nanoTime() - t) / 1000; - LOG.trace(" " + (children == null ? -1 : children.length) + " children, " + t + " mks"); - return children; - } - else { - return listChildren0(path); - } - } - - private native FileInfo getInfo0(String path); - - private native String resolveSymLink0(String path); - - private native FileInfo[] listChildren0(String path); -} diff --git a/platform/util/src/com/intellij/util/loader/NativeLibraryLoader.java b/platform/util/src/com/intellij/util/loader/NativeLibraryLoader.java deleted file mode 100644 index 894b4cf88217..000000000000 --- a/platform/util/src/com/intellij/util/loader/NativeLibraryLoader.java +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -package com.intellij.util.loader; - -import com.intellij.openapi.application.PathManager; -import com.intellij.util.system.CpuArch; -import org.jetbrains.annotations.NotNull; - -import java.io.File; -import java.nio.file.Path; -import java.util.Arrays; - -public final class NativeLibraryLoader { - public static void loadPlatformLibrary(@NotNull String libName) { - String baseName = libName; - if (CpuArch.isIntel64()) { - baseName = baseName.replace("32", "") + "64"; - } else if (CpuArch.isArm64()) { - baseName = baseName.replace("32", "") + "64a"; - } - - String libFileName = System.mapLibraryName(baseName).replace(".jnilib", ".dylib"); - Path libFile = PathManager.findBinFile(libFileName); - if (libFile == null) { - File libDir = new File(PathManager.getBinPath()); - throw new UnsatisfiedLinkError("'" + libFileName + "' not found in '" + libDir + "' among " + Arrays.toString(libDir.list())); - } - - System.load(libFile.toString()); - } -} diff --git a/platform/util/testSrc/com/intellij/openapi/util/io/FileAttributesReadingTest.java b/platform/util/testSrc/com/intellij/openapi/util/io/FileAttributesReadingTest.java index 9d69cf5ea2e1..b51863f7fdad 100644 --- a/platform/util/testSrc/com/intellij/openapi/util/io/FileAttributesReadingTest.java +++ b/platform/util/testSrc/com/intellij/openapi/util/io/FileAttributesReadingTest.java @@ -29,8 +29,8 @@ public abstract class FileAttributesReadingTest { public static class MainTest extends FileAttributesReadingTest { @BeforeClass public static void setUpClass() { - assumeTrue(SystemInfo.OS_NAME + '/' + CpuArch.CURRENT + " is not supported", CpuArch.isIntel64()); - assertEquals(SystemInfo.isWindows ? "IdeaWin32" : "JnaUnix", getMediatorName()); + assumeTrue(SystemInfo.OS_NAME + '/' + CpuArch.CURRENT + " is not supported", CpuArch.isIntel64() && !SystemInfo.isWindows); + assertEquals("JnaUnix", getMediatorName()); } }