Author: akhaldi
Date: Fri Aug 19 09:33:16 2016
New Revision: 72344
URL:
http://svn.reactos.org/svn/reactos?rev=72344&view=rev
Log:
[INETCOMM] Sync with Wine Staging 1.9.16. CORE-11866
Modified:
trunk/reactos/dll/win32/inetcomm/CMakeLists.txt
trunk/reactos/dll/win32/inetcomm/mimeole.c
trunk/reactos/media/doc/README.WINE
Modified: trunk/reactos/dll/win32/inetcomm/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/inetcomm/CMakeLi…
==============================================================================
--- trunk/reactos/dll/win32/inetcomm/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/inetcomm/CMakeLists.txt [iso-8859-1] Fri Aug 19 09:33:16 2016
@@ -22,6 +22,6 @@
set_module_type(inetcomm win32dll)
target_link_libraries(inetcomm uuid wine)
-add_importlibs(inetcomm ole32 oleaut32 ws2_32 user32 msvcrt kernel32 ntdll)
+add_importlibs(inetcomm ole32 oleaut32 ws2_32 user32 propsys msvcrt kernel32 ntdll)
add_pch(inetcomm inetcomm_private.h SOURCE)
add_cd_file(TARGET inetcomm DESTINATION reactos/system32 FOR all)
Modified: trunk/reactos/dll/win32/inetcomm/mimeole.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/inetcomm/mimeole…
==============================================================================
--- trunk/reactos/dll/win32/inetcomm/mimeole.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/inetcomm/mimeole.c [iso-8859-1] Fri Aug 19 09:33:16 2016
@@ -21,6 +21,9 @@
#include "inetcomm_private.h"
+#include <winreg.h>
+#include <propvarutil.h>
+
typedef struct
{
LPCSTR name;
@@ -37,26 +40,81 @@
static const property_t default_props[] =
{
- {"References", PID_HDR_REFS, 0,
VT_LPSTR},
- {"Subject", PID_HDR_SUBJECT, 0,
VT_LPSTR},
- {"From", PID_HDR_FROM, MPF_ADDRESS,
VT_LPSTR},
- {"Message-ID", PID_HDR_MESSAGEID, 0,
VT_LPSTR},
- {"Return-Path", PID_HDR_RETURNPATH, MPF_ADDRESS,
VT_LPSTR},
- {"Date", PID_HDR_DATE, 0,
VT_LPSTR},
- {"Received", PID_HDR_RECEIVED, 0,
VT_LPSTR},
- {"Reply-To", PID_HDR_REPLYTO, MPF_ADDRESS,
VT_LPSTR},
- {"X-Mailer", PID_HDR_XMAILER, 0,
VT_LPSTR},
- {"Bcc", PID_HDR_BCC, MPF_ADDRESS,
VT_LPSTR},
- {"MIME-Version", PID_HDR_MIMEVER, MPF_MIME,
VT_LPSTR},
- {"Content-Type", PID_HDR_CNTTYPE, MPF_MIME |
MPF_HASPARAMS, VT_LPSTR},
- {"Content-Transfer-Encoding", PID_HDR_CNTXFER, MPF_MIME,
VT_LPSTR},
- {"Content-ID", PID_HDR_CNTID, MPF_MIME,
VT_LPSTR},
- {"Content-Disposition", PID_HDR_CNTDISP, MPF_MIME |
MPF_HASPARAMS, VT_LPSTR},
- {"To", PID_HDR_TO, MPF_ADDRESS,
VT_LPSTR},
- {"Cc", PID_HDR_CC, MPF_ADDRESS,
VT_LPSTR},
- {"Sender", PID_HDR_SENDER, MPF_ADDRESS,
VT_LPSTR},
- {"In-Reply-To", PID_HDR_INREPLYTO, 0,
VT_LPSTR},
- {NULL, 0, 0,
0}
+ {"X-Newsgroup", PID_HDR_NEWSGROUP, 0,
VT_LPSTR},
+ {"Newsgroups", PID_HDR_NEWSGROUPS, 0,
VT_LPSTR},
+ {"References", PID_HDR_REFS, 0,
VT_LPSTR},
+ {"Subject", PID_HDR_SUBJECT, 0,
VT_LPSTR},
+ {"From", PID_HDR_FROM, MPF_ADDRESS,
VT_LPSTR},
+ {"Message-ID", PID_HDR_MESSAGEID, 0,
VT_LPSTR},
+ {"Return-Path", PID_HDR_RETURNPATH, MPF_ADDRESS,
VT_LPSTR},
+ {"Rr", PID_HDR_RR, 0,
VT_LPSTR},
+ {"Return-Receipt-To", PID_HDR_RETRCPTO, MPF_ADDRESS,
VT_LPSTR},
+ {"Apparently-To", PID_HDR_APPARTO, MPF_ADDRESS,
VT_LPSTR},
+ {"Date", PID_HDR_DATE, 0,
VT_LPSTR},
+ {"Received", PID_HDR_RECEIVED, 0,
VT_LPSTR},
+ {"Reply-To", PID_HDR_REPLYTO, MPF_ADDRESS,
VT_LPSTR},
+ {"X-Mailer", PID_HDR_XMAILER, 0,
VT_LPSTR},
+ {"Bcc", PID_HDR_BCC, MPF_ADDRESS,
VT_LPSTR},
+ {"MIME-Version", PID_HDR_MIMEVER, MPF_MIME,
VT_LPSTR},
+ {"Content-Type", PID_HDR_CNTTYPE, MPF_MIME |
MPF_HASPARAMS, VT_LPSTR},
+ {"Content-Transfer-Encoding", PID_HDR_CNTXFER, MPF_MIME,
VT_LPSTR},
+ {"Content-ID", PID_HDR_CNTID, MPF_MIME,
VT_LPSTR},
+ {"Content-Description", PID_HDR_CNTDESC, MPF_MIME,
VT_LPSTR},
+ {"Content-Disposition", PID_HDR_CNTDISP, MPF_MIME |
MPF_HASPARAMS, VT_LPSTR},
+ {"Content-Base", PID_HDR_CNTBASE, MPF_MIME,
VT_LPSTR},
+ {"Content-Location", PID_HDR_CNTLOC, MPF_MIME,
VT_LPSTR},
+ {"To", PID_HDR_TO, MPF_ADDRESS,
VT_LPSTR},
+ {"Path", PID_HDR_PATH, 0,
VT_LPSTR},
+ {"Followup-To", PID_HDR_FOLLOWUPTO, 0,
VT_LPSTR},
+ {"Expires", PID_HDR_EXPIRES, 0,
VT_LPSTR},
+ {"Cc", PID_HDR_CC, MPF_ADDRESS,
VT_LPSTR},
+ {"Control", PID_HDR_CONTROL, 0,
VT_LPSTR},
+ {"Distribution", PID_HDR_DISTRIB, 0,
VT_LPSTR},
+ {"Keywords", PID_HDR_KEYWORDS, 0,
VT_LPSTR},
+ {"Summary", PID_HDR_SUMMARY, 0,
VT_LPSTR},
+ {"Approved", PID_HDR_APPROVED, 0,
VT_LPSTR},
+ {"Lines", PID_HDR_LINES, 0,
VT_LPSTR},
+ {"Xref", PID_HDR_XREF, 0,
VT_LPSTR},
+ {"Organization", PID_HDR_ORG, 0,
VT_LPSTR},
+ {"X-Newsreader", PID_HDR_XNEWSRDR, 0,
VT_LPSTR},
+ {"X-Priority", PID_HDR_XPRI, 0,
VT_LPSTR},
+ {"X-MSMail-Priority", PID_HDR_XMSPRI, 0,
VT_LPSTR},
+ {"par:content-disposition:filename", PID_PAR_FILENAME, 0,
VT_LPSTR},
+ {"par:content-type:boundary", PID_PAR_BOUNDARY, 0,
VT_LPSTR},
+ {"par:content-type:charset", PID_PAR_CHARSET, 0,
VT_LPSTR},
+ {"par:content-type:name", PID_PAR_NAME, 0,
VT_LPSTR},
+ {"att:filename", PID_ATT_FILENAME, 0,
VT_LPSTR},
+ {"att:pri-content-type", PID_ATT_PRITYPE, 0,
VT_LPSTR},
+ {"att:sub-content-type", PID_ATT_SUBTYPE, 0,
VT_LPSTR},
+ {"att:illegal-lines", PID_ATT_ILLEGAL, 0,
VT_LPSTR},
+ {"att:rendered", PID_ATT_RENDERED, 0,
VT_LPSTR},
+ {"att:sent-time", PID_ATT_SENTTIME, 0,
VT_LPSTR},
+ {"att:priority", PID_ATT_PRIORITY, 0,
VT_LPSTR},
+ {"Comment", PID_HDR_COMMENT, 0,
VT_LPSTR},
+ {"Encoding", PID_HDR_ENCODING, 0,
VT_LPSTR},
+ {"Encrypted", PID_HDR_ENCRYPTED, 0,
VT_LPSTR},
+ {"X-Offsets", PID_HDR_OFFSETS, 0,
VT_LPSTR},
+ {"X-Unsent", PID_HDR_XUNSENT, 0,
VT_LPSTR},
+ {"X-ArticleId", PID_HDR_ARTICLEID, 0,
VT_LPSTR},
+ {"Sender", PID_HDR_SENDER, MPF_ADDRESS,
VT_LPSTR},
+ {"att:athena-server", PID_ATT_SERVER, 0,
VT_LPSTR},
+ {"att:athena-account-id", PID_ATT_ACCOUNT, 0,
VT_LPSTR},
+ {"att:athena-pop3-uidl", PID_ATT_UIDL, 0,
VT_LPSTR},
+ {"att:athena-store-msgid", PID_ATT_STOREMSGID, 0,
VT_LPSTR},
+ {"att:athena-user-name", PID_ATT_USERNAME, 0,
VT_LPSTR},
+ {"att:athena-forward-to", PID_ATT_FORWARDTO, 0,
VT_LPSTR},
+ {"att:athena-store-fdrid", PID_ATT_STOREFOLDERID,0,
VT_LPSTR},
+ {"att:athena-ghosted", PID_ATT_GHOSTED, 0,
VT_LPSTR},
+ {"att:athena-uncachedsize", PID_ATT_UNCACHEDSIZE, 0,
VT_LPSTR},
+ {"att:athena-combined", PID_ATT_COMBINED, 0,
VT_LPSTR},
+ {"att:auto-inlined", PID_ATT_AUTOINLINED, 0,
VT_LPSTR},
+ {"Disposition-Notification-To", PID_HDR_DISP_NOTIFICATION_TO, 0,
VT_LPSTR},
+ {"par:Content-Type:reply-type", PID_PAR_REPLYTYPE, 0,
VT_LPSTR},
+ {"par:Content-Type:format", PID_PAR_FORMAT , 0,
VT_LPSTR},
+ {"att:format", PID_ATT_FORMAT , 0,
VT_LPSTR},
+ {"In-Reply-To", PID_HDR_INREPLYTO, 0,
VT_LPSTR},
+ {"att:athena-account-name", PID_ATT_ACCOUNTNAME, 0,
VT_LPSTR},
+ {NULL, 0, 0,
0}
};
typedef struct
@@ -478,7 +536,15 @@
LIST_FOR_EACH_ENTRY(header, &body->headers, header_t, entry)
{
- if(!lstrcmpiA(name, header->prop->name))
+ if(ISPIDSTR(name))
+ {
+ if(STRTOPID(name) == header->prop->id)
+ {
+ *prop = header;
+ return S_OK;
+ }
+ }
+ else if(!lstrcmpiA(name, header->prop->name))
{
*prop = header;
return S_OK;
@@ -486,6 +552,33 @@
}
return MIME_E_NOT_FOUND;
+}
+
+static const property_t *find_default_prop(const char *name)
+{
+ const property_t *prop_def = NULL;
+
+ for(prop_def = default_props; prop_def->name; prop_def++)
+ {
+ if(ISPIDSTR(name))
+ {
+ if(STRTOPID(name) == prop_def->id)
+ {
+ break;
+ }
+ }
+ else if(!lstrcmpiA(name, prop_def->name))
+ {
+ break;
+ }
+ }
+
+ if(prop_def->id)
+ TRACE("%s: found match with default property id %d\n",
prop_def->name, prop_def->id);
+ else
+ prop_def = NULL;
+
+ return prop_def;
}
static HRESULT WINAPI MimeBody_QueryInterface(IMimeBody* iface,
@@ -603,8 +696,42 @@
LPMIMEPROPINFO pInfo)
{
MimeBody *This = impl_from_IMimeBody(iface);
- FIXME("(%p)->(%s, %p) stub\n", This, debugstr_a(pszName), pInfo);
- return E_NOTIMPL;
+ header_t *header;
+ HRESULT hr;
+ DWORD supported = PIM_PROPID | PIM_VTDEFAULT;
+
+ TRACE("(%p)->(%s, %p) semi-stub\n", This, debugstr_a(pszName), pInfo);
+
+ if(!pszName || !pInfo)
+ return E_INVALIDARG;
+
+ TRACE("mask 0x%04x\n", pInfo->dwMask);
+
+ if(pInfo->dwMask & ~supported)
+ FIXME("Unsupported mask flags 0x%04x\n", pInfo->dwMask &
~supported);
+
+ hr = find_prop(This, pszName, &header);
+ if(hr == S_OK)
+ {
+ if(pInfo->dwMask & PIM_CHARSET)
+ pInfo->hCharset = 0;
+ if(pInfo->dwMask & PIM_FLAGS)
+ pInfo->dwFlags = 0x00000000;
+ if(pInfo->dwMask & PIM_ROWNUMBER)
+ pInfo->dwRowNumber = 0;
+ if(pInfo->dwMask & PIM_ENCODINGTYPE)
+ pInfo->ietEncoding = 0;
+ if(pInfo->dwMask & PIM_VALUES)
+ pInfo->cValues = 0;
+ if(pInfo->dwMask & PIM_PROPID)
+ pInfo->dwPropId = header->prop->id;
+ if(pInfo->dwMask & PIM_VTDEFAULT)
+ pInfo->vtDefault = header->prop->default_vt;
+ if(pInfo->dwMask & PIM_VTCURRENT)
+ pInfo->vtCurrent = 0;
+ }
+
+ return hr;
}
static HRESULT WINAPI MimeBody_SetPropInfo(
@@ -632,7 +759,7 @@
if(!pszName || !pValue)
return E_INVALIDARG;
- if(!lstrcmpiA(pszName, "att:pri-content-type"))
+ if(!ISPIDSTR(pszName) && !lstrcmpiA(pszName,
"att:pri-content-type"))
{
PropVariantClear(pValue);
pValue->vt = VT_LPSTR;
@@ -643,7 +770,11 @@
hr = find_prop(This, pszName, &header);
if(hr == S_OK)
{
- PropVariantCopy(pValue, &header->value);
+ TRACE("type %d->%d\n", header->value.vt, pValue->vt);
+
+ hr = PropVariantChangeType(pValue, &header->value, 0, pValue->vt);
+ if(FAILED(hr))
+ FIXME("Conversion not currently supported (%d->%d)\n",
header->value.vt, pValue->vt);
}
return hr;
@@ -672,7 +803,16 @@
LIST_FOR_EACH_ENTRY(prop_entry, &This->new_props, property_list_entry_t,
entry)
{
- if(!lstrcmpiA(pszName, prop_entry->prop.name))
+ if(ISPIDSTR(pszName))
+ {
+ if(STRTOPID(pszName) == prop_entry->prop.id)
+ {
+ TRACE("Found match with already added new property id
%d\n", prop_entry->prop.id);
+ prop = &prop_entry->prop;
+ break;
+ }
+ }
+ else if(!lstrcmpiA(pszName, prop_entry->prop.name))
{
TRACE("Found match with already added new property id %d\n",
prop_entry->prop.id);
prop = &prop_entry->prop;
@@ -686,14 +826,33 @@
if(!prop)
{
+ const property_t *prop_def = NULL;
prop_entry = HeapAlloc(GetProcessHeap(), 0, sizeof(*prop_entry));
if(!prop_entry)
{
HeapFree(GetProcessHeap(), 0, header);
return E_OUTOFMEMORY;
}
- prop_entry->prop.name = strdupA(pszName);
- prop_entry->prop.id = This->next_prop_id++;
+
+ prop_def = find_default_prop(pszName);
+ if(prop_def)
+ {
+ prop_entry->prop.name = strdupA(prop_def->name);
+ prop_entry->prop.id = prop_def->id;
+ }
+ else
+ {
+ if(ISPIDSTR(pszName))
+ {
+ HeapFree(GetProcessHeap(), 0, prop_entry);
+ HeapFree(GetProcessHeap(), 0, header);
+ return MIME_E_NOT_FOUND;
+ }
+
+ prop_entry->prop.name = strdupA(pszName);
+ prop_entry->prop.id = This->next_prop_id++;
+ }
+
prop_entry->prop.flags = 0;
prop_entry->prop.default_vt = pValue->vt;
list_add_tail(&This->new_props, &prop_entry->entry);
@@ -728,8 +887,27 @@
LPCSTR pszName)
{
MimeBody *This = impl_from_IMimeBody(iface);
- FIXME("(%p)->(%s) stub\n", This, debugstr_a(pszName));
- return E_NOTIMPL;
+ header_t *cursor;
+ BOOL found;
+
+ TRACE("(%p)->(%s) stub\n", This, debugstr_a(pszName));
+
+ LIST_FOR_EACH_ENTRY(cursor, &This->headers, header_t, entry)
+ {
+ if(ISPIDSTR(pszName))
+ found = STRTOPID(pszName) == cursor->prop->id;
+ else
+ found = !lstrcmpiA(pszName, cursor->prop->name);
+
+ if(found)
+ {
+ list_remove(&cursor->entry);
+ HeapFree(GetProcessHeap(), 0, cursor);
+ return S_OK;
+ }
+ }
+
+ return MIME_E_NOT_FOUND;
}
static HRESULT WINAPI MimeBody_CopyProps(
@@ -1119,6 +1297,9 @@
{
MimeBody *This = impl_from_IMimeBody(iface);
TRACE("(%p)->(%p)\n", iface, phBody);
+
+ if(!phBody)
+ return E_INVALIDARG;
*phBody = This->handle;
return This->handle ? S_OK : MIME_E_NO_DATA;
@@ -1625,6 +1806,8 @@
body->index = index;
list_init(&body->children);
body->parent = parent;
+
+ mime_body->handle = UlongToHandle(body->index);
}
return body;
}
@@ -1888,7 +2071,7 @@
DWORD dwFlags)
{
FIXME("(%p)->(0x%x)\n", iface, dwFlags);
- return E_NOTIMPL;
+ return S_OK;
}
@@ -1976,7 +2159,10 @@
switch(location)
{
case IBL_PARENT:
- *out = body->parent;
+ if(body->parent)
+ *out = body->parent;
+ else
+ hr = MIME_E_NOT_FOUND;
break;
case IBL_FIRST:
@@ -2039,6 +2225,11 @@
HRESULT hr;
TRACE("(%p)->(%d, %p, %p)\n", iface, location, hPivot, phBody);
+
+ if(!phBody)
+ return E_INVALIDARG;
+
+ *phBody = NULL;
hr = get_body(This, location, hPivot, &body);
@@ -2319,6 +2510,9 @@
break;
case OID_SAVEBODY_KEEPBOUNDARY:
FIXME("OID_SAVEBODY_KEEPBOUNDARY (value %d): ignoring\n",
pValue->u.boolVal);
+ break;
+ case OID_CLEANUP_TREE_ON_SAVE:
+ FIXME("OID_CLEANUP_TREE_ON_SAVE (value %d): ignoring\n",
pValue->u.boolVal);
break;
default:
FIXME("Unhandled oid %08x\n", oid);
Modified: trunk/reactos/media/doc/README.WINE
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
==============================================================================
--- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original)
+++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Fri Aug 19 09:33:16 2016
@@ -78,7 +78,7 @@
reactos/dll/win32/imaadp32.acm # Synced to WineStaging-1.9.11
reactos/dll/win32/imagehlp # Synced to WineStaging-1.9.11
reactos/dll/win32/imm32 # Synced to Wine-1.7.27
-reactos/dll/win32/inetcomm # Synced to WineStaging-1.9.11
+reactos/dll/win32/inetcomm # Synced to WineStaging-1.9.16
reactos/dll/win32/inetmib1 # Synced to WineStaging-1.9.11
reactos/dll/win32/initpki # Synced to WineStaging-1.9.11
reactos/dll/win32/inseng # Synced to WineStaging-1.9.11