[nautilus/wip/corey/samba] file-operation: Apply FAT filename rules to samba shares
- From: Corey Berla <coreyberla src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus/wip/corey/samba] file-operation: Apply FAT filename rules to samba shares
- Date: Wed, 21 Sep 2022 18:14:04 +0000 (UTC)
commit 6a6ad08231ed6b64d12942c0359ac4914ebc1239
Author: Corey Berla <corey berla me>
Date: Sat Sep 17 19:01:37 2022 -0700
file-operation: Apply FAT filename rules to samba shares
We check if a filesystem is FAT, NTFS, etc in order
to apply windows based filename rules, but if we
are copying to a smb share, those filesystem
checks aren't performed. We should be using the same
rules for smb shares. This is true for windows smb
shares and Samba smb shares.
src/nautilus-file-operations.c | 34 +++++++++++++++++++---------------
1 file changed, 19 insertions(+), 15 deletions(-)
---
diff --git a/src/nautilus-file-operations.c b/src/nautilus-file-operations.c
index becd3efec..bc78ed5ad 100644
--- a/src/nautilus-file-operations.c
+++ b/src/nautilus-file-operations.c
@@ -4304,10 +4304,13 @@ fat_str_replace (char *str,
static gboolean
make_file_name_valid_for_dest_fs (char *filename,
- const char *dest_fs_type)
+ const char *dest_fs_type,
+ GFile *dest_dir)
{
if (filename != NULL)
{
+ gboolean is_smb = dest_dir != NULL && g_file_has_uri_scheme (dest_dir, "smb");
+
if (g_strcmp0 (dest_fs_type, "fat") == 0 ||
g_strcmp0 (dest_fs_type, "vfat") == 0 ||
/* The fuseblk filesystem type could be of any type
@@ -4317,7 +4320,8 @@ make_file_name_valid_for_dest_fs (char *filename,
g_strcmp0 (dest_fs_type, "fuse") == 0 ||
g_strcmp0 (dest_fs_type, "ntfs") == 0 ||
g_strcmp0 (dest_fs_type, "msdos") == 0 ||
- g_strcmp0 (dest_fs_type, "msdosfs") == 0)
+ g_strcmp0 (dest_fs_type, "msdosfs") == 0 ||
+ is_smb)
{
gboolean ret;
int i, old_len;
@@ -4374,7 +4378,7 @@ get_unique_target_file (GFile *src,
if (editname != NULL)
{
new_name = get_duplicate_name (editname, count, max_length, ignore_extension);
- make_file_name_valid_for_dest_fs (new_name, dest_fs_type);
+ make_file_name_valid_for_dest_fs (new_name, dest_fs_type, dest_dir);
dest = g_file_get_child_for_display_name (dest_dir, new_name, NULL);
g_free (new_name);
}
@@ -4389,7 +4393,7 @@ get_unique_target_file (GFile *src,
if (g_utf8_validate (basename, -1, NULL))
{
new_name = get_duplicate_name (basename, count, max_length, ignore_extension);
- make_file_name_valid_for_dest_fs (new_name, dest_fs_type);
+ make_file_name_valid_for_dest_fs (new_name, dest_fs_type, dest_dir);
dest = g_file_get_child_for_display_name (dest_dir, new_name, NULL);
g_free (new_name);
}
@@ -4402,7 +4406,7 @@ get_unique_target_file (GFile *src,
count += atoi (end + 1);
}
new_name = g_strdup_printf ("%s.%d", basename, count);
- make_file_name_valid_for_dest_fs (new_name, dest_fs_type);
+ make_file_name_valid_for_dest_fs (new_name, dest_fs_type, dest_dir);
dest = g_file_get_child (dest_dir, new_name);
g_free (new_name);
}
@@ -4438,7 +4442,7 @@ get_target_file_for_link (GFile *src,
if (editname != NULL)
{
new_name = get_link_name (editname, count, max_length);
- make_file_name_valid_for_dest_fs (new_name, dest_fs_type);
+ make_file_name_valid_for_dest_fs (new_name, dest_fs_type, dest_dir);
dest = g_file_get_child_for_display_name (dest_dir, new_name, NULL);
g_free (new_name);
}
@@ -4449,12 +4453,12 @@ get_target_file_for_link (GFile *src,
if (dest == NULL)
{
basename = g_file_get_basename (src);
- make_file_name_valid_for_dest_fs (basename, dest_fs_type);
+ make_file_name_valid_for_dest_fs (basename, dest_fs_type, dest_dir);
if (g_utf8_validate (basename, -1, NULL))
{
new_name = get_link_name (basename, count, max_length);
- make_file_name_valid_for_dest_fs (new_name, dest_fs_type);
+ make_file_name_valid_for_dest_fs (new_name, dest_fs_type, dest_dir);
dest = g_file_get_child_for_display_name (dest_dir, new_name, NULL);
g_free (new_name);
}
@@ -4469,7 +4473,7 @@ get_target_file_for_link (GFile *src,
{
new_name = g_strdup_printf ("%s.lnk%d", basename, count);
}
- make_file_name_valid_for_dest_fs (new_name, dest_fs_type);
+ make_file_name_valid_for_dest_fs (new_name, dest_fs_type, dest_dir);
dest = g_file_get_child (dest_dir, new_name);
g_free (new_name);
}
@@ -4497,7 +4501,7 @@ get_target_file_with_custom_name (GFile *src,
if (custom_name != NULL)
{
copyname = g_strdup (custom_name);
- make_file_name_valid_for_dest_fs (copyname, dest_fs_type);
+ make_file_name_valid_for_dest_fs (copyname, dest_fs_type, dest_dir);
dest = g_file_get_child_for_display_name (dest_dir, copyname, NULL);
g_free (copyname);
@@ -4527,7 +4531,7 @@ get_target_file_with_custom_name (GFile *src,
if (copyname)
{
- make_file_name_valid_for_dest_fs (copyname, dest_fs_type);
+ make_file_name_valid_for_dest_fs (copyname, dest_fs_type, dest_dir);
dest = g_file_get_child_for_display_name (dest_dir, copyname, NULL);
g_free (copyname);
}
@@ -4539,7 +4543,7 @@ get_target_file_with_custom_name (GFile *src,
if (dest == NULL)
{
basename = g_file_get_basename (src);
- make_file_name_valid_for_dest_fs (basename, dest_fs_type);
+ make_file_name_valid_for_dest_fs (basename, dest_fs_type, dest_dir);
dest = g_file_get_child (dest_dir, basename);
g_free (basename);
}
@@ -7675,7 +7679,7 @@ create_task_thread_func (GTask *task,
}
}
- make_file_name_valid_for_dest_fs (filename, dest_fs_type);
+ make_file_name_valid_for_dest_fs (filename, dest_fs_type, NULL);
if (filename_is_utf8)
{
dest = g_file_get_child_for_display_name (job->dest_dir, filename, NULL);
@@ -7872,7 +7876,7 @@ retry:
}
}
- if (make_file_name_valid_for_dest_fs (new_filename, dest_fs_type))
+ if (make_file_name_valid_for_dest_fs (new_filename, dest_fs_type, job->dest_dir))
{
g_object_unref (dest);
@@ -7927,7 +7931,7 @@ retry:
}
}
- make_file_name_valid_for_dest_fs (filename2, dest_fs_type);
+ make_file_name_valid_for_dest_fs (filename2, dest_fs_type, job->dest_dir);
if (filename_is_utf8)
{
dest = g_file_get_child_for_display_name (job->dest_dir, filename2, NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]