[glib] gio-kqueue: use O_EVTONLY on MacOS
- From: Antoine Jacoutot <ajacoutot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] gio-kqueue: use O_EVTONLY on MacOS
- Date: Sat, 17 Nov 2012 15:32:56 +0000 (UTC)
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]