summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Schlemmer <azarah@gentoo.org>2006-02-21 19:49:41 +0000
committerMartin Schlemmer <azarah@gentoo.org>2006-02-21 19:49:41 +0000
commit330764bc131f7c8f2bd64c9c043a8ea96058622d (patch)
tree36324ffb7391f095808ddd7612bc47196c034612 /app-admin/gamin
parentheader fix (diff)
downloadgentoo-2-330764bc131f7c8f2bd64c9c043a8ea96058622d.tar.gz
gentoo-2-330764bc131f7c8f2bd64c9c043a8ea96058622d.tar.bz2
gentoo-2-330764bc131f7c8f2bd64c9c043a8ea96058622d.zip
Remove old versions.
(Portage version: 2.1_pre4-r1)
Diffstat (limited to 'app-admin/gamin')
-rw-r--r--app-admin/gamin/files/digest-gamin-0.1.51
-rw-r--r--app-admin/gamin/files/gamin-0.1.5-inotify-legacy-backend.patch884
-rw-r--r--app-admin/gamin/files/gamin-0.1.5-noinotify.patch42
-rw-r--r--app-admin/gamin/gamin-0.1.5.ebuild72
4 files changed, 0 insertions, 999 deletions
diff --git a/app-admin/gamin/files/digest-gamin-0.1.5 b/app-admin/gamin/files/digest-gamin-0.1.5
deleted file mode 100644
index cd687f6083aa..000000000000
--- a/app-admin/gamin/files/digest-gamin-0.1.5
+++ /dev/null
@@ -1 +0,0 @@
-MD5 0fad3fce44466bbb5a5d0450b4700e05 gamin-0.1.5.tar.gz 531603
diff --git a/app-admin/gamin/files/gamin-0.1.5-inotify-legacy-backend.patch b/app-admin/gamin/files/gamin-0.1.5-inotify-legacy-backend.patch
deleted file mode 100644
index e0e0ea60bda7..000000000000
--- a/app-admin/gamin/files/gamin-0.1.5-inotify-legacy-backend.patch
+++ /dev/null
@@ -1,884 +0,0 @@
-Add support for INotify Legacy backend (pre 0.24)
-
-diff -urpN gamin-0.1.2/configure.in gamin-0.1.2.az/configure.in
---- gamin-0.1.2/configure.in 2005-07-13 13:10:43.000000000 +0200
-+++ gamin-0.1.2.az/configure.in 2005-07-16 09:23:22.000000000 +0200
-@@ -225,16 +225,41 @@ dnl check if inotify backend is enabled
- AM_CONDITIONAL(ENABLE_INOTIFY, test x$inotify = xtrue)
-
- if test x$inotify = xtrue; then
-- AC_CHECK_HEADERS(linux/inotify.h)
-+ AC_CHECK_HEADERS(linux/inotify.h,
-+ [AC_CHECK_DECL(INOTIFY_IOCTL_MAGIC,
-+ [AC_DEFINE(HAVE_INOTIFY_IOCTL_MAGIC,1,[Have legacy linux/inotify.h])],
-+ [],[#include <linux/inotify.h>])])
- AC_DEFINE(ENABLE_INOTIFY,1,[Use inotify as backend])
- backends="${backends}, inotify"
- fi
-
-+if test x$os = xlinux-gnu; then
-+ AC_ARG_ENABLE(inotify-legacy,
-+ [ --enable-inotify-legacy Enable the INotify Legacy backend],
-+ [case "${enableval}" in
-+ yes) inotify_legacy=true ;;
-+ no) inotify_legacy=false;;
-+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-inotify-legacy) ;;
-+ esac],[inotify_legacy=false])
-+fi
-+
-+dnl check if inotify legacy backend is enabled
-+AM_CONDITIONAL(ENABLE_INOTIFY_LEGACY, test x$inotify_legacy = xtrue)
-+
-+if test x$inotify_legacy = xtrue; then
-+ AC_CHECK_HEADERS(linux/inotify.h,
-+ [AC_CHECK_DECL(INOTIFY_IOCTL_MAGIC,
-+ [AC_DEFINE(HAVE_INOTIFY_IOCTL_MAGIC,1,[Have legacy linux/inotify.h])],
-+ [],[#include <linux/inotify.h>])])
-+ AC_DEFINE(ENABLE_INOTIFY_LEGACY,1,[Use inotify legacy as backend])
-+ backends="${backends}, inotify_legacy"
-+fi
-+
- if test x$os != xBogusOS; then
- AC_CHECK_FUNC(kevent,[have_kevent=1],)
- if test x$have_kevent = x1 ; then
- AC_ARG_ENABLE(kqueue,
-- [ --disable-kqueue Disable the KQueue backend],
-+ [ --disable-kqueue Disable the KQueue backend],
- [case "${enableval}" in
- yes) kqueue=true ;;
- no) kqueue=false ;;
-diff -urpN gamin-0.1.2/server/Makefile.am gamin-0.1.2.az/server/Makefile.am
---- gamin-0.1.2/server/Makefile.am 2005-06-08 23:48:00.000000000 +0200
-+++ gamin-0.1.2.az/server/Makefile.am 2005-07-16 09:26:06.000000000 +0200
-@@ -41,6 +41,7 @@ gam_server_SOURCES = \
- gam_excludes.h \
- local_inotify.h \
- local_inotify_syscalls.h \
-+ local_inotify_legacy.h \
- gam_fs.c \
- gam_fs.h \
- gam_conf.c \
-@@ -49,6 +50,10 @@ if ENABLE_INOTIFY
- gam_server_SOURCES += gam_inotify.c gam_inotify.h
- endif
-
-+if ENABLE_INOTIFY_LEGACY
-+gam_server_SOURCES += gam_inotify_legacy.c gam_inotify_legacy.h
-+endif
-+
- if ENABLE_DNOTIFY
- gam_server_SOURCES += gam_dnotify.c gam_dnotify.h
- endif
-diff -urpN gamin-0.1.2/server/gam_inotify.c gamin-0.1.2.az/server/gam_inotify.c
---- gamin-0.1.2/server/gam_inotify.c 2005-07-12 23:15:19.000000000 +0200
-+++ gamin-0.1.2.az/server/gam_inotify.c 2005-07-16 09:24:31.000000000 +0200
-@@ -32,7 +32,7 @@
- #include <glib.h>
- #include "gam_error.h"
- #include "gam_poll.h"
--#ifdef HAVE_LINUX_INOTIFY_H
-+#if defined(HAVE_LINUX_INOTIFY_H) && !defined(HAVE_INOTIFY_IOCTL_MAGIC)
- #include <linux/inotify.h>
- #else
- #include "local_inotify.h"
-diff -urpN gamin-0.1.2/server/gam_inotify_legacy.c gamin-0.1.2.az/server/gam_inotify_legacy.c
---- gamin-0.1.2/server/gam_inotify_legacy.c 1970-01-01 02:00:00.000000000 +0200
-+++ gamin-0.1.2.az/server/gam_inotify_legacy.c 2005-07-16 09:36:47.000000000 +0200
-@@ -0,0 +1,611 @@
-+/* gamin inotify_legacy backend
-+ * Copyright (C) 2005 John McCutchan
-+ *
-+ * Based off of code,
-+ * Copyright (C) 2003 James Willcox, Corey Bowers
-+ *
-+ * This library is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2 of the License, or (at your option) any later version.
-+ *
-+ * This library is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with this library; if not, write to the Free
-+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ */
-+
-+
-+#include "server_config.h"
-+#define _GNU_SOURCE
-+#include <fcntl.h>
-+#include <signal.h>
-+#include <unistd.h>
-+#include <sys/ioctl.h>
-+#include <stdio.h>
-+#include <glib.h>
-+#include "gam_error.h"
-+#include "gam_poll.h"
-+#if defined(HAVE_LINUX_INOTIFY_H) && defined(HAVE_INOTIFY_IOCTL_MAGIC)
-+#include <linux/inotify.h>
-+#else
-+#include "local_inotify_legacy.h"
-+#endif
-+#include "gam_inotify_legacy.h"
-+#include "gam_tree.h"
-+#include "gam_event.h"
-+#include "gam_server.h"
-+#include "gam_event.h"
-+#ifdef GAMIN_DEBUG_API
-+#include "gam_debugging.h"
-+#endif
-+
-+typedef struct {
-+ char *path;
-+ int wd;
-+ int refcount;
-+ GList *subs;
-+ int busy;
-+ gboolean deactivated;
-+ int events;
-+ int deactivated_events;
-+} inotify_legacy_data_t;
-+
-+static GHashTable *path_hash = NULL;
-+static GHashTable *wd_hash = NULL;
-+
-+G_LOCK_DEFINE_STATIC(inotify_legacy);
-+
-+static GIOChannel *inotify_legacy_read_ioc = NULL;
-+
-+static gboolean have_consume_idler = FALSE;
-+
-+static int inotify_legacy_device_fd = -1;
-+
-+static guint should_poll_mask = IN_MODIFY|IN_ATTRIB|IN_CLOSE_WRITE|IN_MOVED_FROM|IN_MOVED_TO|IN_DELETE|IN_CREATE|IN_DELETE_SELF|IN_UNMOUNT;
-+
-+static void
-+gam_inotify_legacy_data_debug (gpointer key, gpointer value, gpointer user_data)
-+{
-+ inotify_legacy_data_t *data = (inotify_legacy_data_t *)value;
-+
-+ if (!data)
-+ return;
-+
-+ int deactivated = data->deactivated;
-+
-+ GAM_DEBUG(DEBUG_INFO, "isub wd %d refs %d busy %d deactivated %d events (%d:%d): %s\n", data->wd, data->refcount, data->busy, deactivated, data->events, data->deactivated_events, data->path);
-+}
-+
-+void
-+gam_inotify_legacy_debug(void)
-+{
-+ if (inotify_legacy_device_fd == -1)
-+ {
-+ GAM_DEBUG(DEBUG_INFO, "Inotify device not opened\n");
-+ return;
-+ }
-+
-+ if (path_hash == NULL)
-+ return;
-+
-+ GAM_DEBUG(DEBUG_INFO, "Inotify device fd = %d\n", inotify_legacy_device_fd);
-+ GAM_DEBUG(DEBUG_INFO, "Dumping inotify_legacy subscriptions\n");
-+ g_hash_table_foreach (path_hash, gam_inotify_legacy_data_debug, NULL);
-+}
-+
-+static void print_mask(int mask)
-+{
-+ if (mask & IN_ACCESS)
-+ {
-+ GAM_DEBUG(DEBUG_INFO, "ACCESS\n");
-+ }
-+ if (mask & IN_MODIFY)
-+ {
-+ GAM_DEBUG(DEBUG_INFO, "MODIFY\n");
-+ }
-+ if (mask & IN_ATTRIB)
-+ {
-+ GAM_DEBUG(DEBUG_INFO, "ATTRIB\n");
-+ }
-+ if (mask & IN_CLOSE_WRITE)
-+ {
-+ GAM_DEBUG(DEBUG_INFO, "CLOSE_WRITE\n");
-+ }
-+ if (mask & IN_CLOSE_NOWRITE)
-+ {
-+ GAM_DEBUG(DEBUG_INFO, "CLOSE_WRITE\n");
-+ }
-+ if (mask & IN_OPEN)
-+ {
-+ GAM_DEBUG(DEBUG_INFO, "OPEN\n");
-+ }
-+ if (mask & IN_MOVED_FROM)
-+ {
-+ GAM_DEBUG(DEBUG_INFO, "MOVE_FROM\n");
-+ }
-+ if (mask & IN_MOVED_TO)
-+ {
-+ GAM_DEBUG(DEBUG_INFO, "MOVE_TO\n");
-+ }
-+ if (mask & IN_DELETE)
-+ {
-+ GAM_DEBUG(DEBUG_INFO, "DELETE\n");
-+ }
-+ if (mask & IN_CREATE)
-+ {
-+ GAM_DEBUG(DEBUG_INFO, "CREATE_SUBDIR\n");
-+ }
-+ if (mask & IN_DELETE_SELF)
-+ {
-+ GAM_DEBUG(DEBUG_INFO, "DELETE_SELF\n");
-+ }
-+ if (mask & IN_UNMOUNT)
-+ {
-+ GAM_DEBUG(DEBUG_INFO, "UNMOUNT\n");
-+ }
-+ if (mask & IN_Q_OVERFLOW)
-+ {
-+ GAM_DEBUG(DEBUG_INFO, "Q_OVERFLOW\n");
-+ }
-+ if (mask & IN_IGNORED)
-+ {
-+ GAM_DEBUG(DEBUG_INFO, "IGNORED\n");
-+ }
-+}
-+
-+static inotify_legacy_data_t *
-+gam_inotify_legacy_data_new(const char *path, int wd)
-+{
-+ inotify_legacy_data_t *data;
-+
-+ data = g_new0(inotify_legacy_data_t, 1);
-+ data->path = g_strdup(path);
-+ data->wd = wd;
-+ data->busy = 0;
-+ data->refcount = 1;
-+ data->deactivated_events = 0;
-+ data->events = 0;
-+
-+ return data;
-+}
-+
-+static void
-+gam_inotify_legacy_data_free(inotify_legacy_data_t * data)
-+{
-+ if (data->refcount != 0)
-+ GAM_DEBUG(DEBUG_INFO, "gam_inotify_legacy_data_free called with reffed data.\n");
-+ g_free(data->path);
-+ g_free(data);
-+}
-+
-+static void
-+gam_inotify_legacy_directory_handler_internal(const char *path, pollHandlerMode mode)
-+{
-+ inotify_legacy_data_t *data;
-+ int path_fd, path_wd;
-+ struct inotify_watch_request iwr;
-+ switch (mode) {
-+ case GAMIN_ACTIVATE:
-+ GAM_DEBUG(DEBUG_INFO, "Adding %s to inotify_legacy\n", path);
-+ break;
-+ case GAMIN_DESACTIVATE:
-+ GAM_DEBUG(DEBUG_INFO, "Removing %s from inotify_legacy\n", path);
-+ break;
-+ case GAMIN_FLOWCONTROLSTART:
-+ GAM_DEBUG(DEBUG_INFO, "inotify_legacy: Start flow control for %s\n", path);
-+ break;
-+ case GAMIN_FLOWCONTROLSTOP:
-+ GAM_DEBUG(DEBUG_INFO, "inotify_legacy: Stop flow control for %s\n", path);
-+ break;
-+ default:
-+ gam_error(DEBUG_INFO, "Unknown inotify_legacy operation %d for %s\n",
-+ mode, path);
-+ return;
-+ }
-+
-+ G_LOCK(inotify_legacy);
-+
-+ if (mode == GAMIN_ACTIVATE) {
-+
-+ if ((data = g_hash_table_lookup(path_hash, path)) != NULL) {
-+ data->refcount++;
-+ GAM_DEBUG(DEBUG_INFO, " found incremented refcount: %d\n",
-+ data->refcount);
-+ G_UNLOCK(inotify_legacy);
-+#ifdef GAMIN_DEBUG_API
-+ gam_debug_report(GAMinotifyChange, path, data->refcount);
-+#endif
-+ GAM_DEBUG(DEBUG_INFO, "inotify_legacy updated refcount\n");
-+ return;
-+ }
-+
-+ path_fd = open(path, O_RDONLY);
-+
-+ if (path_fd < 0) {
-+ G_UNLOCK(inotify_legacy);
-+ return;
-+ }
-+
-+ iwr.fd = path_fd;
-+ iwr.mask = should_poll_mask;
-+ path_wd = ioctl (inotify_legacy_device_fd, INOTIFY_WATCH, &iwr);
-+ close (path_fd);
-+
-+ data = gam_inotify_legacy_data_new(path, path_wd);
-+ g_hash_table_insert(wd_hash, GINT_TO_POINTER(data->wd), data);
-+ g_hash_table_insert(path_hash, data->path, data);
-+
-+ GAM_DEBUG(DEBUG_INFO, "activated inotify_legacy for %s\n", path);
-+#ifdef GAMIN_DEBUG_API
-+ gam_debug_report(GAMinotifyCreate, path, 0);
-+#endif
-+ } else if (mode == GAMIN_DESACTIVATE) {
-+ data = g_hash_table_lookup(path_hash, path);
-+
-+ if (!data) {
-+ GAM_DEBUG(DEBUG_INFO, " not found !!!\n");
-+
-+ G_UNLOCK(inotify_legacy);
-+ return;
-+ }
-+
-+ data->refcount--;
-+ GAM_DEBUG(DEBUG_INFO, "inotify_legacy decremeneted refcount for %s\n",
-+ path);
-+
-+ if (data->refcount == 0) {
-+ int wd = data->wd;
-+ GAM_DEBUG(DEBUG_INFO, "removed inotify_legacy watch for %s\n",
-+ data->path);
-+ g_hash_table_remove(path_hash, data->path);
-+ g_hash_table_remove(wd_hash, GINT_TO_POINTER(data->wd));
-+ gam_inotify_legacy_data_free(data);
-+ if (ioctl (inotify_legacy_device_fd, INOTIFY_IGNORE, &wd) < 0) {
-+ GAM_DEBUG (DEBUG_INFO, "INOTIFY_IGNORE failed for %s (wd = %d)\n", data->path, data->wd);
-+ }
-+#ifdef GAMIN_DEBUG_API
-+ gam_debug_report(GAMinotifyDelete, data->path, 0);
-+#endif
-+ } else {
-+ GAM_DEBUG(DEBUG_INFO, " found decremented refcount: %d\n",
-+ data->refcount);
-+#ifdef GAMIN_DEBUG_API
-+ gam_debug_report(GAMinotifyChange, data->path, data->refcount);
-+#endif
-+ }
-+ } else if ((mode == GAMIN_FLOWCONTROLSTART) ||
-+ (mode == GAMIN_FLOWCONTROLSTOP)) {
-+ data = g_hash_table_lookup(path_hash, path);
-+ if (!data) {
-+ GAM_DEBUG(DEBUG_INFO, " not found !!!\n");
-+
-+ G_UNLOCK(inotify_legacy);
-+ return;
-+ }
-+ if (data != NULL) {
-+ if (mode == GAMIN_FLOWCONTROLSTART) {
-+ GAM_DEBUG(DEBUG_INFO, "inotify_legacy: GAMIN_FLOWCONTROLSTART for %s\n", data->path);
-+ if (data->wd >= 0) {
-+ if (ioctl (inotify_legacy_device_fd, INOTIFY_IGNORE, &data->wd) < 0) {
-+ GAM_DEBUG (DEBUG_INFO, "INOTIFY_IGNORE failed for %s (wd = %d)\n", data->path, data->wd);
-+ }
-+ data->deactivated = TRUE;
-+ GAM_DEBUG(DEBUG_INFO, "deactivated inotify_legacy for %s\n",
-+ data->path);
-+#ifdef GAMIN_DEBUG_API
-+ gam_debug_report(GAMinotifyFlowOn, data->path, 0);
-+#endif
-+ }
-+ data->busy++;
-+ } else {
-+ GAM_DEBUG(DEBUG_INFO, "inotify_legacy: GAMIN_FLOWCONTROLSTOP for %s\n", data->path);
-+ if (data->busy > 0) {
-+ GAM_DEBUG(DEBUG_INFO, "inotify_legacy: data->busy > 0 for %s\n", data->path);
-+ data->busy--;
-+ if (data->busy == 0) {
-+ GAM_DEBUG(DEBUG_INFO, "inotify_legacy: data->busy == 0 for %s\n", data->path);
-+ path_fd = open(data->path, O_RDONLY);
-+ if (path_fd < 0) {
-+ G_UNLOCK(inotify_legacy);
-+ GAM_DEBUG(DEBUG_INFO,
-+ "failed to reactivate inotify_legacy for %s\n",
-+ data->path);
-+
-+ return;
-+ }
-+
-+ iwr.fd = path_fd;
-+ iwr.mask = should_poll_mask;
-+ path_wd = ioctl (inotify_legacy_device_fd, INOTIFY_WATCH, &iwr);
-+ close (path_fd);
-+
-+ /* Remove the old wd from the hash table */
-+ g_hash_table_remove(wd_hash, GINT_TO_POINTER(data->wd));
-+
-+ data->wd = path_wd;
-+ data->deactivated = FALSE;
-+
-+ /* Insert the new wd into the hash table */
-+ g_hash_table_insert(wd_hash, GINT_TO_POINTER(data->wd),
-+ data);
-+ GAM_DEBUG(DEBUG_INFO, "reactivated inotify_legacy for %s\n",
-+ data->path);
-+#ifdef GAMIN_DEBUG_API
-+ gam_debug_report(GAMinotifyFlowOff, path, 0);
-+#endif
-+ }
-+ }
-+ }
-+ }
-+ } else {
-+ GAM_DEBUG(DEBUG_INFO, "Unimplemented operation\n");
-+ }
-+
-+ G_UNLOCK(inotify_legacy);
-+}
-+
-+static void
-+gam_inotify_legacy_directory_handler(const char *path, pollHandlerMode mode)
-+{
-+ GAM_DEBUG(DEBUG_INFO, "gam_inotify_legacy_directory_handler %s : %d\n",
-+ path, mode);
-+
-+ gam_inotify_legacy_directory_handler_internal(path, mode);
-+}
-+
-+static void
-+gam_inotify_legacy_file_handler(const char *path, pollHandlerMode mode)
-+{
-+ GAM_DEBUG(DEBUG_INFO, "gam_inotify_legacy_file_handler %s : %d\n", path, mode);
-+
-+ if (g_file_test(path, G_FILE_TEST_IS_DIR)) {
-+ gam_inotify_legacy_directory_handler_internal(path, mode);
-+ } else {
-+ GAM_DEBUG(DEBUG_INFO, " not a dir %s, FAILED!!!\n", path);
-+ }
-+}
-+
-+static void
-+gam_inotify_legacy_q_overflow (gpointer key, gpointer value, gpointer user_data)
-+{
-+ inotify_legacy_data_t *data = (inotify_legacy_data_t *)value;
-+
-+ gam_poll_scan_directory (data->path);
-+}
-+
-+static gboolean
-+gam_inotify_legacy_read_handler(gpointer user_data)
-+{
-+ char *buffer;
-+ int buffer_size;
-+ int events;
-+ gsize buffer_i, read_size;
-+
-+ G_LOCK(inotify_legacy);
-+
-+ if (ioctl(inotify_legacy_device_fd, FIONREAD, &buffer_size) < 0) {
-+ G_UNLOCK(inotify_legacy);
-+ GAM_DEBUG(DEBUG_INFO, "inotify_legacy FIONREAD < 0. kaboom!\n");
-+ return FALSE;
-+ }
-+
-+ buffer = g_malloc(buffer_size);
-+
-+ if (g_io_channel_read_chars(inotify_legacy_read_ioc, (char *)buffer, buffer_size, &read_size, NULL) != G_IO_STATUS_NORMAL) {
-+ G_UNLOCK(inotify_legacy);
-+ GAM_DEBUG(DEBUG_INFO, "inotify_legacy failed to read events from inotify_legacy fd.\n");
-+ g_free (buffer);
-+ return FALSE;
-+ }
-+
-+ buffer_i = 0;
-+ events = 0;
-+ while (buffer_i < read_size) {
-+ struct inotify_event *event;
-+ gsize event_size;
-+ inotify_legacy_data_t *data;
-+
-+ event = (struct inotify_event *)&buffer[buffer_i];
-+ event_size = sizeof(struct inotify_event) + event->len;
-+
-+ data = g_hash_table_lookup (wd_hash, GINT_TO_POINTER(event->wd));
-+ if (!data) {
-+ GAM_DEBUG(DEBUG_INFO, "processing event: inotify_legacy can't find wd %d\n", event->wd);
-+ } else if (data->deactivated) {
-+ GAM_DEBUG(DEBUG_INFO, "inotify_legacy: ignoring event on temporarily deactivated watch %s\n", data->path);
-+ data->deactivated_events++;
-+ } else {
-+ if (event->mask == IN_IGNORED) {
-+ GList *l;
-+
-+ GAM_DEBUG(DEBUG_INFO, "inotify_legacy: IN_IGNORE on wd=%d\n", event->wd);
-+ GAM_DEBUG(DEBUG_INFO, "inotify_legacy: removing all subscriptions for %s\n", data->path);
-+
-+ data->events++;
-+
-+ l = data->subs;
-+ data->subs = NULL;
-+ for (l = l; l; l = l->next) {
-+ GamSubscription *sub = l->data;
-+ gam_inotify_legacy_remove_subscription (sub);
-+ }
-+ } else if (event->mask != IN_Q_OVERFLOW) {
-+ if (event->mask & should_poll_mask) {
-+ GAM_DEBUG(DEBUG_INFO, "inotify_legacy requesting poll for %s\n", data->path);
-+ GAM_DEBUG(DEBUG_INFO, "poll was requested for event = ");
-+ print_mask (event->mask);
-+ data->events++;
-+ gam_poll_scan_directory (data->path);
-+ }
-+ } else if (event->mask == IN_Q_OVERFLOW) {
-+ GAM_DEBUG(DEBUG_INFO, "inotify_legacy queue over flowed, requesting poll on all watched paths\n");
-+ g_hash_table_foreach (path_hash, gam_inotify_legacy_q_overflow, NULL);
-+ }
-+ }
-+
-+ buffer_i += event_size;
-+ events++;
-+ }
-+ GAM_DEBUG(DEBUG_INFO, "inotify_legacy recieved %d events\n", events);
-+
-+ g_free(buffer);
-+ G_UNLOCK(inotify_legacy);
-+
-+ return TRUE;
-+}
-+
-+
-+static gboolean
-+gam_inotify_legacy_consume_subscriptions_real(gpointer data)
-+{
-+ GAM_DEBUG(DEBUG_INFO, "gam_inotify_legacy_consume_subscriptions_real()\n");
-+ gam_poll_consume_subscriptions();
-+ have_consume_idler = FALSE;
-+ return FALSE;
-+}
-+
-+static void
-+gam_inotify_legacy_consume_subscriptions(void)
-+{
-+ GSource *source;
-+
-+ if (have_consume_idler)
-+ return;
-+
-+ GAM_DEBUG(DEBUG_INFO, "gam_inotify_legacy_consume_subscriptions()\n");
-+ have_consume_idler = TRUE;
-+ source = g_idle_source_new();
-+ g_source_set_callback(source, gam_inotify_legacy_consume_subscriptions_real,
-+ NULL, NULL);
-+ g_source_attach(source, NULL);
-+}
-+
-+/**
-+ * @defgroup inotify_legacy inotify_legacy Backend
-+ * @ingroup Backends
-+ * @brief inotify_legacy backend API
-+ *
-+ * Since version 2.6.X, Linux kernels have included the Linux Inode
-+ * Notification system (inotify_legacy). This backend uses inotify_legacy to know when
-+ * files are changed/created/deleted. Since inotify_legacy can't watch files/dirs that
-+ * don't exist we still have to cache stat() information. For this,
-+ * we can just use the code in the polling backend.
-+ *
-+ * @{
-+ */
-+
-+
-+/**
-+ * Initializes the inotify_legacy backend. This must be called before
-+ * any other functions in this module.
-+ *
-+ * @returns TRUE if initialization succeeded, FALSE otherwise
-+ */
-+gboolean
-+gam_inotify_legacy_init(void)
-+{
-+ GSource *source;
-+
-+ g_return_val_if_fail(gam_poll_init_full(FALSE), FALSE);
-+
-+ inotify_legacy_device_fd = open("/dev/inotify", O_RDONLY);
-+
-+ if (inotify_legacy_device_fd < 0) {
-+ GAM_DEBUG(DEBUG_INFO, "Could not open /dev/inotify\n");
-+ return FALSE;
-+ }
-+
-+ inotify_legacy_read_ioc = g_io_channel_unix_new(inotify_legacy_device_fd);
-+
-+ /* For binary data */
-+ g_io_channel_set_encoding(inotify_legacy_read_ioc, NULL, NULL);
-+ /* Non blocking */
-+ g_io_channel_set_flags(inotify_legacy_read_ioc, G_IO_FLAG_NONBLOCK, NULL);
-+
-+ source = g_io_create_watch(inotify_legacy_read_ioc,
-+ G_IO_IN | G_IO_HUP | G_IO_ERR);
-+ g_source_set_callback(source, gam_inotify_legacy_read_handler, NULL, NULL);
-+
-+ g_source_attach(source, NULL);
-+
-+ path_hash = g_hash_table_new(g_str_hash, g_str_equal);
-+ wd_hash = g_hash_table_new(g_direct_hash, g_direct_equal);
-+ gam_poll_set_kernel_handler(gam_inotify_legacy_directory_handler,
-+ gam_inotify_legacy_file_handler,
-+ GAMIN_K_INOTIFY);
-+
-+ GAM_DEBUG(DEBUG_INFO, "inotify_legacy initialized\n");
-+
-+ gam_backend_add_subscription = gam_inotify_legacy_add_subscription;
-+ gam_backend_remove_subscription = gam_inotify_legacy_remove_subscription;
-+ gam_backend_remove_all_for = gam_inotify_legacy_remove_all_for;
-+
-+ return TRUE;
-+}
-+
-+/**
-+ * Adds a subscription to be monitored.
-+ *
-+ * @param sub a #GamSubscription to be polled
-+ * @returns TRUE if adding the subscription succeeded, FALSE otherwise
-+ */
-+gboolean
-+gam_inotify_legacy_add_subscription(GamSubscription * sub)
-+{
-+ GAM_DEBUG(DEBUG_INFO, "gam_inotify_legacy_add_subscription\n");
-+
-+ if (!gam_poll_add_subscription(sub)) {
-+ return FALSE;
-+ }
-+
-+ gam_inotify_legacy_consume_subscriptions();
-+
-+ GAM_DEBUG(DEBUG_INFO, "gam_inotify_legacy_add_subscription: done\n");
-+ return TRUE;
-+}
-+
-+/**
-+ * Removes a subscription which was being monitored.
-+ *
-+ * @param sub a #GamSubscription to remove
-+ * @returns TRUE if removing the subscription succeeded, FALSE otherwise
-+ */
-+gboolean
-+gam_inotify_legacy_remove_subscription(GamSubscription * sub)
-+{
-+ GAM_DEBUG(DEBUG_INFO, "gam_inotify_legacy_remove_subscription\n");
-+
-+ if (!gam_poll_remove_subscription(sub)) {
-+ return FALSE;
-+ }
-+
-+ gam_inotify_legacy_consume_subscriptions();
-+
-+ GAM_DEBUG(DEBUG_INFO, "gam_inotify_legacy_remove_subscription: done\n");
-+ return TRUE;
-+}
-+
-+/**
-+ * Stop monitoring all subscriptions for a given listener.
-+ *
-+ * @param listener a #GamListener
-+ * @returns TRUE if removing the subscriptions succeeded, FALSE otherwise
-+ */
-+gboolean
-+gam_inotify_legacy_remove_all_for(GamListener * listener)
-+{
-+ if (!gam_poll_remove_all_for(listener)) {
-+ return FALSE;
-+ }
-+
-+ gam_inotify_legacy_consume_subscriptions();
-+
-+ return TRUE;
-+}
-+
-+/** @} */
-diff -urpN gamin-0.1.2/server/gam_inotify_legacy.h gamin-0.1.2.az/server/gam_inotify_legacy.h
---- gamin-0.1.2/server/gam_inotify_legacy.h 1970-01-01 02:00:00.000000000 +0200
-+++ gamin-0.1.2.az/server/gam_inotify_legacy.h 2005-07-16 08:41:34.000000000 +0200
-@@ -0,0 +1,18 @@
-+#ifndef __GAM_INOTIFY_LEGACY_H__
-+#define __GAM_INOTIFY_LEGACY_H__
-+
-+#include <glib.h>
-+#include "gam_poll.h"
-+#include "gam_subscription.h"
-+
-+G_BEGIN_DECLS
-+
-+gboolean gam_inotify_legacy_init (void);
-+gboolean gam_inotify_legacy_add_subscription (GamSubscription *sub);
-+gboolean gam_inotify_legacy_remove_subscription (GamSubscription *sub);
-+gboolean gam_inotify_legacy_remove_all_for (GamListener *listener);
-+void gam_inotify_legacy_debug (void);
-+
-+G_END_DECLS
-+
-+#endif /* __GAM_INOTIFY_LEGACY_H__ */
-diff -urpN gamin-0.1.2/server/gam_server.c gamin-0.1.2.az/server/gam_server.c
---- gamin-0.1.2/server/gam_server.c 2005-06-15 13:02:34.000000000 +0200
-+++ gamin-0.1.2.az/server/gam_server.c 2005-07-16 08:44:19.000000000 +0200
-@@ -36,6 +36,9 @@
- #ifdef ENABLE_INOTIFY
- #include "gam_inotify.h"
- #endif
-+#ifdef ENABLE_INOTIFY_LEGACY
-+#include "gam_inotify_legacy.h"
-+#endif
- #ifdef ENABLE_DNOTIFY
- #include "gam_dnotify.h"
- #endif
-@@ -87,6 +90,9 @@ gam_show_debug(void) {
- #ifdef ENABLE_INOTIFY
- gam_inotify_debug ();
- #endif
-+#ifdef ENABLE_INOTIFY_LEGACY
-+ gam_inotify_legacy_debug ();
-+#endif
- #ifdef ENABLE_DNOTIFY
- gam_dnotify_debug ();
- #endif
-@@ -112,6 +118,12 @@ gam_init_subscriptions(void)
- return(TRUE);
- }
- #endif
-+#ifdef ENABLE_INOTIFY_LEGACY
-+ if (gam_inotify_legacy_init()) {
-+ GAM_DEBUG(DEBUG_INFO, "Using INotify Legacy as backend\n");
-+ return(TRUE);
-+ }
-+#endif
- #ifdef ENABLE_DNOTIFY
- if (gam_dnotify_init()) {
- GAM_DEBUG(DEBUG_INFO, "Using DNotify as backend\n");
-diff -urpN gamin-0.1.2/server/local_inotify_legacy.h gamin-0.1.2.az/server/local_inotify_legacy.h
---- gamin-0.1.2/server/local_inotify_legacy.h 1970-01-01 02:00:00.000000000 +0200
-+++ gamin-0.1.2.az/server/local_inotify_legacy.h 2005-07-16 08:42:16.000000000 +0200
-@@ -0,0 +1,124 @@
-+/*
-+ * Inode based directory notification for Linux
-+ *
-+ * Copyright (C) 2005 John McCutchan
-+ */
-+
-+#ifndef _LINUX_INOTIFY_LEGACY_H
-+#define _LINUX_INOTIFY_LEGACY_H
-+
-+#include <linux/types.h>
-+
-+/*
-+ * struct inotify_event - structure read from the inotify device for each event
-+ *
-+ * When you are watching a directory, you will receive the filename for events
-+ * such as IN_CREATE, IN_DELETE, IN_OPEN, IN_CLOSE, ..., relative to the wd.
-+ */
-+struct inotify_event {
-+ __s32 wd; /* watch descriptor */
-+ __u32 mask; /* watch mask */
-+ __u32 cookie; /* cookie to synchronize two events */
-+ __u32 len; /* length (including nulls) of name */
-+ char name[0]; /* stub for possible name */
-+};
-+
-+/*
-+ * struct inotify_watch_request - represents a watch request
-+ *
-+ * Pass to the inotify device via the INOTIFY_WATCH ioctl
-+ */
-+struct inotify_watch_request {
-+ int fd; /* fd of filename to watch */
-+ __u32 mask; /* event mask */
-+};
-+
-+/* the following are legal, implemented events that user-space can watch for */
-+#define IN_ACCESS 0x00000001 /* File was accessed */
-+#define IN_MODIFY 0x00000002 /* File was modified */
-+#define IN_ATTRIB 0x00000004 /* Metadata changed */
-+#define IN_CLOSE_WRITE 0x00000008 /* Writtable file was closed */
-+#define IN_CLOSE_NOWRITE 0x00000010 /* Unwrittable file closed */
-+#define IN_OPEN 0x00000020 /* File was opened */
-+#define IN_MOVED_FROM 0x00000040 /* File was moved from X */
-+#define IN_MOVED_TO 0x00000080 /* File was moved to Y */
-+#define IN_CREATE 0x00000100 /* Subfile was created */
-+#define IN_DELETE 0x00000200 /* Subfile was deleted */
-+#define IN_DELETE_SELF 0x00000400 /* Self was deleted */
-+
-+/* the following are legal events. they are sent as needed to any watch */
-+#define IN_UNMOUNT 0x00002000 /* Backing fs was unmounted */
-+#define IN_Q_OVERFLOW 0x00004000 /* Event queued overflowed */
-+#define IN_IGNORED 0x00008000 /* File was ignored */
-+
-+/* helper events */
-+#define IN_CLOSE (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* close */
-+#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* moves */
-+
-+/* special flags */
-+#define IN_ISDIR 0x40000000 /* event occurred against dir */
-+#define IN_ONESHOT 0x80000000 /* only send event once */
-+
-+/*
-+ * All of the events - we build the list by hand so that we can add flags in
-+ * the future and not break backward compatibility. Apps will get only the
-+ * events that they originally wanted. Be sure to add new events here!
-+ */
-+#define IN_ALL_EVENTS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE | \
-+ IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM | \
-+ IN_MOVED_TO | IN_DELETE | IN_CREATE | IN_DELETE_SELF)
-+
-+#define INOTIFY_IOCTL_MAGIC 'Q'
-+#define INOTIFY_IOCTL_MAXNR 2
-+
-+#define INOTIFY_WATCH _IOR(INOTIFY_IOCTL_MAGIC, 1, struct inotify_watch_request)
-+#define INOTIFY_IGNORE _IOR(INOTIFY_IOCTL_MAGIC, 2, int)
-+
-+#ifdef __KERNEL__
-+
-+#include <linux/dcache.h>
-+#include <linux/fs.h>
-+#include <linux/config.h>
-+
-+#ifdef CONFIG_INOTIFY
-+
-+extern void inotify_inode_queue_event(struct inode *, __u32, __u32,
-+ const char *);
-+extern void inotify_dentry_parent_queue_event(struct dentry *, __u32, __u32,
-+ const char *);
-+extern void inotify_unmount_inodes(struct list_head *);
-+extern void inotify_inode_is_dead(struct inode *);
-+extern u32 inotify_get_cookie(void);
-+
-+#else
-+
-+static inline void inotify_inode_queue_event(struct inode *inode,
-+ __u32 mask, __u32 cookie,
-+ const char *filename)
-+{
-+}
-+
-+static inline void inotify_dentry_parent_queue_event(struct dentry *dentry,
-+ __u32 mask, __u32 cookie,
-+ const char *filename)
-+{
-+}
-+
-+static inline void inotify_unmount_inodes(struct list_head *list)
-+{
-+}
-+
-+static inline void inotify_inode_is_dead(struct inode *inode)
-+{
-+}
-+
-+static inline u32 inotify_get_cookie(void)
-+{
-+ return 0;
-+}
-+
-+#endif /* CONFIG_INOTIFY */
-+
-+#endif /* __KERNEL __ */
-+
-+#endif /* _LINUX_INOTIFY_LEGACY_H */
diff --git a/app-admin/gamin/files/gamin-0.1.5-noinotify.patch b/app-admin/gamin/files/gamin-0.1.5-noinotify.patch
deleted file mode 100644
index 8ef947aa4ab2..000000000000
--- a/app-admin/gamin/files/gamin-0.1.5-noinotify.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-diff -ur -x '*~' gamin-0.1.5/server/gam_server.c gamin-0.1.5-fbsd/server/gam_server.c
---- gamin-0.1.5/server/gam_server.c 2005-08-09 20:30:12.000000000 +0200
-+++ gamin-0.1.5-fbsd/server/gam_server.c 2005-08-21 12:21:49.000000000 +0200
-@@ -170,9 +170,11 @@
- if (gam_exclude_check (path))
- {
- GAM_DEBUG(DEBUG_INFO, "g_a_s: %s excluded\n", path);
-+#if 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 @@
-
- if (gam_exclude_check (path))
- {
-+#if 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,10 +304,13 @@
-
- reqno = gam_subscription_get_reqno(sub);
-
-+#if ENABLE_INOTIFY
- if (gam_inotify_is_running())
- {
- gam_queue_event(conn, reqno, event, subpath, len);
-- } else {
-+ } 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));
diff --git a/app-admin/gamin/gamin-0.1.5.ebuild b/app-admin/gamin/gamin-0.1.5.ebuild
deleted file mode 100644
index 4d650b5d9fb5..000000000000
--- a/app-admin/gamin/gamin-0.1.5.ebuild
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright 1999-2005 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/app-admin/gamin/gamin-0.1.5.ebuild,v 1.2 2005/08/21 10:28:40 flameeyes Exp $
-
-inherit eutils libtool
-
-DESCRIPTION="Library providing the FAM File Alteration Monitor API"
-HOMEPAGE="http://www.gnome.org/~veillard/gamin/"
-SRC_URI="http://www.gnome.org/~veillard/gamin/sources/${P}.tar.gz"
-
-LICENSE="LGPL-2"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~s390 ~x86"
-IUSE="debug doc"
-
-RDEPEND="virtual/libc
- >=dev-libs/glib-2
- !app-admin/fam"
-
-DEPEND="${RDEPEND}
- dev-util/pkgconfig"
-
-PROVIDE="virtual/fam"
-
-src_unpack() {
- unpack ${A}
-
- cd ${S}
- # Fixup FreeBSD support, bug #99158
- epatch ${FILESDIR}/${PN}-0.1.3-freebsd.patch
- # Add support for legacy inotify interface
- epatch ${FILESDIR}/${PN}-0.1.5-inotify-legacy-backend.patch
- # Fix inotify requirement to build this version
- epatch ${FILESDIR}/${PN}-0.1.5-noinotify.patch
-
- # Needed by above 'legacy inotify' patch
- aclocal || die "aclocal failed"
- autoheader || die "autoheader failed"
- libtoolize --automake -c -f || die "libtoolize failed"
- autoconf || die "autoconf failed"
- automake -a -c || die "automake failed"
-
- # Do not remove
- elibtoolize
-}
-
-src_compile() {
- econf \
- $(use_enable kernel_linux inotify) \
- $(use_enable kernel_linux inotify-legacy) \
- $(use_enable debug) \
- $(use_enable debug debug-api) \
- || die "econf failed"
-
- emake || die "emake failed"
-}
-
-src_install() {
- make DESTDIR="${D}" install || die
-
- dodoc AUTHORS ChangeLog README TODO NEWS doc/*txt
- use doc && dohtml doc/*
-}
-
-pkg_postinst() {
- if use kernel_linux; then
- einfo "It is strongly suggested you use Gamin with an inotify enabled"
- einfo "kernel for best performance. For this release of gamin you need"
- einfo "at least an inotify 0.23-6 patched kernel, gentoo-sources-2.6.12"
- einfo "provides this patch for example."
- fi
-}