[PATCH 4/6] riched20: Add access mode support for ITextDocument_fnOpen.
Jactry Zeng
jactry92 at gmail.com
Tue Feb 11 12:06:09 CST 2014
-------------- next part --------------
From c36b5612b29c52400c8ac50c96e786712a240f24 Mon Sep 17 00:00:00 2001
From: Jactry Zeng <jactry92 at gmail.com>
Date: Tue, 11 Feb 2014 23:44:40 +0800
Subject: [PATCH 4/6] riched20: Add access mode support for
ITextDocument_fnOpen.
---
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 1d936d2..725862a 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 buf;
static const char RTFheader[] = "{\\rtf";
@@ -612,11 +629,12 @@ ITextDocument_fnOpen(ITextDocument* me, VARIANT* pVar, LONG Flags,
if(V_VT(pVar) != VT_BSTR) return E_INVALIDARG;
- 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);
if(hFile == INVALID_HANDLE_VALUE)
--
1.8.3.2
More information about the wine-patches
mailing list