Cygwin: open(2): Change comment in disabled O_TMPFILE POSIX unlink code
- Turns out, the definition of POSIX unlink semantics is half-hearted so far: It's not possible to link an open file HANDLE if it has been deleted with POSIX semantics, nor is it possible to remove the delete disposition. This breaks linkat on an O_TMPFILE. Tested with W10 1809. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
parent
7148fbc496
commit
07e0a9584f
|
@ -1468,13 +1468,20 @@ open (const char *unix_path, int flags, ...)
|
||||||
|| !fh->open_with_arch (flags, mode & 07777))
|
|| !fh->open_with_arch (flags, mode & 07777))
|
||||||
__leave; /* errno already set */
|
__leave; /* errno already set */
|
||||||
#if 0
|
#if 0
|
||||||
/* W10 1709 POSIX unlink semantics:
|
/* Don't use W10 1709 POSIX unlink semantics here.
|
||||||
|
|
||||||
TODO: Works nicely for O_TEMPFILE but using linkat requires that
|
Including W10 1809, NtSetInformationFile(FileLinkInformation) on a
|
||||||
we first fix /proc/self/fd handling to allow opening by handle
|
HANDLE to a file unlinked with POSIX semantics fails with
|
||||||
rather than by symlinked filename only. */
|
STATUS_ACCESS_DENIED. Trying to remove the delete disposition on
|
||||||
|
the file prior to calling link fails with STATUS_FILE_DELETED.
|
||||||
|
This breaks
|
||||||
|
|
||||||
|
fd = open(O_TMPFILE);
|
||||||
|
linkat("/proc/self/fd/<fd>);
|
||||||
|
|
||||||
|
semantics. */
|
||||||
if ((flags & O_TMPFILE) && wincap.has_posix_file_info ()
|
if ((flags & O_TMPFILE) && wincap.has_posix_file_info ()
|
||||||
&& fh->pc.fs_is_ntfs ())
|
&& !fh->pc.isremote () && fh->pc.fs_is_ntfs ())
|
||||||
{
|
{
|
||||||
HANDLE del_h;
|
HANDLE del_h;
|
||||||
OBJECT_ATTRIBUTES attr;
|
OBJECT_ATTRIBUTES attr;
|
||||||
|
|
Loading…
Reference in New Issue