[glib] gio-kqueue: use O_EVTONLY on MacOS



commit 596f96b08db1b99c820e397cb2030fa27e79ff96
Author: Antoine Jacoutot <ajacoutot gnome org>
Date:   Sat Nov 17 09:44:48 2012 +0100

    gio-kqueue: use O_EVTONLY on MacOS
    
    MacOS provides the O_EVTONLY flag to open(2) which allow to open a file
    for monitoring without preventing an unmount of the volume that contains
    it.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=688518

 gio/kqueue/kqueue-exclusions.c |    5 +++++
 gio/kqueue/kqueue-helper.c     |    4 ++++
 2 files changed, 9 insertions(+), 0 deletions(-)
---
diff --git a/gio/kqueue/kqueue-exclusions.c b/gio/kqueue/kqueue-exclusions.c
index 4133916..6be0e73 100644
--- a/gio/kqueue/kqueue-exclusions.c
+++ b/gio/kqueue/kqueue-exclusions.c
@@ -21,6 +21,7 @@
   THE SOFTWARE.
 *******************************************************************************/
 
+#include <fcntl.h>
 #include <glib.h>
 #include <gio/gio.h>
 #include "kqueue-exclusions.h"
@@ -38,6 +39,9 @@ static gboolean ke_debug_enabled = FALSE;
 gboolean
 _ke_is_excluded (const char *full_path)
 {
+#if defined (O_EVTONLY)
+  return FALSE;
+#else
   GFile *f = NULL;
   GMount *mount = NULL;
 
@@ -57,4 +61,5 @@ _ke_is_excluded (const char *full_path)
   }
   else
     return FALSE;
+#endif
 }
diff --git a/gio/kqueue/kqueue-helper.c b/gio/kqueue/kqueue-helper.c
index ba5a140..87f4032 100644
--- a/gio/kqueue/kqueue-helper.c
+++ b/gio/kqueue/kqueue-helper.c
@@ -512,7 +512,11 @@ _kh_start_watching (kqueue_sub *sub)
   g_assert (sub->filename != NULL);
 
   /* kqueue requires a file descriptor to monitor. Sad but true */
+#if defined (O_EVTONLY)
+  sub->fd = open (sub->filename, O_EVTONLY);
+#else
   sub->fd = open (sub->filename, O_RDONLY);
+#endif
 
   if (sub->fd == -1)
     {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]