summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/ntdll.h
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2008-10-20 19:30:06 +0000
committerCorinna Vinschen <corinna@vinschen.de>2008-10-20 19:30:06 +0000
commit669bdeb82236ed53f094702ec4af7d253d828df4 (patch)
tree581f6fbb9f9cca2ce4689f4c59857d3ff927e530 /winsup/cygwin/ntdll.h
parent87ab6bfb627d902150a73ef8f6f81f135e015224 (diff)
downloadcygnal-669bdeb82236ed53f094702ec4af7d253d828df4.tar.gz
cygnal-669bdeb82236ed53f094702ec4af7d253d828df4.tar.bz2
cygnal-669bdeb82236ed53f094702ec4af7d253d828df4.zip
* ntdll.h (NtSetAttributesFile): New inline function.
* fhandler_disk_file.cc (fhandler_disk_file::fchmod): Use NtSetAttributesFile. * path.cc (symlink_worker): Ditto. * syscalls.cc (unlink_nt): Ditto. (rename): Omit FILE_SHARE_DELETE when opening files on Samba. Add comment to explain why.
Diffstat (limited to 'winsup/cygwin/ntdll.h')
-rw-r--r--winsup/cygwin/ntdll.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/winsup/cygwin/ntdll.h b/winsup/cygwin/ntdll.h
index 4d5eed235..1ce348f47 100644
--- a/winsup/cygwin/ntdll.h
+++ b/winsup/cygwin/ntdll.h
@@ -1072,4 +1072,15 @@ extern "C"
NTSTATUS NTAPI RtlInt64ToHexUnicodeString (ULONGLONG value,
PUNICODE_STRING dest,
BOOLEAN append);
+ /* Set file attributes. Don't change file times. */
+ inline
+ NTSTATUS NTAPI NtSetAttributesFile (HANDLE h, ULONG attr)
+ {
+ IO_STATUS_BLOCK io;
+ FILE_BASIC_INFORMATION fbi;
+ fbi.CreationTime.QuadPart = fbi.LastAccessTime.QuadPart =
+ fbi.LastWriteTime.QuadPart = fbi.ChangeTime.QuadPart = 0LL;
+ fbi.FileAttributes = attr ?: FILE_ATTRIBUTE_NORMAL;
+ return NtSetInformationFile(h, &io, &fbi, sizeof fbi, FileBasicInformation);
+ }
}