aboutsummaryrefslogtreecommitdiff
path: root/winsup
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2021-11-15 20:31:51 +0100
committerCorinna Vinschen <corinna@vinschen.de>2021-11-15 20:59:41 +0100
commit2b28977149b1e8858b597890906f21cdecde84ce (patch)
treed991624936b622f8aec49d6a75fecd69d5047eca /winsup
parent98d10e5fd2868d0d9ec9117f832a63f8ae75d75b (diff)
downloadnewlib-2b28977149b1e8858b597890906f21cdecde84ce.zip
newlib-2b28977149b1e8858b597890906f21cdecde84ce.tar.gz
newlib-2b28977149b1e8858b597890906f21cdecde84ce.tar.bz2
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>
Diffstat (limited to 'winsup')
-rw-r--r--winsup/cygwin/exceptions.cc2
-rw-r--r--winsup/cygwin/fhandler.cc3
-rw-r--r--winsup/cygwin/path.cc4
-rw-r--r--winsup/cygwin/release/3.3.34
4 files changed, 9 insertions, 4 deletions
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index a914110..eccddd7 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -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))
diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc
index 2a07e6c..4e70859 100644
--- a/winsup/cygwin/fhandler.cc
+++ b/winsup/cygwin/fhandler.cc
@@ -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 ())
{
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc
index baf04ce..2cf9de9 100644
--- a/winsup/cygwin/path.cc
+++ b/winsup/cygwin/path.cc
@@ -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
diff --git a/winsup/cygwin/release/3.3.3 b/winsup/cygwin/release/3.3.3
index 2ad28d4..1eb25e2 100644
--- a/winsup/cygwin/release/3.3.3
+++ b/winsup/cygwin/release/3.3.3
@@ -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