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/CMakeLis... ============================================================================== --- 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=7... ============================================================================== --- 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