From 10199c964acc7e6932d4a579fe2e592f97f87a1e Mon Sep 17 00:00:00 2001 From: rifraf Date: Mon, 3 May 2010 11:49:01 +0100 Subject: [PATCH] EmbeddedRuby.cs now supports application-specific AppBoot.rb, so moved Sinatra stram hack into one. Extended File.file? and File.exist? now that Serfs can supply the information --- IREmbeddedApp/EmbeddedRuby.cs | 1 + IREmbeddedApp/EmbeddedRuby/FileSupport.rb | 15 ++------------- IREmbeddedApp/Serfs.dll | Bin 20480 -> 20480 bytes .../Applications/EmbeddedRuby/AppBoot.rb | 16 ++++++++++++++++ IRSinatra/IRSinatra.csproj | 3 +++ IRSinatra/bin/IREmbeddedApp.dll | Bin 28672 -> 28672 bytes IRSinatra/bin/IRSinatra.exe | Bin 16384 -> 16384 bytes IRSinatra/bin/Serfs.dll | Bin 20480 -> 20480 bytes IRSinatra/bin/merge/IRSinatra.exe | Bin 4816896 -> 4818432 bytes IRSinatra/status.txt | 6 +++--- 10 files changed, 25 insertions(+), 16 deletions(-) create mode 100644 IRSinatra/Applications/EmbeddedRuby/AppBoot.rb diff --git a/IREmbeddedApp/EmbeddedRuby.cs b/IREmbeddedApp/EmbeddedRuby.cs index c5e881c..1b63495 100644 --- a/IREmbeddedApp/EmbeddedRuby.cs +++ b/IREmbeddedApp/EmbeddedRuby.cs @@ -78,6 +78,7 @@ public class EmbeddedRuby { require 'EmbeddedRuby/IOSupport' require 'EmbeddedRuby/FileSupport' require 'EmbeddedRuby/Misc' +require 'EmbeddedRuby/AppBoot' if File.exist?('EmbeddedRuby/AppBoot.rb') load $0.dup if $0 " , app, argv, _serfs.Read("EmbeddedRuby/RequireSupport.rb")); diff --git a/IREmbeddedApp/EmbeddedRuby/FileSupport.rb b/IREmbeddedApp/EmbeddedRuby/FileSupport.rb index 330f1a6..ffac05a 100644 --- a/IREmbeddedApp/EmbeddedRuby/FileSupport.rb +++ b/IREmbeddedApp/EmbeddedRuby/FileSupport.rb @@ -57,17 +57,6 @@ def open(filename, *args, &blk) return nil unless stream open_mode.include?('b') ? stream.select_binarymode : stream.select_textmode - - # Sinatra hack - class << stream - def each - rewind - while buf = read(8192) - yield buf - end - end - end - stream end @@ -87,12 +76,12 @@ def stat(filename) alias old_exist? exist? def exist?(filename) - old_exist?(filename) || !!(filename =~ /^\//) # TEMP!!! + old_exist?(filename) || SerfsInstance.exists(filename) || SerfsInstance.folder_exists(filename) end alias old_file? file? def file?(filename) - old_file?(filename) || !!(SerfsInstance.read_embedded_file(filename)) + old_file?(filename) || SerfsInstance.exists(filename) end alias old_expand_path expand_path diff --git a/IREmbeddedApp/Serfs.dll b/IREmbeddedApp/Serfs.dll index 738f25652381cdebb22e1cbac945165080279adf..7b27074084f3fbc6a78e67382ee09162d3de24a7 100644 GIT binary patch delta 3465 zcmb_feQZ?65ue@n-oE?t+4pH5Hoi0ddiZ?iumM9b4i*@Ppb{GsK3f3+t9AG|=WGhe z6(10lfYMf6UcO32N)u27Q9+GM(xy@*lvD{4ZISXv(~`JCZCWBFL?}@UsJQ*@KHG6< z`(ICYzn$5c*_oZ0-S=+)3AXMoY|C2>T4-h_!iLPmds*rCp zkq`V{2rBFwtkGW2>iN>jk%Mg5A4{}DgwK8WaWZH}1GGa#44SPY-6e0Zyhe=>8bkr& znr?ZBghw>ScuptMd5!@^W(JWb15zYe*qbD?A(Yl>4eZ2(onP7!&vED%MMHWr=?>_} zyd=z0s~Xl;4Inzk@C_LOBV~~38!e+ijb6Ggqz82O5BkS+C3!dOOA@&dX?a?s$Kb@Y zcLruKk9{;y4g7iFzPxmQ5E7SkuV*!)flMtNq>A*cIl&}ZX^}exd3@IQreV)kIW$VR z+UC@7LwYo1BqVbs)TqJ2^`QYR7-f1E0HUuRSB)4WMxpZ;-HX1;iw={FoSFF=nR510VyVa zKUy5r@?%ltxja*aIr@O2C<$sptVCA1g;JZT7_pGdQVT}Z6j`t!6(wBPf)r#H6a)z? zfWepbA~2pq7Il|t)x)4DN$v(^FY^y^fHZE+gv29|;0O&kIY*J?jLLt~z8>t%qnSKC z2CBX;Qzl6w=!DXowqPM_9bJ}1*aMjqq^S~~g*%7AhLbGnHB(;VWy)A?$60$qS=ClD zQyD-Ynr1tzN>eg(S)uu$9)hw4n>^kQ;H7LxWHlEBJ zfM$j51>spNYWIiZ^U#~}Ebc=u>F5#}LI#`hc$1|l+&oYo5h6X7xD96ogdxYY`en0Oy2fR9CSJ^jZ4z#*4CLw;(!$2kHrth@Z>oowFa5S=2> zRR0%;^3p}0$OKyzGC>o236L0ULj!ocW@eH7VRT{ozp5pq+PD^mY^Utd74n=kz^K~Z zUOIP?j%BKcF^6%7q(T8#Hxy4V#C$G)3ijHemV zA*y1laY3A%s-=^Y+zV7kE=$Q=ci1ViC^62(_-SyB4o3oZGpXCkJInZ32d=TV$Axow zA0=rHZg^++eRwN4InK554TMWl-g$7}0nTZgvnU}W2hW4%^fpkV_tgBCGmL_U)LgCb zR9+3Q0QvaTRN7JcUo(}sZx~7B^oqgZtW|K_k}K7GR$;5cpDGaP{Y*)8BptU~JNvGi-= zH5Q|H6#h;8iZS+?xB#&XrACEPqe7`rfx21P{FJ#_o%uO*I!wl6Y!B7&D)x|hfi>YU z&f!fsS`w4g32dPZaEZbdv>S9UJqO%KFY;blw?PUAeQ|x(mhFxOsvuo@YGkGa*;5r)1K(7$}h&?)q_w%!u zccDocZU`xlkx8r!SAt3JQW-nPe$Dj#(1!vZiFT}VF1s?)Q(42NFYDj6ZB^f3W_NaL z-^wjJ`)FBa$F{y~=idIop+S2n{trWuBmIfJnjNp1W?!vt4|VR^Hn_Hb=v&k~v?V*F zNPB+G4*OiqUn&`Cc)iiSP87*en)cxg=V&&@95vHEd!%-D$;OZVY@R>-ya z=<6=~i`osvdV=}=MuKy{A0)TGR@Z4iSNC|AVRC=ajgubS?ZRuL-_L`)-KOyS{nPy} z?llciJQCQ+{ANPqlTywh_L#b#J3_mqzRF%-KP-Hv9xUPZ<@#E-VC3)h1(w499z65p z5hV3y@iZP%Pvah1)w{HJ&9SB@hSyzO{`!lTZ(mzMx4riHnM;D<@qatgs!7s`LRFL} z+DGadZZg}S9(IRduW~)|O!^9gr$?GwFxaPB?gev$RruU#=l|5=_L0Ei&x#9a^WUqM B7FhrQ delta 2588 zcmZve4Q!QH8OQ(6`*H3^+e`0ldq3LCdhh!6wwJb-wu}LT6=8M+Gr{sPms|GF&jw@8Pzp>g^VIUGslm(s-Fz5KV};&UB9Fa`)mE}mXj`=XQ_?4r>HqOfeo z3j-<)Yuo~yns}X)TN#QvU#@}*B)r>!u-8JwXN7-tZq)5=;#h}ct#Kg(g;tsi?5gU^ zNkpB*{dG>%37r_3b#K82p{p+Mpr3Kor*&Y*;}TS@<=8RA#H*qJ<<)2}MH|>- zjgw9=;I+|vO%9rdyRmpzE+T+CynV>0R_#9F~BUa6QJLjyb~S zVu#r3--nI%dO54DTeW+6?TLHhSk|~{3=0dX4i@@I+pG20#Cs*?kHwqsU?^So31;uG zkUE6|%Mz~2C0GaUOE?T=jcap(J48Fxi~LvPeMuH6%4}}UsmWzxwm0A>6V0;7zcaB= z?(jdGXzyZab&Ptio({~O0ZnrYVu|U*TdWf+-08oV=x1Wr5+A**GRZiP7kIR3X7I}N zCYEe7cOvq^46-JJJ;@9+C?^-Ut>CbEmG~ZO&XcX`XQd|89fca@vk|Te6qfmyQp@rm zIx6$NQ5;;nN7rwyJ{2A(wfGM-E?T~ed9@q{e#v%_Ti!CfuQ;;%p;29{BvV|+wq@fm zKEpmMik6{`YgV&8MERtDsj)xRNU5Fwd}_eMq1R>l^ZZoPs?ru~xuvk*@G)zGHF(P2yVzHF(mn1f1l3zs7-MRyQuwaYfq$d4^}lKxnGR@n`ib-C*+^v!$X3?uUfwf686T4!jDK`a+Cixv7mYNP zJcuzg;7>QDBS>P97m)V(vWy{xNh3`K8)OJ+T&+lWU8XP}hf2InfGLX0(2OtMlujUn znTizrot(n$sMY1cRPa4HO(|WGpg6AugL6`~tVAnbn3EFLSJ8&rj!J|yC2bHK<8I$z z=_CaUUn6ZiYYewEf7|xn8CH8N` z(sKn^1)Rql&QEX=Z#%yr|K(gJ z#l6BYRqj>x>)mT)tNT}KawT_$%>Y%^SmQcUkIil!`Jj6WZ{v^~#XES`ZI_F<;N~QS zpSdfwQ}=GUZbE8D_tAQr+CY7~+Q5FFy2Ad))i$Fak$=-#kn~)NN7W+r26e5(ncMvlpa(}}N^Hh)fqWFNkWb(ZE6B(8@753SCT5Y80U44l zvO^BYm*kuBg8WEcmv_YB;c+<30i(8m*p@k;t%FZ{wulLq;L9AITpM>76h;GJPulYhlQ}ef@0wv;B8dxGw4H5MSziA7b6o>FD6Q J^UC?a{{dT`qv-$u diff --git a/IRSinatra/Applications/EmbeddedRuby/AppBoot.rb b/IRSinatra/Applications/EmbeddedRuby/AppBoot.rb new file mode 100644 index 0000000..c9bdf71 --- /dev/null +++ b/IRSinatra/Applications/EmbeddedRuby/AppBoot.rb @@ -0,0 +1,16 @@ +# Sinatra hack +# +# Sinatra overrides Stream.each to limit blocks to +# 8192 bytes. If we are reading from Serfs, this won't +# affect our stream because it is not a _real_ stream. +# Hence the following patch +# +class System::IO::UnmanagedMemoryStream + def each + rewind + while buf = read(8192) + yield buf + end + end +end + diff --git a/IRSinatra/IRSinatra.csproj b/IRSinatra/IRSinatra.csproj index 5a3f1e6..5c4d9de 100644 --- a/IRSinatra/IRSinatra.csproj +++ b/IRSinatra/IRSinatra.csproj @@ -77,6 +77,9 @@ + + +