aboutsummaryrefslogtreecommitdiff
path: root/devel/gamin
diff options
context:
space:
mode:
authorJoe Marcus Clarke <marcus@FreeBSD.org>2006-02-09 06:40:18 +0000
committerJoe Marcus Clarke <marcus@FreeBSD.org>2006-02-09 06:40:18 +0000
commit69a8d6f0dcaf32704856564154b8ee9bf0227786 (patch)
treecb04b606098059b1552bf09ab8cb52b9ed9818d1 /devel/gamin
parentf5bd60b2e499c41722285dfd97b3c4d0d61cf5a7 (diff)
downloadports-69a8d6f0dcaf32704856564154b8ee9bf0227786.tar.gz
ports-69a8d6f0dcaf32704856564154b8ee9bf0227786.zip
Notes
Diffstat (limited to 'devel/gamin')
-rw-r--r--devel/gamin/Makefile10
-rw-r--r--devel/gamin/distinfo6
-rw-r--r--devel/gamin/files/patch-libgamin_gam_api.c41
-rw-r--r--devel/gamin/files/patch-libgamin_gam_data.c11
-rw-r--r--devel/gamin/files/patch-python_Makefile.in6
-rw-r--r--devel/gamin/files/patch-server_gam_channel.c128
-rw-r--r--devel/gamin/files/patch-server_gam_fs.c123
-rw-r--r--devel/gamin/files/patch-server_gam_kqueue.c67
-rw-r--r--devel/gamin/files/patch-server_gam_node.c10
-rw-r--r--devel/gamin/files/patch-server_gam_pidname.c13
-rw-r--r--devel/gamin/files/patch-server_gam_poll_basic.c14
-rw-r--r--devel/gamin/files/patch-server_gam_server.c67
-rw-r--r--devel/gamin/files/patch-tests_testing.c6
13 files changed, 304 insertions, 198 deletions
diff --git a/devel/gamin/Makefile b/devel/gamin/Makefile
index 091be3877e0c..b3bcdf34d15b 100644
--- a/devel/gamin/Makefile
+++ b/devel/gamin/Makefile
@@ -6,8 +6,8 @@
#
PORTNAME= gamin
-PORTVERSION= 0.1.5
-PORTREVISION?= 3
+PORTVERSION= 0.1.7
+PORTREVISION?= 0
CATEGORIES?= devel
MASTER_SITES= http://www.gnome.org/~veillard/gamin/sources/
@@ -17,7 +17,7 @@ COMMENT?= A file and directory monitoring system
USE_GMAKE= yes
USE_GNOME?= gnomehack glib20
INSTALLS_SHLIB= yes
-CONFIGURE_ARGS?=--disable-gtk-doc --with-html-dir=${PREFIX}/share/doc \
+CONFIGURE_ARGS?=--with-html-dir=${PREFIX}/share/doc \
--without-python
CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include ${PTHREAD_CFLAGS}" \
LDFLAGS="-L${LOCALBASE}/lib ${PTHREAD_LIBS}"
@@ -31,10 +31,10 @@ USE_AUTOTOOLS= libtool:15:inc
.endif
post-patch:
- @${FIND} ${WRKSRC} -type f | ${XARGS} ${TOUCH} -f
+ @${REINPLACE_CMD} "s|/etc|${PREFIX}/etc|g" ${WRKSRC}/server/gam_conf.c
.if !defined(GAMIN_SLAVE)
-tests: build
+regression-test: build
@${ECHO_MSG} "===> Running gamin regression tests"
@(cd ${WRKSRC}/tests && ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_FLAGS} \
Makefile ${MAKE_ARGS} tests)
diff --git a/devel/gamin/distinfo b/devel/gamin/distinfo
index ec079a71e1a8..2cba0d5a05a4 100644
--- a/devel/gamin/distinfo
+++ b/devel/gamin/distinfo
@@ -1,3 +1,3 @@
-MD5 (gamin-0.1.5.tar.gz) = 0fad3fce44466bbb5a5d0450b4700e05
-SHA256 (gamin-0.1.5.tar.gz) = 9c12e6a179617a0b45a398f437adc6ea6e1c58cae82673ad67f3d431dac518b9
-SIZE (gamin-0.1.5.tar.gz) = 531603
+MD5 (gamin-0.1.7.tar.gz) = 1a1991ffa749b7dc2cc0573d6a2867b8
+SHA256 (gamin-0.1.7.tar.gz) = 8272c64356e1310353f2411b2cabd211468edbf8ce312d58aeef55889e79361a
+SIZE (gamin-0.1.7.tar.gz) = 542061
diff --git a/devel/gamin/files/patch-libgamin_gam_api.c b/devel/gamin/files/patch-libgamin_gam_api.c
index 296cd00014ae..7c46e93354a3 100644
--- a/devel/gamin/files/patch-libgamin_gam_api.c
+++ b/devel/gamin/files/patch-libgamin_gam_api.c
@@ -1,5 +1,5 @@
---- libgamin/gam_api.c.orig Sun Jul 17 16:48:54 2005
-+++ libgamin/gam_api.c Sun Jul 17 16:53:58 2005
+--- libgamin/gam_api.c.orig Tue Feb 7 17:49:07 2006
++++ libgamin/gam_api.c Tue Feb 7 17:49:13 2006
@@ -14,6 +14,7 @@
#include <sys/socket.h>
#include <sys/un.h>
@@ -8,7 +8,7 @@
#include "fam.h"
#include "gam_protocol.h"
#include "gam_data.h"
-@@ -421,10 +422,10 @@ gamin_write_credential_byte(int fd)
+@@ -421,10 +422,10 @@
{
char data[2] = { 0, 0 };
int written;
@@ -22,7 +22,7 @@
} cmsg;
struct iovec iov;
struct msghdr msg;
-@@ -436,16 +437,16 @@ gamin_write_credential_byte(int fd)
+@@ -436,16 +437,16 @@
msg.msg_iov = &iov;
msg.msg_iovlen = 1;
@@ -43,7 +43,7 @@
written = sendmsg(fd, &msg, 0);
#else
written = write(fd, &data[0], 1);
-@@ -647,15 +648,16 @@ gamin_check_cred(GAMDataPtr conn, int fd
+@@ -647,15 +648,16 @@
gid_t c_gid;
#ifdef HAVE_CMSGCRED
@@ -63,7 +63,7 @@
/* Set the socket to receive credentials on the next message */
{
int on = 1;
-@@ -676,8 +678,8 @@ gamin_check_cred(GAMDataPtr conn, int fd
+@@ -676,8 +678,8 @@
#ifdef HAVE_CMSGCRED
memset(&cmsg, 0, sizeof(cmsg));
@@ -74,27 +74,46 @@
#endif
retry:
-@@ -694,7 +696,8 @@ retry:
+@@ -694,7 +696,7 @@
goto failed;
}
#ifdef HAVE_CMSGCRED
- if (cmsg.hdr.cmsg_len < sizeof(cmsg) || cmsg.hdr.cmsg_type != SCM_CREDS) {
-+ if (cmsg.hdr.cmsg_len < CMSG_LEN (sizeof (struct cmsgcred))
-+ || cmsg.hdr.cmsg_type != SCM_CREDS) {
++ if (cmsg.hdr.cmsg_len < CMSG_LEN (sizeof (struct cmsgcred)) || cmsg.hdr.cmsg_type != SCM_CREDS) {
GAM_DEBUG(DEBUG_INFO,
"Message from recvmsg() was not SCM_CREDS\n");
goto failed;
-@@ -720,9 +723,10 @@ retry:
+@@ -720,9 +722,10 @@
goto failed;
}
#elif defined(HAVE_CMSGCRED)
- c_pid = cmsg.cred.cmcred_pid;
- c_uid = cmsg.cred.cmcred_euid;
- c_gid = cmsg.cred.cmcred_groups[0];
-+ cred = (struct cmsgcred *) CMSG_DATA (&cmsg);
++ cred = (struct cmsgcred *) CMSG_DATA (&cmsg);
+ c_pid = cred->cmcred_pid;
+ c_uid = cred->cmcred_euid;
+ c_gid = cred->cmcred_groups[0];
#else /* !SO_PEERCRED && !HAVE_CMSGCRED */
GAM_DEBUG(DEBUG_INFO,
"Socket credentials not supported on this OS\n");
+@@ -1283,14 +1286,17 @@
+
+ // FIXME: drop and reacquire lock while blocked?
+ gamin_data_lock(conn);
+- if (!gamin_data_event_ready(conn)) {
++ while ((ret = gamin_data_event_ready(conn)) == 0) {
+ if (gamin_read_data(conn, fc->fd, 1) < 0) {
+ gamin_try_reconnect(conn, fc->fd);
+ FAMErrno = FAM_CONNECT;
+ return (-1);
+ }
+ }
+- ret = gamin_data_read_event(conn, fe);
++
++ if (ret > 0)
++ ret = gamin_data_read_event(conn, fe);
++
+ gamin_data_unlock(conn);
+
+ if (ret < 0) {
diff --git a/devel/gamin/files/patch-libgamin_gam_data.c b/devel/gamin/files/patch-libgamin_gam_data.c
deleted file mode 100644
index 7a54719ff2c0..000000000000
--- a/devel/gamin/files/patch-libgamin_gam_data.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- libgamin/gam_data.c.orig Thu May 19 20:55:27 2005
-+++ libgamin/gam_data.c Thu May 19 20:55:45 2005
-@@ -471,7 +471,7 @@
- }
- if (is_threaded > 0) {
- pthread_mutexattr_init(&attr);
-- pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP);
-+ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
- pthread_mutex_init(&ret->lock, &attr);
- pthread_mutexattr_destroy(&attr);
- }
diff --git a/devel/gamin/files/patch-python_Makefile.in b/devel/gamin/files/patch-python_Makefile.in
index d27f81e98ec4..3cc568b4e851 100644
--- a/devel/gamin/files/patch-python_Makefile.in
+++ b/devel/gamin/files/patch-python_Makefile.in
@@ -1,5 +1,5 @@
---- python/Makefile.in.orig Thu May 19 20:43:35 2005
-+++ python/Makefile.in Thu May 19 20:44:30 2005
+--- python/Makefile.in.orig Mon Feb 6 23:00:32 2006
++++ python/Makefile.in Tue Feb 7 08:10:46 2006
@@ -59,7 +59,7 @@
pythonLTLIBRARIES_INSTALL = $(INSTALL)
LTLIBRARIES = $(python_LTLIBRARIES)
@@ -9,7 +9,7 @@
@WITH_PYTHON_TRUE@_gamin_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
am___gamin_la_SOURCES_DIST = gamin.c
@WITH_PYTHON_TRUE@am__gamin_la_OBJECTS = gamin.lo
-@@ -237,9 +237,9 @@
+@@ -239,9 +239,9 @@
gamin.c \
gamin.py
diff --git a/devel/gamin/files/patch-server_gam_channel.c b/devel/gamin/files/patch-server_gam_channel.c
index 8482e3408578..b87f2543dbcc 100644
--- a/devel/gamin/files/patch-server_gam_channel.c
+++ b/devel/gamin/files/patch-server_gam_channel.c
@@ -1,6 +1,14 @@
--- server/gam_channel.c.orig Tue Aug 9 18:17:39 2005
-+++ server/gam_channel.c Fri Oct 21 07:55:31 2005
-@@ -30,10 +30,10 @@
++++ server/gam_channel.c Wed Feb 8 11:23:26 2006
+@@ -7,6 +7,7 @@
+ #include <sys/stat.h>
+ #include <sys/un.h>
+ #include <sys/uio.h>
++#include <string.h>
+ #include "gam_error.h"
+ #include "gam_connection.h"
+ #include "gam_channel.h"
+@@ -30,10 +31,10 @@
{
char data[2] = { 0, 0 };
int written;
@@ -14,7 +22,7 @@
} cmsg;
struct iovec iov;
struct msghdr msg;
-@@ -45,16 +45,16 @@
+@@ -45,16 +46,16 @@
msg.msg_iov = &iov;
msg.msg_iovlen = 1;
@@ -35,7 +43,7 @@
written = sendmsg(fd, &msg, 0);
#else
written = write(fd, &data[0], 1);
-@@ -95,15 +95,16 @@
+@@ -95,15 +96,16 @@
gid_t c_gid;
#ifdef HAVE_CMSGCRED
@@ -55,7 +63,7 @@
/* Set the socket to receive credentials on the next message */
{
int on = 1;
-@@ -124,8 +125,8 @@
+@@ -124,8 +126,8 @@
#ifdef HAVE_CMSGCRED
memset(&cmsg, 0, sizeof(cmsg));
@@ -66,13 +74,12 @@
#endif
retry:
-@@ -142,7 +143,8 @@
+@@ -142,7 +144,7 @@
goto failed;
}
#ifdef HAVE_CMSGCRED
- if (cmsg.hdr.cmsg_len < sizeof(cmsg) || cmsg.hdr.cmsg_type != SCM_CREDS) {
-+ if (cmsg.hdr.cmsg_len < CMSG_LEN (sizeof (struct cmsgcred))
-+ || cmsg.hdr.cmsg_type != SCM_CREDS) {
++ if (cmsg.hdr.cmsg_len < CMSG_LEN (sizeof (struct cmsgcred)) || cmsg.hdr.cmsg_type != SCM_CREDS) {
GAM_DEBUG(DEBUG_INFO,
"Message from recvmsg() was not SCM_CREDS\n");
goto failed;
@@ -90,103 +97,18 @@
#else /* !SO_PEERCRED && !HAVE_CMSGCRED */
GAM_DEBUG(DEBUG_INFO,
"Socket credentials not supported on this OS\n");
-@@ -513,66 +516,6 @@
- g_free(dir);
- return(FALSE);
- }
--
--/**
-- * gam_check_secure_path:
-- * @path: path to the (possibly abstract) socket
-- *
-- * Tries to create or ensure that the socket used for communicating with
-- * the clients are in a safe directory to avoid possible attacks.
-- *
-- * Returns the socket file descriptor or -1 in case of error.
-- */
--static gboolean
--gam_check_secure_path(const char *path)
--{
-- struct stat st;
-- int ret;
--
-- if (!gam_check_secure_dir())
-- return(FALSE);
-- /*
-- * Check the existing socket if any
-- */
-- ret = stat(path, &st);
-- if (ret < 0)
-- return(TRUE);
--
-- if (st.st_uid != getuid()) {
-- gam_error(DEBUG_INFO,
-- "Socket %s has different owner\n",
-- path);
-- goto cleanup;
-- }
--#ifdef S_ISSOCK
-- if (!S_ISSOCK (st.st_mode)) {
-- gam_error(DEBUG_INFO, "Socket path %s is not a socket\n",
-- path);
-- goto cleanup;
-- }
--#endif
-- if (st.st_mode & (S_IRWXG|S_IRWXO)) {
-- gam_error(DEBUG_INFO,
-- "Socket %s has wrong permissions\n",
-- path);
-- goto cleanup;
-- }
+@@ -557,11 +560,9 @@
+ path);
+ goto cleanup;
+ }
- /*
- * Looks good though binding may fail due to an existing server
- */
- return(TRUE);
-
--cleanup:
-- /*
-- * the existing file at the socket location seems strange, try to remove it
-- */
-- ret = unlink(path);
-- if (ret < 0) {
-- gam_error(DEBUG_INFO, "Failed to remove %s\n", path);
-- return(FALSE);
-- }
-- return(TRUE);
--}
- #endif /* ! HAVE_ABSTRACT_SOCKETS */
-
- /************************************************************************
-@@ -620,6 +563,7 @@
- {
- int fd;
- struct sockaddr_un addr;
-+ struct stat st;
-
- fd = socket(PF_UNIX, SOCK_STREAM, 0);
- if (fd < 0) {
-@@ -635,13 +579,18 @@
- addr.sun_path[0] = '\0';
- strncpy(&addr.sun_path[1], path, (sizeof(addr) - 4) - 2);
- #else
-- /*
-- * if the socket is exposed at the filesystem level we need to take
-- * some extra protection checks. Also make sure the socket is created
-- * with restricted mode
-- */
-- if (!gam_check_secure_path(path)) {
-+ if (! gam_check_secure_dir()) {
-+ close(fd);
-+ return (-1);
-+ }
-+
-+ if (stat(path, &st) == 0) {
-+ /* bind() will fail if the socket already exists */
-+ if (unlink(path) < 0) {
-+ GAM_DEBUG(DEBUG_INFO, "Failed to remove %s\n", path);
-+ close(fd);
- return (-1);
-+ }
- }
- strncpy(&addr.sun_path[0], path, (sizeof(addr) - 4) - 1);
- umask(0077);
++ gam_error(DEBUG_INFO,
++ "Maybe there is another server listening on socket %s\n",
++ path);
+ cleanup:
+ /*
+ * the existing file at the socket location seems strange, try to remove it
diff --git a/devel/gamin/files/patch-server_gam_fs.c b/devel/gamin/files/patch-server_gam_fs.c
new file mode 100644
index 000000000000..5039c65931ad
--- /dev/null
+++ b/devel/gamin/files/patch-server_gam_fs.c
@@ -0,0 +1,123 @@
+--- server/gam_fs.c.orig Sat Aug 6 00:31:46 2005
++++ server/gam_fs.c Wed Feb 8 15:05:24 2006
+@@ -7,6 +7,11 @@
+ #include <string.h>
+ #include <errno.h>
+ #include <glib.h>
++#ifdef __FreeBSD__
++#include <sys/param.h>
++#include <sys/ucred.h>
++#include <sys/mount.h>
++#endif
+ #include "gam_error.h"
+ #include "gam_fs.h"
+
+@@ -26,7 +31,9 @@
+ static gboolean initialized = FALSE;
+ static GList *filesystems = NULL;
+ static GList *fs_props = NULL;
++#ifdef __linux__
+ static struct stat mtab_sbuf;
++#endif
+
+ static void
+ gam_fs_free_filesystems (void)
+@@ -110,6 +117,7 @@
+ return strlen(fsb->path) - strlen (fsa->path);
+ }
+
++#ifdef __linux__
+ static void
+ gam_fs_scan_mtab (void)
+ {
+@@ -165,10 +173,40 @@
+ gam_fs_free_filesystems ();
+ filesystems = g_list_sort (new_filesystems, gam_fs_filesystem_sort_cb);
+ }
++#endif
++
++#ifdef __FreeBSD__
++static void
++gam_fs_getmntinfo (void)
++{
++ struct statfs *stat;
++ GList *new_filesystems = NULL;
++ gam_fs *fs = NULL;
++ int i, n;
++
++ n = getmntinfo(&stat, MNT_NOWAIT);
++ if (n == -1)
++ return;
++
++ for (i = 0; i < n; i++)
++ {
++ fs = g_new0 (gam_fs, 1);
++ fs->path = g_strdup (stat[i].f_mntonname);
++ fs->fsname = g_strdup (stat[i].f_fstypename);
++
++ new_filesystems = g_list_prepend (new_filesystems, fs);
++ }
++
++ /* Replace the old file systems list with the new one */
++ gam_fs_free_filesystems ();
++ filesystems = g_list_sort (new_filesystems, gam_fs_filesystem_sort_cb);
++}
++#endif
+
+ void
+ gam_fs_init (void)
+ {
++#if defined(__linux__)
+ if (initialized == FALSE)
+ {
+ initialized = TRUE;
+@@ -181,6 +219,7 @@
+ if (stat("/etc/mtab", &mtab_sbuf) != 0)
+ {
+ GAM_DEBUG(DEBUG_INFO, "Could not stat /etc/mtab\n");
++ return;
+ }
+ gam_fs_scan_mtab ();
+ } else {
+@@ -189,6 +228,7 @@
+ if (stat("/etc/mtab", &sbuf) != 0)
+ {
+ GAM_DEBUG(DEBUG_INFO, "Could not stat /etc/mtab\n");
++ return;
+ }
+
+ /* /etc/mtab has changed */
+@@ -199,6 +239,17 @@
+
+ mtab_sbuf = sbuf;
+ }
++#elif defined(__FreeBSD__)
++ if (initialized == FALSE)
++ {
++ initialized = TRUE;
++ gam_fs_set ("ufs", GFS_MT_KERNEL, 0);
++ gam_fs_set ("nfs", GFS_MT_POLL, 5);
++ gam_fs_set ("smbfs", GFS_MT_POLL, 5);
++ }
++ gam_fs_getmntinfo ();
++
++#endif
+ }
+
+ gam_fs_mon_type
+@@ -209,10 +260,11 @@
+
+ props = gam_fs_find_fs_props (path);
+
+- if (!props)
+- return GFS_MT_KERNEL;
+-
+- return props->mon_type;
++#if defined(ENABLE_INOTIFY) || defined(ENABLE_DNOTIFY) || defined(ENABLE_KQUEUE) || defined(ENABLE_HURD_MACH_NOTIFY)
++ if (props)
++ return props->mon_type;
++#endif
++ return GFS_MT_POLL;
+ }
+
+ int
diff --git a/devel/gamin/files/patch-server_gam_kqueue.c b/devel/gamin/files/patch-server_gam_kqueue.c
index 3531c6d6614d..dc0cece61eec 100644
--- a/devel/gamin/files/patch-server_gam_kqueue.c
+++ b/devel/gamin/files/patch-server_gam_kqueue.c
@@ -1,15 +1,37 @@
---- server/gam_kqueue.c.orig Mon Feb 6 18:00:49 2006
-+++ server/gam_kqueue.c Mon Feb 6 18:01:25 2006
-@@ -31,7 +31,7 @@
+--- server/gam_kqueue.c.orig Wed Aug 10 23:50:32 2005
++++ server/gam_kqueue.c Wed Feb 8 12:43:52 2006
+@@ -10,9 +10,8 @@
+ * FAM should do: we do not call g_dir_open() if the file is a
+ * symbolic link).
+ *
+- * * kqueue cannot monitor files residing on anything but a UFS
+- * file system. If kqueue cannot monitor a file, this backend
+- * will poll it periodically.
++ * * kqueue can only monitor files residing on a UFS file system.
++ * For other file systems, the basic poll backend will be used.
+ *
+ * * Monitoring a file with kqueue prevents the file system it
+ * resides on from being unmounted, because kqueue can only
+@@ -31,7 +30,8 @@
* - kqueue needs to be moved out the UFS code.
*
* Copyright (C) 2005 Joe Marcus Clarke <marcus@FreeBSD.org>
- * Copyright (C) 2005 Jean-Yves Lefort <jylefort@FreeBSD.org>
+ * Copyright (C) 2005, 2006 Jean-Yves Lefort <jylefort@FreeBSD.org>
++ * Copyright (C) 2006 Alex Dupre <ale@FreeBSD.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
-@@ -515,7 +515,7 @@
+@@ -63,7 +63,7 @@
+ #include "gam_kqueue.h"
+ #include "gam_event.h"
+ #include "gam_server.h"
+-#include "gam_poll.h"
++#include "gam_poll_basic.h"
+
+ /*** tunable constants, modify to tweak the backend aggressivity *************/
+
+@@ -516,7 +516,7 @@
return FALSE;
}
@@ -18,3 +40,40 @@
if (mon->fd < 0)
{
GAM_DEBUG(DEBUG_INFO, "cannot open %s (%s), falling back to poll\n", mon->pathname, g_strerror(errno));
+@@ -840,6 +840,8 @@
+ case GAMIN_EVENT_MOVED:
+ gam_kqueue_sub_monitor_set_missing(smon);
+ break;
++ default:
++ break;
+ }
+
+ gam_server_emit_event(mon->pathname, isdir, event, smon->subs, 1);
+@@ -981,6 +983,8 @@
+
+ gam_kqueue_hash_table_remove(fmon->smon->fmons, fmon);
+ break;
++ default:
++ break;
+ }
+ }
+
+@@ -1167,11 +1171,13 @@
+ channel = g_io_channel_unix_new(kq);
+ g_io_add_watch(channel, G_IO_IN, gam_kqueue_kevent_cb, NULL);
+
+-
+- gam_poll_set_kernel_handler(NULL, NULL, GAMIN_K_KQUEUE);
+- gam_backend_add_subscription = gam_kqueue_add_subscription;
+- gam_backend_remove_subscription = gam_kqueue_remove_subscription;
+- gam_backend_remove_all_for = gam_kqueue_remove_all_for;
++ gam_poll_basic_init ();
++ gam_server_install_kernel_hooks (GAMIN_K_KQUEUE,
++ gam_kqueue_add_subscription,
++ gam_kqueue_remove_subscription,
++ gam_kqueue_remove_all_for,
++ NULL,
++ NULL);
+
+ return TRUE;
+ }
diff --git a/devel/gamin/files/patch-server_gam_node.c b/devel/gamin/files/patch-server_gam_node.c
new file mode 100644
index 000000000000..dbf7f638be5b
--- /dev/null
+++ b/devel/gamin/files/patch-server_gam_node.c
@@ -0,0 +1,10 @@
+--- server/gam_node.c.orig Thu Feb 9 01:22:56 2006
++++ server/gam_node.c Thu Feb 9 01:23:03 2006
+@@ -23,6 +23,7 @@
+ #include "gam_event.h"
+ #include "gam_node.h"
+ #include "gam_error.h"
++#include "gam_server.h"
+
+ /**
+ * Create a new node
diff --git a/devel/gamin/files/patch-server_gam_pidname.c b/devel/gamin/files/patch-server_gam_pidname.c
deleted file mode 100644
index d81b870fa5f0..000000000000
--- a/devel/gamin/files/patch-server_gam_pidname.c
+++ /dev/null
@@ -1,13 +0,0 @@
---- server/gam_pidname.c.orig Wed Aug 10 00:00:18 2005
-+++ server/gam_pidname.c Wed Aug 10 00:00:47 2005
-@@ -7,9 +7,9 @@
-
- char *gam_get_pidname (int pid)
- {
-+ gchar *pidname = NULL;
- #ifdef HAVE_LINUX
- gchar *procname;
-- gchar *pidname = NULL;
- FILE *fp;
- #endif
-
diff --git a/devel/gamin/files/patch-server_gam_poll_basic.c b/devel/gamin/files/patch-server_gam_poll_basic.c
new file mode 100644
index 000000000000..7517b70fecc3
--- /dev/null
+++ b/devel/gamin/files/patch-server_gam_poll_basic.c
@@ -0,0 +1,14 @@
+--- server/gam_poll_basic.c.orig Mon Feb 6 22:55:40 2006
++++ server/gam_poll_basic.c Mon Feb 6 22:58:47 2006
+@@ -335,7 +335,11 @@
+ } else {
+ #ifdef VERBOSE_POLL
+ GAM_DEBUG(DEBUG_INFO, "Poll: poll_file %s unchanged\n", path);
++#ifdef ST_MTIM_NSEC
+ GAM_DEBUG(DEBUG_INFO, "%d %d : %d %d\n", node->sbuf.st_mtim.tv_sec, node->sbuf.st_mtim.tv_nsec, sbuf.st_mtim.tv_sec, sbuf.st_mtim.tv_nsec);
++#else
++ GAM_DEBUG(DEBUG_INFO, "%d : %d\n", node->sbuf.st_mtime, sbuf.st_mtime);
++#endif
+ #endif
+ }
+
diff --git a/devel/gamin/files/patch-server_gam_server.c b/devel/gamin/files/patch-server_gam_server.c
index 5a2dca9581cd..f593406a5fa9 100644
--- a/devel/gamin/files/patch-server_gam_server.c
+++ b/devel/gamin/files/patch-server_gam_server.c
@@ -1,46 +1,29 @@
---- server/gam_server.c.orig Wed Aug 10 00:01:21 2005
-+++ server/gam_server.c Wed Aug 10 00:03:41 2005
-@@ -170,9 +170,11 @@ gam_add_subscription(GamSubscription * s
- if (gam_exclude_check (path))
- {
- GAM_DEBUG(DEBUG_INFO, "g_a_s: %s excluded\n", path);
-+#ifdef ENABLE_INOTIFY
- if (gam_inotify_is_running())
- return gam_poll_add_subscription (sub);
- else
-+#endif
- return gam_backend_add_subscription(sub);
- } else {
- gam_fs_mon_type type;
-@@ -211,9 +213,11 @@ gam_remove_subscription(GamSubscription
-
- if (gam_exclude_check (path))
- {
-+#ifdef ENABLE_INOTIFY
- if (gam_inotify_is_running())
- return gam_poll_remove_subscription (sub);
- else
-+#endif
- return gam_backend_remove_subscription(sub);
- } else {
- gam_fs_mon_type type;
-@@ -300,15 +304,19 @@ gam_server_emit_one_event(const char *pa
-
- reqno = gam_subscription_get_reqno(sub);
+--- server/gam_server.c.orig Wed Sep 21 18:21:05 2005
++++ server/gam_server.c Tue Feb 7 13:12:02 2006
+@@ -32,7 +32,7 @@
+ #include "gam_server.h"
+ #include "gam_channel.h"
+ #include "gam_subscription.h"
+-#include "gam_poll_generic.h"
++#include "gam_poll_basic.h"
+ #ifdef ENABLE_INOTIFY
+ #include "gam_inotify.h"
+ #endif
+@@ -164,7 +164,7 @@
+ #endif
+ }
-+#ifdef ENABLE_INOTIFY
- if (gam_inotify_is_running())
- {
- gam_queue_event(conn, reqno, event, subpath, len);
- } else {
-+#endif
- if (gam_send_event(conn, reqno, event, subpath, len) < 0) {
- GAM_DEBUG(DEBUG_INFO, "Failed to send event to PID %d\n",
- gam_connection_get_pid(conn));
- }
-+#ifdef ENABLE_INOTIFY
+- if (gam_poll_generic_init()) {
++ if (gam_poll_basic_init()) {
+ GAM_DEBUG(DEBUG_INFO, "Using poll as backend\n");
+ return(TRUE);
}
-+#endif
+@@ -427,7 +427,7 @@
+ GamPollHandler
+ gam_server_get_poll_handler (void)
+ {
+- return __gam_kernel_handler;
++ return __gam_poll_handler;
}
- /**
+ gboolean
diff --git a/devel/gamin/files/patch-tests_testing.c b/devel/gamin/files/patch-tests_testing.c
index 0fde0c7e1fe7..3485162572c0 100644
--- a/devel/gamin/files/patch-tests_testing.c
+++ b/devel/gamin/files/patch-tests_testing.c
@@ -1,6 +1,6 @@
---- tests/testing.c.orig Fri Apr 8 15:09:45 2005
-+++ tests/testing.c Fri Apr 8 15:09:57 2005
-@@ -424,9 +424,9 @@
+--- tests/testing.c.orig Thu Oct 27 12:51:03 2005
++++ tests/testing.c Tue Feb 7 08:10:40 2006
+@@ -486,9 +486,9 @@
return (-1);
}
/*