mirror of
https://github.com/reactos/reactos.git
synced 2024-06-30 09:50:07 +00:00
[INETCOMM] Sync with Wine Staging 1.9.11. CORE-11368
svn path=/trunk/; revision=71555
This commit is contained in:
parent
253dbd04f8
commit
ab5f18229a
|
@ -42,7 +42,7 @@
|
|||
@ stub MimeEditGetBackgroundImageUrl
|
||||
@ stub MimeEditIsSafeToRun
|
||||
@ stub MimeEditViewSource
|
||||
@ stub MimeGetAddressFormatW
|
||||
@ stdcall MimeGetAddressFormatW(ptr ptr long long ptr)
|
||||
@ stub MimeOleAlgNameFromSMimeCap
|
||||
@ stub MimeOleAlgStrengthFromSMimeCap
|
||||
@ stub MimeOleClearDirtyTree
|
||||
|
@ -79,7 +79,7 @@
|
|||
@ stdcall MimeOleGetInternat(ptr)
|
||||
@ stub MimeOleGetPropA
|
||||
@ stub MimeOleGetPropW
|
||||
@ stub MimeOleGetPropertySchema
|
||||
@ stdcall MimeOleGetPropertySchema(ptr)
|
||||
@ stub MimeOleGetRelatedSection
|
||||
@ stub MimeOleInetDateToFileTime
|
||||
@ stub MimeOleObjectFromMoniker
|
||||
|
|
|
@ -97,6 +97,17 @@ static inline MimeBody *impl_from_IMimeBody(IMimeBody *iface)
|
|||
return CONTAINING_RECORD(iface, MimeBody, IMimeBody_iface);
|
||||
}
|
||||
|
||||
typedef struct propschema
|
||||
{
|
||||
IMimePropertySchema IMimePropertySchema_iface;
|
||||
LONG ref;
|
||||
} propschema;
|
||||
|
||||
static inline propschema *impl_from_IMimePropertySchema(IMimePropertySchema *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, propschema, IMimePropertySchema_iface);
|
||||
}
|
||||
|
||||
static LPSTR strdupA(LPCSTR str)
|
||||
{
|
||||
char *ret;
|
||||
|
@ -185,7 +196,7 @@ static header_t *read_prop(MimeBody *body, char **ptr)
|
|||
|
||||
for(prop = default_props; prop->name; prop++)
|
||||
{
|
||||
if(!strcasecmp(*ptr, prop->name))
|
||||
if(!lstrcmpiA(*ptr, prop->name))
|
||||
{
|
||||
TRACE("%s: found match with default property id %d\n", *ptr, prop->id);
|
||||
break;
|
||||
|
@ -197,7 +208,7 @@ static header_t *read_prop(MimeBody *body, char **ptr)
|
|||
property_list_entry_t *prop_entry;
|
||||
LIST_FOR_EACH_ENTRY(prop_entry, &body->new_props, property_list_entry_t, entry)
|
||||
{
|
||||
if(!strcasecmp(*ptr, prop_entry->prop.name))
|
||||
if(!lstrcmpiA(*ptr, prop_entry->prop.name))
|
||||
{
|
||||
TRACE("%s: found match with already added new property id %d\n", *ptr, prop_entry->prop.id);
|
||||
prop = &prop_entry->prop;
|
||||
|
@ -467,7 +478,7 @@ static HRESULT find_prop(MimeBody *body, const char *name, header_t **prop)
|
|||
|
||||
LIST_FOR_EACH_ENTRY(header, &body->headers, header_t, entry)
|
||||
{
|
||||
if(!strcasecmp(name, header->prop->name))
|
||||
if(!lstrcmpiA(name, header->prop->name))
|
||||
{
|
||||
*prop = header;
|
||||
return S_OK;
|
||||
|
@ -541,7 +552,8 @@ static HRESULT WINAPI MimeBody_GetClassID(
|
|||
IMimeBody* iface,
|
||||
CLSID* pClassID)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(%p) stub\n", This, pClassID);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -549,20 +561,22 @@ static HRESULT WINAPI MimeBody_GetClassID(
|
|||
static HRESULT WINAPI MimeBody_IsDirty(
|
||||
IMimeBody* iface)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->() stub\n", This);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI MimeBody_Load(IMimeBody *iface, IStream *pStm)
|
||||
{
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
TRACE("(%p)->(%p)\n", iface, pStm);
|
||||
TRACE("(%p)->(%p)\n", This, pStm);
|
||||
return parse_headers(This, pStm);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI MimeBody_Save(IMimeBody *iface, IStream *pStm, BOOL fClearDirty)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(%p, %d)\n", This, pStm, fClearDirty);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -570,14 +584,16 @@ static HRESULT WINAPI MimeBody_GetSizeMax(
|
|||
IMimeBody* iface,
|
||||
ULARGE_INTEGER* pcbSize)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(%p) stub\n", This, pcbSize);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI MimeBody_InitNew(
|
||||
IMimeBody* iface)
|
||||
{
|
||||
TRACE("%p->()\n", iface);
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
TRACE("(%p)->()\n", This);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
@ -586,7 +602,8 @@ static HRESULT WINAPI MimeBody_GetPropInfo(
|
|||
LPCSTR pszName,
|
||||
LPMIMEPROPINFO pInfo)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(%s, %p) stub\n", This, debugstr_a(pszName), pInfo);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -595,7 +612,8 @@ static HRESULT WINAPI MimeBody_SetPropInfo(
|
|||
LPCSTR pszName,
|
||||
LPCMIMEPROPINFO pInfo)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(%s, %p) stub\n", This, debugstr_a(pszName), pInfo);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -606,9 +624,15 @@ static HRESULT WINAPI MimeBody_GetProp(
|
|||
LPPROPVARIANT pValue)
|
||||
{
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
TRACE("(%p)->(%s, %d, %p)\n", This, pszName, dwFlags, pValue);
|
||||
header_t *header;
|
||||
HRESULT hr;
|
||||
|
||||
if(!strcasecmp(pszName, "att:pri-content-type"))
|
||||
TRACE("(%p)->(%s, 0x%x, %p)\n", This, debugstr_a(pszName), dwFlags, pValue);
|
||||
|
||||
if(!pszName || !pValue)
|
||||
return E_INVALIDARG;
|
||||
|
||||
if(!lstrcmpiA(pszName, "att:pri-content-type"))
|
||||
{
|
||||
PropVariantClear(pValue);
|
||||
pValue->vt = VT_LPSTR;
|
||||
|
@ -616,8 +640,13 @@ static HRESULT WINAPI MimeBody_GetProp(
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
FIXME("stub!\n");
|
||||
return E_FAIL;
|
||||
hr = find_prop(This, pszName, &header);
|
||||
if(hr == S_OK)
|
||||
{
|
||||
PropVariantCopy(pValue, &header->value);
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI MimeBody_SetProp(
|
||||
|
@ -626,8 +655,61 @@ static HRESULT WINAPI MimeBody_SetProp(
|
|||
DWORD dwFlags,
|
||||
LPCPROPVARIANT pValue)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
return E_NOTIMPL;
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
header_t *header;
|
||||
HRESULT hr;
|
||||
|
||||
TRACE("(%p)->(%s, 0x%x, %p)\n", This, debugstr_a(pszName), dwFlags, pValue);
|
||||
|
||||
if(!pszName || !pValue)
|
||||
return E_INVALIDARG;
|
||||
|
||||
hr = find_prop(This, pszName, &header);
|
||||
if(hr != S_OK)
|
||||
{
|
||||
property_list_entry_t *prop_entry;
|
||||
const property_t *prop = NULL;
|
||||
|
||||
LIST_FOR_EACH_ENTRY(prop_entry, &This->new_props, property_list_entry_t, entry)
|
||||
{
|
||||
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;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
header = HeapAlloc(GetProcessHeap(), 0, sizeof(*header));
|
||||
if(!header)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
if(!prop)
|
||||
{
|
||||
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_entry->prop.flags = 0;
|
||||
prop_entry->prop.default_vt = pValue->vt;
|
||||
list_add_tail(&This->new_props, &prop_entry->entry);
|
||||
prop = &prop_entry->prop;
|
||||
TRACE("Allocating new prop id %d\n", prop_entry->prop.id);
|
||||
}
|
||||
|
||||
header->prop = prop;
|
||||
PropVariantInit(&header->value);
|
||||
list_init(&header->params);
|
||||
list_add_tail(&This->headers, &header->entry);
|
||||
}
|
||||
|
||||
PropVariantCopy(&header->value, pValue);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI MimeBody_AppendProp(
|
||||
|
@ -636,7 +718,8 @@ static HRESULT WINAPI MimeBody_AppendProp(
|
|||
DWORD dwFlags,
|
||||
LPPROPVARIANT pValue)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(%s, 0x%x, %p) stub\n", This, debugstr_a(pszName), dwFlags, pValue);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -644,7 +727,8 @@ static HRESULT WINAPI MimeBody_DeleteProp(
|
|||
IMimeBody* iface,
|
||||
LPCSTR pszName)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(%s) stub\n", This, debugstr_a(pszName));
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -654,7 +738,8 @@ static HRESULT WINAPI MimeBody_CopyProps(
|
|||
LPCSTR* prgszName,
|
||||
IMimePropertySet* pPropertySet)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(%d, %p, %p) stub\n", This, cNames, prgszName, pPropertySet);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -664,7 +749,8 @@ static HRESULT WINAPI MimeBody_MoveProps(
|
|||
LPCSTR* prgszName,
|
||||
IMimePropertySet* pPropertySet)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(%d, %p, %p) stub\n", This, cNames, prgszName, pPropertySet);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -673,7 +759,8 @@ static HRESULT WINAPI MimeBody_DeleteExcept(
|
|||
ULONG cNames,
|
||||
LPCSTR* prgszName)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(%d, %p) stub\n", This, cNames, prgszName);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -684,7 +771,8 @@ static HRESULT WINAPI MimeBody_QueryProp(
|
|||
boolean fSubString,
|
||||
boolean fCaseSensitive)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(%s, %s, %d, %d) stub\n", This, debugstr_a(pszName), debugstr_a(pszCriteria), fSubString, fCaseSensitive);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -692,7 +780,8 @@ static HRESULT WINAPI MimeBody_GetCharset(
|
|||
IMimeBody* iface,
|
||||
LPHCHARSET phCharset)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(%p) stub\n", This, phCharset);
|
||||
*phCharset = NULL;
|
||||
return S_OK;
|
||||
}
|
||||
|
@ -702,7 +791,8 @@ static HRESULT WINAPI MimeBody_SetCharset(
|
|||
HCHARSET hCharset,
|
||||
CSETAPPLYTYPE applytype)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(%p, %d) stub\n", This, hCharset, applytype);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -763,14 +853,14 @@ static HRESULT WINAPI MimeBody_IsContentType(
|
|||
{
|
||||
const char *pri = This->content_pri_type;
|
||||
if(!pri) pri = "text";
|
||||
if(strcasecmp(pri, pszPriType)) return S_FALSE;
|
||||
if(lstrcmpiA(pri, pszPriType)) return S_FALSE;
|
||||
}
|
||||
|
||||
if(pszSubType)
|
||||
{
|
||||
const char *sub = This->content_sub_type;
|
||||
if(!sub) sub = "plain";
|
||||
if(strcasecmp(sub, pszSubType)) return S_FALSE;
|
||||
if(lstrcmpiA(sub, pszSubType)) return S_FALSE;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
|
@ -781,7 +871,8 @@ static HRESULT WINAPI MimeBody_BindToObject(
|
|||
REFIID riid,
|
||||
void** ppvObject)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(%s, %p) stub\n", This, debugstr_guid(riid), ppvObject);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -789,7 +880,8 @@ static HRESULT WINAPI MimeBody_Clone(
|
|||
IMimeBody* iface,
|
||||
IMimePropertySet** ppPropertySet)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(%p) stub\n", This, ppPropertySet);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -798,8 +890,9 @@ static HRESULT WINAPI MimeBody_SetOption(
|
|||
const TYPEDID oid,
|
||||
LPCPROPVARIANT pValue)
|
||||
{
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
HRESULT hr = E_NOTIMPL;
|
||||
TRACE("(%p)->(%08x, %p)\n", iface, oid, pValue);
|
||||
TRACE("(%p)->(%08x, %p)\n", This, oid, pValue);
|
||||
|
||||
if(pValue->vt != TYPEDID_TYPE(oid))
|
||||
{
|
||||
|
@ -813,6 +906,10 @@ static HRESULT WINAPI MimeBody_SetOption(
|
|||
FIXME("OID_SECURITY_HWND_OWNER (value %08x): ignoring\n", pValue->u.ulVal);
|
||||
hr = S_OK;
|
||||
break;
|
||||
case OID_TRANSMIT_BODY_ENCODING:
|
||||
FIXME("OID_TRANSMIT_BODY_ENCODING (value %08x): ignoring\n", pValue->u.ulVal);
|
||||
hr = S_OK;
|
||||
break;
|
||||
default:
|
||||
FIXME("Unhandled oid %08x\n", oid);
|
||||
}
|
||||
|
@ -825,7 +922,8 @@ static HRESULT WINAPI MimeBody_GetOption(
|
|||
const TYPEDID oid,
|
||||
LPPROPVARIANT pValue)
|
||||
{
|
||||
FIXME("(%p)->(%08x, %p): stub\n", iface, oid, pValue);
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(%08x, %p): stub\n", This, oid, pValue);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -834,7 +932,8 @@ static HRESULT WINAPI MimeBody_EnumProps(
|
|||
DWORD dwFlags,
|
||||
IMimeEnumProperties** ppEnum)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(0x%x, %p) stub\n", This, dwFlags, ppEnum);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -844,7 +943,7 @@ static HRESULT WINAPI MimeBody_IsType(
|
|||
{
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
|
||||
TRACE("(%p)->(%d)\n", iface, bodytype);
|
||||
TRACE("(%p)->(%d)\n", This, bodytype);
|
||||
switch(bodytype)
|
||||
{
|
||||
case IBT_EMPTY:
|
||||
|
@ -859,7 +958,8 @@ static HRESULT WINAPI MimeBody_SetDisplayName(
|
|||
IMimeBody* iface,
|
||||
LPCSTR pszDisplay)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(%s) stub\n", This, debugstr_a(pszDisplay));
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -867,7 +967,8 @@ static HRESULT WINAPI MimeBody_GetDisplayName(
|
|||
IMimeBody* iface,
|
||||
LPSTR* ppszDisplay)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(%p) stub\n", This, ppszDisplay);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -913,7 +1014,8 @@ static HRESULT WINAPI MimeBody_GetEstimatedSize(
|
|||
ENCODINGTYPE ietEncoding,
|
||||
ULONG* pcbSize)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(%d, %p) stub\n", This, ietEncoding, pcbSize);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -922,7 +1024,8 @@ static HRESULT WINAPI MimeBody_GetDataHere(
|
|||
ENCODINGTYPE ietEncoding,
|
||||
IStream* pStream)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(%d, %p) stub\n", This, ietEncoding, pStream);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -977,7 +1080,8 @@ static HRESULT WINAPI MimeBody_SetData(
|
|||
static HRESULT WINAPI MimeBody_EmptyData(
|
||||
IMimeBody* iface)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->() stub\n", This);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -985,7 +1089,8 @@ static HRESULT WINAPI MimeBody_CopyTo(
|
|||
IMimeBody* iface,
|
||||
IMimeBody* pBody)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(%p) stub\n", This, pBody);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -993,7 +1098,8 @@ static HRESULT WINAPI MimeBody_GetTransmitInfo(
|
|||
IMimeBody* iface,
|
||||
LPTRANSMITINFO pTransmitInfo)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(%p) stub\n", This, pTransmitInfo);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -1002,7 +1108,8 @@ static HRESULT WINAPI MimeBody_SaveToFile(
|
|||
ENCODINGTYPE ietEncoding,
|
||||
LPCSTR pszFilePath)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
MimeBody *This = impl_from_IMimeBody(iface);
|
||||
FIXME("(%p)->(%d, %s) stub\n", This, ietEncoding, debugstr_a(pszFilePath));
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -1643,7 +1750,7 @@ static body_t *create_sub_body(MimeMessage *msg, IStream *pStm, BODYOFFSETS *off
|
|||
|
||||
for(i = 0; i < count; i++)
|
||||
{
|
||||
if(!strcasecmp(param_info[i].pszName, "boundary"))
|
||||
if(!lstrcmpiA(param_info[i].pszName, "boundary"))
|
||||
{
|
||||
struct list offset_list;
|
||||
offset_entry_t *cur, *cursor2;
|
||||
|
@ -1688,6 +1795,8 @@ static HRESULT WINAPI MimeMessage_Load(IMimeMessage *iface, IStream *pStm)
|
|||
return E_FAIL;
|
||||
}
|
||||
|
||||
empty_body_list(&This->body_tree);
|
||||
|
||||
IStream_AddRef(pStm);
|
||||
This->stream = pStm;
|
||||
offsets.cbBoundaryStart = offsets.cbHeaderStart = 0;
|
||||
|
@ -2182,27 +2291,38 @@ static HRESULT WINAPI MimeMessage_SetOption(
|
|||
const TYPEDID oid,
|
||||
LPCPROPVARIANT pValue)
|
||||
{
|
||||
HRESULT hr = E_NOTIMPL;
|
||||
HRESULT hr = S_OK;
|
||||
TRACE("(%p)->(%08x, %p)\n", iface, oid, pValue);
|
||||
|
||||
/* Message ID is checked before type.
|
||||
* OID 0x4D -> 0x56 and 0x58 aren't defined but will filtered out later.
|
||||
*/
|
||||
if(TYPEDID_ID(oid) < TYPEDID_ID(OID_ALLOW_8BIT_HEADER) || TYPEDID_ID(oid) > TYPEDID_ID(OID_SECURITY_2KEY_CERT_BAG_64))
|
||||
{
|
||||
WARN("oid (%08x) out of range\n", oid);
|
||||
return MIME_E_INVALID_OPTION_ID;
|
||||
}
|
||||
|
||||
if(pValue->vt != TYPEDID_TYPE(oid))
|
||||
{
|
||||
WARN("Called with vartype %04x and oid %08x\n", pValue->vt, oid);
|
||||
return E_INVALIDARG;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
switch(oid)
|
||||
{
|
||||
case OID_HIDE_TNEF_ATTACHMENTS:
|
||||
FIXME("OID_HIDE_TNEF_ATTACHMENTS (value %d): ignoring\n", pValue->u.boolVal);
|
||||
hr = S_OK;
|
||||
break;
|
||||
case OID_SHOW_MACBINARY:
|
||||
FIXME("OID_SHOW_MACBINARY (value %d): ignoring\n", pValue->u.boolVal);
|
||||
hr = S_OK;
|
||||
break;
|
||||
case OID_SAVEBODY_KEEPBOUNDARY:
|
||||
FIXME("OID_SAVEBODY_KEEPBOUNDARY (value %d): ignoring\n", pValue->u.boolVal);
|
||||
break;
|
||||
default:
|
||||
FIXME("Unhandled oid %08x\n", oid);
|
||||
hr = MIME_E_INVALID_OPTION_ID;
|
||||
}
|
||||
|
||||
return hr;
|
||||
|
@ -2526,6 +2646,8 @@ static const IMimeMessageVtbl MimeMessageVtbl =
|
|||
HRESULT MimeMessage_create(IUnknown *outer, void **obj)
|
||||
{
|
||||
MimeMessage *This;
|
||||
MimeBody *mime_body;
|
||||
body_t *root_body;
|
||||
|
||||
TRACE("(%p, %p)\n", outer, obj);
|
||||
|
||||
|
@ -2546,6 +2668,10 @@ HRESULT MimeMessage_create(IUnknown *outer, void **obj)
|
|||
list_init(&This->body_tree);
|
||||
This->next_index = 1;
|
||||
|
||||
mime_body = mimebody_create();
|
||||
root_body = new_body_entry(mime_body, This->next_index++, NULL);
|
||||
list_add_head(&This->body_tree, &root_body->entry);
|
||||
|
||||
*obj = &This->IMimeMessage_iface;
|
||||
return S_OK;
|
||||
}
|
||||
|
@ -2976,3 +3102,127 @@ HRESULT VirtualStream_create(IUnknown *outer, void **obj)
|
|||
|
||||
return MimeOleCreateVirtualStream((IStream **)obj);
|
||||
}
|
||||
|
||||
/* IMimePropertySchema Interface */
|
||||
static HRESULT WINAPI propschema_QueryInterface(IMimePropertySchema *iface, REFIID riid, void **out)
|
||||
{
|
||||
propschema *This = impl_from_IMimePropertySchema(iface);
|
||||
TRACE("(%p)->(%s, %p)\n", This, debugstr_guid(riid), out);
|
||||
|
||||
*out = NULL;
|
||||
|
||||
if (IsEqualIID(riid, &IID_IUnknown) ||
|
||||
IsEqualIID(riid, &IID_IMimePropertySchema))
|
||||
{
|
||||
*out = iface;
|
||||
}
|
||||
else
|
||||
{
|
||||
FIXME("no interface for %s\n", debugstr_guid(riid));
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
IMimePropertySchema_AddRef(iface);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static ULONG WINAPI propschema_AddRef(IMimePropertySchema *iface)
|
||||
{
|
||||
propschema *This = impl_from_IMimePropertySchema(iface);
|
||||
LONG ref = InterlockedIncrement(&This->ref);
|
||||
|
||||
TRACE("(%p) ref=%d\n", This, ref);
|
||||
|
||||
return ref;
|
||||
}
|
||||
|
||||
static ULONG WINAPI propschema_Release(IMimePropertySchema *iface)
|
||||
{
|
||||
propschema *This = impl_from_IMimePropertySchema(iface);
|
||||
LONG ref = InterlockedDecrement(&This->ref);
|
||||
|
||||
TRACE("(%p) ref=%d\n", This, ref);
|
||||
|
||||
if (!ref)
|
||||
{
|
||||
HeapFree(GetProcessHeap(), 0, This);
|
||||
}
|
||||
|
||||
return ref;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI propschema_RegisterProperty(IMimePropertySchema *iface, const char *name, DWORD flags,
|
||||
DWORD rownumber, VARTYPE vtdefault, DWORD *propid)
|
||||
{
|
||||
propschema *This = impl_from_IMimePropertySchema(iface);
|
||||
FIXME("(%p)->(%s, %x, %d, %d, %p) stub\n", This, debugstr_a(name), flags, rownumber, vtdefault, propid);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI propschema_ModifyProperty(IMimePropertySchema *iface, const char *name, DWORD flags,
|
||||
DWORD rownumber, VARTYPE vtdefault)
|
||||
{
|
||||
propschema *This = impl_from_IMimePropertySchema(iface);
|
||||
FIXME("(%p)->(%s, %x, %d, %d) stub\n", This, debugstr_a(name), flags, rownumber, vtdefault);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI propschema_GetPropertyId(IMimePropertySchema *iface, const char *name, DWORD *propid)
|
||||
{
|
||||
propschema *This = impl_from_IMimePropertySchema(iface);
|
||||
FIXME("(%p)->(%s, %p) stub\n", This, debugstr_a(name), propid);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI propschema_GetPropertyName(IMimePropertySchema *iface, DWORD propid, char **name)
|
||||
{
|
||||
propschema *This = impl_from_IMimePropertySchema(iface);
|
||||
FIXME("(%p)->(%d, %p) stub\n", This, propid, name);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI propschema_RegisterAddressType(IMimePropertySchema *iface, const char *name, DWORD *adrtype)
|
||||
{
|
||||
propschema *This = impl_from_IMimePropertySchema(iface);
|
||||
FIXME("(%p)->(%s, %p) stub\n", This, debugstr_a(name), adrtype);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static IMimePropertySchemaVtbl prop_schema_vtbl =
|
||||
{
|
||||
propschema_QueryInterface,
|
||||
propschema_AddRef,
|
||||
propschema_Release,
|
||||
propschema_RegisterProperty,
|
||||
propschema_ModifyProperty,
|
||||
propschema_GetPropertyId,
|
||||
propschema_GetPropertyName,
|
||||
propschema_RegisterAddressType
|
||||
};
|
||||
|
||||
|
||||
HRESULT WINAPI MimeOleGetPropertySchema(IMimePropertySchema **schema)
|
||||
{
|
||||
propschema *This;
|
||||
|
||||
TRACE("(%p) stub\n", schema);
|
||||
|
||||
This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This));
|
||||
if (!This)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
This->IMimePropertySchema_iface.lpVtbl = &prop_schema_vtbl;
|
||||
This->ref = 1;
|
||||
|
||||
*schema = &This->IMimePropertySchema_iface;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI MimeGetAddressFormatW(REFIID riid, void *object, DWORD addr_type,
|
||||
ADDRESSFORMAT addr_format, WCHAR **address)
|
||||
{
|
||||
FIXME("(%s, %p, %d, %d, %p) stub\n", debugstr_guid(riid), object, addr_type, addr_format, address);
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
|
|
@ -78,7 +78,7 @@ reactos/dll/win32/ieframe # Synced to WineStaging-1.9.11
|
|||
reactos/dll/win32/imaadp32.acm # Synced to WineStaging-1.9.11
|
||||
reactos/dll/win32/imagehlp # Synced to WineStaging-1.9.4
|
||||
reactos/dll/win32/imm32 # Synced to Wine-1.7.27
|
||||
reactos/dll/win32/inetcomm # Synced to WineStaging-1.9.4
|
||||
reactos/dll/win32/inetcomm # Synced to WineStaging-1.9.11
|
||||
reactos/dll/win32/inetmib1 # Synced to WineStaging-1.9.4
|
||||
reactos/dll/win32/initpki # Synced to WineStaging-1.9.4
|
||||
reactos/dll/win32/inseng # Synced to WineStaging-1.9.4
|
||||
|
|
Loading…
Reference in a new issue