From 6a262c84fe9c7129e40dba00c72077b4404c508c Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Wed, 5 Jun 2013 15:30:56 +0400 Subject: [PATCH] EA-46653 (abort on FSEvent stream creation failure) --- bin/mac/fsnotifier | Bin 13924 -> 13924 bytes native/fsNotifier/mac/fsnotifier.c | 39 +++++++++++++++-------------- native/fsNotifier/mac/make.sh | 2 +- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/bin/mac/fsnotifier b/bin/mac/fsnotifier index 4fff2f1d13209a5b7c143b03fce7644d4bc996cd..7fdef8c56590cd72282395ea67183aed8a78e414 100755 GIT binary patch delta 2825 zcmZuzeQcA*89y64IKjat1rw5tgzP0-M*ss^3WKhc<_ObxSK8r>mWGj*rL_1Dw32Dk zh@23z`g(mQdxy5E>K{z1Sk*>rAV{SX%R-aY5kgfIWm7g~T9~}{_rpss8BMT{eK-0qh29 z)i!_Ckma5B);{~v3(Ky5cgNNXGWxBR_kYlAfltnvzl^cvWvbf0%NwqTd}Ju@Z}F7f zU*w0QLzhe1R;ZqeT}>MhUm=z1%LfiUrb+jROzvOFm^f$!W%5$Fivmv^8SP9J**#Ky zSW%sb7q@m$#sb5n`3GEtIqg}&Z#g~NVI#xm=v>6|!q$RkGd_xtiKi@Iro{@7IKDym ztZQ6!kLer&e~0!mcFVcqMK(KD(zcN8UhLCT>cY9yV`K_#E-D;tX+ z`~K1P(NJxR`l!nGTv2)19ukU)f424It;L=V z2>Xt-?+Cjf?SkNQ!p`dr=o4wr$#k6DRmiS9@_*}3@V!RH z`^Kze?W3KYou!>yLbd1VNIkk{dqP4$@Pg!7C;13+>ZC@=^x((9U##qXWZlj>X%cWQ zKL&xN!p`VgaEt9^a*~xv*M?izcaVr8*DdUK;NEq)ij0Yyz3iJ0ZCIzP8T5?S{-AJN5kId3(K6e#~Ehgb~i5iU5dwT+E zDzbG29}!*GMeLd$_N$d^BcAJOc`-Z!C-~_jb?GM27m&YnTB|W^=8o zcWp!B2a7`444=g@+|KUib0Oyw2tCJV!}v&h&~rmR9NoymJ-9KJ(0RJs=h?kCz71tz z&qzMgmk-k=<}seG|LF{O=N-L*suLF};IHfd_*jr6r2YD?8zJYE+E%$bGP$TVA^Akn z(kni7w6f9rL!T0rJ0c@aGD~HPxsEV~7*iclla=+QD~xjPCG}Zl^`_gHb(l9b>ObmU zZb{j-T~xlbOg*x$Iq_2?@Amb*#dJ8;VJi2+-GznEb7qSbn$6w)j4A}{0kn|0qOLIZ zq&?!KKS0EE43GRZoyP-*$TEDKQZD#K$;YMo`?{c~T;Ns{?iHxp)agf_zlKSlV8!N&<-GWZ1HR}4N$_-6*k37<3gG~pi^e1`Dz2LG7w zF@w(%e%#=mCuy_aY|az@hQUd~TMT}gaJ|7P!V!Zn5H2(LSA_4*ySIOp@cg_wQ5!F( zA8Sp>IMMgi-)b%OkUyY2b(<3OV=WA-0euzJ1lkKa2s#2f0Xhvj3rd16fG&atK-WNH zpb5|nNP`L>hM#poP$kF$ML~N&2SA5G^n30%Z@#e|NWEFN+24aR&(Q6<+EDtCuOnsc zwQ5qnl=t+UcLI}!abfGxgoo-Gt1jX*z~pEp&M#Vw?JVNKjf_27#B~jf(Yr)4sjo10 trif=%NAy&A3KnkTBm{1F=r7Tm-oP^*@%Ymn&zw@f-to<$+>W1k{|89zhbaI6 delta 2672 zcmZuz0c@Ma6+XK*v1!VmMsCu?T^&+46>AEiO{0_q7Dx^i7Eh_DyRJALDO*>-+d9-} zh!N~GDfs93!RD$`O%)p*QcDpikO(>!bzx2GfTAi?S>;U`N|_Po$w(dq#5P9vz5nb~ zn`Y_z|L^X-d+*(Q_s)MdnvJfw@Xt@aE@O->0i1vV98Rrxep$SpvAJs*i&rw{lD9i* zQWsZyBO4fd4H}WuKia(IH!`-%!C1Mx)zRkNcN1eCi1x`rjP_&Hh0%U_&e3-57)Dz$ z8Vksq-L<1ZXT}+LruHvy=D%pYaOA1KpXabV(61Vey1N{s z*}9pfvZ8WJ^IMQFB$GpVPtP_*syjvE(lW-(?qIn{v}oq}-p;dolSOgdF9$09vG(FH zR4&3Et3UgDT5KKNh%Kaffd*zcZ-$iF987lwUG_vI=m9Uc`M|u%=hSYvzm>+ua2=k4 z&sm8*P%z7bsvRBlRH(CKM1)MOMZyh#7HGQTi^r%yUguDk6Q3zCNyWINWpsj z$7IbHG!H<`XBE5ZaJ4ol61EL5x%?&87Q=BvnrkZgv~49H){()Dt5UtSsC$TX)n+;9 z^TpbCfB)XzvwP`xqY)T}fU&Uo(LLYYF_e#%Qs#M^rq3W%%o@mBM-P(SP{HiYr(IMz zWF&zOJ3Oy^4T7v*NB$2v%>%uZLjvySqc?(|*3FWp&Tzv%cPph>fTLPb2Fd{*#T zlaH$cMj|vLQh$awQ7QVzDfOtYo%$BfTFgSz6;wAvGr@nS&f$HU>X3 zc{GB(cc@L<$8}Qh$)YkHkDo7*et+#Q7@sLx!6gz}TqROF;ZszW%pX=|i!v)!iiaF0 z)eR*{R>x@ar`5J4@>&0i<}V$_lh-2^IbEP}k?0|_UJ?Fs%lpP591dpv@T=XuXVnvE zW_|0(7knYdNtyRG#$Lo`MR->9XN2zvl@-^Q`YGAlhR5K*44E~C8}Jl-+De>)zI{PK zck${DPpNh&rEM@!K@t4j#*G)PtQQ zXwW=DyjJu3h+n7q4~RQ8-$(q5&+MS1#Q&!Ge&Qc!et`Hz%^x9tUh~I@ziso#zBmnD z(}H2*$2Ct7Kce~5#GleUN&Iom4-@sEyXvRnX)byTH XzPhR1bAMknx~K2{heki%G~oOX*6(B; diff --git a/native/fsNotifier/mac/fsnotifier.c b/native/fsNotifier/mac/fsnotifier.c index 0f872b88eb8f..3bd0dd19155c 100644 --- a/native/fsNotifier/mac/fsnotifier.c +++ b/native/fsNotifier/mac/fsnotifier.c @@ -68,24 +68,9 @@ static void callback(ConstFSEventStreamRef streamRef, } static void * EventProcessingThread(void *data) { - CFStringRef path = CFSTR("/"); - CFArrayRef pathsToWatch = CFArrayCreate(NULL, (const void **)&path, 1, NULL); - void *callbackInfo = NULL; - CFAbsoluteTime latency = 0.3; // Latency in seconds - - FSEventStreamRef stream = FSEventStreamCreate( - NULL, - &callback, - callbackInfo, - pathsToWatch, - kFSEventStreamEventIdSinceNow, - latency, - kFSEventStreamCreateFlagNoDefer - ); - + FSEventStreamRef stream = (FSEventStreamRef) data; FSEventStreamScheduleWithRunLoop(stream, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode); FSEventStreamStart(stream); - CFRunLoopRun(); return NULL; } @@ -169,13 +154,29 @@ int main(const int argc, const char* argv[]) { return 1; } - pthread_t threadId; - if (pthread_create(&threadId, NULL, EventProcessingThread, NULL) != 0) { - // Give up if cannot create a thread. + CFStringRef path = CFSTR("/"); + CFArrayRef pathsToWatch = CFArrayCreate(NULL, (const void **)&path, 1, NULL); + CFAbsoluteTime latency = 0.3; // Latency in seconds + FSEventStreamRef stream = FSEventStreamCreate( + NULL, + &callback, + NULL, + pathsToWatch, + kFSEventStreamEventIdSinceNow, + latency, + kFSEventStreamCreateFlagNoDefer + ); + if (stream == NULL) { printf("GIVEUP\n"); return 2; } + pthread_t threadId; + if (pthread_create(&threadId, NULL, EventProcessingThread, stream) != 0) { + printf("GIVEUP\n"); + return 3; + } + while (TRUE) { fscanf(stdin, "%s", command); if (strcmp(command, "EXIT") == 0 || feof(stdin)) break; diff --git a/native/fsNotifier/mac/make.sh b/native/fsNotifier/mac/make.sh index 1810f1b60efa..fbc17c8f77c8 100755 --- a/native/fsNotifier/mac/make.sh +++ b/native/fsNotifier/mac/make.sh @@ -1,3 +1,3 @@ #!/bin/sh -# Clang can be downloaded from from http://llvm.org/releases/download.html or found in XCode 4+ +# Clang can be downloaded from http://llvm.org/releases/download.html or found in XCode 4+ clang -arch i386 -mmacosx-version-min=10.5 -framework CoreServices -o fsnotifier fsnotifier.c