summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Huston <shuston@riverace.com>2000-12-19 16:34:14 +0000
committerSteve Huston <shuston@riverace.com>2000-12-19 16:34:14 +0000
commitb5cefdc6091a368e0087b57254f82ca7a36aaf38 (patch)
tree0e72a428825d839696afa65edcf21d88b5449008
parent78e9e38daf0087d1759238e32197bbe5fc726eeb (diff)
downloadATCD-b5cefdc6091a368e0087b57254f82ca7a36aaf38.tar.gz
ChangeLogTag:Tue Dec 19 11:02:41 2000 Steve Huston <shuston@riverace.com>
-rw-r--r--ace/OS.cpp18
-rw-r--r--ace/OS.h21
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,
diff --git a/ace/OS.h b/ace/OS.h
index ac0a2a02742..69cf67db34c 100644
--- a/ace/OS.h
+++ b/ace/OS.h
@@ -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,