diff options
Diffstat (limited to 'devel/glib2/patches/patch-ba')
-rw-r--r-- | devel/glib2/patches/patch-ba | 208 |
1 files changed, 0 insertions, 208 deletions
diff --git a/devel/glib2/patches/patch-ba b/devel/glib2/patches/patch-ba deleted file mode 100644 index 7daff1270b2..00000000000 --- a/devel/glib2/patches/patch-ba +++ /dev/null @@ -1,208 +0,0 @@ -$NetBSD: patch-ba,v 1.14 2014/09/05 20:49:55 prlw1 Exp $ - -https://bugzilla.gnome.org/show_bug.cgi?id=583330 - ---- gio/gunixmounts.c.orig 2014-02-12 20:08:36.000000000 +0000 -+++ gio/gunixmounts.c -@@ -150,6 +150,8 @@ struct _GUnixMountMonitor { - GFileMonitor *fstab_monitor; - GFileMonitor *mtab_monitor; - -+ GList *mount_poller_mounts; -+ - GSource *proc_mounts_watch_source; - }; - -@@ -162,6 +164,8 @@ static GUnixMountMonitor *the_mount_moni - static GList *_g_get_unix_mounts (void); - static GList *_g_get_unix_mount_points (void); - -+static guint64 mount_poller_time = 0; -+ - G_DEFINE_TYPE (GUnixMountMonitor, g_unix_mount_monitor, G_TYPE_OBJECT); - - #define MOUNT_POLL_INTERVAL 4000 -@@ -188,6 +192,7 @@ G_DEFINE_TYPE (GUnixMountMonitor, g_unix - #endif - - #if (defined(HAVE_GETVFSSTAT) || defined(HAVE_GETFSSTAT)) && defined(HAVE_FSTAB_H) && defined(HAVE_SYS_MOUNT_H) -+#include <sys/param.h> - #include <sys/ucred.h> - #include <sys/mount.h> - #include <fstab.h> -@@ -353,7 +358,7 @@ get_mtab_read_file (void) - # else - return _PATH_MOUNTED; - # endif --#else -+#else - return "/etc/mtab"; - #endif - } -@@ -367,7 +372,7 @@ get_mtab_monitor_file (void) - # else - return _PATH_MOUNTED; - # endif --#else -+#else - return "/etc/mtab"; - #endif - } -@@ -608,9 +613,9 @@ get_mtab_monitor_file (void) - static GList * - _g_get_unix_mounts (void) - { --#if defined(HAVE_GETVFSSTAT) -+#if defined(USE_STATVFS) - struct statvfs *mntent = NULL; --#elif defined(HAVE_GETFSSTAT) -+#elif defined(USE_STATFS) - struct statfs *mntent = NULL; - #else - #error statfs juggling failed -@@ -621,9 +626,9 @@ _g_get_unix_mounts (void) - GList *return_list; - - /* Pass NOWAIT to avoid blocking trying to update NFS mounts. */ --#if defined(HAVE_GETVFSSTAT) -+#if defined(USE_STATVFS) && defined(HAVE_GETVFSSTAT) - num_mounts = getvfsstat (NULL, 0, ST_NOWAIT); --#elif defined(HAVE_GETFSSTAT) -+#elif defined(USE_STATFS) && defined(HAVE_GETFSSTAT) - num_mounts = getfsstat (NULL, 0, MNT_NOWAIT); - #endif - if (num_mounts == -1) -@@ -631,9 +636,9 @@ _g_get_unix_mounts (void) - - bufsize = num_mounts * sizeof (*mntent); - mntent = g_malloc (bufsize); --#if defined(HAVE_GETVFSSTAT) -+#if defined(USE_STATVFS) && defined(HAVE_GETVFSSTAT) - num_mounts = getvfsstat (mntent, bufsize, ST_NOWAIT); --#elif defined(HAVE_GETFSSTAT) -+#elif defined(USE_STATFS) && defined(HAVE_GETFSSTAT) - num_mounts = getfsstat (mntent, bufsize, MNT_NOWAIT); - #endif - if (num_mounts == -1) -@@ -648,10 +653,13 @@ _g_get_unix_mounts (void) - mount_entry->mount_path = g_strdup (mntent[i].f_mntonname); - mount_entry->device_path = g_strdup (mntent[i].f_mntfromname); - mount_entry->filesystem_type = g_strdup (mntent[i].f_fstypename); --#if defined(HAVE_GETVFSSTAT) -+ -+#if defined(USE_STATVFS) - if (mntent[i].f_flag & ST_RDONLY) --#elif defined(HAVE_GETFSSTAT) -+#elif defined(USE_STATFS) - if (mntent[i].f_flags & MNT_RDONLY) -+#else -+ #error statfs juggling failed - #endif - mount_entry->is_read_only = TRUE; - -@@ -1132,7 +1140,11 @@ get_mounts_timestamp (void) - if (monitor_file) - { - if (stat (monitor_file, &buf) == 0) -- return (guint64)buf.st_mtime; -+ return (guint64)buf.st_mtime; -+ } -+ else -+ { -+ return mount_poller_time; - } - return 0; - } -@@ -1147,7 +1159,7 @@ get_mount_points_timestamp (void) - if (monitor_file) - { - if (stat (monitor_file, &buf) == 0) -- return (guint64)buf.st_mtime; -+ return (guint64)buf.st_mtime; - } - return 0; - } -@@ -1199,9 +1211,9 @@ g_unix_mount_at (const char *mount_path, - mount_entry = l->data; - - if (!found && strcmp (mount_path, mount_entry->mount_path) == 0) -- found = mount_entry; -+ found = mount_entry; - else -- g_unix_mount_free (mount_entry); -+ g_unix_mount_free (mount_entry); - } - g_list_free (mounts); - -@@ -1279,6 +1291,8 @@ g_unix_mount_monitor_finalize (GObject * - g_object_unref (monitor->mtab_monitor); - } - -+ g_list_free_full (monitor->mount_poller_mounts, (GDestroyNotify)g_unix_mount_free); -+ - the_mount_monitor = NULL; - - G_OBJECT_CLASS (g_unix_mount_monitor_parent_class)->finalize (object); -@@ -1370,6 +1384,43 @@ proc_mounts_changed (GIOChannel *chann - return TRUE; - } - -+static gboolean -+mount_change_poller (gpointer user_data) -+{ -+ GUnixMountMonitor *mount_monitor; -+ GList *current_mounts, *new_it, *old_it; -+ gboolean has_changed = FALSE; -+ -+ mount_monitor = user_data; -+ current_mounts = _g_get_unix_mounts (); -+ -+ for ( new_it = current_mounts, old_it = mount_monitor->mount_poller_mounts; -+ new_it != NULL && old_it != NULL; -+ new_it = g_list_next (new_it), old_it = g_list_next (old_it) ) -+ { -+ if (g_unix_mount_compare (new_it->data, old_it->data) != 0) -+ { -+ has_changed = TRUE; -+ break; -+ } -+ } -+ if (!(new_it == NULL && old_it == NULL)) -+ has_changed = TRUE; -+ -+ g_list_free_full (mount_monitor->mount_poller_mounts, -+ (GDestroyNotify)g_unix_mount_free); -+ -+ mount_monitor->mount_poller_mounts = current_mounts; -+ -+ if (has_changed) -+ { -+ mount_poller_time = (guint64)g_get_monotonic_time (); -+ g_signal_emit (mount_monitor, signals[MOUNTS_CHANGED], 0); -+ } -+ -+ return TRUE; -+} -+ - static void - g_unix_mount_monitor_init (GUnixMountMonitor *monitor) - { -@@ -1424,6 +1475,18 @@ g_unix_mount_monitor_init (GUnixMountMon - g_signal_connect (monitor->mtab_monitor, "changed", (GCallback)mtab_file_changed, monitor); - } - } -+ else -+ { -+ monitor->proc_mounts_watch_source = g_timeout_source_new_seconds (3); -+ monitor->mount_poller_mounts = _g_get_unix_mounts (); -+ mount_poller_time = (guint64)g_get_monotonic_time (); -+ g_source_set_callback (monitor->proc_mounts_watch_source, -+ (GSourceFunc)mount_change_poller, -+ monitor, NULL); -+ g_source_attach (monitor->proc_mounts_watch_source, -+ g_main_context_get_thread_default ()); -+ g_source_unref (monitor->proc_mounts_watch_source); -+ } - } - - /** |