Jacek Caban : urlmon: Use find_mime_from_ext directly in file protocol handler.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Dec 23 15:21:00 CST 2014
Module: wine
Branch: master
Commit: 0029290e3e769880f2e357cf9608ac26535c29fb
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0029290e3e769880f2e357cf9608ac26535c29fb
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Dec 23 12:02:12 2014 +0100
urlmon: Use find_mime_from_ext directly in file protocol handler.
---
dlls/urlmon/file.c | 24 +++++++++++++-----------
dlls/urlmon/mimefilter.c | 2 +-
dlls/urlmon/urlmon_main.h | 2 ++
3 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/dlls/urlmon/file.c b/dlls/urlmon/file.c
index d426f19..80d9dd6 100644
--- a/dlls/urlmon/file.c
+++ b/dlls/urlmon/file.c
@@ -251,7 +251,7 @@ static HRESULT WINAPI FileProtocol_StartEx(IInternetProtocolEx *iface, IUri *pUr
DWORD scheme, size;
LPWSTR mime = NULL;
WCHAR null_char = 0;
- BSTR url;
+ BSTR ext;
HRESULT hres;
TRACE("(%p)->(%p %p %p %08x %p)\n", This, pUri, pOIProtSink,
@@ -300,17 +300,19 @@ static HRESULT WINAPI FileProtocol_StartEx(IInternetProtocolEx *iface, IUri *pUr
if(FAILED(hres))
return hres;
- hres = IUri_GetDisplayUri(pUri, &url);
- if(hres == S_OK) {
- hres = FindMimeFromData(NULL, url, NULL, 0, NULL, 0, &mime, 0);
- SysFreeString(url);
- if(SUCCEEDED(hres)) {
- IInternetProtocolSink_ReportProgress(pOIProtSink,
- (grfBINDF & BINDF_FROMURLMON) ?
- BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE : BINDSTATUS_MIMETYPEAVAILABLE,
- mime);
- CoTaskMemFree(mime);
+ hres = IUri_GetExtension(pUri, &ext);
+ if(SUCCEEDED(hres)) {
+ if(hres == S_OK && *ext) {
+ hres = find_mime_from_ext(ext, &mime);
+ if(SUCCEEDED(hres)) {
+ IInternetProtocolSink_ReportProgress(pOIProtSink,
+ (grfBINDF & BINDF_FROMURLMON) ?
+ BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE : BINDSTATUS_MIMETYPEAVAILABLE,
+ mime);
+ CoTaskMemFree(mime);
+ }
}
+ SysFreeString(ext);
}
IInternetProtocolSink_ReportData(pOIProtSink,
diff --git a/dlls/urlmon/mimefilter.c b/dlls/urlmon/mimefilter.c
index 1e06fc3..cee1a19 100644
--- a/dlls/urlmon/mimefilter.c
+++ b/dlls/urlmon/mimefilter.c
@@ -422,7 +422,7 @@ static BOOL application_octet_stream_filter(const BYTE *b, DWORD size)
return TRUE;
}
-static HRESULT find_mime_from_ext(const WCHAR *ext, WCHAR **ret)
+HRESULT find_mime_from_ext(const WCHAR *ext, WCHAR **ret)
{
DWORD res, size;
WCHAR mime[64];
diff --git a/dlls/urlmon/urlmon_main.h b/dlls/urlmon/urlmon_main.h
index e134761..12be0ed 100644
--- a/dlls/urlmon/urlmon_main.h
+++ b/dlls/urlmon/urlmon_main.h
@@ -76,6 +76,8 @@ WCHAR *get_useragent(void) DECLSPEC_HIDDEN;
void update_user_agent(WCHAR*) DECLSPEC_HIDDEN;
void free_session(void) DECLSPEC_HIDDEN;
+HRESULT find_mime_from_ext(const WCHAR*,WCHAR**) DECLSPEC_HIDDEN;
+
HRESULT bind_to_storage(IUri*,IBindCtx*,REFIID,void**) DECLSPEC_HIDDEN;
HRESULT bind_to_object(IMoniker*,IUri*,IBindCtx*,REFIID,void**ppv) DECLSPEC_HIDDEN;
More information about the wine-cvs
mailing list