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:
Corinna Vinschen 2021-11-15 20:31:51 +01:00
parent 3c19e1e0d9
commit 282f40e469
4 changed files with 9 additions and 4 deletions

View File

@ -157,7 +157,7 @@ cygwin_exception::open_stackdumpfile ()
NTSTATUS status;
/* Try to open it to dump the stack in it. */
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_OPEN_FOR_BACKUP_INTENT, NULL, 0);
if (NT_SUCCESS (status))

View File

@ -649,7 +649,8 @@ fhandler_base::open (int flags, mode_t mode)
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 ())
{

View File

@ -1945,7 +1945,7 @@ symlink_wsl (const char *oldpath, path_conv &win32_newpath)
status = NtCreateFile (&fh, DELETE | FILE_GENERIC_WRITE
| READ_CONTROL | WRITE_DAC,
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_SYNCHRONOUS_IO_NONALERT
| FILE_NON_DIRECTORY_FILE
@ -2264,7 +2264,7 @@ symlink_worker (const char *oldpath, path_conv &win32_newpath, bool isdevice)
status = NtCreateFile (&fh, access,
win32_newpath.get_object_attr (attr, sec_none_nih),
&io, NULL, FILE_ATTRIBUTE_NORMAL,
&io, NULL, FILE_ATTRIBUTE_ARCHIVE,
FILE_SHARE_VALID_FLAGS,
isdevice ? FILE_OVERWRITE_IF : FILE_CREATE,
FILE_SYNCHRONOUS_IO_NONALERT

View File

@ -12,3 +12,7 @@ Bug Fixes
- Fix showing DLL version info from native Windows tools.
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