diff --git a/85bfb701fc95abeaa8a8ca3d9059378a9490f738.patch b/85bfb701fc95abeaa8a8ca3d9059378a9490f738.patch new file mode 100644 index 0000000..42fdb59 --- /dev/null +++ b/85bfb701fc95abeaa8a8ca3d9059378a9490f738.patch @@ -0,0 +1,84 @@ +From 85bfb701fc95abeaa8a8ca3d9059378a9490f738 Mon Sep 17 00:00:00 2001 +From: Corey Berla +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 + diff --git a/fc2669f63c5def1528dda2e7833db5774aa08e22.patch b/fc2669f63c5def1528dda2e7833db5774aa08e22.patch new file mode 100644 index 0000000..9bcdd23 --- /dev/null +++ b/fc2669f63c5def1528dda2e7833db5774aa08e22.patch @@ -0,0 +1,31 @@ +From fc2669f63c5def1528dda2e7833db5774aa08e22 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ant=C3=B3nio=20Fernandes?= +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 + diff --git a/gvfs.changes b/gvfs.changes index 62d4130..834b8c4 100644 --- a/gvfs.changes +++ b/gvfs.changes @@ -1,3 +1,12 @@ +------------------------------------------------------------------- +Sun Jun 11 20:55:10 UTC 2023 - Bjørn Lie + +- 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 diff --git a/gvfs.spec b/gvfs.spec index a2192c5..860717e 100644 --- a/gvfs.spec +++ b/gvfs.spec @@ -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