Accepting request 1092421 from GNOME:Next
OBS-URL: https://build.opensuse.org/request/show/1092421 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gvfs?expand=0&rev=379
This commit is contained in:
parent
e96c2154ec
commit
a4252fd526
84
85bfb701fc95abeaa8a8ca3d9059378a9490f738.patch
Normal file
84
85bfb701fc95abeaa8a8ca3d9059378a9490f738.patch
Normal file
@ -0,0 +1,84 @@
|
||||
From 85bfb701fc95abeaa8a8ca3d9059378a9490f738 Mon Sep 17 00:00:00 2001
|
||||
From: Corey Berla <corey@berla.me>
|
||||
Date: Tue, 11 Apr 2023 16:14:15 -0700
|
||||
Subject: [PATCH] smb: Allow renaming a file to the same name with a different
|
||||
case
|
||||
|
||||
We check to see if the desired file name already exists before doing
|
||||
a renaming by stat'ing the file (to prevent smb from destroying an
|
||||
existing file). Since smb is not case sensitive, the check for an
|
||||
existing file mistakenly returns true if we are only changing the
|
||||
filename's case.
|
||||
|
||||
Add a second check to see whether we are simply changing the
|
||||
case of the filename.
|
||||
|
||||
Fixes: https://gitlab.gnome.org/GNOME/gvfs/-/issues/672
|
||||
|
||||
|
||||
(cherry picked from commit a845ba0220fef72815ce091b92f74767d8025541)
|
||||
---
|
||||
daemon/gvfsbackendsmb.c | 31 +++++++++++++++++++++----------
|
||||
1 file changed, 21 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/daemon/gvfsbackendsmb.c b/daemon/gvfsbackendsmb.c
|
||||
index d999a2a6..87cb2cae 100644
|
||||
--- a/daemon/gvfsbackendsmb.c
|
||||
+++ b/daemon/gvfsbackendsmb.c
|
||||
@@ -1892,6 +1892,9 @@ do_set_display_name (GVfsBackend *backend,
|
||||
{
|
||||
GVfsBackendSmb *op_backend = G_VFS_BACKEND_SMB (backend);
|
||||
char *from_uri, *to_uri;
|
||||
+ g_autofree char *basename = NULL;
|
||||
+ g_autofree char *old_name_case = NULL;
|
||||
+ g_autofree char *new_name_case = NULL;
|
||||
char *dirname, *new_path;
|
||||
int res, errsv;
|
||||
struct stat st;
|
||||
@@ -1899,6 +1902,7 @@ do_set_display_name (GVfsBackend *backend,
|
||||
smbc_stat_fn smbc_stat;
|
||||
|
||||
dirname = g_path_get_dirname (filename);
|
||||
+ basename = g_path_get_basename (filename);
|
||||
|
||||
/* TODO: display name is in utf8, atm we assume libsmb uris
|
||||
are in utf8, but this might not be true if the user changed
|
||||
@@ -1910,18 +1914,25 @@ do_set_display_name (GVfsBackend *backend,
|
||||
from_uri = create_smb_uri (op_backend->server, op_backend->port, op_backend->share, filename);
|
||||
to_uri = create_smb_uri (op_backend->server, op_backend->port, op_backend->share, new_path);
|
||||
|
||||
-
|
||||
- /* We can't rely on libsmbclient reporting EEXIST, let's always stat first.
|
||||
- * https://bugzilla.gnome.org/show_bug.cgi?id=616645
|
||||
+ /* If we are simply changing the case of an existing file, we don't need to
|
||||
+ * worry about overwriting another file.
|
||||
*/
|
||||
- smbc_stat = smbc_getFunctionStat (op_backend->smb_context);
|
||||
- res = smbc_stat (op_backend->smb_context, to_uri, &st);
|
||||
- if (res == 0)
|
||||
+ old_name_case = g_utf8_casefold (basename, -1);
|
||||
+ new_name_case = g_utf8_casefold (display_name, -1);
|
||||
+ if (g_strcmp0 (old_name_case, new_name_case) != 0)
|
||||
{
|
||||
- g_vfs_job_failed (G_VFS_JOB (job),
|
||||
- G_IO_ERROR, G_IO_ERROR_EXISTS,
|
||||
- _("Can’t rename file, filename already exists"));
|
||||
- goto out;
|
||||
+ /* We can't rely on libsmbclient reporting EEXIST, let's always stat first.
|
||||
+ * https://bugzilla.gnome.org/show_bug.cgi?id=616645
|
||||
+ */
|
||||
+ smbc_stat = smbc_getFunctionStat (op_backend->smb_context);
|
||||
+ res = smbc_stat (op_backend->smb_context, to_uri, &st);
|
||||
+ if (res == 0)
|
||||
+ {
|
||||
+ g_vfs_job_failed (G_VFS_JOB (job),
|
||||
+ G_IO_ERROR, G_IO_ERROR_EXISTS,
|
||||
+ _("Can’t rename file, filename already exists"));
|
||||
+ goto out;
|
||||
+ }
|
||||
}
|
||||
|
||||
smbc_rename = smbc_getFunctionRename (op_backend->smb_context);
|
||||
--
|
||||
GitLab
|
||||
|
31
fc2669f63c5def1528dda2e7833db5774aa08e22.patch
Normal file
31
fc2669f63c5def1528dda2e7833db5774aa08e22.patch
Normal file
@ -0,0 +1,31 @@
|
||||
From fc2669f63c5def1528dda2e7833db5774aa08e22 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Ant=C3=B3nio=20Fernandes?= <antoniof@gnome.org>
|
||||
Date: Sat, 29 Apr 2023 22:30:36 +0000
|
||||
Subject: [PATCH] mtp: Emit delete event on device when disconnected
|
||||
|
||||
Otherwise clients won't realize the root file is gone.
|
||||
|
||||
Related to https://gitlab.gnome.org/GNOME/nautilus/-/issues/371
|
||||
---
|
||||
daemon/gvfsbackendmtp.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/daemon/gvfsbackendmtp.c b/daemon/gvfsbackendmtp.c
|
||||
index fd297be1d..0bc35b7ab 100644
|
||||
--- a/daemon/gvfsbackendmtp.c
|
||||
+++ b/daemon/gvfsbackendmtp.c
|
||||
@@ -638,6 +638,11 @@ on_uevent (GUdevClient *client, gchar *action, GUdevDevice *device, gpointer use
|
||||
(char *)path);
|
||||
}
|
||||
|
||||
+ /* Finally, emit delete event to tell the clients the device root file is gone. */
|
||||
+ g_hash_table_foreach (op_backend->monitors,
|
||||
+ emit_delete_event,
|
||||
+ (char *)"/");
|
||||
+
|
||||
op_backend->force_unmounted = TRUE;
|
||||
g_atomic_int_set (&op_backend->unmount_started, TRUE);
|
||||
g_vfs_backend_force_unmount ((GVfsBackend*)op_backend);
|
||||
--
|
||||
GitLab
|
||||
|
@ -1,3 +1,12 @@
|
||||
-------------------------------------------------------------------
|
||||
Sun Jun 11 20:55:10 UTC 2023 - Bjørn Lie <bjorn.lie@gmail.com>
|
||||
|
||||
- Add upstream fixes from the stable branch:
|
||||
+ fc2669f63c5def1528dda2e7833db5774aa08e22.patch: mtp: Emit
|
||||
delete event on device when disconnected
|
||||
+ 85bfb701fc95abeaa8a8ca3d9059378a9490f738.patch: smb: Allow
|
||||
renaming a file to the same name with a different case
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Apr 12 08:23:53 UTC 2023 - Bjørn Lie <bjorn.lie@gmail.com>
|
||||
|
||||
|
@ -29,6 +29,10 @@ Source99: baselibs.conf
|
||||
|
||||
# PATCH-FIX-UPSTREAM 41862c0179f834d8bc3bd84ce78ee495050f2676.patch -- trash: Sync trash dir items when files change
|
||||
Patch0: https://gitlab.gnome.org/GNOME/gvfs/-/commit/41862c0179f834d8bc3bd84ce78ee495050f2676.patch
|
||||
# PATCH-FIX-UPSTREAM fc2669f63c5def1528dda2e7833db5774aa08e22.patch -- mtp: Emit delete event on device when disconnected
|
||||
Patch1: https://gitlab.gnome.org/GNOME/gvfs/-/commit/fc2669f63c5def1528dda2e7833db5774aa08e22.patch
|
||||
# PATCH-FIX-UPSTREAM 85bfb701fc95abeaa8a8ca3d9059378a9490f738.patch -- smb: Allow renaming a file to the same name with a different case
|
||||
Patch2: https://gitlab.gnome.org/GNOME/gvfs/-/commit/85bfb701fc95abeaa8a8ca3d9059378a9490f738.patch
|
||||
|
||||
### NOTE: Please, keep SLE-only patches at bottom (starting on 1000).
|
||||
# PATCH-FEATURE-SLE gvfs-nds.patch ksamrat@novell.com -- Provides NDS browsing for nautilus
|
||||
|
Loading…
Reference in New Issue
Block a user