diff options
author | Steve Huston <shuston@riverace.com> | 2000-12-19 16:34:14 +0000 |
---|---|---|
committer | Steve Huston <shuston@riverace.com> | 2000-12-19 16:34:14 +0000 |
commit | b5cefdc6091a368e0087b57254f82ca7a36aaf38 (patch) | |
tree | 0e72a428825d839696afa65edcf21d88b5449008 | |
parent | 78e9e38daf0087d1759238e32197bbe5fc726eeb (diff) | |
download | ATCD-b5cefdc6091a368e0087b57254f82ca7a36aaf38.tar.gz |
ChangeLogTag:Tue Dec 19 11:02:41 2000 Steve Huston <shuston@riverace.com>
-rw-r--r-- | ace/OS.cpp | 18 | ||||
-rw-r--r-- | ace/OS.h | 21 |
2 files changed, 22 insertions, 17 deletions
diff --git a/ace/OS.cpp b/ace/OS.cpp index 0d171bc4e73..4a0b1be6ed0 100644 --- a/ace/OS.cpp +++ b/ace/OS.cpp @@ -5182,9 +5182,8 @@ ACE_OS::open (const char *filename, LPSECURITY_ATTRIBUTES sa) { ACE_OS_TRACE ("ACE_OS::open"); -#if defined (ACE_WIN32) - ACE_UNUSED_ARG (perms); +#if defined (ACE_WIN32) DWORD access = GENERIC_READ; if (ACE_BIT_ENABLED (mode, O_WRONLY)) access = GENERIC_WRITE; @@ -5237,12 +5236,7 @@ ACE_OS::open (const char *filename, ) } - DWORD shared_mode = FILE_SHARE_READ | FILE_SHARE_WRITE; -#if !defined (ACE_HAS_WINCE) // CE doesn't have FILE_SHARE_DELETE - if (ACE_OS::get_win32_versioninfo().dwPlatformId == - VER_PLATFORM_WIN32_NT) - shared_mode |= FILE_SHARE_DELETE; -#endif /* ACE_HAS_WINCE */ + DWORD shared_mode = perms; #if defined (ACE_HAS_WINCE) ACE_HANDLE h = ::CreateFileW (ACE_Ascii_To_Wide (filename).wchar_rep (), access, @@ -5330,7 +5324,6 @@ ACE_OS::open (const wchar_t *filename, #if defined (ACE_WIN32) // @@ (brunsch) Yuck, maybe there is a way to combine the code // here with the char version - ACE_UNUSED_ARG (perms); DWORD access = GENERIC_READ; if (ACE_BIT_ENABLED (mode, O_WRONLY)) @@ -5384,12 +5377,7 @@ ACE_OS::open (const wchar_t *filename, ) } - DWORD shared_mode = FILE_SHARE_READ | FILE_SHARE_WRITE; -#if !defined (ACE_HAS_WINCE) // CE doesn't have FILE_SHARE_DELETE - if (ACE_OS::get_win32_versioninfo().dwPlatformId == - VER_PLATFORM_WIN32_NT) - shared_mode |= FILE_SHARE_DELETE; -#endif /* ACE_HAS_WINCE */ + DWORD shared_mode = perms; ACE_HANDLE h = ::CreateFileW (filename, access, @@ -5514,14 +5514,31 @@ public: #if defined (ACE_HAS_LLSEEK) || defined (ACE_HAS_LSEEK64) ACE_LOFF_T llseek (ACE_HANDLE handle, ACE_LOFF_T offset, int whence); #endif /* ACE_HAS_LLSEEK */ + + // It used to be that the <perms> argument default was 0 on all + // platforms. Further, the ACE_OS::open implementations ignored <perms> + // for Win32 and always supplied read|write|delete. To preserve + // backward compatibility and allow users to pass in values + // that are used as desired, the defaults are now what the default + // action used to be on Win32. The implementation now obeys what is passed. +#if defined (ACE_WIN32) +# if defined (ACE_HAS_WINNT4) && (ACE_HAS_WINNT4 == 1) +# define ACE_DEFAULT_OPEN_PERMS (FILE_SHARE_READ | FILE_SHARE_WRITE | \ + FILE_SHARE_DELETE) +# else +# define ACE_DEFAULT_OPEN_PERMS (FILE_SHARE_READ | FILE_SHARE_WRITE) +# endif /* ACE_HAS_WINCE */ +#else +# define ACE_DEFAULT_OPEN_PERMS 0 +#endif /* ACE_WIN32 */ static ACE_HANDLE open (const char *filename, int mode, - int perms = 0, + int perms = ACE_DEFAULT_OPEN_PERMS, LPSECURITY_ATTRIBUTES sa = 0); #if defined (ACE_HAS_WCHAR) static ACE_HANDLE open (const wchar_t *filename, int mode, - int perms = 0, + int perms = ACE_DEFAULT_OPEN_PERMS, LPSECURITY_ATTRIBUTES sa = 0); #endif /* ACE_HAS_WCHAR */ static int putmsg (ACE_HANDLE handle, |