mirror of
https://git.code.sf.net/p/ntfs-3g/ntfs-3g.git
synced 2024-11-23 10:04:00 +08:00
Fixed setting archive bit on file and alternated data stream creation
This commit is contained in:
parent
1bdd93e237
commit
1bb7443eb6
@ -1396,6 +1396,7 @@ static ntfs_inode *__ntfs_create(ntfs_inode *dir_ni, le32 securid,
|
||||
si->file_attributes = FILE_ATTR_SYSTEM;
|
||||
ni->flags = FILE_ATTR_SYSTEM;
|
||||
}
|
||||
ni->flags |= FILE_ATTR_ARCHIVE;
|
||||
if ((dir_ni->flags & FILE_ATTR_COMPRESSED)
|
||||
&& (S_ISREG(type) || S_ISDIR(type)))
|
||||
ni->flags |= FILE_ATTR_COMPRESSED;
|
||||
@ -1525,6 +1526,7 @@ static ntfs_inode *__ntfs_create(ntfs_inode *dir_ni, le32 securid,
|
||||
fn->file_attributes = FILE_ATTR_SYSTEM;
|
||||
else
|
||||
fn->file_attributes |= ni->flags & FILE_ATTR_COMPRESSED;
|
||||
fn->file_attributes |= FILE_ATTR_ARCHIVE;
|
||||
fn->creation_time = ni->creation_time;
|
||||
fn->last_data_change_time = ni->last_data_change_time;
|
||||
fn->last_mft_change_time = ni->last_mft_change_time;
|
||||
|
@ -3244,7 +3244,10 @@ static void ntfs_fuse_setxattr(fuse_req_t req, fuse_ino_t ino, const char *name,
|
||||
res = -errno;
|
||||
goto exit;
|
||||
}
|
||||
set_archive(ni);
|
||||
if (!(ni->flags & FILE_ATTR_ARCHIVE)) {
|
||||
set_archive(ni);
|
||||
NInoFileNameSetDirty(ni);
|
||||
}
|
||||
na = ntfs_attr_open(ni, AT_DATA, lename, lename_len);
|
||||
if (!na) {
|
||||
res = -errno;
|
||||
@ -3273,8 +3276,10 @@ static void ntfs_fuse_setxattr(fuse_req_t req, fuse_ino_t ino, const char *name,
|
||||
&& (ni->flags & FILE_ATTR_ENCRYPTED))
|
||||
res = ntfs_efs_fixup_attribute(NULL,
|
||||
na);
|
||||
if (total)
|
||||
if (total && !(ni->flags & FILE_ATTR_ARCHIVE)) {
|
||||
set_archive(ni);
|
||||
NInoFileNameSetDirty(ni);
|
||||
}
|
||||
} else
|
||||
res = 0;
|
||||
exit:
|
||||
@ -3451,7 +3456,10 @@ static void ntfs_fuse_removexattr(fuse_req_t req, fuse_ino_t ino, const char *na
|
||||
errno = ENODATA;
|
||||
res = -errno;
|
||||
}
|
||||
set_archive(ni);
|
||||
if (!(ni->flags & FILE_ATTR_ARCHIVE)) {
|
||||
set_archive(ni);
|
||||
NInoFileNameSetDirty(ni);
|
||||
}
|
||||
exit:
|
||||
free(lename);
|
||||
if (ntfs_inode_close(ni))
|
||||
|
@ -3186,7 +3186,10 @@ static int ntfs_fuse_setxattr(const char *path, const char *name,
|
||||
res = -errno;
|
||||
goto exit;
|
||||
}
|
||||
set_archive(ni);
|
||||
if (!(ni->flags & FILE_ATTR_ARCHIVE)) {
|
||||
set_archive(ni);
|
||||
NInoFileNameSetDirty(ni);
|
||||
}
|
||||
na = ntfs_attr_open(ni, AT_DATA, lename, lename_len);
|
||||
if (!na) {
|
||||
res = -errno;
|
||||
@ -3215,8 +3218,10 @@ static int ntfs_fuse_setxattr(const char *path, const char *name,
|
||||
&& (ni->flags & FILE_ATTR_ENCRYPTED))
|
||||
res = ntfs_efs_fixup_attribute(NULL,
|
||||
na);
|
||||
if (total)
|
||||
if (total && !(ni->flags & FILE_ATTR_ARCHIVE)) {
|
||||
set_archive(ni);
|
||||
NInoFileNameSetDirty(ni);
|
||||
}
|
||||
} else
|
||||
res = 0;
|
||||
exit:
|
||||
@ -3413,7 +3418,10 @@ static int ntfs_fuse_removexattr(const char *path, const char *name)
|
||||
errno = ENODATA;
|
||||
res = -errno;
|
||||
}
|
||||
set_archive(ni);
|
||||
if (!(ni->flags & FILE_ATTR_ARCHIVE)) {
|
||||
set_archive(ni);
|
||||
NInoFileNameSetDirty(ni);
|
||||
}
|
||||
exit:
|
||||
free(lename);
|
||||
if (ntfs_inode_close(ni))
|
||||
|
Loading…
Reference in New Issue
Block a user