Hello community,

here is the log from the commit of package rubygem-rb-fsevent for 
openSUSE:Factory checked in at 2015-06-23 11:56:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-rb-fsevent (Old)
 and      /work/SRC/openSUSE:Factory/.rubygem-rb-fsevent.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rubygem-rb-fsevent"

Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-rb-fsevent/rubygem-rb-fsevent.changes    
2014-11-10 17:28:13.000000000 +0100
+++ 
/work/SRC/openSUSE:Factory/.rubygem-rb-fsevent.new/rubygem-rb-fsevent.changes   
    2015-06-23 11:56:44.000000000 +0200
@@ -1,0 +2,11 @@
+Wed Jun 17 10:54:43 UTC 2015 - mrueck...@suse.de
+
+- added rpmlintrc
+
+-------------------------------------------------------------------
+Thu May 21 04:29:57 UTC 2015 - co...@suse.com
+
+- updated to version 0.9.5
+  no changelog found
+
+-------------------------------------------------------------------

Old:
----
  rb-fsevent-0.9.4.gem

New:
----
  gem2rpm.yml
  rb-fsevent-0.9.5.gem
  rubygem-rb-fsevent-rpmlintrc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rubygem-rb-fsevent.spec ++++++
--- /var/tmp/diff_new_pack.SFtGIA/_old  2015-06-23 11:56:44.000000000 +0200
+++ /var/tmp/diff_new_pack.SFtGIA/_new  2015-06-23 11:56:44.000000000 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package rubygem-rb-fsevent
 #
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -15,8 +15,16 @@
 # Please submit bugfixes or comments via http://bugs.opensuse.org/
 #
 
+
+#
+# This file was generated with a gem2rpm.yml and not just plain gem2rpm.
+# All sections marked as MANUAL, license headers, summaries and descriptions
+# can be maintained in that file. Please consult this file before editing any
+# of those fields
+#
+
 Name:           rubygem-rb-fsevent
-Version:        0.9.4
+Version:        0.9.5
 Release:        0
 %define mod_name rb-fsevent
 %define mod_full_name %{mod_name}-%{version}
@@ -26,6 +34,8 @@
 BuildRequires:  %{rubygem gem2rpm}
 Url:            http://rubygems.org/gems/rb-fsevent
 Source:         http://rubygems.org/gems/%{mod_full_name}.gem
+Source1:        rubygem-rb-fsevent-rpmlintrc
+Source2:        gem2rpm.yml
 Summary:        Very simple & usable FSEvents API
 License:        MIT
 Group:          Development/Languages/Ruby

++++++ gem2rpm.yml ++++++
# ---
# ## used by gem2rpm
# :summary: this is a custom summary
# ## used by gem2rpm
# :description: |-
#   this is a custom description
#
#   it can be multiline
# ## used by gem2rpm
# :license: MIT or Ruby
# ## used by gem2rpm and gem_packages
# :version_suffix: -x_y
# ## used by gem2rpm and gem_packages
# :disable_docs: true
# ## used by gem2rpm
# :disable_automatic_rdoc_dep: true
# ## used by gem2rpm
# :preamble: |-
#   BuildRequires: foobar
#   Requires: foobar
# ## used by gem2rpm
# :patches:
#   foo.patch: -p1
#   bar.patch: 
# ## used by gem2rpm
:sources:
# - foo.desktop
# - bar.desktop
# :gem_install_args: '....'
# ## used by gem2rpm
# :pre_install: |-
#   %if 0%{?use_system_libev}
#   export USE_VENDORED_LIBEV="no"
#   %endif
# ## used by gem2rpm
# :post_install: |-
#   # delete custom files here or do other fancy stuff
#   install -D -m 0644 %{S:1} %{buildroot}%{_bindir}/gem2rpm-opensuse
# ## used by gem2rpm
# :testsuite_command: |-
#   (pushd %{buildroot}%{gem_base}/gems/%{mod_full_name} && rake test)
# ## used by gem2rpm
# :filelist: |-
#   /usr/bin/gem2rpm-opensuse
# ## used by gem2rpm
# :scripts:
#   :post: |-
#     /bin/echo foo
# ## used by gem_packages
# :main:
#   :preamble: |-
#     Requires: util-linux
#     Recommends: pwgen
#   :filelist: |-
#     /usr/bin/gem2rpm-opensuse
# ## used by gem_packages
# :custom:
#   apache:
#     :preamble: |-
#       Requires: .....
#     :filelist: |-
#       /etc/apache2/conf.d/passenger.conf
#     :summary: Custom summary is optional
#     :description: |-
#       Custom description is optional
#
#       bar
#     :post: |-
#       /bin/echo foo
#
:sources:
- rubygem-rb-fsevent-rpmlintrc
++++++ rb-fsevent-0.9.4.gem -> rb-fsevent-0.9.5.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/README.md new/README.md
--- old/README.md       2013-12-30 13:16:49.000000000 +0100
+++ new/README.md       1970-01-01 01:00:00.000000000 +0100
@@ -7,8 +7,14 @@
 
 * RubyCocoa not required!
 * Signals are working (really)
-* Tested on MRI 1.8.7 & 1.9.3, RBX 2.0.0dev, JRuby
-* Tested on 10.6 -> 10.8 (though 10.5 should work just as well)
+* Tested on MRI 2.1, RBX 2.5, JRuby
+* Tested on 10.10
+
+## HFS+ filename corruption bug
+
+There is a _very_ long-standing (since 2011) OSX bug where sometimes the 
filename metadata for HFS+ filesystems will get corrupted, resulting in some 
APIs returning one case for a file, and other APIs returning another. This 
corruption is not currently fixed by their tools, though Apple has been made 
aware of the issue and are working on it (as of may 2015). The result is that 
sometimes, _for no visible reason to the user_, fsevents would simply not work. 
As of rb-fsevent 0.9.5 this issue is properly detected and an insanely hacky 
(but effective) workaround is used that replaces the system `realpath()` with a 
custom implementation that should always return the same value as the kernel 
reporting (thus fixing fsevents).
+
+Please note that this doesn't repair the underlying issue on disk. Other apps 
and libraries using fsevents will continue to break with no warning. There may 
be other issues unrelated to fsevents.
 
 ## Install
 
@@ -16,9 +22,9 @@
 
 ### re-compilation
 
-rb-fsevent comes with a pre-compiled fsevent\_watch binary supporting x86\_64 
and i386 on 10.6 and above. The binary is codesigned with my (Travis Tilley) 
Developer ID as an extra precaution when distributing pre-compiled code and 
contains an embedded plist describing its build environment. This should be 
sufficient for most users, but if you need to use rb-fsevent on 10.5 and/or on 
PPC then recompilation is necessary. This can be done by entering the installed 
gem's ext directory and running:
+rb-fsevent comes with a pre-compiled fsevent\_watch binary supporting x86\_64 
on 10.9 and above. The binary is codesigned with my (Travis Tilley) Developer 
ID as an extra precaution when distributing pre-compiled code and contains an 
embedded plist describing its build environment. This should be sufficient for 
most users, but if you need to use rb-fsevent on 10.8 or lower then 
recompilation is necessary. This can be done by entering the installed gem's 
ext directory and running:
 
-    MACOSX_DEPLOYMENT_TARGET="10.5" CC=/usr/bin/gcc-4.2 rake ppc replace_exe
+    MACOSX_DEPLOYMENT_TARGET="10.7" rake replace_exe
 
 The following ENV vars are recognized:
 
@@ -216,10 +222,6 @@
       [etc]
 
 
-## Note about FFI
-
-rb-fsevent doesn't use [ruby-ffi](http://github.com/ffi/ffi) anymore because 
it sadly doesn't allow for catching Signals. You can still see the code in the 
[ffi branch](http://github.com/thibaudgg/rb-fsevent/tree/ffi).
-
 ## Development
 
 * Source hosted at [GitHub](http://github.com/thibaudgg/rb-fsevent)
@@ -231,15 +233,10 @@
 
 The list of tested targets is currently:
 
-    %w[1.8.7-p371 1.9.3-p362 2.0.0-dev rbx-2.0.0-dev jruby-1.7.1]
-
-## Donations
-
-rb-fsevent is truly free software. The license is quite liberal (you don't 
even have to contribute back your changes). If, however, you'd like to donate 
as a way of showing support for the project and its continued development:
+    %w[2.2.2 2.3.0-dev rbx-2.5.5 jruby-1.7.9]
 
-[![Donate 
Bitcoins](https://d2o7j92jk8qjiw.cloudfront.net/assets/buttons/donation_small-2d08f8cd93c98acf496e0411cc6a5262.png)](https://coinbase.com/checkouts/5233986321e2217499bd6ef91f679aa4?c=rb-fsevent)
-    
 ## Authors
 
 * [Travis Tilley](http://github.com/ttilley)
 * [Thibaud Guillaume-Gentil](http://github.com/thibaudgg)
+* [Andrey Tarantsov](https://github.com/andreyvit)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Rakefile new/Rakefile
--- old/Rakefile        2013-12-30 13:16:49.000000000 +0100
+++ new/Rakefile        1970-01-01 01:00:00.000000000 +0100
@@ -9,7 +9,7 @@
 namespace(:spec) do
   desc "Run all specs on multiple ruby versions"
   task(:portability) do
-    versions = %w[1.8.7-p371 1.9.3-p362 2.0.0-dev rbx-2.0.0-dev jruby-1.7.1]
+    versions = %w[2.2.2 2.3.0-dev rbx-2.5.5 jruby-1.7.9]
     versions.each do |version|
       # system <<-BASH
       #   bash -c 'source ~/.rvm/scripts/rvm;
Files old/bin/fsevent_watch and new/bin/fsevent_watch differ
Files old/bin/fsevent_watch_10_5 and new/bin/fsevent_watch_10_5 differ
Files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ext/fsevent_watch/FSEventsFix.c 
new/ext/fsevent_watch/FSEventsFix.c
--- old/ext/fsevent_watch/FSEventsFix.c 1970-01-01 01:00:00.000000000 +0100
+++ new/ext/fsevent_watch/FSEventsFix.c 1970-01-01 01:00:00.000000000 +0100
@@ -0,0 +1,626 @@
+/*
+ * FSEventsFix
+ *
+ * Resolves a long-standing bug in realpath() that prevents FSEvents API from
+ * monitoring certain folders on a wide range of OS X released (10.6-10.10 at 
least).
+ *
+ * The underlying issue is that for some folders, realpath() call starts 
returning
+ * a path with incorrect casing (e.g. "/users/smt" instead of "/Users/smt").
+ * FSEvents is case-sensitive and calls realpath() on the paths you pass in, so
+ * an incorrect value returned by realpath() prevents FSEvents from seeing any
+ * change events.
+ *
+ * See the discussion at https://github.com/thibaudgg/rb-fsevent/issues/10 
about
+ * the history of this bug and how this library came to exist.
+ *
+ * This library uses Facebook's fishhook to replace a custom implementation of
+ * realpath in place of the system realpath; FSEvents will then invoke our 
custom
+ * implementation (which does not screw up the names) and will thus work 
correctly.
+ *
+ * Our implementation of realpath is based on the open-source implementation 
from
+ * OS X 10.10, with a single change applied (enclosed in "BEGIN WORKAROUND FOR
+ * OS X BUG" ... "END WORKAROUND FOR OS X BUG").
+ *
+ * Include FSEventsFix.{h,c} into your project and call FSEventsFixInstall().
+ *
+ * It is recommended that you install FSEventsFix on demand, using 
FSEventsFixIsBroken
+ * to check if the folder you're about to pass to FSEventStreamCreate needs 
the fix.
+ * Note that the fix must be applied before calling FSEventStreamCreate.
+ *
+ * FSEventsFixIsBroken requires a path that uses the correct case for all 
folder names,
+ * i.e. a path provided by the system APIs or constructed from folder names 
provided
+ * by the directory enumeration APIs.
+ *
+ * Copyright (c) 2015 Andrey Tarantsov <and...@tarantsov.com>
+ * Copyright (c) 2003 Constantin S. Svintsoff <kos...@iclub.nsu.ru>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to 
deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * Based on a realpath implementation from Apple libc 498.1.7, taken from
+ * 
http://www.opensource.apple.com/source/Libc/Libc-498.1.7/stdlib/FreeBSD/realpath.c
+ * and provided under the following license:
+ *
+ * Copyright (c) 2003 Constantin S. Svintsoff <kos...@iclub.nsu.ru>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The names of the authors may not be used to endorse or promote
+ *    products derived from this software without specific prior written
+ *    permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+
+#include "FSEventsFix.h"
+
+#include <dispatch/dispatch.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <stdbool.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <ctype.h>
+#include <dlfcn.h>
+
+
+const char *const FSEventsFixVersionString = "0.11.0";
+
+
+#pragma mark - Forward declarations
+
+static char *(*orig_realpath)(const char *restrict file_name, char 
resolved_name[PATH_MAX]);
+static char *CFURL_realpath(const char *restrict file_name, char 
resolved_name[PATH_MAX]);
+static char *FSEventsFix_realpath_wrapper(const char *restrict src, char 
*restrict dst);
+
+static void _FSEventsFixHookInstall();
+static void _FSEventsFixHookUninstall();
+
+
+#pragma mark - Internal state
+
+static dispatch_queue_t g_queue = NULL;
+
+static int64_t g_enable_refcount = 0;
+
+static bool g_in_self_test = false;
+static bool g_hook_operational = false;
+
+static void(^g_logging_block)(FSEventsFixMessageType type, const char 
*message);
+static FSEventsFixDebugOptions g_debug_opt = 0;
+
+typedef struct {
+    char *name;
+    void *replacement;
+    void *original;
+    uint hooked_symbols;
+} rebinding_t;
+
+static rebinding_t g_rebindings[] = {
+    { "_realpath$DARWIN_EXTSN", (void *) &FSEventsFix_realpath_wrapper, (void 
*) &realpath, 0 }
+};
+static const uint g_rebindings_nel = sizeof(g_rebindings) / 
sizeof(g_rebindings[0]);
+
+
+#pragma mark - Logging
+
+static void _FSEventsFixLog(FSEventsFixMessageType type, const char 
*__restrict fmt, ...) __attribute__((__format__ (__printf__, 2, 3)));
+
+static void _FSEventsFixLog(FSEventsFixMessageType type, const char 
*__restrict fmt, ...) {
+    if (g_logging_block) {
+        char *message = NULL;
+        va_list va;
+        va_start(va, fmt);
+        vasprintf(&message, fmt, va);
+        va_end(va);
+
+        if (message) {
+            if (!!(g_debug_opt & FSEventsFixDebugOptionLogToStderr)) {
+                fprintf(stderr, "FSEventsFix: %s\n", message);
+            }
+            if (g_logging_block) {
+                g_logging_block(type, message);
+            }
+            free(message);
+        }
+    }
+}
+
+
+#pragma mark - API
+
+void _FSEventsFixInitialize() {
+    static dispatch_once_t onceToken;
+    dispatch_once(&onceToken, ^{
+        g_queue = dispatch_queue_create("FSEventsFix", DISPATCH_QUEUE_SERIAL);
+    });
+}
+
+void FSEventsFixConfigure(FSEventsFixDebugOptions debugOptions, 
void(^loggingBlock)(FSEventsFixMessageType severity, const char *message)) {
+    _FSEventsFixInitialize();
+    loggingBlock = Block_copy(loggingBlock);
+    dispatch_sync(g_queue, ^{
+        g_debug_opt = debugOptions;
+        g_logging_block = loggingBlock;
+    });
+}
+
+// Must be called from the private serial queue.
+void _FSEventsFixSelfTest() {
+    g_in_self_test = true;
+    g_hook_operational = false;
+    static char result[1024];
+    realpath("/Etc/__!FSEventsFixSelfTest!__", result);
+    g_in_self_test = false;
+}
+
+void FSEventsFixEnable() {
+    _FSEventsFixInitialize();
+    dispatch_sync(g_queue, ^{
+        if (++g_enable_refcount == 1) {
+            orig_realpath = dlsym(RTLD_DEFAULT, "realpath");
+            _FSEventsFixHookInstall();
+            _FSEventsFixSelfTest();
+            if (g_hook_operational) {
+                _FSEventsFixLog(FSEventsFixMessageTypeStatusChange, "Enabled");
+            } else {
+                _FSEventsFixLog(FSEventsFixMessageTypeFatalError, "Failed to 
enable (hook not called)");
+            }
+        }
+    });
+}
+
+void FSEventsFixDisable() {
+    _FSEventsFixInitialize();
+    dispatch_sync(g_queue, ^{
+        if (g_enable_refcount == 0) {
+            abort();
+        }
+        if (--g_enable_refcount == 0) {
+            _FSEventsFixHookUninstall();
+            _FSEventsFixSelfTest();
+            if (!g_hook_operational) {
+                _FSEventsFixLog(FSEventsFixMessageTypeStatusChange, 
"Disabled");
+            } else {
+                _FSEventsFixLog(FSEventsFixMessageTypeFatalError, "Failed to 
disable (hook still called)");
+            }
+        }
+    });
+}
+
+bool FSEventsFixIsOperational() {
+    _FSEventsFixInitialize();
+    __block bool result = false;
+    dispatch_sync(g_queue, ^{
+        result = g_hook_operational;
+    });
+    return result;
+}
+
+bool _FSEventsFixIsBroken_noresolve(const char *resolved) {
+    if (!!(g_debug_opt & FSEventsFixDebugOptionSimulateBroken)) {
+        if (strstr(resolved, FSEventsFixSimulatedBrokenFolderMarker)) {
+            return true;
+        }
+    }
+
+    char *reresolved = realpath(resolved, NULL);
+    if (reresolved) {
+        bool broken = (0 != strcmp(resolved, reresolved));
+        free(reresolved);
+        return broken;
+    } else {
+        return true;
+    }
+}
+
+bool FSEventsFixIsBroken(const char *path) {
+    char *resolved = CFURL_realpath(path, NULL);
+    if (!resolved) {
+        return true;
+    }
+    bool broken = _FSEventsFixIsBroken_noresolve(resolved);
+    free(resolved);
+    return broken;
+}
+
+char *FSEventsFixCopyRootBrokenFolderPath(const char *inpath) {
+    if (!FSEventsFixIsBroken(inpath)) {
+        return NULL;
+    }
+
+    // get a mutable copy of an absolute path
+    char *path = CFURL_realpath(inpath, NULL);
+    if (!path) {
+        return NULL;
+    }
+
+    for (;;) {
+        char *sep = strrchr(path, '/');
+        if ((sep == NULL) || (sep == path)) {
+            break;
+        }
+        *sep = 0;
+        if (!_FSEventsFixIsBroken_noresolve(path)) {
+            *sep = '/';
+            break;
+        }
+    }
+
+    return path;
+}
+
+static void _FSEventsFixAttemptRepair(const char *folder) {
+    int rv = rename(folder, folder);
+
+    if (!!(g_debug_opt & FSEventsFixDebugOptionSimulateRepair)) {
+        const char *pos = strstr(folder, 
FSEventsFixSimulatedBrokenFolderMarker);
+        if (pos) {
+            char *fixed = strdup(folder);
+            fixed[pos - folder] = 0;
+            strcat(fixed, pos + 
strlen(FSEventsFixSimulatedBrokenFolderMarker));
+
+            rv = rename(folder, fixed);
+            free(fixed);
+        }
+    }
+
+    if (rv != 0) {
+        if (errno == EPERM) {
+            _FSEventsFixLog(FSEventsFixMessageTypeResult, "Permission error 
when trying to repair '%s'", folder);
+        } else {
+            _FSEventsFixLog(FSEventsFixMessageTypeExpectedFailure, "Unknown 
error when trying to repair '%s': errno = %d", folder, errno);
+        }
+    }
+}
+
+FSEventsFixRepairStatus FSEventsFixRepairIfNeeded(const char *inpath) {
+    char *root = FSEventsFixCopyRootBrokenFolderPath(inpath);
+    if (root == NULL) {
+        return FSEventsFixRepairStatusNotBroken;
+    }
+
+    for (;;) {
+        _FSEventsFixAttemptRepair(root);
+        char *newRoot = FSEventsFixCopyRootBrokenFolderPath(inpath);
+        if (newRoot == NULL) {
+            _FSEventsFixLog(FSEventsFixMessageTypeResult, "Repaired '%s' in 
'%s'", root, inpath);
+            free(root);
+            return FSEventsFixRepairStatusRepaired;
+        }
+        if (0 == strcmp(root, newRoot)) {
+            _FSEventsFixLog(FSEventsFixMessageTypeResult, "Failed to repair 
'%s' in '%s'", root, inpath);
+            free(root);
+            free(newRoot);
+            return FSEventsFixRepairStatusFailed;
+        }
+        _FSEventsFixLog(FSEventsFixMessageTypeResult, "Partial success, 
repaired '%s' in '%s'", root, inpath);
+        free(root);
+        root = newRoot;
+    }
+}
+
+
+#pragma mark - FSEventsFix realpath wrapper
+
+static char *FSEventsFix_realpath_wrapper(const char * __restrict src, char * 
__restrict dst) {
+    if (g_in_self_test) {
+        if (strstr(src, "__!FSEventsFixSelfTest!__")) {
+            g_hook_operational = true;
+        }
+    }
+
+    // CFURL_realpath doesn't support putting where resolution failed into the
+    // dst buffer, so we call the original realpath here first and if it gets a
+    // result, replace that with the output of CFURL_realpath. that way all the
+    // features of the original realpath are available.
+    char *rv = NULL;
+    char *orv = orig_realpath(src, dst);
+    if (orv != NULL) { rv = CFURL_realpath(src, dst); }
+
+    if (!!(g_debug_opt & FSEventsFixDebugOptionLogCalls)) {
+        char *result = rv ?: dst;
+        _FSEventsFixLog(FSEventsFixMessageTypeCall, "realpath(%s) => %s\n", 
src, result);
+    }
+
+    if (!!(g_debug_opt & FSEventsFixDebugOptionUppercaseReturn)) {
+        char *result = rv ?: dst;
+        if (result) {
+            for (char *pch = result; *pch; ++pch) {
+                *pch = (char)toupper(*pch);
+            }
+        }
+    }
+
+    return rv;
+}
+
+
+#pragma mark - realpath
+
+// naive implementation of realpath on top of CFURL
+// NOTE: doesn't quite support the full range of errno results one would
+// expect here, in part because some of these functions just return a boolean,
+// and in part because i'm not dealing with messy CFErrorRef objects and
+// attempting to translate those to sane errno values.
+// NOTE: the OSX realpath will return _where_ resolution failed in 
resolved_name
+// if passed in and return NULL. we can't properly support that extension here
+// since the resolution happens entirely behind the scenes to us in CFURL.
+static char* CFURL_realpath(const char *file_name, char 
resolved_name[PATH_MAX])
+{
+    char* resolved;
+    CFURLRef url1;
+    CFURLRef url2;
+    CFStringRef path;
+
+    if (file_name == NULL) {
+        errno = EINVAL;
+        return (NULL);
+    }
+
+#if __DARWIN_UNIX03
+    if (*file_name == 0) {
+        errno = ENOENT;
+        return (NULL);
+    }
+#endif
+
+    // create a buffer to store our result if we weren't passed one
+    if (!resolved_name) {
+        if ((resolved = malloc(PATH_MAX)) == NULL) return (NULL);
+    } else {
+        resolved = resolved_name;
+    }
+
+    url1 = CFURLCreateFromFileSystemRepresentation(NULL, (const 
UInt8*)file_name, (CFIndex)strlen(file_name), false);
+    if (url1 == NULL) { goto error_return; }
+
+    url2 = CFURLCopyAbsoluteURL(url1);
+    CFRelease(url1);
+    if (url2 == NULL) { goto error_return; }
+
+    url1 = CFURLCreateFileReferenceURL(NULL, url2, NULL);
+    CFRelease(url2);
+    if (url1 == NULL) { goto error_return; }
+
+    // if there are multiple hard links to the original path, this may end up
+    // being _completely_ different from what was intended
+    url2 = CFURLCreateFilePathURL(NULL, url1, NULL);
+    CFRelease(url1);
+    if (url2 == NULL) { goto error_return; }
+
+    path = CFURLCopyFileSystemPath(url2, kCFURLPOSIXPathStyle);
+    CFRelease(url2);
+    if (path == NULL) { goto error_return; }
+
+    bool success = CFStringGetCString(path, resolved, PATH_MAX, 
kCFStringEncodingUTF8);
+    CFRelease(path);
+    if (!success) { goto error_return; }
+
+    return resolved;
+
+error_return:
+    if (!resolved_name) {
+        // we weren't passed in an output buffer and created our own. free it
+        int e = errno;
+        free(resolved);
+        errno = e;
+    }
+    return (NULL);
+}
+
+
+#pragma mark - fishhook
+
+// Copyright (c) 2013, Facebook, Inc.
+// All rights reserved.
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//   * Redistributions of source code must retain the above copyright notice,
+//     this list of conditions and the following disclaimer.
+//   * Redistributions in binary form must reproduce the above copyright 
notice,
+//     this list of conditions and the following disclaimer in the 
documentation
+//     and/or other materials provided with the distribution.
+//   * Neither the name Facebook nor the names of its contributors may be used 
to
+//     endorse or promote products derived from this software without specific
+//     prior written permission.
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 
USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#import <stdlib.h>
+#import <string.h>
+#import <sys/types.h>
+#import <mach-o/dyld.h>
+#import <mach-o/loader.h>
+#import <mach-o/nlist.h>
+
+#ifdef __LP64__
+typedef struct mach_header_64 mach_header_t;
+typedef struct segment_command_64 segment_command_t;
+typedef struct section_64 section_t;
+typedef struct nlist_64 nlist_t;
+#define LC_SEGMENT_ARCH_DEPENDENT LC_SEGMENT_64
+#else
+typedef struct mach_header mach_header_t;
+typedef struct segment_command segment_command_t;
+typedef struct section section_t;
+typedef struct nlist nlist_t;
+#define LC_SEGMENT_ARCH_DEPENDENT LC_SEGMENT
+#endif
+
+static volatile bool g_hook_installed = false;
+
+static void _FSEventsFixHookUpdateSection(section_t *section, intptr_t slide, 
nlist_t *symtab, char *strtab, uint32_t *indirect_symtab)
+{
+    uint32_t *indirect_symbol_indices = indirect_symtab + section->reserved1;
+    void **indirect_symbol_bindings = (void **)((uintptr_t)slide + 
section->addr);
+    for (uint i = 0; i < section->size / sizeof(void *); i++) {
+        uint32_t symtab_index = indirect_symbol_indices[i];
+        if (symtab_index == INDIRECT_SYMBOL_ABS || symtab_index == 
INDIRECT_SYMBOL_LOCAL ||
+            symtab_index == (INDIRECT_SYMBOL_LOCAL   | INDIRECT_SYMBOL_ABS)) {
+            continue;
+        }
+        uint32_t strtab_offset = symtab[symtab_index].n_un.n_strx;
+        char *symbol_name = strtab + strtab_offset;
+        for (rebinding_t *cur = g_rebindings, *end = g_rebindings + 
g_rebindings_nel; cur < end; ++cur)  {
+            if (strcmp(symbol_name, cur->name) == 0) {
+                if (g_hook_installed) {
+                    if (indirect_symbol_bindings[i] != cur->replacement) {
+                        indirect_symbol_bindings[i] = cur->replacement;
+                        ++cur->hooked_symbols;
+                    }
+                } else if (cur->original != NULL) {
+                    if (indirect_symbol_bindings[i] == cur->replacement) {
+                        indirect_symbol_bindings[i] = cur->original;
+                        if (cur->hooked_symbols > 0) {
+                            --cur->hooked_symbols;
+                        }
+                    }
+                }
+                goto symbol_loop;
+            }
+        }
+    symbol_loop:;
+    }
+}
+
+static void _FSEventsFixHookUpdateImage(const struct mach_header *header, 
intptr_t slide) {
+    Dl_info info;
+    if (dladdr(header, &info) == 0) {
+        return;
+    }
+
+    segment_command_t *cur_seg_cmd;
+    segment_command_t *linkedit_segment = NULL;
+    struct symtab_command* symtab_cmd = NULL;
+    struct dysymtab_command* dysymtab_cmd = NULL;
+
+    uintptr_t cur = (uintptr_t)header + sizeof(mach_header_t);
+    for (uint i = 0; i < header->ncmds; i++, cur += cur_seg_cmd->cmdsize) {
+        cur_seg_cmd = (segment_command_t *)cur;
+        if (cur_seg_cmd->cmd == LC_SEGMENT_ARCH_DEPENDENT) {
+            if (strcmp(cur_seg_cmd->segname, SEG_LINKEDIT) == 0) {
+                linkedit_segment = cur_seg_cmd;
+            }
+        } else if (cur_seg_cmd->cmd == LC_SYMTAB) {
+            symtab_cmd = (struct symtab_command*)cur_seg_cmd;
+        } else if (cur_seg_cmd->cmd == LC_DYSYMTAB) {
+            dysymtab_cmd = (struct dysymtab_command*)cur_seg_cmd;
+        }
+    }
+
+    if (!symtab_cmd || !dysymtab_cmd || !linkedit_segment ||
+        !dysymtab_cmd->nindirectsyms) {
+        return;
+    }
+
+    // Find base symbol/string table addresses
+    uintptr_t linkedit_base = (uintptr_t)slide + linkedit_segment->vmaddr - 
linkedit_segment->fileoff;
+    nlist_t *symtab = (nlist_t *)(linkedit_base + symtab_cmd->symoff);
+    char *strtab = (char *)(linkedit_base + symtab_cmd->stroff);
+
+    // Get indirect symbol table (array of uint32_t indices into symbol table)
+    uint32_t *indirect_symtab = (uint32_t *)(linkedit_base + 
dysymtab_cmd->indirectsymoff);
+
+    cur = (uintptr_t)header + sizeof(mach_header_t);
+    for (uint i = 0; i < header->ncmds; i++, cur += cur_seg_cmd->cmdsize) {
+        cur_seg_cmd = (segment_command_t *)cur;
+        if (cur_seg_cmd->cmd == LC_SEGMENT_ARCH_DEPENDENT) {
+            if (strcmp(cur_seg_cmd->segname, SEG_DATA) != 0) {
+                continue;
+            }
+            for (uint j = 0; j < cur_seg_cmd->nsects; j++) {
+                section_t *sect =
+                (section_t *)(cur + sizeof(segment_command_t)) + j;
+                if ((sect->flags & SECTION_TYPE) == S_LAZY_SYMBOL_POINTERS) {
+                    _FSEventsFixHookUpdateSection(sect, slide, symtab, strtab, 
indirect_symtab);
+                }
+                if ((sect->flags & SECTION_TYPE) == 
S_NON_LAZY_SYMBOL_POINTERS) {
+                    _FSEventsFixHookUpdateSection(sect, slide, symtab, strtab, 
indirect_symtab);
+                }
+            }
+        }
+    }
+}
+
+static void _FSEventsFixHookSaveOriginals() {
+    for (rebinding_t *cur = g_rebindings, *end = g_rebindings + 
g_rebindings_nel; cur < end; ++cur)  {
+        void *original = cur->original = dlsym(RTLD_DEFAULT, cur->name+1);
+        if (!original) {
+            const char *error = dlerror();
+            _FSEventsFixLog(FSEventsFixMessageTypeFatalError, "Cannot find 
symbol %s, dlsym says: %s\n", cur->name, error);
+        }
+    }
+}
+
+static void _FSEventsFixHookUpdate() {
+    uint32_t c = _dyld_image_count();
+    for (uint32_t i = 0; i < c; i++) {
+        _FSEventsFixHookUpdateImage(_dyld_get_image_header(i), 
_dyld_get_image_vmaddr_slide(i));
+    }
+}
+
+static void _FSEventsFixHookInstall() {
+    static bool first_rebinding_done = false;
+
+    if (!g_hook_installed) {
+        g_hook_installed = true;
+
+        if (!first_rebinding_done) {
+            first_rebinding_done = true;
+            _FSEventsFixHookSaveOriginals();
+            _dyld_register_func_for_add_image(_FSEventsFixHookUpdateImage);
+        } else {
+            _FSEventsFixHookUpdate();
+        }
+    }
+}
+
+static void _FSEventsFixHookUninstall() {
+    if (g_hook_installed) {
+        g_hook_installed = false;
+        _FSEventsFixHookUpdate();
+    }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ext/fsevent_watch/FSEventsFix.h 
new/ext/fsevent_watch/FSEventsFix.h
--- old/ext/fsevent_watch/FSEventsFix.h 1970-01-01 01:00:00.000000000 +0100
+++ new/ext/fsevent_watch/FSEventsFix.h 1970-01-01 01:00:00.000000000 +0100
@@ -0,0 +1,105 @@
+/*
+ * FSEventsFix
+ *
+ * Works around a long-standing bug in realpath() that prevents FSEvents API 
from
+ * monitoring certain folders on a wide range of OS X releases (10.6-10.10 at 
least).
+ *
+ * The underlying issue is that for some folders, realpath() call starts 
returning
+ * a path with incorrect casing (e.g. "/users/smt" instead of "/Users/smt").
+ * FSEvents is case-sensitive and calls realpath() on the paths you pass in, so
+ * an incorrect value returned by realpath() prevents FSEvents from seeing any
+ * change events.
+ *
+ * See the discussion at https://github.com/thibaudgg/rb-fsevent/issues/10 
about
+ * the history of this bug and how this library came to exist.
+ *
+ * This library uses Facebook's fishhook to replace a custom implementation of
+ * realpath in place of the system realpath; FSEvents will then invoke our 
custom
+ * implementation (which does not screw up the names) and will thus work 
correctly.
+ *
+ * Our implementation of realpath is based on the open-source implementation 
from
+ * OS X 10.10, with a single change applied (enclosed in "BEGIN WORKAROUND FOR
+ * OS X BUG" ... "END WORKAROUND FOR OS X BUG").
+ *
+ * Include FSEventsFix.{h,c} into your project and call FSEventsFixInstall().
+ *
+ * It is recommended that you install FSEventsFix on demand, using 
FSEventsFixIsBroken
+ * to check if the folder you're about to pass to FSEventStreamCreate needs 
the fix.
+ * Note that the fix must be applied before calling FSEventStreamCreate.
+ *
+ * FSEventsFixIsBroken requires a path that uses the correct case for all 
folder names,
+ * i.e. a path provided by the system APIs or constructed from folder names 
provided
+ * by the directory enumeration APIs.
+ *
+ * See .c file for license & copyrights, but basically this is available under 
a mix
+ * of MIT and BSD licenses.
+ */
+
+#ifndef __FSEventsFix__
+#define __FSEventsFix__
+
+#include <CoreFoundation/CoreFoundation.h>
+
+/// A library version string (e.g. 1.2.3) for displaying and logging purposes
+extern const char *const FSEventsFixVersionString;
+
+/// See FSEventsFixDebugOptionSimulateBroken
+#define FSEventsFixSimulatedBrokenFolderMarker  "__!FSEventsBroken!__"
+
+typedef CF_OPTIONS(unsigned, FSEventsFixDebugOptions) {
+    /// Always return an uppercase string from realpath
+    FSEventsFixDebugOptionUppercaseReturn  = 0x01,
+    
+    /// Log all calls to realpath using the logger configured via 
FSEventsFixConfigure
+    FSEventsFixDebugOptionLogCalls         = 0x02,
+
+    /// In addition to the logging block (if any), log everything to stderr
+    FSEventsFixDebugOptionLogToStderr      = 0x08,
+    
+    /// Report paths containing FSEventsFixSimulatedBrokenFolderMarker as 
broken
+    FSEventsFixDebugOptionSimulateBroken   = 0x10,
+    
+    /// Repair paths containing FSEventsFixSimulatedBrokenFolderMarker by 
renaming them
+    FSEventsFixDebugOptionSimulateRepair   = 0x20,
+};
+
+typedef CF_ENUM(int, FSEventsFixMessageType) {
+    /// Call logging requested via FSEventsFixDebugOptionLogCalls
+    FSEventsFixMessageTypeCall,
+    
+    /// Results of actions like repair, and other pretty verbose, but notable, 
stuff.
+    FSEventsFixMessageTypeResult,
+
+    /// Enabled/disabled status change
+    FSEventsFixMessageTypeStatusChange,
+
+    /// Expected failure (treat as a warning)
+    FSEventsFixMessageTypeExpectedFailure,
+
+    /// Severe failure that most likely means that the library won't work
+    FSEventsFixMessageTypeFatalError
+};
+
+typedef CF_ENUM(int, FSEventsFixRepairStatus) {
+    FSEventsFixRepairStatusNotBroken,
+    FSEventsFixRepairStatusRepaired,
+    FSEventsFixRepairStatusFailed,
+};
+
+/// Note that the logging block can be called on any dispatch queue.
+void FSEventsFixConfigure(FSEventsFixDebugOptions debugOptions, 
void(^loggingBlock)(FSEventsFixMessageType type, const char *message));
+
+void FSEventsFixEnable();
+void FSEventsFixDisable();
+
+bool FSEventsFixIsOperational();
+
+bool FSEventsFixIsBroken(const char *path);
+
+/// If the path is broken, returns a string identifying the root broken folder,
+/// otherwise, returns NULL. You need to free() the returned string.
+char *FSEventsFixCopyRootBrokenFolderPath(const char *path);
+
+FSEventsFixRepairStatus FSEventsFixRepairIfNeeded(const char *path);
+
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ext/fsevent_watch/main.c new/ext/fsevent_watch/main.c
--- old/ext/fsevent_watch/main.c        2013-12-30 13:16:49.000000000 +0100
+++ new/ext/fsevent_watch/main.c        1970-01-01 01:00:00.000000000 +0100
@@ -1,5 +1,6 @@
 #include "common.h"
 #include "cli.h"
+#include "FSEventsFix.h"
 
 // TODO: set on fire. cli.{h,c} handle both parsing and defaults, so there's
 //       no need to set those here. also, in order to scope metadata by path,
@@ -34,7 +35,7 @@
                              void* eventPaths,
                              const FSEventStreamEventFlags eventFlags[],
                              const FSEventStreamEventId eventIds[]);
-
+static bool needs_fsevents_fix = false;
 
 // Resolve a path and append it to the CLI settings structure
 // The FSEvents API will, internally, resolve paths using a similar scheme.
@@ -126,9 +127,18 @@
 #endif
 
   CFStringRef cfPath = CFURLCopyFileSystemPath(placeholder, 
kCFURLPOSIXPathStyle);
+  CFRelease(placeholder);
+
+  char cPath[PATH_MAX];
+  if (CFStringGetCString(cfPath, cPath, PATH_MAX, kCFStringEncodingUTF8)) {
+    FSEventsFixRepairStatus status = FSEventsFixRepairIfNeeded(cPath);
+    if (status == FSEventsFixRepairStatusFailed) {
+      needs_fsevents_fix = true;
+    }
+  }
+
   CFArrayAppendValue(config.paths, cfPath);
   CFRelease(cfPath);
-  CFRelease(placeholder);
 
 #else
 
@@ -462,6 +472,10 @@
 {
   parse_cli_settings(argc, argv);
 
+  if (needs_fsevents_fix) {
+    FSEventsFixEnable();
+  }
+
   FSEventStreamContext context = {0, NULL, NULL, NULL, NULL};
   FSEventStreamRef stream;
   stream = FSEventStreamCreate(kCFAllocatorDefault,
@@ -477,6 +491,10 @@
   fprintf(stderr, "\n");
 #endif
 
+  if (needs_fsevents_fix) {
+    FSEventsFixDisable();
+  }
+
   FSEventStreamScheduleWithRunLoop(stream,
                                    CFRunLoopGetCurrent(),
                                    kCFRunLoopDefaultMode);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ext/rakefile.rb new/ext/rakefile.rb
--- old/ext/rakefile.rb 2013-12-30 13:16:49.000000000 +0100
+++ new/ext/rakefile.rb 1970-01-01 01:00:00.000000000 +0100
@@ -8,7 +8,7 @@
 raise "unable to find xcodebuild" unless system('which', 'xcodebuild')
 
 
-FSEVENT_WATCH_EXE_VERSION = '0.1.3'
+FSEVENT_WATCH_EXE_VERSION = '0.1.4'
 
 $this_dir = Pathname.new(__FILE__).dirname.expand_path
 $final_exe = $this_dir.parent.join('bin/fsevent_watch')
@@ -22,11 +22,11 @@
 $now = DateTime.now.xmlschema rescue Time.now.xmlschema
 
 $CC = ENV['CC'] || `which clang || which gcc`.strip
-$CFLAGS = ENV['CFLAGS'] || '-fconstant-cfstrings -fno-strict-aliasing -Wall'
-$ARCHFLAGS = ENV['ARCHFLAGS'] || '-arch x86_64 -arch i386'
-$DEFINES = "-DNS_BUILD_32_LIKE_64 -DNS_BLOCK_ASSERTIONS -DOS_OBJECT_USE_OBJC=0 
-DPROJECT_VERSION=#{FSEVENT_WATCH_EXE_VERSION}"
+$CFLAGS = ENV['CFLAGS'] || '-fconstant-cfstrings -fasm-blocks 
-fstrict-aliasing -Wall'
+$ARCHFLAGS = ENV['ARCHFLAGS'] || '-arch x86_64'
+$DEFINES = "-DNS_BUILD_32_LIKE_64 -DNS_BLOCK_ASSERTIONS 
-DPROJECT_VERSION=#{FSEVENT_WATCH_EXE_VERSION}"
 
-$GCC_C_LANGUAGE_STANDARD = ENV['GCC_C_LANGUAGE_STANDARD'] || 'gnu99'
+$GCC_C_LANGUAGE_STANDARD = ENV['GCC_C_LANGUAGE_STANDARD'] || 'gnu11'
 
 # generic developer id name so it'll match correctly for anyone who has only
 # one developer id in their keychain (not that I expect anyone else to bother)
@@ -72,7 +72,7 @@
 
 task :release => :sw_vers do
   $DEFINES = "-DNDEBUG #{$DEFINES}"
-  $CFLAGS = "#{$CFLAGS} -O3"
+  $CFLAGS = "#{$CFLAGS} -Ofast"
 end
 
 desc 'configure build type depending on whether ENV var FWDEBUG is set'
@@ -148,7 +148,7 @@
     key['CFBundleDisplayName']
     string['FSEvent Watch CLI']
     key['NSHumanReadableCopyright']
-    string['Copyright (C) 2011-2013 Travis Tilley']
+    string['Copyright (C) 2011-2015 Travis Tilley']
 
     key['CFBundleVersion']
     string["#{FSEVENT_WATCH_EXE_VERSION}"]
@@ -222,4 +222,3 @@
 end
 
 task :default => [:replace_exe, :clean]
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rb-fsevent/version.rb 
new/lib/rb-fsevent/version.rb
--- old/lib/rb-fsevent/version.rb       2013-12-30 13:16:49.000000000 +0100
+++ new/lib/rb-fsevent/version.rb       1970-01-01 01:00:00.000000000 +0100
@@ -1,5 +1,5 @@
 # -*- encoding: utf-8 -*-
 
 class FSEvent
-  VERSION = '0.9.4'
+  VERSION = '0.9.5'
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata        2013-12-30 13:16:49.000000000 +0100
+++ new/metadata        1970-01-01 01:00:00.000000000 +0100
@@ -1,7 +1,7 @@
 --- !ruby/object:Gem::Specification
 name: rb-fsevent
 version: !ruby/object:Gem::Version
-  version: 0.9.4
+  version: 0.9.5
 platform: ruby
 authors:
 - Thibaud Guillaume-Gentil
@@ -9,48 +9,48 @@
 autorequire: 
 bindir: bin
 cert_chain: []
-date: 2013-12-30 00:00:00.000000000 Z
+date: 2015-05-20 00:00:00.000000000 Z
 dependencies:
 - !ruby/object:Gem::Dependency
   name: bundler
   requirement: !ruby/object:Gem::Requirement
     requirements:
-    - - "~>"
+    - - ~>
       - !ruby/object:Gem::Version
         version: '1.0'
   type: :development
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
-    - - "~>"
+    - - ~>
       - !ruby/object:Gem::Version
         version: '1.0'
 - !ruby/object:Gem::Dependency
   name: rspec
   requirement: !ruby/object:Gem::Requirement
     requirements:
-    - - "~>"
+    - - ~>
       - !ruby/object:Gem::Version
         version: '2.11'
   type: :development
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
-    - - "~>"
+    - - ~>
       - !ruby/object:Gem::Version
         version: '2.11'
 - !ruby/object:Gem::Dependency
   name: guard-rspec
   requirement: !ruby/object:Gem::Requirement
     requirements:
-    - - "~>"
+    - - ~>
       - !ruby/object:Gem::Version
         version: '4.2'
   type: :development
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
-    - - "~>"
+    - - ~>
       - !ruby/object:Gem::Version
         version: '4.2'
 description: FSEvents API with Signals catching (without RubyCocoa)
@@ -61,15 +61,16 @@
 extensions: []
 extra_rdoc_files: []
 files:
-- ".gitignore"
+- .gitignore
 - Gemfile
 - Guardfile
 - LICENSE.txt
 - README.md
 - Rakefile
 - bin/fsevent_watch
-- bin/fsevent_watch_10_5
 - ext/LICENSE
+- ext/fsevent_watch/FSEventsFix.c
+- ext/fsevent_watch/FSEventsFix.h
 - ext/fsevent_watch/TSICTString.c
 - ext/fsevent_watch/TSICTString.h
 - ext/fsevent_watch/cli.c
@@ -99,17 +100,17 @@
 - lib
 required_ruby_version: !ruby/object:Gem::Requirement
   requirements:
-  - - ">="
+  - - '>='
     - !ruby/object:Gem::Version
       version: '0'
 required_rubygems_version: !ruby/object:Gem::Requirement
   requirements:
-  - - ">="
+  - - '>='
     - !ruby/object:Gem::Version
       version: '0'
 requirements: []
 rubyforge_project: 
-rubygems_version: 2.2.0
+rubygems_version: 2.0.14
 signing_key: 
 specification_version: 4
 summary: Very simple & usable FSEvents API

++++++ rubygem-rb-fsevent-rpmlintrc ++++++
addFilter('devel-file-in-non-devel-package')

Reply via email to