[nautilus/wip/corey/samba: 2/2] file-operation: Apply FAT filename rules to samba shares




commit edac26ac11599625a660a769252b240c411e3fef
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 | 32 +++++++++++++++++---------------
 1 file changed, 17 insertions(+), 15 deletions(-)
---
diff --git a/src/nautilus-file-operations.c b/src/nautilus-file-operations.c
index becd3efec..5b6a58f13 100644
--- a/src/nautilus-file-operations.c
+++ b/src/nautilus-file-operations.c
@@ -4304,7 +4304,8 @@ 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)
     {
@@ -4317,7 +4318,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 ||
+            g_file_has_uri_scheme (dest_dir, "smb"))
         {
             gboolean ret;
             int i, old_len;
@@ -4374,7 +4376,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 +4391,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 +4404,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 +4440,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 +4451,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 +4471,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 +4499,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 +4529,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 +4541,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 +7677,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 +7874,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 +7929,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]