Cygwin: set the FILE_ATTRIBUTE_ARCHIVE DOS attribute on file creation
Do this for normal files and symlinks, not for temporary files, device files or unix sockets. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
parent
98d10e5fd2
commit
2b28977149
|
@ -157,7 +157,7 @@ cygwin_exception::open_stackdumpfile ()
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
/* Try to open it to dump the stack in it. */
|
/* Try to open it to dump the stack in it. */
|
||||||
status = NtCreateFile (&h, GENERIC_WRITE | SYNCHRONIZE, &attr, &io,
|
status = NtCreateFile (&h, GENERIC_WRITE | SYNCHRONIZE, &attr, &io,
|
||||||
NULL, FILE_ATTRIBUTE_NORMAL, 0, FILE_OVERWRITE_IF,
|
NULL, FILE_ATTRIBUTE_ARCHIVE, 0, FILE_OVERWRITE_IF,
|
||||||
FILE_SYNCHRONOUS_IO_NONALERT
|
FILE_SYNCHRONOUS_IO_NONALERT
|
||||||
| FILE_OPEN_FOR_BACKUP_INTENT, NULL, 0);
|
| FILE_OPEN_FOR_BACKUP_INTENT, NULL, 0);
|
||||||
if (NT_SUCCESS (status))
|
if (NT_SUCCESS (status))
|
||||||
|
|
|
@ -649,7 +649,8 @@ fhandler_base::open (int flags, mode_t mode)
|
||||||
|
|
||||||
if (flags & (O_CREAT | O_TMPFILE))
|
if (flags & (O_CREAT | O_TMPFILE))
|
||||||
{
|
{
|
||||||
file_attributes |= FILE_ATTRIBUTE_NORMAL;
|
file_attributes |= (flags & O_TMPFILE)
|
||||||
|
? FILE_ATTRIBUTE_NORMAL : FILE_ATTRIBUTE_ARCHIVE;
|
||||||
|
|
||||||
if (pc.fs_is_nfs ())
|
if (pc.fs_is_nfs ())
|
||||||
{
|
{
|
||||||
|
|
|
@ -1945,7 +1945,7 @@ symlink_wsl (const char *oldpath, path_conv &win32_newpath)
|
||||||
status = NtCreateFile (&fh, DELETE | FILE_GENERIC_WRITE
|
status = NtCreateFile (&fh, DELETE | FILE_GENERIC_WRITE
|
||||||
| READ_CONTROL | WRITE_DAC,
|
| READ_CONTROL | WRITE_DAC,
|
||||||
win32_newpath.get_object_attr (attr, sec_none_nih),
|
win32_newpath.get_object_attr (attr, sec_none_nih),
|
||||||
&io, NULL, FILE_ATTRIBUTE_NORMAL,
|
&io, NULL, FILE_ATTRIBUTE_ARCHIVE,
|
||||||
FILE_SHARE_VALID_FLAGS, FILE_CREATE,
|
FILE_SHARE_VALID_FLAGS, FILE_CREATE,
|
||||||
FILE_SYNCHRONOUS_IO_NONALERT
|
FILE_SYNCHRONOUS_IO_NONALERT
|
||||||
| FILE_NON_DIRECTORY_FILE
|
| FILE_NON_DIRECTORY_FILE
|
||||||
|
@ -2264,7 +2264,7 @@ symlink_worker (const char *oldpath, path_conv &win32_newpath, bool isdevice)
|
||||||
|
|
||||||
status = NtCreateFile (&fh, access,
|
status = NtCreateFile (&fh, access,
|
||||||
win32_newpath.get_object_attr (attr, sec_none_nih),
|
win32_newpath.get_object_attr (attr, sec_none_nih),
|
||||||
&io, NULL, FILE_ATTRIBUTE_NORMAL,
|
&io, NULL, FILE_ATTRIBUTE_ARCHIVE,
|
||||||
FILE_SHARE_VALID_FLAGS,
|
FILE_SHARE_VALID_FLAGS,
|
||||||
isdevice ? FILE_OVERWRITE_IF : FILE_CREATE,
|
isdevice ? FILE_OVERWRITE_IF : FILE_CREATE,
|
||||||
FILE_SYNCHRONOUS_IO_NONALERT
|
FILE_SYNCHRONOUS_IO_NONALERT
|
||||||
|
|
|
@ -12,3 +12,7 @@ Bug Fixes
|
||||||
|
|
||||||
- Fix showing DLL version info from native Windows tools.
|
- Fix showing DLL version info from native Windows tools.
|
||||||
Addresses: https://cygwin.com/pipermail/cygwin/2021-November/249867.html
|
Addresses: https://cygwin.com/pipermail/cygwin/2021-November/249867.html
|
||||||
|
|
||||||
|
- Fix long-standing problem that new files don't get created with the
|
||||||
|
FILE_ATTRIBUTE_ARCHIVE DOS attribute set.
|
||||||
|
Addresses: https://cygwin.com/pipermail/cygwin/2021-November/249909.html
|
||||||
|
|
Loading…
Reference in New Issue