You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.9 KiB
66 lines
1.9 KiB
2 months ago
|
From f93bd46c36c8e42f17f0f61b79c55a3794906395 Mon Sep 17 00:00:00 2001
|
||
|
From: Ondrej Holy <oholy@redhat.com>
|
||
|
Date: Fri, 6 Mar 2020 10:08:09 +0100
|
||
|
Subject: [PATCH] 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 +++++++++++++++++++++++++++++-
|
||
|
1 file changed, 29 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/daemon/trashlib/trashwatcher.c b/daemon/trashlib/trashwatcher.c
|
||
|
index 6b455235..01c440a1 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;
|
||
|
--
|
||
|
2.41.0
|
||
|
|