diff options
author | Ondrej Holy <oholy@redhat.com> | 2020-03-06 10:08:09 +0100 |
---|---|---|
committer | Ondrej Holy <oholy@redhat.com> | 2020-08-05 13:57:18 +0000 |
commit | f93bd46c36c8e42f17f0f61b79c55a3794906395 (patch) | |
tree | 9bd5000ee569e5ea363a96b4140faaaef1085db3 | |
parent | 6123f0823a0cd5fab5eb8cd4d3e1eb2470c43109 (diff) | |
download | gvfs-f93bd46c36c8e42f17f0f61b79c55a3794906395.tar.gz |
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
-rw-r--r-- | daemon/trashlib/trashwatcher.c | 30 |
1 files changed, 29 insertions, 1 deletions
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; |