due to a subtle HFS+ filesystem corruption bug in OSX, the kernel may be reporting events using a different case than what the fsevents daemon is expecting. to work around this, we have to override the behavior of realpath() before calling FSEventStreamCreate() to force fsevents to use the expected case. note that we're detecting whether or not the hack is required before overriding realpath(), so most of the time behavior should be the same.
TODO: seperate library and CLI, create actual (non-fork) ruby extension.
…ration but available
…as a CLI option for dumping those values
…f gcc-4.2 rather than clang (both upstream 3.2 and apple's version from xcode 3.2.6 fail to compile for ppc) bundled an additional binary supporting 10.5 on x86_64, i386, ppc, and ppc64. ruby code to select this binary on 10.5 should probably follow... but don't expect this binary to consistently be maintained alongside the primary version due to the effort requried to cobble together a build environment for this particular setup.
…e more confident when manually testing under rosetta (`arch -ppc fsevent_watch`) on 10.6
while pre-compiling a binary supporting 10.5 and ppc has become unreasonably painful on a modern mac, it should now be possible for a 10.5 ppc user to recompile without too much of a hassle. the changes to the build system have been documented. info on verifying the code signature has been documented a crude method of pulling out the embedded Info.plist has been documented corrected a few other details
…ll have access to a 10.6 SDK, bump rb-fsevent version for fix from Dirkjan Bussink
…d for querying SDK metadata
The race conditionn is the following. When a FSEvent#stop is called, it kills the child process and closes the pipe. It can happen that the kill signal is sent and then succesfully the pipe is closed, before the child process dies and the pipe in the parent is closed. This means that IO::select() can raise a Errno::EBADF if the file descriptor is closed while waiting in select(). This additional rescue makes sure we shutdown in this case just like any others. This is a much more reliable solution than adding for example a sleep() between Process.kill and @pipe.close in FSEvent#stop. Found because of rubinius/rubinius#2102.
…I honestly have no idea what I was in the middle of doing at the time.