Huw Davies : inetcomm: Implement IMimeMessage_GetAttachments.
Alexandre Julliard
julliard at winehq.org
Wed Feb 13 10:40:07 CST 2008
Module: wine
Branch: master
Commit: 02ceeef2886a701998a1b46c6147302da14f7920
URL: http://source.winehq.org/git/wine.git/?a=commit;h=02ceeef2886a701998a1b46c6147302da14f7920
Author: Huw Davies <huw at codeweavers.com>
Date: Tue Feb 12 13:49:28 2008 +0000
inetcomm: Implement IMimeMessage_GetAttachments.
---
dlls/inetcomm/mimeole.c | 34 ++++++++++++++++++++++++++++++++--
dlls/inetcomm/tests/mimeole.c | 6 ++++++
2 files changed, 38 insertions(+), 2 deletions(-)
diff --git a/dlls/inetcomm/mimeole.c b/dlls/inetcomm/mimeole.c
index b794f5d..cf0e85b 100644
--- a/dlls/inetcomm/mimeole.c
+++ b/dlls/inetcomm/mimeole.c
@@ -2279,8 +2279,38 @@ static HRESULT WINAPI MimeMessage_GetAttachments(
ULONG *pcAttach,
LPHBODY *pprghAttach)
{
- FIXME("(%p)->(%p, %p)\n", iface, pcAttach, pprghAttach);
- return E_NOTIMPL;
+ HRESULT hr;
+ FINDBODY find_struct;
+ HBODY hbody;
+ LPHBODY array;
+ ULONG size = 10;
+
+ TRACE("(%p)->(%p, %p)\n", iface, pcAttach, pprghAttach);
+
+ *pcAttach = 0;
+ array = CoTaskMemAlloc(size * sizeof(HBODY));
+
+ find_struct.pszPriType = find_struct.pszSubType = NULL;
+ hr = IMimeMessage_FindFirst(iface, &find_struct, &hbody);
+ while(hr == S_OK)
+ {
+ hr = IMimeMessage_IsContentType(iface, hbody, "multipart", NULL);
+ TRACE("IsCT rets %08x %d\n", hr, *pcAttach);
+ if(hr != S_OK)
+ {
+ if(*pcAttach + 1 > size)
+ {
+ size *= 2;
+ array = CoTaskMemRealloc(array, size * sizeof(HBODY));
+ }
+ array[*pcAttach] = hbody;
+ (*pcAttach)++;
+ }
+ hr = IMimeMessage_FindNext(iface, &find_struct, &hbody);
+ }
+
+ *pprghAttach = array;
+ return S_OK;
}
static HRESULT WINAPI MimeMessage_GetAddressTable(
diff --git a/dlls/inetcomm/tests/mimeole.c b/dlls/inetcomm/tests/mimeole.c
index ee53d15..f5f8a90 100644
--- a/dlls/inetcomm/tests/mimeole.c
+++ b/dlls/inetcomm/tests/mimeole.c
@@ -215,6 +215,7 @@ static void test_CreateMessage(void)
ULONG count;
FINDBODY find_struct;
char text[] = "text";
+ HBODY *body_list;
hr = MimeOleCreateMessage(NULL, &msg);
ok(hr == S_OK, "ret %08x\n", hr);
@@ -282,6 +283,11 @@ static void test_CreateMessage(void)
hr = IMimeMessage_FindNext(msg, &find_struct, &hbody);
ok(hr == MIME_E_NOT_FOUND, "ret %08x\n", hr);
+ hr = IMimeMessage_GetAttachments(msg, &count, &body_list);
+ ok(hr == S_OK, "ret %08x\n", hr);
+ ok(count == 2, "got %d\n", count);
+ CoTaskMemFree(body_list);
+
IMimeMessage_Release(msg);
ref = IStream_AddRef(stream);
More information about the wine-cvs
mailing list