[gvfs/wip/oholy/x-gvfs-notrash: 1/2] trash: Add support for x-gvfs-notrash option to ignore mounts




commit 62ab6b04196eff2a5c0906144847585a6df08003
Author: Ondrej Holy <oholy redhat com>
Date:   Fri Mar 6 10:08:09 2020 +0100

    trash: Add support for x-gvfs-notrash option to ignore mounts
    
    Add support for x-gvfs-notrash mount option, which allows to ignore
    trash folder on certain mounts. This might be especially useful e.g.
    to prevent wakeups of autofs mounts...
    
    https://bugzilla.redhat.com/show_bug.cgi?id=1096200

 daemon/trashlib/trashwatcher.c | 30 +++++++++++++++++++++++++++++-
 meson.build                    |  2 +-
 2 files changed, 30 insertions(+), 2 deletions(-)
---
diff --git a/daemon/trashlib/trashwatcher.c b/daemon/trashlib/trashwatcher.c
index 6b4552353..01c440a1e 100644
--- a/daemon/trashlib/trashwatcher.c
+++ b/daemon/trashlib/trashwatcher.c
@@ -211,6 +211,34 @@ trash_mount_remove (TrashMount **mount_ptr)
   g_slice_free (TrashMount, mount);
 }
 
+static gboolean
+ignore_trash_mount (GUnixMountEntry *mount)
+{
+  GUnixMountPoint *mount_point = NULL;
+  const gchar *mount_options;
+  gboolean retval = TRUE;
+
+  if (g_unix_mount_is_system_internal (mount))
+    return TRUE;
+
+  mount_options = g_unix_mount_get_options (mount);
+  if (mount_options == NULL)
+    {
+      mount_point = g_unix_mount_point_at (g_unix_mount_get_mount_path (mount),
+                                           NULL);
+      if (mount_point != NULL)
+        mount_options = g_unix_mount_point_get_options (mount_point);
+    }
+
+  if (mount_options == NULL ||
+      strstr (mount_options, "x-gvfs-notrash") == NULL)
+    retval = FALSE;
+
+  g_clear_pointer (&mount_point, g_unix_mount_point_free);
+
+  return retval;
+}
+
 static void
 trash_watcher_remount (TrashWatcher *watcher)
 {
@@ -229,7 +257,7 @@ trash_watcher_remount (TrashWatcher *watcher)
     {
       int result;
 
-      if (new && g_unix_mount_is_system_internal (new->data))
+      if (new && ignore_trash_mount (new->data))
         {
           g_unix_mount_free (new->data);
           new = new->next;
diff --git a/meson.build b/meson.build
index 187bfd55f..84003d6a9 100644
--- a/meson.build
+++ b/meson.build
@@ -231,7 +231,7 @@ have_version_script = cc.has_link_argument('@0@,@1@'.format(version_script_ldfla
 
 gio_dep = dependency('gio-2.0')
 gio_unix_dep = dependency('gio-unix-2.0')
-glib_dep = dependency('glib-2.0', version: '>= 2.57.2')
+glib_dep = dependency('glib-2.0', version: '>= 2.65.0')
 gobject_dep = dependency('gobject-2.0')
 gsettings_desktop_schemas_dep = dependency('gsettings-desktop-schemas', version: '>= 3.33.0')
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]