gvfs/trash-Add-is_root-function.patch
Ondrej Holy 694b7f77be Improve trash backend performance
Resolves: RHEL-138574
2026-06-03 12:30:12 +02:00

95 lines
3.3 KiB
Diff
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

From 86805f19dbcb55a4ad6fa2a00670d00b927c9d47 Mon Sep 17 00:00:00 2001
From: Ondrej Holy <oholy@redhat.com>
Date: Thu, 19 Jan 2023 12:57:30 +0100
Subject: [PATCH] trash: Add is_root function
Let's make the code more readable using the is_root function instead
of char comparison.
---
daemon/gvfsbackendtrash.c | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
diff --git a/daemon/gvfsbackendtrash.c b/daemon/gvfsbackendtrash.c
index 9702b860..d7ec4f77 100644
--- a/daemon/gvfsbackendtrash.c
+++ b/daemon/gvfsbackendtrash.c
@@ -44,6 +44,12 @@ struct OPAQUE_TYPE__GVfsBackendTrash
G_DEFINE_TYPE (GVfsBackendTrash, g_vfs_backend_trash, G_VFS_TYPE_BACKEND);
+static gboolean
+is_root (const char *filename)
+{
+ return (filename[0] == '/' && filename[1] == '\0');
+}
+
static GVfsMonitor *
trash_backend_get_file_monitor (GVfsBackendTrash *backend,
gboolean create)
@@ -229,7 +235,7 @@ trash_backend_open_for_read (GVfsBackend *vfs_backend,
GVfsBackendTrash *backend = G_VFS_BACKEND_TRASH (vfs_backend);
GError *error = NULL;
- if (filename[1] == '\0')
+ if (is_root (filename))
g_set_error_literal (&error, G_IO_ERROR, G_IO_ERROR_IS_DIRECTORY,
_("Cant open directory"));
@@ -397,7 +403,7 @@ trash_backend_delete (GVfsBackend *vfs_backend,
GError *error = NULL;
g_debug ("before job: %d\n", G_OBJECT(job)->ref_count);
- if (filename[1] == '\0')
+ if (is_root (filename))
g_set_error_literal (&error, G_IO_ERROR, G_IO_ERROR_PERMISSION_DENIED,
_("The trash folder may not be deleted"));
else
@@ -456,7 +462,7 @@ trash_backend_pull (GVfsBackend *vfs_backend,
GVfsBackendTrash *backend = G_VFS_BACKEND_TRASH (vfs_backend);
GError *error = NULL;
- if (source[1] == '\0')
+ if (is_root (source))
g_set_error_literal (&error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
_("The trash folder may not be deleted"));
else
@@ -683,7 +689,7 @@ trash_backend_enumerate (GVfsBackend *vfs_backend,
trash_watcher_rescan (backend->watcher);
- if (filename[1])
+ if (!is_root (filename))
trash_backend_enumerate_non_root (backend, job, filename,
attribute_matcher, flags);
else
@@ -729,7 +735,7 @@ trash_backend_query_info (GVfsBackend *vfs_backend,
if (!backend->file_monitor && !backend->dir_monitor)
trash_watcher_rescan (backend->watcher);
- if (filename[1])
+ if (!is_root (filename))
{
GError *error = NULL;
gboolean is_toplevel;
@@ -832,7 +838,7 @@ trash_backend_create_dir_monitor (GVfsBackend *vfs_backend,
GVfsBackendTrash *backend = G_VFS_BACKEND_TRASH (vfs_backend);
GVfsMonitor *monitor;
- if (filename[1])
+ if (!is_root (filename))
monitor = g_vfs_monitor_new (vfs_backend);
else
monitor = trash_backend_get_dir_monitor (backend, TRUE);
@@ -853,7 +859,7 @@ trash_backend_create_file_monitor (GVfsBackend *vfs_backend,
GVfsBackendTrash *backend = G_VFS_BACKEND_TRASH (vfs_backend);
GVfsMonitor *monitor;
- if (filename[1])
+ if (!is_root (filename))
monitor = g_vfs_monitor_new (vfs_backend);
else
monitor = trash_backend_get_file_monitor (backend, TRUE);
--
2.53.0