Accepting request 1092847 from GNOME:Factory
OBS-URL: https://build.opensuse.org/request/show/1092847 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/gvfs?expand=0&rev=184
This commit is contained in:
commit
8c4d14aeb7
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>
|
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
|
# PATCH-FIX-UPSTREAM 41862c0179f834d8bc3bd84ce78ee495050f2676.patch -- trash: Sync trash dir items when files change
|
||||||
Patch0: https://gitlab.gnome.org/GNOME/gvfs/-/commit/41862c0179f834d8bc3bd84ce78ee495050f2676.patch
|
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).
|
### 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
|
# PATCH-FEATURE-SLE gvfs-nds.patch ksamrat@novell.com -- Provides NDS browsing for nautilus
|
||||||
|
Loading…
Reference in New Issue
Block a user