[PATCH 3/6] riched20: Add access mode support for ITextDocument_fnOpen.

Jactry jactry92 at gmail.com
Thu Sep 26 08:52:08 CDT 2013


-------------- next part --------------
From 889fb6614435c4ecff8f22abd5678c421258d163 Mon Sep 17 00:00:00 2001
From: Jactry Zeng <jactry92 at gmail.com>
Date: Thu, 26 Sep 2013 21:03:55 +0800
Subject: [PATCH 3/6] riched20: Add access mode support for 
 ITextDocument_fnOpen.
To: wine-patches <wine-patches at winehq.org>
Reply-To: wine-devel <wine-devel at winehq.org>

---
 dlls/riched20/richole.c | 24 +++++++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)

diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c
index cb85f10..1250bf7 100644
--- a/dlls/riched20/richole.c
+++ b/dlls/riched20/richole.c
@@ -596,6 +596,23 @@ static DWORD get_open_creation_mode(LONG Flags)
     }
 }
 
+static DWORD get_open_access_mode(LONG Flags)
+{
+    switch(Flags & 0xf00)
+    {
+    case tomReadOnly:
+        return GENERIC_READ;
+    case tomReadOnly|tomShareDenyRead:
+        return GENERIC_READ;
+    case tomReadOnly|tomShareDenyWrite:
+        return GENERIC_READ;
+    case tomReadOnly|tomShareDenyRead|tomShareDenyWrite:
+        return GENERIC_READ;
+    default:
+        return GENERIC_READ|GENERIC_WRITE;
+    }
+}
+
 static HRESULT WINAPI
 ITextDocument_fnOpen(ITextDocument* me, VARIANT* pVar, LONG Flags,
     LONG CodePage)
@@ -603,7 +620,7 @@ ITextDocument_fnOpen(ITextDocument* me, VARIANT* pVar, LONG Flags,
     IRichEditOleImpl *This = impl_from_ITextDocument(me);
 
     HANDLE hFile;
-    DWORD dwReadSize, size, creationMode;
+    DWORD dwReadSize, size, creationMode, accessMode;
     SETTEXTEX settextex;
     LPSTR chBuffer;
 
@@ -612,11 +629,12 @@ ITextDocument_fnOpen(ITextDocument* me, VARIANT* pVar, LONG Flags,
     if(V_VT(pVar) != VT_BSTR) return E_INVALIDARG;
 
     FIXME("Don't support UTF-16.\n");
-    FIXME("Partial stub! Without support of access and share mode.\n");
+    FIXME("Partial stub! Without support of share mode.\n");
 
     creationMode = get_open_creation_mode(Flags);
+    accessMode = get_open_access_mode(Flags);
 
-    hFile = CreateFileW(V_BSTR(pVar), GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|
+    hFile = CreateFileW(V_BSTR(pVar), accessMode, FILE_SHARE_READ|
                         FILE_SHARE_WRITE|FILE_SHARE_DELETE,
                         NULL, creationMode, 0, NULL);
 
-- 
1.8.3.4 (Apple Git-47)


More information about the wine-patches mailing list