$OpenBSD: patch-src_libtracker-miner_tracker-monitor_c,v 1.4 2012/01/01 11:21:16 ajacoutot Exp $

Recognize the gio-kqueue monitoring backend.
(not to be pushed upstream before the glib changes are there first)

--- src/libtracker-miner/tracker-monitor.c.orig	Fri Dec 16 16:23:55 2011
+++ src/libtracker-miner/tracker-monitor.c	Sun Jan  1 12:12:46 2012
@@ -23,6 +23,13 @@
 #include <string.h>
 #include <gio/gio.h>
 
+/* getrlimit(2) */
+#if defined (__OpenBSD__)
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#endif
+
 #include "tracker-monitor.h"
 #include "tracker-marshal.h"
 
@@ -222,6 +229,9 @@ tracker_monitor_init (TrackerMonitor *object)
 	const gchar           *name;
 	GError                *error = NULL;
 
+#if defined (__OpenBSD__)
+	struct rlimit rl;
+#endif
 	object->priv = TRACKER_MONITOR_GET_PRIVATE (object);
 
 	priv = object->priv;
@@ -293,6 +303,20 @@ tracker_monitor_init (TrackerMonitor *object)
 			 * negative maximum.
 			 */
 			priv->monitor_limit = MAX (priv->monitor_limit, 0);
+		}
+		else if (strcmp (name, "GKqueueDirectoryMonitor") == 0) {
+			/* Using kqueue(2) */
+			g_message ("Monitor backend is kqueue(2)");
+
+#if defined (__OpenBSD__)
+			if (getrlimit (RLIMIT_NOFILE, &rl) == 0) {
+				priv->monitor_limit = (rl.rlim_cur*90)/100;
+			} else {
+				priv->monitor_limit = 128;
+			}
+#else
+			priv->monitor_limit = 400;
+#endif
 		}
 		else if (strcmp (name, "GFamDirectoryMonitor") == 0) {
 			/* Using Fam */
