From 199bf79367fd838d12900e70c05756f2bc29db5d Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 11 Feb 2005 14:27:36 +0000 Subject: [PATCH] * times.cc (utimes): Open files with GENERIC_WRITE on file systems not supporting ACLs. --- winsup/cygwin/ChangeLog | 5 +++++ winsup/cygwin/times.cc | 11 +++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index b0e966d62..e70b9402e 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +2005-02-11 Corinna Vinschen + + * times.cc (utimes): Open files with GENERIC_WRITE on file systems + not supporting ACLs. + 2005-02-09 Corinna Vinschen * fhandler_disk_file.cc (fhandler_disk_file::ftruncate): Fix checking diff --git a/winsup/cygwin/times.cc b/winsup/cygwin/times.cc index 7ed9e5ec2..e69501225 100644 --- a/winsup/cygwin/times.cc +++ b/winsup/cygwin/times.cc @@ -462,8 +462,15 @@ utimes (const char *path, const struct timeval *tvp) /* MSDN suggests using FILE_FLAG_BACKUP_SEMANTICS for accessing the times of directories. */ /* Note: It's not documented in MSDN that FILE_WRITE_ATTRIBUTES is - sufficient to change the timestamps... */ - HANDLE h = CreateFile (win32, FILE_WRITE_ATTRIBUTES, + sufficient to change the timestamps, but it is for NTFS and FAT, + local or remote, NT and 9x. Unfortunately it's not sufficient + for a remote HPFS. Looking for a way to decide whether we + should use FILE_WRITE_ATTRIBUTES or GENERIC_WRITE, we're now + using the has_acls () attribute. The assumption is, that file + systems not supporting ACLs don't have a way to distinguish + between GENERIC_WRITE and FILE_WRITE_ATTRIBUTES anyway. */ + HANDLE h = CreateFile (win32, win32.has_acls () ? FILE_WRITE_ATTRIBUTES + : GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, &sec_none_nih, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_BACKUP_SEMANTICS,