fs/ntfs3: Make hidedotfiles mount option work when renaming files
authorDaniel Pinto <danielpinto52@gmail.com>
Mon, 10 Oct 2022 11:32:12 +0000 (12:32 +0100)
committerKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
Sat, 12 Nov 2022 17:59:43 +0000 (20:59 +0300)
Currently, the hidedotfiles mount option only has an effect when
creating new files. Removing or adding the starting dot when moving
or renaming files does not update the hidden attribute.

Make hidedotfiles also set or uset the hidden attribute when a file
gains or loses its starting dot by being moved or renamed.

Signed-off-by: Daniel Pinto <danielpinto52@gmail.com>
Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3/frecord.c

index ce5e8f3b1acab659c6039b48fc18e6717ff804da..392efa0270f85cde2d68fb575e34d5b616181b01 100644 (file)
@@ -3023,6 +3023,15 @@ int ni_add_name(struct ntfs_inode *dir_ni, struct ntfs_inode *ni,
            !valid_windows_name(sbi, (struct le_str *)&de_name->name_len))
                return -EINVAL;
 
+       /* If option "hidedotfiles" then set hidden attribute for dot files. */
+       if (ni->mi.sbi->options->hide_dot_files) {
+               if (de_name->name_len > 0 &&
+                   le16_to_cpu(de_name->name[0]) == '.')
+                       ni->std_fa |= FILE_ATTRIBUTE_HIDDEN;
+               else
+                       ni->std_fa &= ~FILE_ATTRIBUTE_HIDDEN;
+       }
+
        mi_get_ref(&ni->mi, &de->ref);
        mi_get_ref(&dir_ni->mi, &de_name->home);