diff --git a/dll/win32/urlmon/CMakeLists.txt b/dll/win32/urlmon/CMakeLists.txt index 64ba237e233..15946bf0797 100644 --- a/dll/win32/urlmon/CMakeLists.txt +++ b/dll/win32/urlmon/CMakeLists.txt @@ -4,7 +4,6 @@ add_definitions( -DENTRY_PREFIX=URLMON_ -DPROXY_DELEGATION -DWINE_REGISTER_DLL - -D_CRT_NON_CONFORMING_SWPRINTFS -DPROXY_CLSID_IS={0x79EAC9F1,0xBAF9,0x11CE,{0x8C,0x82,0x00,0xAA,0x00,0x4B,0xA9,0x0B}}) spec2def(urlmon.dll urlmon.spec ADD_IMPORTLIB) @@ -50,9 +49,10 @@ add_library(urlmon MODULE ${CMAKE_CURRENT_BINARY_DIR}/urlmon.def) set_module_type(urlmon win32dll) -target_link_libraries(urlmon uuid wine ${PSEH_LIB} oldnames) +add_idl_reg_scripts(urlmon registry urlmon_urlmon.idl) +target_link_libraries(urlmon msvcrtex uuid wine oldnames) add_delay_importlibs(urlmon advpack) -add_importlibs(urlmon rpcrt4 propsys ole32 oleaut32 shlwapi shell32 wininet user32 advapi32 kernel32_vista msvcrt kernel32 ntdll) +add_importlibs(urlmon rpcrt4 propsys ole32 oleaut32 shlwapi shell32 wininet normaliz user32 advapi32 kernel32_vista msvcrt kernel32 ntdll) add_pch(urlmon precomp.h "${PCH_SKIP_SOURCE}") add_cd_file(TARGET urlmon DESTINATION reactos/system32 FOR all) set_wine_module_FIXME(urlmon) # CORE-5743: No ARRAY_SIZE macro diff --git a/dll/win32/urlmon/axinstall.c b/dll/win32/urlmon/axinstall.c index 5632550e86c..e6a7b9264b2 100644 --- a/dll/win32/urlmon/axinstall.c +++ b/dll/win32/urlmon/axinstall.c @@ -30,12 +30,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(urlmon); -static const WCHAR ctxW[] = {'c','t','x',0}; -static const WCHAR cab_extW[] = {'.','c','a','b',0}; -static const WCHAR infW[] = {'i','n','f',0}; -static const WCHAR dllW[] = {'d','l','l',0}; -static const WCHAR ocxW[] = {'o','c','x',0}; - enum install_type { INSTALL_UNKNOWN, INSTALL_DLL, @@ -63,8 +57,8 @@ static void release_install_ctx(install_ctx_t *ctx) IUri_Release(ctx->uri); if(ctx->callback) IBindStatusCallback_Release(ctx->callback); - heap_free(ctx->install_file); - heap_free(ctx); + free(ctx->install_file); + free(ctx); } static inline BOOL file_exists(const WCHAR *file_name) @@ -163,7 +157,19 @@ done: return res; } +static inline char *strdupWtoA(const WCHAR *str) +{ + char *ret = NULL; + if(str) { + DWORD size = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL); + ret = malloc(size); + if(ret) + WideCharToMultiByte(CP_ACP, 0, str, -1, ret, size, NULL, NULL); + } + + return ret; +} HRESULT WINAPI Modified_ExtractFilesW(LPCWSTR CabName, LPCWSTR ExpandDir) { @@ -173,13 +179,13 @@ HRESULT WINAPI Modified_ExtractFilesW(LPCWSTR CabName, LPCWSTR ExpandDir) TRACE("(%s, %s, %d)\n", debugstr_w(CabName), debugstr_w(ExpandDir)); if(CabName) { - cab_name = heap_strdupWtoA(CabName); + cab_name = strdupWtoA(CabName); if(!cab_name) return E_OUTOFMEMORY; } if(ExpandDir) { - expand_dir = heap_strdupWtoA(ExpandDir); + expand_dir = strdupWtoA(ExpandDir); if(!expand_dir) hres = E_OUTOFMEMORY; } @@ -189,13 +195,12 @@ HRESULT WINAPI Modified_ExtractFilesW(LPCWSTR CabName, LPCWSTR ExpandDir) if(SUCCEEDED(hres)) hres = Modified_ExtractFilesA(cab_name, expand_dir); - heap_free(cab_name); - heap_free(expand_dir); + free(cab_name); + free(expand_dir); return hres; } -#endif - +#endif /* __REACTOS__ */ static HRESULT extract_cab_file(install_ctx_t *ctx) { @@ -209,13 +214,13 @@ static HRESULT extract_cab_file(install_ctx_t *ctx) hres = ExtractFilesW(ctx->cache_file, ctx->tmp_dir, 0, NULL, NULL, 0); #endif if(FAILED(hres)) { - WARN("ExtractFilesW failed: %08x\n", hres); + WARN("ExtractFilesW failed: %08lx\n", hres); return hres; } path_len = lstrlenW(ctx->tmp_dir); file_len = lstrlenW(ctx->file_name); - ctx->install_file = heap_alloc((path_len+file_len+2)*sizeof(WCHAR)); + ctx->install_file = malloc((path_len + file_len + 2) * sizeof(WCHAR)); if(!ctx->install_file) return E_OUTOFMEMORY; @@ -226,19 +231,19 @@ static HRESULT extract_cab_file(install_ctx_t *ctx) /* NOTE: Assume that file_name contains ".cab" extension */ ptr = ctx->install_file+path_len+1+file_len-3; - memcpy(ptr, infW, sizeof(infW)); + memcpy(ptr, L"inf", sizeof(L"inf")); if(file_exists(ctx->install_file)) { ctx->install_type = INSTALL_INF; return S_OK; } - memcpy(ptr, dllW, sizeof(dllW)); + memcpy(ptr, L"dll", sizeof(L"dll")); if(file_exists(ctx->install_file)) { ctx->install_type = INSTALL_DLL; return S_OK; } - memcpy(ptr, ocxW, sizeof(ocxW)); + memcpy(ptr, L"ocx", sizeof(L"ocx")); if(file_exists(ctx->install_file)) { ctx->install_type = INSTALL_DLL; return S_OK; @@ -283,7 +288,7 @@ static void expand_command(install_ctx_t *ctx, const WCHAR *cmd, WCHAR *buf, siz memcpy(buf+len, prev_ptr, ptr-prev_ptr); len += ptr-prev_ptr; - if(!_wcsnicmp(ptr, expand_dirW, ARRAY_SIZE(expand_dirW))) { + if(!wcsnicmp(ptr, expand_dirW, ARRAY_SIZE(expand_dirW))) { len2 = lstrlenW(ctx->tmp_dir); if(buf) memcpy(buf+len, ctx->tmp_dir, len2*sizeof(WCHAR)); @@ -312,30 +317,28 @@ static HRESULT process_hook_section(install_ctx_t *ctx, const WCHAR *sect_name) DWORD len; HRESULT hres; - static const WCHAR runW[] = {'r','u','n',0}; - len = GetPrivateProfileStringW(sect_name, NULL, NULL, buf, ARRAY_SIZE(buf), ctx->install_file); if(!len) return S_OK; for(key = buf; *key; key += lstrlenW(key)+1) { - if(!wcsicmp(key, runW)) { + if(!wcsicmp(key, L"run")) { WCHAR *cmd; size_t size; - len = GetPrivateProfileStringW(sect_name, runW, NULL, val, ARRAY_SIZE(val), ctx->install_file); + len = GetPrivateProfileStringW(sect_name, L"run", NULL, val, ARRAY_SIZE(val), ctx->install_file); TRACE("Run %s\n", debugstr_w(val)); expand_command(ctx, val, NULL, &size); - cmd = heap_alloc(size*sizeof(WCHAR)); + cmd = malloc(size * sizeof(WCHAR)); if(!cmd) - heap_free(cmd); + return E_OUTOFMEMORY; expand_command(ctx, val, cmd, &size); hres = RunSetupCommandW(ctx->hwnd, cmd, NULL, ctx->tmp_dir, NULL, NULL, 0, NULL); - heap_free(cmd); + free(cmd); if(FAILED(hres)) return hres; }else { @@ -355,17 +358,14 @@ static HRESULT install_inf_file(install_ctx_t *ctx) DWORD len; HRESULT hres; - static const WCHAR setup_hooksW[] = {'S','e','t','u','p',' ','H','o','o','k','s',0}; - static const WCHAR add_codeW[] = {'A','d','d','.','C','o','d','e',0}; - - len = GetPrivateProfileStringW(setup_hooksW, NULL, NULL, buf, ARRAY_SIZE(buf), ctx->install_file); + len = GetPrivateProfileStringW(L"Setup Hooks", NULL, NULL, buf, ARRAY_SIZE(buf), ctx->install_file); if(len) { default_install = FALSE; for(key = buf; *key; key += lstrlenW(key)+1) { TRACE("[Setup Hooks] key: %s\n", debugstr_w(key)); - len = GetPrivateProfileStringW(setup_hooksW, key, NULL, sect_name, ARRAY_SIZE(sect_name), + len = GetPrivateProfileStringW(L"Setup Hooks", key, NULL, sect_name, ARRAY_SIZE(sect_name), ctx->install_file); if(!len) { WARN("Could not get key value\n"); @@ -378,14 +378,14 @@ static HRESULT install_inf_file(install_ctx_t *ctx) } } - len = GetPrivateProfileStringW(add_codeW, NULL, NULL, buf, ARRAY_SIZE(buf), ctx->install_file); + len = GetPrivateProfileStringW(L"Add.Code", NULL, NULL, buf, ARRAY_SIZE(buf), ctx->install_file); if(len) { default_install = FALSE; for(key = buf; *key; key += lstrlenW(key)+1) { TRACE("[Add.Code] key: %s\n", debugstr_w(key)); - len = GetPrivateProfileStringW(add_codeW, key, NULL, sect_name, ARRAY_SIZE(sect_name), + len = GetPrivateProfileStringW(L"Add.Code", key, NULL, sect_name, ARRAY_SIZE(sect_name), ctx->install_file); if(!len) { WARN("Could not get key value\n"); @@ -395,7 +395,7 @@ static HRESULT install_inf_file(install_ctx_t *ctx) hres = RunSetupCommandW(ctx->hwnd, ctx->install_file, sect_name, ctx->tmp_dir, NULL, NULL, RSC_FLAG_INF, NULL); if(FAILED(hres)) { - WARN("RunSetupCommandW failed: %08x\n", hres); + WARN("RunSetupCommandW failed: %08lx\n", hres); return hres; } } @@ -404,7 +404,7 @@ static HRESULT install_inf_file(install_ctx_t *ctx) if(default_install) { hres = RunSetupCommandW(ctx->hwnd, ctx->install_file, NULL, ctx->tmp_dir, NULL, NULL, RSC_FLAG_INF, NULL); if(FAILED(hres)) { - WARN("RunSetupCommandW failed: %08x\n", hres); + WARN("RunSetupCommandW failed: %08lx\n", hres); return hres; } } @@ -472,7 +472,7 @@ static void update_counter(install_ctx_t *ctx, HWND hwnd) }else { WCHAR buf[100]; LoadStringW(urlmon_instance, IDS_AXINSTALL_INSTALLN, buf, ARRAY_SIZE(buf)); - swprintf(text, buf, ctx->counter); + swprintf(text, ARRAY_SIZE(text), buf, ctx->counter); } SetDlgItemTextW(hwnd, ID_AXINSTALL_INSTALL_BTN, text); @@ -483,7 +483,7 @@ static BOOL init_warning_dialog(HWND hwnd, install_ctx_t *ctx) BSTR display_uri; HRESULT hres; - if(!SetPropW(hwnd, ctxW, ctx)) + if(!SetPropW(hwnd, L"ctx", ctx)) return FALSE; hres = IUri_GetDisplayUri(ctx->uri, &display_uri); @@ -513,7 +513,7 @@ static INT_PTR WINAPI warning_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp case WM_COMMAND: switch(wparam) { case ID_AXINSTALL_INSTALL_BTN: { - install_ctx_t *ctx = GetPropW(hwnd, ctxW); + install_ctx_t *ctx = GetPropW(hwnd, L"ctx"); if(ctx) ctx->cancel = FALSE; EndDialog(hwnd, 0); @@ -524,7 +524,7 @@ static INT_PTR WINAPI warning_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp return FALSE; } case WM_TIMER: - update_counter(GetPropW(hwnd, ctxW), hwnd); + update_counter(GetPropW(hwnd, L"ctx"), hwnd); return TRUE; } @@ -589,7 +589,7 @@ static HRESULT install_file(install_ctx_t *ctx, const WCHAR *cache_file) if(!ext) ext = ptr; - if(!wcsicmp(ext, cab_extW)) { + if(!wcsicmp(ext, L".cab")) { hres = install_cab_file(ctx); }else { FIXME("Unsupported extension %s\n", debugstr_w(ext)); @@ -606,7 +606,7 @@ static void failure_msgbox(install_ctx_t *ctx, HRESULT hres) WCHAR buf[1024], fmt[1024]; LoadStringW(urlmon_instance, IDS_AXINSTALL_FAILURE, fmt, ARRAY_SIZE(fmt)); - swprintf(buf, fmt, hres); + swprintf(buf, ARRAY_SIZE(buf), fmt, hres); MessageBoxW(ctx->hwnd, buf, NULL, MB_OK); } @@ -614,7 +614,7 @@ static HRESULT distunit_on_stop(void *ctx, const WCHAR *cache_file, HRESULT hres { install_ctx_t *install_ctx = ctx; - TRACE("(%p %s %08x %s)\n", ctx, debugstr_w(cache_file), hresult, debugstr_w(error_str)); + TRACE("(%p %s %08lx %s)\n", ctx, debugstr_w(cache_file), hresult, debugstr_w(error_str)); if(hresult == S_OK) { hresult = install_file(install_ctx, cache_file); @@ -639,19 +639,19 @@ HRESULT WINAPI AsyncInstallDistributionUnit(const WCHAR *szDistUnit, const WCHAR install_ctx_t *ctx; HRESULT hres; - TRACE("(%s %s %s %x %x %s %p %p %x)\n", debugstr_w(szDistUnit), debugstr_w(szTYPE), debugstr_w(szExt), + TRACE("(%s %s %s %lx %lx %s %p %p %lx)\n", debugstr_w(szDistUnit), debugstr_w(szTYPE), debugstr_w(szExt), dwFileVersionMS, dwFileVersionLS, debugstr_w(szURL), pbc, pvReserved, flags); if(szDistUnit || szTYPE || szExt) FIXME("Unsupported arguments\n"); - ctx = heap_alloc_zero(sizeof(*ctx)); + ctx = calloc(1, sizeof(*ctx)); if(!ctx) return E_OUTOFMEMORY; hres = CreateUri(szURL, 0, 0, &ctx->uri); if(FAILED(hres)) { - heap_free(ctx); + free(ctx); return E_OUTOFMEMORY; } diff --git a/dll/win32/urlmon/bindctx.c b/dll/win32/urlmon/bindctx.c index 61917518c09..b34c7bb7b0c 100644 --- a/dll/win32/urlmon/bindctx.c +++ b/dll/win32/urlmon/bindctx.c @@ -23,7 +23,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(urlmon); -static WCHAR bscb_holderW[] = { '_','B','S','C','B','_','H','o','l','d','e','r','_',0 }; +static WCHAR bscb_holderW[] = L"_BSCB_Holder_"; extern IID IID_IBindStatusCallbackHolder; @@ -146,7 +146,7 @@ static ULONG WINAPI BindStatusCallback_AddRef(IBindStatusCallbackEx *iface) BindStatusCallback *This = impl_from_IBindStatusCallbackEx(iface); LONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p) ref = %d\n", This, ref); + TRACE("(%p) ref = %ld\n", This, ref); return ref; } @@ -156,13 +156,13 @@ static ULONG WINAPI BindStatusCallback_Release(IBindStatusCallbackEx *iface) BindStatusCallback *This = impl_from_IBindStatusCallbackEx(iface); LONG ref = InterlockedDecrement(&This->ref); - TRACE("(%p) ref = %d\n", This, ref); + TRACE("(%p) ref = %ld\n", This, ref); if(!ref) { if(This->serv_prov) IServiceProvider_Release(This->serv_prov); IBindStatusCallback_Release(This->callback); - heap_free(This); + free(This); } return ref; @@ -173,7 +173,7 @@ static HRESULT WINAPI BindStatusCallback_OnStartBinding(IBindStatusCallbackEx *i { BindStatusCallback *This = impl_from_IBindStatusCallbackEx(iface); - TRACE("(%p)->(%d %p)\n", This, dwReserved, pbind); + TRACE("(%p)->(%ld %p)\n", This, dwReserved, pbind); return IBindStatusCallback_OnStartBinding(This->callback, 0xff, pbind); } @@ -191,7 +191,7 @@ static HRESULT WINAPI BindStatusCallback_OnLowResource(IBindStatusCallbackEx *if { BindStatusCallback *This = impl_from_IBindStatusCallbackEx(iface); - TRACE("(%p)->(%d)\n", This, reserved); + TRACE("(%p)->(%ld)\n", This, reserved); return IBindStatusCallback_OnLowResource(This->callback, reserved); } @@ -201,7 +201,7 @@ static HRESULT WINAPI BindStatusCallback_OnProgress(IBindStatusCallbackEx *iface { BindStatusCallback *This = impl_from_IBindStatusCallbackEx(iface); - TRACE("%p)->(%u %u %s %s)\n", This, ulProgress, ulProgressMax, debugstr_bindstatus(ulStatusCode), + TRACE("%p)->(%lu %lu %s %s)\n", This, ulProgress, ulProgressMax, debugstr_bindstatus(ulStatusCode), debugstr_w(szStatusText)); return IBindStatusCallback_OnProgress(This->callback, ulProgress, @@ -213,7 +213,7 @@ static HRESULT WINAPI BindStatusCallback_OnStopBinding(IBindStatusCallbackEx *if { BindStatusCallback *This = impl_from_IBindStatusCallbackEx(iface); - TRACE("(%p)->(%08x %s)\n", This, hresult, debugstr_w(szError)); + TRACE("(%p)->(%08lx %s)\n", This, hresult, debugstr_w(szError)); return IBindStatusCallback_OnStopBinding(This->callback, hresult, szError); } @@ -245,7 +245,7 @@ static HRESULT WINAPI BindStatusCallback_OnDataAvailable(IBindStatusCallbackEx * { BindStatusCallback *This = impl_from_IBindStatusCallbackEx(iface); - TRACE("(%p)->(%08x %d %p %p)\n", This, grfBSCF, dwSize, pformatetc, pstgmed); + TRACE("(%p)->(%08lx %ld %p %p)\n", This, grfBSCF, dwSize, pformatetc, pstgmed); return IBindStatusCallback_OnDataAvailable(This->callback, grfBSCF, dwSize, pformatetc, pstgmed); } @@ -393,7 +393,7 @@ static HRESULT WINAPI BSCHttpNegotiate_BeginningTransaction(IHttpNegotiate2 *ifa IHttpNegotiate *http_negotiate; HRESULT hres = S_OK; - TRACE("(%p)->(%s %s %d %p)\n", This, debugstr_w(szURL), debugstr_w(szHeaders), dwReserved, + TRACE("(%p)->(%s %s %ld %p)\n", This, debugstr_w(szURL), debugstr_w(szHeaders), dwReserved, pszAdditionalHeaders); *pszAdditionalHeaders = NULL; @@ -417,7 +417,7 @@ static HRESULT WINAPI BSCHttpNegotiate_OnResponse(IHttpNegotiate2 *iface, DWORD IHttpNegotiate *http_negotiate; HRESULT hres = S_OK; - TRACE("(%p)->(%d %s %s %p)\n", This, dwResponseCode, debugstr_w(szResponseHeaders), + TRACE("(%p)->(%ld %s %s %p)\n", This, dwResponseCode, debugstr_w(szResponseHeaders), debugstr_w(szRequestHeaders), pszAdditionalRequestHeaders); http_negotiate = get_callback_iface(This, &IID_IHttpNegotiate); @@ -442,7 +442,7 @@ static HRESULT WINAPI BSCHttpNegotiate_GetRootSecurityId(IHttpNegotiate2 *iface, IHttpNegotiate2 *http_negotiate2; HRESULT hres = E_FAIL; - TRACE("(%p)->(%p %p %ld)\n", This, pbSecurityId, pcbSecurityId, dwReserved); + TRACE("(%p)->(%p %p %Id)\n", This, pbSecurityId, pcbSecurityId, dwReserved); http_negotiate2 = get_callback_iface(This, &IID_IHttpNegotiate2); if(http_negotiate2) { @@ -538,7 +538,7 @@ static HRESULT WINAPI BSCInternetBindInfo_GetBindString(IInternetBindInfo *iface IInternetBindInfo *bind_info; HRESULT hres; - TRACE("(%p)->(%d %p %d %p)\n", This, string_type, strs, cnt, fetched); + TRACE("(%p)->(%ld %p %ld %p)\n", This, string_type, strs, cnt, fetched); hres = IBindStatusCallback_QueryInterface(This->callback, &IID_IInternetBindInfo, (void**)&bind_info); if(FAILED(hres)) @@ -579,7 +579,7 @@ HRESULT wrap_callback(IBindStatusCallback *bsc, IBindStatusCallback **ret_iface) { BindStatusCallback *ret; - ret = heap_alloc_zero(sizeof(BindStatusCallback)); + ret = calloc(1, sizeof(BindStatusCallback)); if(!ret) return E_OUTOFMEMORY; @@ -619,7 +619,7 @@ HRESULT WINAPI RegisterBindStatusCallback(IBindCtx *pbc, IBindStatusCallback *pb IBindStatusCallback *bsc, *prev = NULL; HRESULT hres; - TRACE("(%p %p %p %x)\n", pbc, pbsc, ppbscPrevious, dwReserved); + TRACE("(%p %p %p %lx)\n", pbc, pbsc, ppbscPrevious, dwReserved); if (!pbc || !pbsc) return E_INVALIDARG; @@ -737,7 +737,7 @@ static ULONG WINAPI AsyncBindCtx_AddRef(IBindCtx *iface) AsyncBindCtx *This = impl_from_IBindCtx(iface); LONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); return ref; } @@ -747,11 +747,11 @@ static ULONG WINAPI AsyncBindCtx_Release(IBindCtx *iface) AsyncBindCtx *This = impl_from_IBindCtx(iface); LONG ref = InterlockedDecrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); if(!ref) { IBindCtx_Release(This->bindctx); - heap_free(This); + free(This); } return ref; @@ -871,7 +871,7 @@ static HRESULT init_bindctx(IBindCtx *bindctx, DWORD options, HRESULT hres; if(options) - FIXME("not supported options %08x\n", options); + FIXME("not supported options %08lx\n", options); if(format) FIXME("format is not supported\n"); @@ -902,7 +902,7 @@ HRESULT WINAPI CreateAsyncBindCtx(DWORD reserved, IBindStatusCallback *callback, IBindCtx *bindctx; HRESULT hres; - TRACE("(%08x %p %p %p)\n", reserved, callback, format, pbind); + TRACE("(%08lx %p %p %p)\n", reserved, callback, format, pbind); if(!pbind || !callback) return E_INVALIDARG; @@ -934,13 +934,13 @@ HRESULT WINAPI CreateAsyncBindCtxEx(IBindCtx *ibind, DWORD options, IBindCtx *bindctx; HRESULT hres; - TRACE("(%p %08x %p %p %p %d)\n", ibind, options, callback, format, pbind, reserved); + TRACE("(%p %08lx %p %p %p %ld)\n", ibind, options, callback, format, pbind, reserved); if(!pbind) return E_INVALIDARG; if(reserved) - WARN("reserved=%d\n", reserved); + WARN("reserved=%ld\n", reserved); if(ibind) { IBindCtx_AddRef(ibind); @@ -951,7 +951,7 @@ HRESULT WINAPI CreateAsyncBindCtxEx(IBindCtx *ibind, DWORD options, return hres; } - ret = heap_alloc(sizeof(AsyncBindCtx)); + ret = malloc(sizeof(AsyncBindCtx)); ret->IBindCtx_iface.lpVtbl = &AsyncBindCtxVtbl; ret->ref = 1; diff --git a/dll/win32/urlmon/binding.c b/dll/win32/urlmon/binding.c index e90d4daf346..b36fa161781 100644 --- a/dll/win32/urlmon/binding.c +++ b/dll/win32/urlmon/binding.c @@ -16,8 +16,6 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#define NONAMELESSUNION - #include "urlmon_main.h" #include "winreg.h" #include "shlwapi.h" @@ -26,8 +24,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(urlmon); -static WCHAR cbinding_contextW[] = {'C','B','i','n','d','i','n','g',' ','C','o','n','t','e','x','t',0}; -static WCHAR bscb_holderW[] = { '_','B','S','C','B','_','H','o','l','d','e','r','_',0 }; +static WCHAR cbinding_contextW[] = L"CBinding Context"; +static WCHAR bscb_holderW[] = L"_BSCB_Holder_"; typedef struct { IUnknown IUnknown_iface; @@ -131,19 +129,19 @@ static void dump_BINDINFO(BINDINFO *bi) TRACE("\n" "BINDINFO = {\n" - " %d, %s,\n" - " {%d, %p, %p},\n" + " %ld, %s,\n" + " {%ld, %p, %p},\n" " %s,\n" " %s,\n" " %s,\n" - " %d, %08x, %d, %d\n" - " {%d %p %x},\n" + " %ld, %08lx, %ld, %ld\n" + " {%ld %p %x},\n" " %s\n" - " %p, %d\n" + " %p, %ld\n" "}\n", bi->cbSize, debugstr_w(bi->szExtraInfo), - bi->stgmedData.tymed, bi->stgmedData.u.hGlobal, bi->stgmedData.pUnkForRelease, + bi->stgmedData.tymed, bi->stgmedData.hGlobal, bi->stgmedData.pUnkForRelease, bi->grfBindInfoF > BINDINFOF_URLENCODEDEXTRAINFO ? "unknown" : BINDINFOF_str[bi->grfBindInfoF], bi->dwBindVerb > BINDVERB_CUSTOM @@ -160,8 +158,8 @@ static void dump_BINDINFO(BINDINFO *bi) static void mime_available(Binding *This, LPCWSTR mime) { - heap_free(This->mime); - This->mime = heap_strdupW(mime); + free(This->mime); + This->mime = wcsdup(mime); if(!This->mime || !This->report_mime) return; @@ -197,34 +195,33 @@ static LPWSTR get_mime_clsid(LPCWSTR mime, CLSID *clsid) static const WCHAR mime_keyW[] = {'M','I','M','E','\\','D','a','t','a','b','a','s','e','\\', 'C','o','n','t','e','n','t',' ','T','y','p','e','\\'}; - static const WCHAR clsidW[] = {'C','L','S','I','D',0}; len = lstrlenW(mime)+1; - key_name = heap_alloc(sizeof(mime_keyW) + len*sizeof(WCHAR)); + key_name = malloc(sizeof(mime_keyW) + len * sizeof(WCHAR)); memcpy(key_name, mime_keyW, sizeof(mime_keyW)); lstrcpyW(key_name + ARRAY_SIZE(mime_keyW), mime); res = RegOpenKeyW(HKEY_CLASSES_ROOT, key_name, &hkey); - heap_free(key_name); + free(key_name); if(res != ERROR_SUCCESS) { - WARN("Could not open MIME key: %x\n", res); + WARN("Could not open MIME key: %lx\n", res); return NULL; } size = 50*sizeof(WCHAR); - ret = heap_alloc(size); - res = RegQueryValueExW(hkey, clsidW, NULL, &type, (LPBYTE)ret, &size); + ret = malloc(size); + res = RegQueryValueExW(hkey, L"CLSID", NULL, &type, (BYTE*)ret, &size); RegCloseKey(hkey); if(res != ERROR_SUCCESS) { - WARN("Could not get CLSID: %08x\n", res); - heap_free(ret); + WARN("Could not get CLSID: %08lx\n", res); + free(ret); return NULL; } hres = CLSIDFromString(ret, clsid); if(FAILED(hres)) { - WARN("Could not parse CLSID: %08x\n", hres); - heap_free(ret); + WARN("Could not parse CLSID: %08lx\n", hres); + free(ret); return NULL; } @@ -238,7 +235,7 @@ static void load_doc_mon(Binding *binding, IPersistMoniker *persist) hres = CreateAsyncBindCtxEx(binding->bctx, 0, NULL, NULL, &bctx, 0); if(FAILED(hres)) { - WARN("CreateAsyncBindCtxEx failed: %08x\n", hres); + WARN("CreateAsyncBindCtxEx failed: %08lx\n", hres); return; } @@ -249,7 +246,7 @@ static void load_doc_mon(Binding *binding, IPersistMoniker *persist) IBindCtx_RevokeObjectParam(bctx, cbinding_contextW); IBindCtx_Release(bctx); if(FAILED(hres)) - FIXME("Load failed: %08x\n", hres); + FIXME("Load failed: %08lx\n", hres); } static HRESULT create_mime_object(Binding *binding, const CLSID *clsid, LPCWSTR clsid_str) @@ -260,7 +257,7 @@ static HRESULT create_mime_object(Binding *binding, const CLSID *clsid, LPCWSTR hres = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER, &binding->iid, (void**)&binding->obj); if(FAILED(hres)) { - WARN("CoCreateInstance failed: %08x\n", hres); + WARN("CoCreateInstance failed: %08lx\n", hres); return INET_E_CANNOT_INSTANTIATE_OBJECT; } @@ -281,7 +278,7 @@ static HRESULT create_mime_object(Binding *binding, const CLSID *clsid, LPCWSTR IPersistMoniker_Release(persist); }else { - FIXME("Could not get IPersistMoniker: %08x\n", hres); + FIXME("Could not get IPersistMoniker: %08lx\n", hres); /* FIXME: Try query IPersistFile */ } @@ -308,7 +305,7 @@ static void create_object(Binding *binding) if(clsid_str) { hres = create_mime_object(binding, &clsid, clsid_str); - heap_free(clsid_str); + free(clsid_str); }else { FIXME("Could not find object for MIME %s\n", debugstr_w(binding->mime)); hres = REGDB_E_CLASSNOTREG; @@ -324,14 +321,14 @@ static void create_object(Binding *binding) static void cache_file_available(Binding *This, const WCHAR *file_name) { - heap_free(This->stgmed_buf->cache_file); - This->stgmed_buf->cache_file = heap_strdupW(file_name); + free(This->stgmed_buf->cache_file); + This->stgmed_buf->cache_file = wcsdup(file_name); if(This->use_cache_file) { This->stgmed_buf->file = CreateFileW(file_name, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if(This->stgmed_buf->file == INVALID_HANDLE_VALUE) - WARN("CreateFile failed: %u\n", GetLastError()); + WARN("CreateFile failed: %lu\n", GetLastError()); } } @@ -363,7 +360,7 @@ static ULONG WINAPI StgMedUnk_AddRef(IUnknown *iface) stgmed_buf_t *This = impl_from_IUnknown(iface); LONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); return ref; } @@ -373,14 +370,14 @@ static ULONG WINAPI StgMedUnk_Release(IUnknown *iface) stgmed_buf_t *This = impl_from_IUnknown(iface); LONG ref = InterlockedDecrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); if(!ref) { if(This->file != INVALID_HANDLE_VALUE) CloseHandle(This->file); IInternetProtocolEx_Release(This->protocol); - heap_free(This->cache_file); - heap_free(This); + free(This->cache_file); + free(This); URLMON_UnlockModule(); } @@ -396,7 +393,7 @@ static const IUnknownVtbl StgMedUnkVtbl = { static stgmed_buf_t *create_stgmed_buf(IInternetProtocolEx *protocol) { - stgmed_buf_t *ret = heap_alloc(sizeof(*ret)); + stgmed_buf_t *ret = malloc(sizeof(*ret)); ret->IUnknown_iface.lpVtbl = &StgMedUnkVtbl; ret->ref = 1; @@ -458,7 +455,7 @@ static ULONG WINAPI ProtocolStream_AddRef(IStream *iface) ProtocolStream *This = impl_from_IStream(iface); LONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); return ref; } @@ -468,11 +465,11 @@ static ULONG WINAPI ProtocolStream_Release(IStream *iface) ProtocolStream *This = impl_from_IStream(iface); LONG ref = InterlockedDecrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); if(!ref) { IUnknown_Release(&This->buf->IUnknown_iface); - heap_free(This); + free(This); URLMON_UnlockModule(); } @@ -487,7 +484,7 @@ static HRESULT WINAPI ProtocolStream_Read(IStream *iface, void *pv, DWORD read = 0; HRESULT hres; - TRACE("(%p)->(%p %d %p)\n", This, pv, cb, pcbRead); + TRACE("(%p)->(%p %ld %p)\n", This, pv, cb, pcbRead); if(This->buf->file == INVALID_HANDLE_VALUE) { hres = This->buf->hres = IInternetProtocolEx_Read(This->buf->protocol, (PBYTE)pv, cb, &read); @@ -501,7 +498,7 @@ static HRESULT WINAPI ProtocolStream_Read(IStream *iface, void *pv, if(hres == E_PENDING) return E_PENDING; else if(FAILED(hres)) - FIXME("Read failed: %08x\n", hres); + FIXME("Read failed: %08lx\n", hres); return read ? S_OK : S_FALSE; } @@ -511,7 +508,7 @@ static HRESULT WINAPI ProtocolStream_Write(IStream *iface, const void *pv, { ProtocolStream *This = impl_from_IStream(iface); - TRACE("(%p)->(%p %d %p)\n", This, pv, cb, pcbWritten); + TRACE("(%p)->(%p %ld %p)\n", This, pv, cb, pcbWritten); return STG_E_ACCESSDENIED; } @@ -523,7 +520,7 @@ static HRESULT WINAPI ProtocolStream_Seek(IStream *iface, LARGE_INTEGER dlibMove LARGE_INTEGER new_pos; DWORD method; - TRACE("(%p)->(%d %08x %p)\n", This, dlibMove.u.LowPart, dwOrigin, plibNewPosition); + TRACE("(%p)->(%ld %08lx %p)\n", This, dlibMove.LowPart, dwOrigin, plibNewPosition); if(This->buf->file == INVALID_HANDLE_VALUE) { /* We should probably call protocol handler's Seek. */ @@ -542,12 +539,12 @@ static HRESULT WINAPI ProtocolStream_Seek(IStream *iface, LARGE_INTEGER dlibMove method = FILE_END; break; default: - WARN("Invalid origin %x\n", dwOrigin); + WARN("Invalid origin %lx\n", dwOrigin); return E_FAIL; } if(!SetFilePointerEx(This->buf->file, dlibMove, &new_pos, method)) { - FIXME("SetFilePointerEx failed: %u\n", GetLastError()); + FIXME("SetFilePointerEx failed: %lu\n", GetLastError()); return E_FAIL; } @@ -559,7 +556,7 @@ static HRESULT WINAPI ProtocolStream_Seek(IStream *iface, LARGE_INTEGER dlibMove static HRESULT WINAPI ProtocolStream_SetSize(IStream *iface, ULARGE_INTEGER libNewSize) { ProtocolStream *This = impl_from_IStream(iface); - FIXME("(%p)->(%d)\n", This, libNewSize.u.LowPart); + FIXME("(%p)->(%ld)\n", This, libNewSize.LowPart); return E_NOTIMPL; } @@ -567,7 +564,7 @@ static HRESULT WINAPI ProtocolStream_CopyTo(IStream *iface, IStream *pstm, ULARGE_INTEGER cb, ULARGE_INTEGER *pcbRead, ULARGE_INTEGER *pcbWritten) { ProtocolStream *This = impl_from_IStream(iface); - FIXME("(%p)->(%p %d %p %p)\n", This, pstm, cb.u.LowPart, pcbRead, pcbWritten); + FIXME("(%p)->(%p %ld %p %p)\n", This, pstm, cb.LowPart, pcbRead, pcbWritten); return E_NOTIMPL; } @@ -575,7 +572,7 @@ static HRESULT WINAPI ProtocolStream_Commit(IStream *iface, DWORD grfCommitFlags { ProtocolStream *This = impl_from_IStream(iface); - TRACE("(%p)->(%08x)\n", This, grfCommitFlags); + TRACE("(%p)->(%08lx)\n", This, grfCommitFlags); return E_NOTIMPL; } @@ -593,7 +590,7 @@ static HRESULT WINAPI ProtocolStream_LockRegion(IStream *iface, ULARGE_INTEGER l ULARGE_INTEGER cb, DWORD dwLockType) { ProtocolStream *This = impl_from_IStream(iface); - FIXME("(%p)->(%d %d %d)\n", This, libOffset.u.LowPart, cb.u.LowPart, dwLockType); + FIXME("(%p)->(%ld %ld %ld)\n", This, libOffset.LowPart, cb.LowPart, dwLockType); return E_NOTIMPL; } @@ -601,7 +598,7 @@ static HRESULT WINAPI ProtocolStream_UnlockRegion(IStream *iface, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) { ProtocolStream *This = impl_from_IStream(iface); - FIXME("(%p)->(%d %d %d)\n", This, libOffset.u.LowPart, cb.u.LowPart, dwLockType); + FIXME("(%p)->(%ld %ld %ld)\n", This, libOffset.LowPart, cb.LowPart, dwLockType); return E_NOTIMPL; } @@ -609,7 +606,7 @@ static HRESULT WINAPI ProtocolStream_Stat(IStream *iface, STATSTG *pstatstg, DWORD dwStatFlag) { ProtocolStream *This = impl_from_IStream(iface); - TRACE("(%p)->(%p %08x)\n", This, pstatstg, dwStatFlag); + TRACE("(%p)->(%p %08lx)\n", This, pstatstg, dwStatFlag); if(!pstatstg) return E_FAIL; @@ -670,7 +667,7 @@ static HRESULT stgmed_stream_fill_stgmed(stgmed_obj_t *obj, STGMEDIUM *stgmed) ProtocolStream *stream = (ProtocolStream*)obj; stgmed->tymed = TYMED_ISTREAM; - stgmed->u.pstm = &stream->IStream_iface; + stgmed->pstm = &stream->IStream_iface; stgmed->pUnkForRelease = &stream->buf->IUnknown_iface; return S_OK; @@ -702,7 +699,7 @@ typedef struct { static stgmed_obj_t *create_stgmed_stream(stgmed_buf_t *buf) { - ProtocolStream *ret = heap_alloc(sizeof(ProtocolStream)); + ProtocolStream *ret = malloc(sizeof(ProtocolStream)); ret->stgmed_obj.vtbl = &stgmed_stream_vtbl; ret->IStream_iface.lpVtbl = &ProtocolStreamVtbl; @@ -721,7 +718,7 @@ static void stgmed_file_release(stgmed_obj_t *obj) stgmed_file_obj_t *file_obj = (stgmed_file_obj_t*)obj; IUnknown_Release(&file_obj->buf->IUnknown_iface); - heap_free(file_obj); + free(file_obj); } static HRESULT stgmed_file_fill_stgmed(stgmed_obj_t *obj, STGMEDIUM *stgmed) @@ -736,7 +733,7 @@ static HRESULT stgmed_file_fill_stgmed(stgmed_obj_t *obj, STGMEDIUM *stgmed) read_protocol_data(file_obj->buf); stgmed->tymed = TYMED_FILE; - stgmed->u.lpszFileName = file_obj->buf->cache_file; + stgmed->lpszFileName = file_obj->buf->cache_file; stgmed->pUnkForRelease = &file_obj->buf->IUnknown_iface; return S_OK; @@ -755,7 +752,7 @@ static const stgmed_obj_vtbl stgmed_file_vtbl = { static stgmed_obj_t *create_stgmed_file(stgmed_buf_t *buf) { - stgmed_file_obj_t *ret = heap_alloc(sizeof(*ret)); + stgmed_file_obj_t *ret = malloc(sizeof(*ret)); ret->stgmed_obj.vtbl = &stgmed_file_vtbl; @@ -833,7 +830,7 @@ static ULONG WINAPI Binding_AddRef(IBinding *iface) Binding *This = impl_from_IBinding(iface); LONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); return ref; } @@ -843,7 +840,7 @@ static ULONG WINAPI Binding_Release(IBinding *iface) Binding *This = impl_from_IBinding(iface); LONG ref = InterlockedDecrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); if(!ref) { if(This->notif_hwnd) @@ -869,9 +866,9 @@ static ULONG WINAPI Binding_Release(IBinding *iface) This->section.DebugInfo->Spare[0] = 0; DeleteCriticalSection(&This->section); SysFreeString(This->url); - heap_free(This->mime); - heap_free(This->redirect_url); - heap_free(This); + free(This->mime); + free(This->redirect_url); + free(This); URLMON_UnlockModule(); } @@ -915,7 +912,7 @@ static HRESULT WINAPI Binding_Resume(IBinding *iface) static HRESULT WINAPI Binding_SetPriority(IBinding *iface, LONG nPriority) { Binding *This = impl_from_IBinding(iface); - FIXME("(%p)->(%d)\n", This, nPriority); + FIXME("(%p)->(%ld)\n", This, nPriority); return E_NOTIMPL; } @@ -1037,8 +1034,8 @@ static HRESULT WINAPI InternetProtocolSink_ReportProgress(IInternetProtocolSink on_progress(This, 0, 0, BINDSTATUS_CONNECTING, szStatusText); break; case BINDSTATUS_REDIRECTING: - heap_free(This->redirect_url); - This->redirect_url = heap_strdupW(szStatusText); + free(This->redirect_url); + This->redirect_url = wcsdup(szStatusText); on_progress(This, 0, 0, BINDSTATUS_REDIRECTING, szStatusText); break; case BINDSTATUS_BEGINDOWNLOADDATA: @@ -1068,7 +1065,7 @@ static HRESULT WINAPI InternetProtocolSink_ReportProgress(IInternetProtocolSink case BINDSTATUS_ACCEPTRANGES: break; default: - FIXME("Unhandled status code %d\n", ulStatusCode); + FIXME("Unhandled status code %ld\n", ulStatusCode); return E_NOTIMPL; }; @@ -1080,7 +1077,7 @@ static void report_data(Binding *This, DWORD bscf, ULONG progress, ULONG progres FORMATETC formatetc = {0, NULL, 1, -1, TYMED_ISTREAM}; BOOL sent_begindownloaddata = FALSE; - TRACE("(%p)->(%d %u %u)\n", This, bscf, progress, progress_max); + TRACE("(%p)->(%ld %lu %lu)\n", This, bscf, progress, progress_max); if(This->download_state == END_DOWNLOAD || (This->state & BINDING_ABORTED)) { read_protocol_data(This->stgmed_buf); @@ -1127,8 +1124,7 @@ static void report_data(Binding *This, DWORD bscf, ULONG progress, ULONG progres HRESULT hres; if(!(This->state & BINDING_LOCKED)) { - HRESULT hres = IInternetProtocolEx_LockRequest( - &This->protocol->IInternetProtocolEx_iface, 0); + hres = IInternetProtocolEx_LockRequest(&This->protocol->IInternetProtocolEx_iface, 0); if(SUCCEEDED(hres)) This->state |= BINDING_LOCKED; } @@ -1151,7 +1147,7 @@ static void report_data(Binding *This, DWORD bscf, ULONG progress, ULONG progres BINDSTATUS_ENDDOWNLOADDATA, This->url); } - WARN("OnDataAvailable returned %x\n", hres); + WARN("OnDataAvailable returned %lx\n", hres); stop_binding(This, hres, NULL); return; } @@ -1166,7 +1162,7 @@ static HRESULT WINAPI InternetProtocolSink_ReportData(IInternetProtocolSink *ifa { Binding *This = impl_from_IInternetProtocolSink(iface); - TRACE("(%p)->(%d %u %u)\n", This, grfBSCF, ulProgress, ulProgressMax); + TRACE("(%p)->(%ld %lu %lu)\n", This, grfBSCF, ulProgress, ulProgressMax); report_data(This, grfBSCF, ulProgress, ulProgressMax); return S_OK; @@ -1177,7 +1173,7 @@ static HRESULT WINAPI InternetProtocolSink_ReportResult(IInternetProtocolSink *i { Binding *This = impl_from_IInternetProtocolSink(iface); - TRACE("(%p)->(%08x %d %s)\n", This, hrResult, dwError, debugstr_w(szResult)); + TRACE("(%p)->(%08lx %ld %s)\n", This, hrResult, dwError, debugstr_w(szResult)); stop_binding(This, hrResult, szResult); @@ -1235,17 +1231,15 @@ static HRESULT WINAPI InternetBindInfo_GetBindString(IInternetBindInfo *iface, { Binding *This = impl_from_IInternetBindInfo(iface); - TRACE("(%p)->(%d %p %d %p)\n", This, ulStringType, ppwzStr, cEl, pcElFetched); + TRACE("(%p)->(%ld %p %ld %p)\n", This, ulStringType, ppwzStr, cEl, pcElFetched); switch(ulStringType) { case BINDSTRING_ACCEPT_MIMES: { - static const WCHAR wszMimes[] = {'*','/','*',0}; - if(!ppwzStr || !pcElFetched) return E_INVALIDARG; - ppwzStr[0] = CoTaskMemAlloc(sizeof(wszMimes)); - memcpy(ppwzStr[0], wszMimes, sizeof(wszMimes)); + ppwzStr[0] = CoTaskMemAlloc(sizeof(L"*/*")); + memcpy(ppwzStr[0], L"*/*", sizeof(L"*/*")); *pcElFetched = 1; return S_OK; } @@ -1277,7 +1271,7 @@ static HRESULT WINAPI InternetBindInfo_GetBindString(IInternetBindInfo *iface, } } - FIXME("not supported string type %d\n", ulStringType); + FIXME("not supported string type %ld\n", ulStringType); return E_NOTIMPL; } @@ -1319,7 +1313,7 @@ static HRESULT WINAPI WinInetHttpInfo_QueryOption(IWinInetHttpInfo *iface, DWORD IWinInetInfo *wininet_info; HRESULT hres; - TRACE("(%p)->(%x %p %p)\n", This, dwOption, pBuffer, pcbBuffer); + TRACE("(%p)->(%lx %p %p)\n", This, dwOption, pBuffer, pcbBuffer); hres = IInternetProtocolEx_QueryInterface(&This->protocol->IInternetProtocolEx_iface, &IID_IWinInetInfo, (void**)&wininet_info); @@ -1338,7 +1332,7 @@ static HRESULT WINAPI WinInetHttpInfo_QueryInfo(IWinInetHttpInfo *iface, DWORD d IWinInetHttpInfo *http_info; HRESULT hres; - TRACE("(%p)->(%x %p %p %p %p)\n", This, dwOption, pBuffer, pcbBuffer, pdwFlags, pdwReserved); + TRACE("(%p)->(%lx %p %p %p %p)\n", This, dwOption, pBuffer, pcbBuffer, pdwFlags, pdwReserved); hres = IInternetProtocolEx_QueryInterface(&This->protocol->IInternetProtocolEx_iface, &IID_IWinInetHttpInfo, (void**)&http_info); @@ -1452,7 +1446,7 @@ static HRESULT Binding_Create(IMoniker *mon, Binding *binding_ctx, IUri *uri, IB URLMON_LockModule(); - ret = heap_alloc_zero(sizeof(Binding)); + ret = calloc(1, sizeof(Binding)); ret->IBinding_iface.lpVtbl = &BindingVtbl; ret->IInternetProtocolSink_iface.lpVtbl = &InternetProtocolSinkVtbl; @@ -1480,7 +1474,7 @@ static HRESULT Binding_Create(IMoniker *mon, Binding *binding_ctx, IUri *uri, IB ret->bindinfo.cbSize = sizeof(BINDINFO); - InitializeCriticalSection(&ret->section); + InitializeCriticalSectionEx(&ret->section, 0, RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO); ret->section.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": Binding.section"); hres = get_callback(pbc, &ret->callback); @@ -1507,12 +1501,12 @@ static HRESULT Binding_Create(IMoniker *mon, Binding *binding_ctx, IUri *uri, IB hres = IBindStatusCallback_GetBindInfo(ret->callback, &ret->bindf, &ret->bindinfo); if(FAILED(hres)) { - WARN("GetBindInfo failed: %08x\n", hres); + WARN("GetBindInfo failed: %08lx\n", hres); IBinding_Release(&ret->IBinding_iface); return hres; } - TRACE("bindf %08x\n", ret->bindf); + TRACE("bindf %08lx\n", ret->bindf); dump_BINDINFO(&ret->bindinfo); ret->bindf |= BINDF_FROMURLMON; @@ -1570,7 +1564,7 @@ static HRESULT start_binding(IMoniker *mon, Binding *binding_ctx, IUri *uri, IBi hres = IBindStatusCallback_OnStartBinding(binding->callback, 0, &binding->IBinding_iface); if(FAILED(hres)) { - WARN("OnStartBinding failed: %08x\n", hres); + WARN("OnStartBinding failed: %08lx\n", hres); if(hres != E_ABORT && hres != E_NOTIMPL) hres = INET_E_DOWNLOAD_FAILURE; @@ -1591,7 +1585,7 @@ static HRESULT start_binding(IMoniker *mon, Binding *binding_ctx, IUri *uri, IBi &binding->IInternetProtocolSink_iface, &binding->IInternetBindInfo_iface, PI_APARTMENTTHREADED|PI_MIMEVERIFICATION, 0); - TRACE("start ret %08x\n", hres); + TRACE("start ret %08lx\n", hres); if(FAILED(hres) && hres != E_PENDING) { stop_binding(binding, hres, NULL); diff --git a/dll/win32/urlmon/bindprot.c b/dll/win32/urlmon/bindprot.c index e9c97e8a9db..0a7afc75e1b 100644 --- a/dll/win32/urlmon/bindprot.c +++ b/dll/win32/urlmon/bindprot.c @@ -83,10 +83,6 @@ static LRESULT WINAPI notif_wnd_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM return DefWindowProcW(hwnd, msg, wParam, lParam); } -static const WCHAR wszURLMonikerNotificationWindow[] = - {'U','R','L',' ','M','o','n','i','k','e','r',' ', - 'N','o','t','i','f','i','c','a','t','i','o','n',' ','W','i','n','d','o','w',0}; - static ATOM notif_wnd_class; static BOOL WINAPI register_notif_wnd_class(INIT_ONCE *once, void *param, void **context) @@ -94,7 +90,7 @@ static BOOL WINAPI register_notif_wnd_class(INIT_ONCE *once, void *param, void * static WNDCLASSEXW wndclass = { sizeof(wndclass), 0, notif_wnd_proc, 0, 0, NULL, NULL, NULL, NULL, NULL, - wszURLMonikerNotificationWindow, NULL + L"URL Moniker Notification Window", NULL }; wndclass.hInstance = hProxyDll; @@ -128,7 +124,7 @@ HWND get_notif_hwnd(void) return NULL; tls_data->notif_hwnd = CreateWindowExW(0, MAKEINTRESOURCEW(notif_wnd_class), - wszURLMonikerNotificationWindow, 0, 0, 0, 0, 0, HWND_MESSAGE, + L"URL Moniker Notification Window", 0, 0, 0, 0, 0, HWND_MESSAGE, NULL, hProxyDll, NULL); if(tls_data->notif_hwnd) tls_data->notif_hwnd_cnt++; @@ -228,8 +224,8 @@ static void mime_available(BindProtocol *This, LPCWSTR mime, BOOL verified) IInternetProtocol *mime_filter; HRESULT hres; - heap_free(This->mime); - This->mime = heap_strdupW(mime); + free(This->mime); + This->mime = wcsdup(mime); if(This->protocol_handler==&This->default_protocol_handler.IInternetProtocol_iface && (mime_filter = get_mime_filter(mime))) { @@ -238,7 +234,7 @@ static void mime_available(BindProtocol *This, LPCWSTR mime, BOOL verified) hres = handle_mime_filter(This, mime_filter); IInternetProtocol_Release(mime_filter); if(FAILED(hres)) - FIXME("MIME filter failed: %08x\n", hres); + FIXME("MIME filter failed: %08lx\n", hres); } if(This->reported_mime || verified || !(This->pi & PI_MIMEVERIFICATION)) { @@ -286,7 +282,7 @@ static HRESULT WINAPI BindProtocol_QueryInterface(IInternetProtocolEx *iface, RE }else if(This->protocol_unk) { HRESULT hres; hres = IUnknown_QueryInterface(This->protocol_unk, riid, ppv); - TRACE("(%p) aggregated handler returned %08x for %s\n", This, hres, debugstr_guid(riid)); + TRACE("(%p) aggregated handler returned %08lx for %s\n", This, hres, debugstr_guid(riid)); return hres; }else { WARN("not supported interface %s\n", debugstr_guid(riid)); @@ -303,7 +299,7 @@ static ULONG WINAPI BindProtocol_AddRef(IInternetProtocolEx *iface) { BindProtocol *This = impl_from_IInternetProtocolEx(iface); LONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); return ref; } @@ -333,7 +329,7 @@ static ULONG WINAPI BindProtocol_Release(IInternetProtocolEx *iface) BindProtocol *This = impl_from_IInternetProtocolEx(iface); LONG ref = InterlockedDecrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); if(!ref) { release_protocol_handler(This); @@ -352,8 +348,8 @@ static ULONG WINAPI BindProtocol_Release(IInternetProtocolEx *iface) This->section.DebugInfo->Spare[0] = 0; DeleteCriticalSection(&This->section); - heap_free(This->mime); - heap_free(This); + free(This->mime); + free(This); URLMON_UnlockModule(); } @@ -369,7 +365,7 @@ static HRESULT WINAPI BindProtocol_Start(IInternetProtocolEx *iface, LPCWSTR szU IUri *uri; HRESULT hres; - TRACE("(%p)->(%s %p %p %08x %lx)\n", This, debugstr_w(szUrl), pOIProtSink, + TRACE("(%p)->(%s %p %p %08lx %Ix)\n", This, debugstr_w(szUrl), pOIProtSink, pOIBindInfo, grfPI, dwReserved); hres = CreateUri(szUrl, Uri_CREATE_FILE_USE_DOS_PATH, 0, &uri); @@ -397,7 +393,7 @@ static HRESULT WINAPI BindProtocol_Abort(IInternetProtocolEx *iface, HRESULT hrR { BindProtocol *This = impl_from_IInternetProtocolEx(iface); - TRACE("(%p)->(%08x %08x)\n", This, hrReason, dwOptions); + TRACE("(%p)->(%08lx %08lx)\n", This, hrReason, dwOptions); return IInternetProtocol_Abort(This->protocol_handler, hrReason, dwOptions); } @@ -406,7 +402,7 @@ static HRESULT WINAPI BindProtocol_Terminate(IInternetProtocolEx *iface, DWORD d { BindProtocol *This = impl_from_IInternetProtocolEx(iface); - TRACE("(%p)->(%08x)\n", This, dwOptions); + TRACE("(%p)->(%08lx)\n", This, dwOptions); return IInternetProtocol_Terminate(This->protocol_handler, dwOptions); } @@ -430,7 +426,7 @@ static HRESULT WINAPI BindProtocol_Read(IInternetProtocolEx *iface, void *pv, { BindProtocol *This = impl_from_IInternetProtocolEx(iface); - TRACE("(%p)->(%p %u %p)\n", This, pv, cb, pcbRead); + TRACE("(%p)->(%p %lu %p)\n", This, pv, cb, pcbRead); if(pcbRead) *pcbRead = 0; @@ -441,7 +437,7 @@ static HRESULT WINAPI BindProtocol_Seek(IInternetProtocolEx *iface, LARGE_INTEGE DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition) { BindProtocol *This = impl_from_IInternetProtocolEx(iface); - FIXME("(%p)->(%d %d %p)\n", This, dlibMove.u.LowPart, dwOrigin, plibNewPosition); + FIXME("(%p)->(%ld %ld %p)\n", This, dlibMove.u.LowPart, dwOrigin, plibNewPosition); return E_NOTIMPL; } @@ -449,7 +445,7 @@ static HRESULT WINAPI BindProtocol_LockRequest(IInternetProtocolEx *iface, DWORD { BindProtocol *This = impl_from_IInternetProtocolEx(iface); - TRACE("(%p)->(%08x)\n", This, dwOptions); + TRACE("(%p)->(%08lx)\n", This, dwOptions); return IInternetProtocol_LockRequest(This->protocol_handler, dwOptions); } @@ -477,7 +473,7 @@ static HRESULT WINAPI BindProtocol_StartEx(IInternetProtocolEx *iface, IUri *pUr LPOLESTR clsid_str; HRESULT hres; - TRACE("(%p)->(%p %p %p %08x %p)\n", This, pUri, pOIProtSink, pOIBindInfo, grfPI, dwReserved); + TRACE("(%p)->(%p %p %p %08lx %p)\n", This, pUri, pOIProtSink, pOIBindInfo, grfPI, dwReserved); if(!pUri || !pOIProtSink || !pOIBindInfo) return E_INVALIDARG; @@ -674,7 +670,7 @@ static HRESULT WINAPI ProtocolHandler_Continue(IInternetProtocol *iface, PROTOCO hres = IInternetProtocol_Continue(protocol ? protocol : This->protocol, pProtocolData); - heap_free(pProtocolData); + free(pProtocolData); if(protocol) IInternetProtocol_Release(protocol); return hres; @@ -685,7 +681,7 @@ static HRESULT WINAPI ProtocolHandler_Abort(IInternetProtocol *iface, HRESULT hr { BindProtocol *This = impl_from_IInternetProtocol(iface); - TRACE("(%p)->(%08x %08x)\n", This, hrReason, dwOptions); + TRACE("(%p)->(%08lx %08lx)\n", This, hrReason, dwOptions); if(This->protocol && !This->reported_result) return IInternetProtocol_Abort(This->protocol, hrReason, dwOptions); @@ -697,7 +693,7 @@ static HRESULT WINAPI ProtocolHandler_Terminate(IInternetProtocol *iface, DWORD { BindProtocol *This = impl_from_IInternetProtocol(iface); - TRACE("(%p)->(%08x)\n", This, dwOptions); + TRACE("(%p)->(%08lx)\n", This, dwOptions); if(!This->reported_result) return E_FAIL; @@ -751,14 +747,14 @@ static HRESULT WINAPI ProtocolHandler_Read(IInternetProtocol *iface, void *pv, ULONG read = 0; HRESULT hres = S_OK; - TRACE("(%p)->(%p %u %p)\n", This, pv, cb, pcbRead); + TRACE("(%p)->(%p %lu %p)\n", This, pv, cb, pcbRead); if(This->buf_size) { read = min(cb, This->buf_size); memcpy(pv, This->buf, read); if(read == This->buf_size) { - heap_free(This->buf); + free(This->buf); This->buf = NULL; }else { memmove(This->buf, This->buf+cb, This->buf_size-cb); @@ -800,7 +796,7 @@ static HRESULT WINAPI ProtocolHandler_Seek(IInternetProtocol *iface, LARGE_INTEG DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition) { BindProtocol *This = impl_from_IInternetProtocol(iface); - FIXME("(%p)->(%d %d %p)\n", This, dlibMove.u.LowPart, dwOrigin, plibNewPosition); + FIXME("(%p)->(%ld %ld %p)\n", This, dlibMove.u.LowPart, dwOrigin, plibNewPosition); return E_NOTIMPL; } @@ -808,7 +804,7 @@ static HRESULT WINAPI ProtocolHandler_LockRequest(IInternetProtocol *iface, DWOR { BindProtocol *This = impl_from_IInternetProtocol(iface); - TRACE("(%p)->(%08x)\n", This, dwOptions); + TRACE("(%p)->(%08lx)\n", This, dwOptions); return IInternetProtocol_LockRequest(This->protocol, dwOptions); } @@ -819,7 +815,9 @@ static HRESULT WINAPI ProtocolHandler_UnlockRequest(IInternetProtocol *iface) TRACE("(%p)\n", This); - return IInternetProtocol_UnlockRequest(This->protocol); + if (This->protocol) + return IInternetProtocol_UnlockRequest(This->protocol); + return S_OK; } static const IInternetProtocolVtbl InternetProtocolHandlerVtbl = { @@ -913,51 +911,37 @@ static HRESULT WINAPI ProtocolSinkHandler_ReportProgress(IInternetProtocolSink * break; default: - FIXME("unsupported ulStatusCode %u\n", status_code); + FIXME("unsupported ulStatusCode %lu\n", status_code); } return S_OK; } -static HRESULT WINAPI ProtocolSinkHandler_ReportData(IInternetProtocolSink *iface, - DWORD bscf, ULONG progress, ULONG progress_max) +static HRESULT report_data(BindProtocol *This) { - BindProtocol *This = impl_from_IInternetProtocolSinkHandler(iface); - - TRACE("(%p)->(%x %u %u)\n", This, bscf, progress, progress_max); - - This->bscf = bscf; - This->progress = progress; - This->progress_max = progress_max; - - if(!This->protocol_sink) - return S_OK; + DWORD bscf = This->bscf; + HRESULT hres; if((This->pi & PI_MIMEVERIFICATION) && !This->reported_mime) { BYTE buf[BUFFER_SIZE]; DWORD read = 0; LPWSTR mime; - HRESULT hres; do { read = 0; - if(is_apartment_thread(This)) - This->continue_call++; hres = IInternetProtocol_Read(This->protocol, buf, sizeof(buf)-This->buf_size, &read); - if(is_apartment_thread(This)) - This->continue_call--; if(FAILED(hres) && hres != E_PENDING) return hres; if(!This->buf) { - This->buf = heap_alloc(BUFFER_SIZE); + This->buf = malloc(BUFFER_SIZE); if(!This->buf) return E_OUTOFMEMORY; }else if(read + This->buf_size > BUFFER_SIZE) { BYTE *tmp; - tmp = heap_realloc(This->buf, read+This->buf_size); + tmp = realloc(This->buf, read + This->buf_size); if(!tmp) return E_OUTOFMEMORY; This->buf = tmp; @@ -987,8 +971,8 @@ static HRESULT WINAPI ProtocolSinkHandler_ReportData(IInternetProtocolSink *ifac if(FAILED(hres)) return hres; - heap_free(This->mime); - This->mime = heap_strdupW(mime); + free(This->mime); + This->mime = wcsdup(mime); CoTaskMemFree(mime); This->reported_mime = TRUE; if(This->protocol_sink) @@ -999,7 +983,34 @@ static HRESULT WINAPI ProtocolSinkHandler_ReportData(IInternetProtocolSink *ifac if(!This->protocol_sink) return S_OK; - return IInternetProtocolSink_ReportData(This->protocol_sink, bscf, progress, progress_max); + return IInternetProtocolSink_ReportData(This->protocol_sink, bscf, This->progress, This->progress_max); +} + +static HRESULT WINAPI ProtocolSinkHandler_ReportData(IInternetProtocolSink *iface, + DWORD bscf, ULONG progress, ULONG progress_max) +{ + BindProtocol *This = impl_from_IInternetProtocolSinkHandler(iface); + HRESULT hres; + + TRACE("(%p)->(%lx %lu %lu)\n", This, bscf, progress, progress_max); + + This->bscf = bscf; + This->progress = progress; + This->progress_max = progress_max; + + if(!This->protocol_sink) + return S_OK; + + if(is_apartment_thread(This)) + This->continue_call++; + + hres = report_data(This); + + if(is_apartment_thread(This)) { + This->continue_call--; + process_tasks(This); + } + return hres; } static HRESULT handle_redirect(BindProtocol *This, const WCHAR *url) @@ -1030,7 +1041,7 @@ static HRESULT WINAPI ProtocolSinkHandler_ReportResult(IInternetProtocolSink *if { BindProtocol *This = impl_from_IInternetProtocolSinkHandler(iface); - TRACE("(%p)->(%08x %d %s)\n", This, hrResult, dwError, debugstr_w(szResult)); + TRACE("(%p)->(%08lx %ld %s)\n", This, hrResult, dwError, debugstr_w(szResult)); if(hrResult == INET_E_REDIRECT_FAILED) { hrResult = handle_redirect(This, szResult); @@ -1088,7 +1099,7 @@ static HRESULT WINAPI BindInfo_GetBindInfo(IInternetBindInfo *iface, hres = IInternetBindInfo_GetBindInfo(This->bind_info, grfBINDF, pbindinfo); if(FAILED(hres)) { - WARN("GetBindInfo failed: %08x\n", hres); + WARN("GetBindInfo failed: %08lx\n", hres); return hres; } @@ -1112,7 +1123,7 @@ static HRESULT WINAPI BindInfo_GetBindString(IInternetBindInfo *iface, { BindProtocol *This = impl_from_IInternetBindInfo(iface); - TRACE("(%p)->(%d %p %d %p)\n", This, ulStringType, ppwzStr, cEl, pcElFetched); + TRACE("(%p)->(%ld %p %ld %p)\n", This, ulStringType, ppwzStr, cEl, pcElFetched); return IInternetBindInfo_GetBindString(This->bind_info, ulStringType, ppwzStr, cEl, pcElFetched); } @@ -1153,7 +1164,7 @@ static HRESULT WINAPI InternetPriority_SetPriority(IInternetPriority *iface, LON { BindProtocol *This = impl_from_IInternetPriority(iface); - TRACE("(%p)->(%d)\n", This, nPriority); + TRACE("(%p)->(%ld)\n", This, nPriority); This->priority = nPriority; return S_OK; @@ -1213,7 +1224,7 @@ static void switch_proc(BindProtocol *bind, task_header_t *t) IInternetProtocol_Continue(bind->protocol_handler, task->data); - heap_free(task); + free(task); } static HRESULT WINAPI BPInternetProtocolSink_Switch(IInternetProtocolSink *iface, @@ -1224,10 +1235,10 @@ static HRESULT WINAPI BPInternetProtocolSink_Switch(IInternetProtocolSink *iface TRACE("(%p)->(%p)\n", This, pProtocolData); - TRACE("flags %x state %x data %p cb %u\n", pProtocolData->grfFlags, pProtocolData->dwState, + TRACE("flags %lx state %lx data %p cb %lu\n", pProtocolData->grfFlags, pProtocolData->dwState, pProtocolData->pData, pProtocolData->cbData); - data = heap_alloc(sizeof(PROTOCOLDATA)); + data = malloc(sizeof(PROTOCOLDATA)); if(!data) return E_OUTOFMEMORY; memcpy(data, pProtocolData, sizeof(PROTOCOLDATA)); @@ -1236,10 +1247,10 @@ static HRESULT WINAPI BPInternetProtocolSink_Switch(IInternetProtocolSink *iface || !do_direct_notif(This)) { switch_task_t *task; - task = heap_alloc(sizeof(switch_task_t)); + task = malloc(sizeof(switch_task_t)); if(!task) { - heap_free(data); + free(data); return E_OUTOFMEMORY; } @@ -1265,8 +1276,8 @@ static void on_progress_proc(BindProtocol *This, task_header_t *t) IInternetProtocolSink_ReportProgress(This->protocol_sink_handler, task->status_code, task->status_text); - heap_free(task->status_text); - heap_free(task); + free(task->status_text); + free(task); } static HRESULT WINAPI BPInternetProtocolSink_ReportProgress(IInternetProtocolSink *iface, @@ -1274,17 +1285,17 @@ static HRESULT WINAPI BPInternetProtocolSink_ReportProgress(IInternetProtocolSin { BindProtocol *This = impl_from_IInternetProtocolSink(iface); - TRACE("(%p)->(%u %s)\n", This, ulStatusCode, debugstr_w(szStatusText)); + TRACE("(%p)->(%lu %s)\n", This, ulStatusCode, debugstr_w(szStatusText)); if(do_direct_notif(This)) { IInternetProtocolSink_ReportProgress(This->protocol_sink_handler, ulStatusCode, szStatusText); }else { on_progress_task_t *task; - task = heap_alloc(sizeof(on_progress_task_t)); + task = malloc(sizeof(on_progress_task_t)); task->status_code = ulStatusCode; - task->status_text = heap_strdupW(szStatusText); + task->status_text = wcsdup(szStatusText); push_task(This, &task->header, on_progress_proc); } @@ -1306,7 +1317,7 @@ static void report_data_proc(BindProtocol *This, task_header_t *t) IInternetProtocolSink_ReportData(This->protocol_sink_handler, task->bscf, task->progress, task->progress_max); - heap_free(task); + free(task); } static HRESULT WINAPI BPInternetProtocolSink_ReportData(IInternetProtocolSink *iface, @@ -1314,7 +1325,7 @@ static HRESULT WINAPI BPInternetProtocolSink_ReportData(IInternetProtocolSink *i { BindProtocol *This = impl_from_IInternetProtocolSink(iface); - TRACE("(%p)->(%x %u %u)\n", This, grfBSCF, ulProgress, ulProgressMax); + TRACE("(%p)->(%lx %lu %lu)\n", This, grfBSCF, ulProgress, ulProgressMax); if(!This->protocol_sink) return S_OK; @@ -1322,7 +1333,7 @@ static HRESULT WINAPI BPInternetProtocolSink_ReportData(IInternetProtocolSink *i if(!do_direct_notif(This)) { report_data_task_t *task; - task = heap_alloc(sizeof(report_data_task_t)); + task = malloc(sizeof(report_data_task_t)); if(!task) return E_OUTOFMEMORY; @@ -1352,8 +1363,8 @@ static void report_result_proc(BindProtocol *This, task_header_t *t) IInternetProtocolSink_ReportResult(This->protocol_sink_handler, task->hres, task->err, task->str); - heap_free(task->str); - heap_free(task); + free(task->str); + free(task); } static HRESULT WINAPI BPInternetProtocolSink_ReportResult(IInternetProtocolSink *iface, @@ -1361,7 +1372,7 @@ static HRESULT WINAPI BPInternetProtocolSink_ReportResult(IInternetProtocolSink { BindProtocol *This = impl_from_IInternetProtocolSink(iface); - TRACE("(%p)->(%08x %d %s)\n", This, hrResult, dwError, debugstr_w(szResult)); + TRACE("(%p)->(%08lx %ld %s)\n", This, hrResult, dwError, debugstr_w(szResult)); if(!This->protocol_sink) return E_FAIL; @@ -1370,13 +1381,13 @@ static HRESULT WINAPI BPInternetProtocolSink_ReportResult(IInternetProtocolSink if(!do_direct_notif(This)) { report_result_task_t *task; - task = heap_alloc(sizeof(report_result_task_t)); + task = malloc(sizeof(report_result_task_t)); if(!task) return E_OUTOFMEMORY; task->hres = hrResult; task->err = dwError; - task->str = heap_strdupW(szResult); + task->str = wcsdup(szResult); push_task(This, &task->header, report_result_proc); return S_OK; @@ -1441,7 +1452,7 @@ static const IServiceProviderVtbl ServiceProviderVtbl = { HRESULT create_binding_protocol(BindProtocol **protocol) { - BindProtocol *ret = heap_alloc_zero(sizeof(BindProtocol)); + BindProtocol *ret = calloc(1, sizeof(BindProtocol)); ret->IInternetProtocolEx_iface.lpVtbl = &BindProtocolVtbl; ret->IInternetBindInfo_iface.lpVtbl = &InternetBindInfoVtbl; @@ -1457,7 +1468,7 @@ HRESULT create_binding_protocol(BindProtocol **protocol) ret->notif_hwnd = get_notif_hwnd(); ret->protocol_handler = &ret->default_protocol_handler.IInternetProtocol_iface; ret->protocol_sink_handler = &ret->default_protocol_handler.IInternetProtocolSink_iface; - InitializeCriticalSection(&ret->section); + InitializeCriticalSectionEx(&ret->section, 0, RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO); ret->section.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": BindProtocol.section"); URLMON_LockModule(); diff --git a/dll/win32/urlmon/download.c b/dll/win32/urlmon/download.c index ca81818caaa..c905c486976 100644 --- a/dll/win32/urlmon/download.c +++ b/dll/win32/urlmon/download.c @@ -79,7 +79,7 @@ static ULONG WINAPI DownloadBSC_AddRef(IBindStatusCallback *iface) DownloadBSC *This = impl_from_IBindStatusCallback(iface); LONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p) ref = %d\n", This, ref); + TRACE("(%p) ref = %ld\n", This, ref); return ref; } @@ -89,16 +89,16 @@ static ULONG WINAPI DownloadBSC_Release(IBindStatusCallback *iface) DownloadBSC *This = impl_from_IBindStatusCallback(iface); LONG ref = InterlockedDecrement(&This->ref); - TRACE("(%p) ref = %d\n", This, ref); + TRACE("(%p) ref = %ld\n", This, ref); if(!ref) { if(This->callback) IBindStatusCallback_Release(This->callback); if(This->binding) IBinding_Release(This->binding); - heap_free(This->file_name); - heap_free(This->cache_file); - heap_free(This); + free(This->file_name); + free(This->cache_file); + free(This); } return ref; @@ -110,7 +110,7 @@ static HRESULT WINAPI DownloadBSC_OnStartBinding(IBindStatusCallback *iface, DownloadBSC *This = impl_from_IBindStatusCallback(iface); HRESULT hres = S_OK; - TRACE("(%p)->(%d %p)\n", This, dwReserved, pbind); + TRACE("(%p)->(%ld %p)\n", This, dwReserved, pbind); if(This->callback) { hres = IBindStatusCallback_OnStartBinding(This->callback, dwReserved, pbind); @@ -133,7 +133,7 @@ static HRESULT WINAPI DownloadBSC_GetPriority(IBindStatusCallback *iface, LONG * static HRESULT WINAPI DownloadBSC_OnLowResource(IBindStatusCallback *iface, DWORD reserved) { DownloadBSC *This = impl_from_IBindStatusCallback(iface); - FIXME("(%p)->(%d)\n", This, reserved); + FIXME("(%p)->(%ld)\n", This, reserved); return E_NOTIMPL; } @@ -161,7 +161,7 @@ static HRESULT WINAPI DownloadBSC_OnProgress(IBindStatusCallback *iface, ULONG u DownloadBSC *This = impl_from_IBindStatusCallback(iface); HRESULT hres = S_OK; - TRACE("%p)->(%u %u %u %s)\n", This, ulProgress, ulProgressMax, ulStatusCode, + TRACE("%p)->(%lu %lu %lu %s)\n", This, ulProgress, ulProgressMax, ulStatusCode, debugstr_w(szStatusText)); switch(ulStatusCode) { @@ -176,14 +176,14 @@ static HRESULT WINAPI DownloadBSC_OnProgress(IBindStatusCallback *iface, ULONG u case BINDSTATUS_CACHEFILENAMEAVAILABLE: hres = on_progress(This, ulProgress, ulProgressMax, ulStatusCode, szStatusText); - This->cache_file = heap_strdupW(szStatusText); + This->cache_file = wcsdup(szStatusText); break; case BINDSTATUS_FINDINGRESOURCE: /* FIXME */ break; default: - FIXME("Unsupported status %u\n", ulStatusCode); + FIXME("Unsupported status %lu\n", ulStatusCode); } return hres; @@ -195,7 +195,7 @@ static HRESULT WINAPI DownloadBSC_OnStopBinding(IBindStatusCallback *iface, DownloadBSC *This = impl_from_IBindStatusCallback(iface); HRESULT hres = S_OK; - TRACE("(%p)->(%08x %s)\n", This, hresult, debugstr_w(szError)); + TRACE("(%p)->(%08lx %s)\n", This, hresult, debugstr_w(szError)); if(This->file_name) { if(This->cache_file) { @@ -203,7 +203,7 @@ static HRESULT WINAPI DownloadBSC_OnStopBinding(IBindStatusCallback *iface, b = CopyFileW(This->cache_file, This->file_name, FALSE); if(!b) - FIXME("CopyFile failed: %u\n", GetLastError()); + FIXME("CopyFile failed: %lu\n", GetLastError()); }else { FIXME("No cache file\n"); } @@ -251,7 +251,7 @@ static HRESULT WINAPI DownloadBSC_OnDataAvailable(IBindStatusCallback *iface, { DownloadBSC *This = impl_from_IBindStatusCallback(iface); - TRACE("(%p)->(%08x %d %p %p)\n", This, grfBSCF, dwSize, pformatetc, pstgmed); + TRACE("(%p)->(%08lx %ld %p %p)\n", This, grfBSCF, dwSize, pformatetc, pstgmed); return S_OK; } @@ -334,7 +334,7 @@ static HRESULT DownloadBSC_Create(IBindStatusCallback *callback, LPCWSTR file_na { DownloadBSC *ret; - ret = heap_alloc_zero(sizeof(*ret)); + ret = calloc(1, sizeof(*ret)); if(!ret) return E_OUTOFMEMORY; @@ -343,9 +343,9 @@ static HRESULT DownloadBSC_Create(IBindStatusCallback *callback, LPCWSTR file_na ret->ref = 1; if(file_name) { - ret->file_name = heap_strdupW(file_name); + ret->file_name = wcsdup(file_name); if(!ret->file_name) { - heap_free(ret); + free(ret); return E_OUTOFMEMORY; } } @@ -433,7 +433,7 @@ HRESULT WINAPI URLDownloadToFileW(LPUNKNOWN pCaller, LPCWSTR szURL, LPCWSTR szFi IBindCtx *bindctx; HRESULT hres; - TRACE("(%p %s %s %d %p)\n", pCaller, debugstr_w(szURL), debugstr_w(szFileName), dwReserved, lpfnCB); + TRACE("(%p %s %s %ld %p)\n", pCaller, debugstr_w(szURL), debugstr_w(szFileName), dwReserved, lpfnCB); if(pCaller) FIXME("pCaller not supported\n"); @@ -485,15 +485,15 @@ HRESULT WINAPI URLDownloadToFileA(LPUNKNOWN pCaller, LPCSTR szURL, LPCSTR szFile LPWSTR urlW, file_nameW; HRESULT hres; - TRACE("(%p %s %s %d %p)\n", pCaller, debugstr_a(szURL), debugstr_a(szFileName), dwReserved, lpfnCB); + TRACE("(%p %s %s %ld %p)\n", pCaller, debugstr_a(szURL), debugstr_a(szFileName), dwReserved, lpfnCB); - urlW = heap_strdupAtoW(szURL); - file_nameW = heap_strdupAtoW(szFileName); + urlW = strdupAtoW(szURL); + file_nameW = strdupAtoW(szFileName); hres = URLDownloadToFileW(pCaller, urlW, file_nameW, dwReserved, lpfnCB); - heap_free(urlW); - heap_free(file_nameW); + free(urlW); + free(file_nameW); return hres; } diff --git a/dll/win32/urlmon/file.c b/dll/win32/urlmon/file.c index d634085b766..da71991129b 100644 --- a/dll/win32/urlmon/file.c +++ b/dll/win32/urlmon/file.c @@ -88,7 +88,7 @@ static ULONG WINAPI FileProtocolUnk_AddRef(IUnknown *iface) { FileProtocol *This = impl_from_IUnknown(iface); LONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); return ref; } @@ -97,12 +97,12 @@ static ULONG WINAPI FileProtocolUnk_Release(IUnknown *iface) FileProtocol *This = impl_from_IUnknown(iface); LONG ref = InterlockedDecrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); if(!ref) { if(This->file != INVALID_HANDLE_VALUE) CloseHandle(This->file); - heap_free(This); + free(This); URLMON_UnlockModule(); } @@ -145,7 +145,7 @@ static HRESULT WINAPI FileProtocol_Start(IInternetProtocolEx *iface, LPCWSTR szU IUri *uri; HRESULT hres; - TRACE("(%p)->(%s %p %p %08x %lx)\n", This, debugstr_w(szUrl), pOIProtSink, + TRACE("(%p)->(%s %p %p %08lx %Ix)\n", This, debugstr_w(szUrl), pOIProtSink, pOIBindInfo, grfPI, dwReserved); hres = CreateUri(szUrl, Uri_CREATE_FILE_USE_DOS_PATH, 0, &uri); @@ -170,7 +170,7 @@ static HRESULT WINAPI FileProtocol_Abort(IInternetProtocolEx *iface, HRESULT hrR DWORD dwOptions) { FileProtocol *This = impl_from_IInternetProtocolEx(iface); - FIXME("(%p)->(%08x %08x)\n", This, hrReason, dwOptions); + FIXME("(%p)->(%08lx %08lx)\n", This, hrReason, dwOptions); return E_NOTIMPL; } @@ -178,7 +178,7 @@ static HRESULT WINAPI FileProtocol_Terminate(IInternetProtocolEx *iface, DWORD d { FileProtocol *This = impl_from_IInternetProtocolEx(iface); - TRACE("(%p)->(%08x)\n", This, dwOptions); + TRACE("(%p)->(%08lx)\n", This, dwOptions); return S_OK; } @@ -203,7 +203,7 @@ static HRESULT WINAPI FileProtocol_Read(IInternetProtocolEx *iface, void *pv, FileProtocol *This = impl_from_IInternetProtocolEx(iface); DWORD read = 0; - TRACE("(%p)->(%p %u %p)\n", This, pv, cb, pcbRead); + TRACE("(%p)->(%p %lu %p)\n", This, pv, cb, pcbRead); if (pcbRead) *pcbRead = 0; @@ -224,7 +224,7 @@ static HRESULT WINAPI FileProtocol_Seek(IInternetProtocolEx *iface, LARGE_INTEGE DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition) { FileProtocol *This = impl_from_IInternetProtocolEx(iface); - FIXME("(%p)->(%d %d %p)\n", This, dlibMove.u.LowPart, dwOrigin, plibNewPosition); + FIXME("(%p)->(%ld %ld %p)\n", This, dlibMove.u.LowPart, dwOrigin, plibNewPosition); return E_NOTIMPL; } @@ -232,7 +232,7 @@ static HRESULT WINAPI FileProtocol_LockRequest(IInternetProtocolEx *iface, DWORD { FileProtocol *This = impl_from_IInternetProtocolEx(iface); - TRACE("(%p)->(%08x)\n", This, dwOptions); + TRACE("(%p)->(%08lx)\n", This, dwOptions); return S_OK; } @@ -264,11 +264,10 @@ static HRESULT WINAPI FileProtocol_StartEx(IInternetProtocolEx *iface, IUri *pUr DWORD grfBINDF = 0; DWORD scheme, size; LPWSTR mime = NULL; - WCHAR null_char = 0; BSTR ext; HRESULT hres; - TRACE("(%p)->(%p %p %p %08x %p)\n", This, pUri, pOIProtSink, + TRACE("(%p)->(%p %p %p %08lx %p)\n", This, pUri, pOIProtSink, pOIBindInfo, grfPI, dwReserved); if(!pUri) @@ -285,7 +284,7 @@ static HRESULT WINAPI FileProtocol_StartEx(IInternetProtocolEx *iface, IUri *pUr bindinfo.cbSize = sizeof(BINDINFO); hres = IInternetBindInfo_GetBindInfo(pOIBindInfo, &grfBINDF, &bindinfo); if(FAILED(hres)) { - WARN("GetBindInfo failed: %08x\n", hres); + WARN("GetBindInfo failed: %08lx\n", hres); return hres; } @@ -301,12 +300,12 @@ static HRESULT WINAPI FileProtocol_StartEx(IInternetProtocolEx *iface, IUri *pUr return S_OK; } - IInternetProtocolSink_ReportProgress(pOIProtSink, BINDSTATUS_SENDINGREQUEST, &null_char); + IInternetProtocolSink_ReportProgress(pOIProtSink, BINDSTATUS_SENDINGREQUEST, L""); size = 0; hres = CoInternetParseIUri(pUri, PARSE_PATH_FROM_URL, 0, path, ARRAY_SIZE(path), &size, 0); if(FAILED(hres)) { - WARN("CoInternetParseIUri failed: %08x\n", hres); + WARN("CoInternetParseIUri failed: %08lx\n", hres); return report_result(pOIProtSink, hres, 0); } @@ -394,7 +393,7 @@ static HRESULT WINAPI FilePriority_SetPriority(IInternetPriority *iface, LONG nP { FileProtocol *This = impl_from_IInternetPriority(iface); - TRACE("(%p)->(%d)\n", This, nPriority); + TRACE("(%p)->(%ld)\n", This, nPriority); This->priority = nPriority; return S_OK; @@ -426,7 +425,7 @@ HRESULT FileProtocol_Construct(IUnknown *outer, LPVOID *ppobj) URLMON_LockModule(); - ret = heap_alloc(sizeof(FileProtocol)); + ret = malloc(sizeof(FileProtocol)); ret->IUnknown_inner.lpVtbl = &FileProtocolUnkVtbl; ret->IInternetProtocolEx_iface.lpVtbl = &FileProtocolExVtbl; diff --git a/dll/win32/urlmon/format.c b/dll/win32/urlmon/format.c index 6967c3b4f39..8ad313dd677 100644 --- a/dll/win32/urlmon/format.c +++ b/dll/win32/urlmon/format.c @@ -21,7 +21,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(urlmon); -static WCHAR wszEnumFORMATETC[] = {'_','E','n','u','m','F','O','R','M','A','T','E','T','C','_',0}; +static WCHAR wszEnumFORMATETC[] = L"_EnumFORMATETC_"; typedef struct { IEnumFORMATETC IEnumFORMATETC_iface; @@ -62,7 +62,7 @@ static ULONG WINAPI EnumFORMATETC_AddRef(IEnumFORMATETC *iface) { EnumFORMATETC *This = impl_from_IEnumFORMATETC(iface); LONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); return ref; } @@ -71,11 +71,11 @@ static ULONG WINAPI EnumFORMATETC_Release(IEnumFORMATETC *iface) EnumFORMATETC *This = impl_from_IEnumFORMATETC(iface); LONG ref = InterlockedDecrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); if(!ref) { - heap_free(This->fetc); - heap_free(This); + free(This->fetc); + free(This); URLMON_UnlockModule(); } @@ -89,7 +89,7 @@ static HRESULT WINAPI EnumFORMATETC_Next(IEnumFORMATETC *iface, ULONG celt, EnumFORMATETC *This = impl_from_IEnumFORMATETC(iface); ULONG cnt; - TRACE("(%p)->(%d %p %p)\n", This, celt, rgelt, pceltFetched); + TRACE("(%p)->(%ld %p %p)\n", This, celt, rgelt, pceltFetched); if(!rgelt) return E_INVALIDARG; @@ -115,7 +115,7 @@ static HRESULT WINAPI EnumFORMATETC_Skip(IEnumFORMATETC *iface, ULONG celt) { EnumFORMATETC *This = impl_from_IEnumFORMATETC(iface); - TRACE("(%p)->(%d)\n", This, celt); + TRACE("(%p)->(%ld)\n", This, celt); This->it += celt; return This->it > This->fetc_cnt ? S_FALSE : S_OK; @@ -156,7 +156,7 @@ static const IEnumFORMATETCVtbl EnumFORMATETCVtbl = { static IEnumFORMATETC *EnumFORMATETC_Create(UINT cfmtetc, const FORMATETC *rgfmtetc, UINT it) { - EnumFORMATETC *ret = heap_alloc(sizeof(EnumFORMATETC)); + EnumFORMATETC *ret = malloc(sizeof(EnumFORMATETC)); URLMON_LockModule(); @@ -165,7 +165,7 @@ static IEnumFORMATETC *EnumFORMATETC_Create(UINT cfmtetc, const FORMATETC *rgfmt ret->it = it; ret->fetc_cnt = cfmtetc; - ret->fetc = heap_alloc(cfmtetc*sizeof(FORMATETC)); + ret->fetc = malloc(cfmtetc * sizeof(FORMATETC)); memcpy(ret->fetc, rgfmtetc, cfmtetc*sizeof(FORMATETC)); return &ret->IEnumFORMATETC_iface; @@ -193,7 +193,7 @@ HRESULT WINAPI CreateFormatEnumerator(UINT cfmtetc, FORMATETC *rgfmtetc, */ HRESULT WINAPI RegisterFormatEnumerator(LPBC pBC, IEnumFORMATETC *pEFetc, DWORD reserved) { - TRACE("(%p %p %d)\n", pBC, pEFetc, reserved); + TRACE("(%p %p %ld)\n", pBC, pEFetc, reserved); if(reserved) WARN("reserved != 0\n"); diff --git a/dll/win32/urlmon/ftp.c b/dll/win32/urlmon/ftp.c index 8e6ec4eaf89..6170775366c 100644 --- a/dll/win32/urlmon/ftp.c +++ b/dll/win32/urlmon/ftp.c @@ -80,7 +80,7 @@ static HRESULT FtpProtocol_open_request(Protocol *prot, IUri *uri, DWORD request request_flags|INTERNET_FLAG_EXISTING_CONNECT|INTERNET_FLAG_PASSIVE, (DWORD_PTR)&This->base); if (!This->base.request && GetLastError() != ERROR_IO_PENDING) { - WARN("InternetOpenUrl failed: %d\n", GetLastError()); + WARN("InternetOpenUrl failed: %ld\n", GetLastError()); hres = INET_E_RESOURCE_NOT_FOUND; } } @@ -103,7 +103,7 @@ static HRESULT FtpProtocol_start_downloading(Protocol *prot) if(res) This->base.content_length = size; else - WARN("FtpGetFileSize failed: %d\n", GetLastError()); + WARN("FtpGetFileSize failed: %ld\n", GetLastError()); return S_OK; } @@ -114,7 +114,7 @@ static void FtpProtocol_close_connection(Protocol *prot) static void FtpProtocol_on_error(Protocol *prot, DWORD error) { - FIXME("(%p) %d - stub\n", prot, error); + FIXME("(%p) %ld - stub\n", prot, error); } static const ProtocolVtbl AsyncProtocolVtbl = { @@ -164,7 +164,7 @@ static ULONG WINAPI FtpProtocolUnk_AddRef(IUnknown *iface) { FtpProtocol *This = impl_from_IUnknown(iface); LONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); return ref; } @@ -173,11 +173,11 @@ static ULONG WINAPI FtpProtocolUnk_Release(IUnknown *iface) FtpProtocol *This = impl_from_IUnknown(iface); LONG ref = InterlockedDecrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); if(!ref) { protocol_close_connection(&This->base); - heap_free(This); + free(This); URLMON_UnlockModule(); } @@ -220,7 +220,7 @@ static HRESULT WINAPI FtpProtocol_Start(IInternetProtocolEx *iface, LPCWSTR szUr IUri *uri; HRESULT hres; - TRACE("(%p)->(%s %p %p %08x %lx)\n", This, debugstr_w(szUrl), pOIProtSink, + TRACE("(%p)->(%s %p %p %08lx %Ix)\n", This, debugstr_w(szUrl), pOIProtSink, pOIBindInfo, grfPI, dwReserved); hres = CreateUri(szUrl, 0, 0, &uri); @@ -248,7 +248,7 @@ static HRESULT WINAPI FtpProtocol_Abort(IInternetProtocolEx *iface, HRESULT hrRe { FtpProtocol *This = impl_from_IInternetProtocolEx(iface); - TRACE("(%p)->(%08x %08x)\n", This, hrReason, dwOptions); + TRACE("(%p)->(%08lx %08lx)\n", This, hrReason, dwOptions); return protocol_abort(&This->base, hrReason); } @@ -257,7 +257,7 @@ static HRESULT WINAPI FtpProtocol_Terminate(IInternetProtocolEx *iface, DWORD dw { FtpProtocol *This = impl_from_IInternetProtocolEx(iface); - TRACE("(%p)->(%08x)\n", This, dwOptions); + TRACE("(%p)->(%08lx)\n", This, dwOptions); protocol_close_connection(&This->base); return S_OK; @@ -282,7 +282,7 @@ static HRESULT WINAPI FtpProtocol_Read(IInternetProtocolEx *iface, void *pv, { FtpProtocol *This = impl_from_IInternetProtocolEx(iface); - TRACE("(%p)->(%p %u %p)\n", This, pv, cb, pcbRead); + TRACE("(%p)->(%p %lu %p)\n", This, pv, cb, pcbRead); return protocol_read(&This->base, pv, cb, pcbRead); } @@ -291,7 +291,7 @@ static HRESULT WINAPI FtpProtocol_Seek(IInternetProtocolEx *iface, LARGE_INTEGER DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition) { FtpProtocol *This = impl_from_IInternetProtocolEx(iface); - FIXME("(%p)->(%d %d %p)\n", This, dlibMove.u.LowPart, dwOrigin, plibNewPosition); + FIXME("(%p)->(%ld %ld %p)\n", This, dlibMove.u.LowPart, dwOrigin, plibNewPosition); return E_NOTIMPL; } @@ -299,7 +299,7 @@ static HRESULT WINAPI FtpProtocol_LockRequest(IInternetProtocolEx *iface, DWORD { FtpProtocol *This = impl_from_IInternetProtocolEx(iface); - TRACE("(%p)->(%08x)\n", This, dwOptions); + TRACE("(%p)->(%08lx)\n", This, dwOptions); return protocol_lock_request(&This->base); } @@ -321,7 +321,7 @@ static HRESULT WINAPI FtpProtocol_StartEx(IInternetProtocolEx *iface, IUri *pUri DWORD scheme = 0; HRESULT hres; - TRACE("(%p)->(%p %p %p %08x %p)\n", This, pUri, pOIProtSink, + TRACE("(%p)->(%p %p %p %08lx %p)\n", This, pUri, pOIProtSink, pOIBindInfo, grfPI, dwReserved); hres = IUri_GetScheme(pUri, &scheme); @@ -373,7 +373,7 @@ static HRESULT WINAPI FtpPriority_SetPriority(IInternetPriority *iface, LONG nPr { FtpProtocol *This = impl_from_IInternetPriority(iface); - TRACE("(%p)->(%d)\n", This, nPriority); + TRACE("(%p)->(%ld)\n", This, nPriority); This->base.priority = nPriority; return S_OK; @@ -419,7 +419,7 @@ static HRESULT WINAPI HttpInfo_QueryOption(IWinInetHttpInfo *iface, DWORD dwOpti void *pBuffer, DWORD *pcbBuffer) { FtpProtocol *This = impl_from_IWinInetHttpInfo(iface); - TRACE("(%p)->(%x %p %p)\n", This, dwOption, pBuffer, pcbBuffer); + TRACE("(%p)->(%lx %p %p)\n", This, dwOption, pBuffer, pcbBuffer); if(!This->base.request) return E_FAIL; @@ -433,7 +433,7 @@ static HRESULT WINAPI HttpInfo_QueryInfo(IWinInetHttpInfo *iface, DWORD dwOption void *pBuffer, DWORD *pcbBuffer, DWORD *pdwFlags, DWORD *pdwReserved) { FtpProtocol *This = impl_from_IWinInetHttpInfo(iface); - TRACE("(%p)->(%x %p %p %p %p)\n", This, dwOption, pBuffer, pcbBuffer, pdwFlags, pdwReserved); + TRACE("(%p)->(%lx %p %p %p %p)\n", This, dwOption, pBuffer, pcbBuffer, pdwFlags, pdwReserved); if(!This->base.request) return E_FAIL; @@ -459,7 +459,7 @@ HRESULT FtpProtocol_Construct(IUnknown *outer, void **ppv) URLMON_LockModule(); - ret = heap_alloc_zero(sizeof(FtpProtocol)); + ret = calloc(1, sizeof(FtpProtocol)); ret->base.vtbl = &AsyncProtocolVtbl; ret->IUnknown_inner.lpVtbl = &FtpProtocolUnkVtbl; diff --git a/dll/win32/urlmon/gopher.c b/dll/win32/urlmon/gopher.c index 4087ed5ace2..6af3ef44f9d 100644 --- a/dll/win32/urlmon/gopher.c +++ b/dll/win32/urlmon/gopher.c @@ -50,7 +50,7 @@ static HRESULT GopherProtocol_open_request(Protocol *prot, IUri *uri, DWORD requ request_flags, (DWORD_PTR)&This->base); SysFreeString(url); if (!This->base.request && GetLastError() != ERROR_IO_PENDING) { - WARN("InternetOpenUrl failed: %d\n", GetLastError()); + WARN("InternetOpenUrl failed: %ld\n", GetLastError()); return INET_E_RESOURCE_NOT_FOUND; } @@ -73,7 +73,7 @@ static void GopherProtocol_close_connection(Protocol *prot) static void GopherProtocol_on_error(Protocol *prot, DWORD error) { - FIXME("(%p) %d - stub\n", prot, error); + FIXME("(%p) %ld - stub\n", prot, error); } static const ProtocolVtbl AsyncProtocolVtbl = { @@ -121,7 +121,7 @@ static ULONG WINAPI GopherProtocol_AddRef(IInternetProtocol *iface) { GopherProtocol *This = impl_from_IInternetProtocol(iface); LONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); return ref; } @@ -130,10 +130,10 @@ static ULONG WINAPI GopherProtocol_Release(IInternetProtocol *iface) GopherProtocol *This = impl_from_IInternetProtocol(iface); LONG ref = InterlockedDecrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); if(!ref) { - heap_free(This); + free(This); URLMON_UnlockModule(); } @@ -149,7 +149,7 @@ static HRESULT WINAPI GopherProtocol_Start(IInternetProtocol *iface, LPCWSTR szU IUri *uri; HRESULT hres; - TRACE("(%p)->(%s %p %p %08x %lx)\n", This, debugstr_w(szUrl), pOIProtSink, + TRACE("(%p)->(%s %p %p %08lx %Ix)\n", This, debugstr_w(szUrl), pOIProtSink, pOIBindInfo, grfPI, dwReserved); hres = CreateUri(szUrl, 0, 0, &uri); @@ -177,7 +177,7 @@ static HRESULT WINAPI GopherProtocol_Abort(IInternetProtocol *iface, HRESULT hrR { GopherProtocol *This = impl_from_IInternetProtocol(iface); - TRACE("(%p)->(%08x %08x)\n", This, hrReason, dwOptions); + TRACE("(%p)->(%08lx %08lx)\n", This, hrReason, dwOptions); return protocol_abort(&This->base, hrReason); } @@ -186,7 +186,7 @@ static HRESULT WINAPI GopherProtocol_Terminate(IInternetProtocol *iface, DWORD d { GopherProtocol *This = impl_from_IInternetProtocol(iface); - TRACE("(%p)->(%08x)\n", This, dwOptions); + TRACE("(%p)->(%08lx)\n", This, dwOptions); protocol_close_connection(&This->base); return S_OK; @@ -211,7 +211,7 @@ static HRESULT WINAPI GopherProtocol_Read(IInternetProtocol *iface, void *pv, { GopherProtocol *This = impl_from_IInternetProtocol(iface); - TRACE("(%p)->(%p %u %p)\n", This, pv, cb, pcbRead); + TRACE("(%p)->(%p %lu %p)\n", This, pv, cb, pcbRead); return protocol_read(&This->base, pv, cb, pcbRead); } @@ -220,7 +220,7 @@ static HRESULT WINAPI GopherProtocol_Seek(IInternetProtocol *iface, LARGE_INTEGE DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition) { GopherProtocol *This = impl_from_IInternetProtocol(iface); - FIXME("(%p)->(%d %d %p)\n", This, dlibMove.u.LowPart, dwOrigin, plibNewPosition); + FIXME("(%p)->(%ld %ld %p)\n", This, dlibMove.u.LowPart, dwOrigin, plibNewPosition); return E_NOTIMPL; } @@ -228,7 +228,7 @@ static HRESULT WINAPI GopherProtocol_LockRequest(IInternetProtocol *iface, DWORD { GopherProtocol *This = impl_from_IInternetProtocol(iface); - TRACE("(%p)->(%08x)\n", This, dwOptions); + TRACE("(%p)->(%08lx)\n", This, dwOptions); return protocol_lock_request(&This->base); } @@ -285,7 +285,7 @@ static HRESULT WINAPI GopherPriority_SetPriority(IInternetPriority *iface, LONG { GopherProtocol *This = impl_from_IInternetPriority(iface); - TRACE("(%p)->(%d)\n", This, nPriority); + TRACE("(%p)->(%ld)\n", This, nPriority); This->base.priority = nPriority; return S_OK; @@ -317,7 +317,7 @@ HRESULT GopherProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj) URLMON_LockModule(); - ret = heap_alloc_zero(sizeof(GopherProtocol)); + ret = calloc(1, sizeof(GopherProtocol)); ret->base.vtbl = &AsyncProtocolVtbl; ret->IInternetProtocol_iface.lpVtbl = &GopherProtocolVtbl; diff --git a/dll/win32/urlmon/http.c b/dll/win32/urlmon/http.c index 3663443a0a4..a24006ba08c 100644 --- a/dll/win32/urlmon/http.c +++ b/dll/win32/urlmon/http.c @@ -17,8 +17,6 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#define NONAMELESSUNION - #include "urlmon_main.h" #include "wininet.h" @@ -65,8 +63,7 @@ static inline HttpProtocol *impl_from_IWinInetHttpInfo(IWinInetHttpInfo *iface) return CONTAINING_RECORD(iface, HttpProtocol, IWinInetHttpInfo_iface); } -static const WCHAR default_headersW[] = { - 'A','c','c','e','p','t','-','E','n','c','o','d','i','n','g',':',' ','g','z','i','p',',',' ','d','e','f','l','a','t','e',0}; +static const WCHAR default_headersW[] = L"Accept-Encoding: gzip, deflate"; static LPWSTR query_http_info(HttpProtocol *This, DWORD option) { @@ -76,12 +73,12 @@ static LPWSTR query_http_info(HttpProtocol *This, DWORD option) res = HttpQueryInfoW(This->base.request, option, NULL, &len, NULL); if (!res && GetLastError() == ERROR_INSUFFICIENT_BUFFER) { - ret = heap_alloc(len); + ret = malloc(len); res = HttpQueryInfoW(This->base.request, option, ret, &len, NULL); } if(!res) { - TRACE("HttpQueryInfoW(%d) failed: %08x\n", option, GetLastError()); - heap_free(ret); + TRACE("HttpQueryInfoW(%ld) failed: %08lx\n", option, GetLastError()); + free(ret); return NULL; } @@ -94,7 +91,7 @@ static inline BOOL set_security_flag(HttpProtocol *This, DWORD flags) res = InternetSetOptionW(This->base.request, INTERNET_OPTION_SECURITY_FLAGS, &flags, sizeof(flags)); if(!res) - ERR("Failed to set security flags: %x\n", flags); + ERR("Failed to set security flags: %lx\n", flags); return res; } @@ -133,7 +130,7 @@ static HRESULT handle_http_error(HttpProtocol *This, DWORD error) DWORD res; HRESULT hres; - TRACE("(%p %u)\n", This, error); + TRACE("(%p %lu)\n", This, error); switch(error) { case ERROR_INTERNET_SEC_CERT_DATE_INVALID: @@ -168,7 +165,7 @@ static HRESULT handle_http_error(HttpProtocol *This, DWORD error) hres = IHttpSecurity_OnSecurityProblem(http_security, error); IHttpSecurity_Release(http_security); - TRACE("OnSecurityProblem returned %08x\n", hres); + TRACE("OnSecurityProblem returned %08lx\n", hres); if(hres != S_FALSE) { @@ -187,7 +184,7 @@ static HRESULT handle_http_error(HttpProtocol *This, DWORD error) if(res) return RPC_E_RETRY; - FIXME("Don't know how to ignore error %d\n", error); + FIXME("Don't know how to ignore error %ld\n", error); return E_ABORT; } @@ -252,7 +249,7 @@ static ULONG send_http_request(HttpProtocol *This) switch(This->base.bind_info.stgmedData.tymed) { case TYMED_HGLOBAL: /* Native does not use GlobalLock/GlobalUnlock, so we won't either */ - send_buffer.lpvBuffer = This->base.bind_info.stgmedData.u.hGlobal; + send_buffer.lpvBuffer = This->base.bind_info.stgmedData.hGlobal; send_buffer.dwBufferLength = send_buffer.dwBufferTotal = This->base.bind_info.cbstgmedData; break; case TYMED_ISTREAM: { @@ -260,7 +257,7 @@ static ULONG send_http_request(HttpProtocol *This) send_buffer.dwBufferTotal = This->base.bind_info.cbstgmedData; if(!This->base.post_stream) { - This->base.post_stream = This->base.bind_info.stgmedData.u.pstm; + This->base.post_stream = This->base.bind_info.stgmedData.pstm; IStream_AddRef(This->base.post_stream); } @@ -269,7 +266,7 @@ static ULONG send_http_request(HttpProtocol *This) break; } default: - FIXME("Unsupported This->base.bind_info.stgmedData.tymed %d\n", This->base.bind_info.stgmedData.tymed); + FIXME("Unsupported This->base.bind_info.stgmedData.tymed %ld\n", This->base.bind_info.stgmedData.tymed); } } @@ -304,9 +301,9 @@ static HRESULT HttpProtocol_open_request(Protocol *prot, IUri *uri, DWORD reques HRESULT hres; static const WCHAR wszBindVerb[BINDVERB_CUSTOM][5] = - {{'G','E','T',0}, - {'P','O','S','T',0}, - {'P','U','T',0}}; + {L"GET", + L"POST", + L"PUT"}; hres = IUri_GetPort(uri, &port); if(FAILED(hres)) @@ -331,7 +328,7 @@ static HRESULT HttpProtocol_open_request(Protocol *prot, IUri *uri, DWORD reques if(FAILED(hres)) return hres; if(!This->base.connection) { - WARN("InternetConnect failed: %d\n", GetLastError()); + WARN("InternetConnect failed: %ld\n", GetLastError()); return INET_E_CANNOT_CONNECT; } @@ -345,15 +342,14 @@ static HRESULT HttpProtocol_open_request(Protocol *prot, IUri *uri, DWORD reques num = ARRAY_SIZE(accept_mimes) - 1; hres = IInternetBindInfo_GetBindString(bind_info, BINDSTRING_ACCEPT_MIMES, accept_mimes, num, &num); if(hres == INET_E_USE_DEFAULT_SETTING) { - static const WCHAR default_accept_mimeW[] = {'*','/','*',0}; - static const WCHAR *default_accept_mimes[] = {default_accept_mimeW, NULL}; + static const WCHAR *default_accept_mimes[] = {L"*/*", NULL}; accept_types = default_accept_mimes; num = 0; }else if(hres == S_OK) { accept_types = (const WCHAR**)accept_mimes; }else { - WARN("GetBindString BINDSTRING_ACCEPT_MIMES failed: %08x\n", hres); + WARN("GetBindString BINDSTRING_ACCEPT_MIMES failed: %08lx\n", hres); return INET_E_NO_VALID_MEDIA; } accept_mimes[num] = 0; @@ -374,21 +370,21 @@ static HRESULT HttpProtocol_open_request(Protocol *prot, IUri *uri, DWORD reques if(FAILED(hres)) return hres; if (!This->base.request) { - WARN("HttpOpenRequest failed: %d\n", GetLastError()); + WARN("HttpOpenRequest failed: %ld\n", GetLastError()); return INET_E_RESOURCE_NOT_FOUND; } hres = IInternetProtocolSink_QueryInterface(This->base.protocol_sink, &IID_IServiceProvider, (void **)&service_provider); if (hres != S_OK) { - WARN("IInternetProtocolSink_QueryInterface IID_IServiceProvider failed: %08x\n", hres); + WARN("IInternetProtocolSink_QueryInterface IID_IServiceProvider failed: %08lx\n", hres); return hres; } hres = IServiceProvider_QueryService(service_provider, &IID_IHttpNegotiate, &IID_IHttpNegotiate, (void **)&This->http_negotiate); if (hres != S_OK) { - WARN("IServiceProvider_QueryService IID_IHttpNegotiate failed: %08x\n", hres); + WARN("IServiceProvider_QueryService IID_IHttpNegotiate failed: %08lx\n", hres); IServiceProvider_Release(service_provider); return hres; } @@ -403,14 +399,14 @@ static HRESULT HttpProtocol_open_request(Protocol *prot, IUri *uri, DWORD reques 0, &addl_header); SysFreeString(url); if(hres != S_OK) { - WARN("IHttpNegotiate_BeginningTransaction failed: %08x\n", hres); + WARN("IHttpNegotiate_BeginningTransaction failed: %08lx\n", hres); IServiceProvider_Release(service_provider); return hres; } len = addl_header ? lstrlenW(addl_header) : 0; - This->full_header = heap_alloc(len*sizeof(WCHAR)+sizeof(default_headersW)); + This->full_header = malloc(len * sizeof(WCHAR) + sizeof(default_headersW)); if(!This->full_header) { IServiceProvider_Release(service_provider); return E_OUTOFMEMORY; @@ -425,14 +421,14 @@ static HRESULT HttpProtocol_open_request(Protocol *prot, IUri *uri, DWORD reques &IID_IHttpNegotiate2, (void **)&http_negotiate2); IServiceProvider_Release(service_provider); if(hres != S_OK) { - WARN("IServiceProvider_QueryService IID_IHttpNegotiate2 failed: %08x\n", hres); + WARN("IServiceProvider_QueryService IID_IHttpNegotiate2 failed: %08lx\n", hres); /* No goto done as per native */ }else { len = ARRAY_SIZE(security_id); hres = IHttpNegotiate2_GetRootSecurityId(http_negotiate2, security_id, &len, 0); IHttpNegotiate2_Release(http_negotiate2); if (hres != S_OK) - WARN("IHttpNegotiate2_GetRootSecurityId failed: %08x\n", hres); + WARN("IHttpNegotiate2_GetRootSecurityId failed: %08lx\n", hres); } /* FIXME: Handle security_id. Native calls undocumented function IsHostInProxyBypassList. */ @@ -443,7 +439,7 @@ static HRESULT HttpProtocol_open_request(Protocol *prot, IUri *uri, DWORD reques if(hres == S_OK && num) { if(!InternetSetOptionW(This->base.request, INTERNET_OPTION_SECONDARY_CACHE_KEY, post_cookie, lstrlenW(post_cookie))) - WARN("InternetSetOption INTERNET_OPTION_SECONDARY_CACHE_KEY failed: %d\n", GetLastError()); + WARN("InternetSetOption INTERNET_OPTION_SECONDARY_CACHE_KEY failed: %ld\n", GetLastError()); CoTaskMemFree(post_cookie); } } @@ -451,12 +447,12 @@ static HRESULT HttpProtocol_open_request(Protocol *prot, IUri *uri, DWORD reques flags = INTERNET_ERROR_MASK_COMBINED_SEC_CERT; res = InternetSetOptionW(This->base.request, INTERNET_OPTION_ERROR_MASK, &flags, sizeof(flags)); if(!res) - WARN("InternetSetOption(INTERNET_OPTION_ERROR_MASK) failed: %u\n", GetLastError()); + WARN("InternetSetOption(INTERNET_OPTION_ERROR_MASK) failed: %lu\n", GetLastError()); b = TRUE; res = InternetSetOptionW(This->base.request, INTERNET_OPTION_HTTP_DECODING, &b, sizeof(b)); if(!res) - WARN("InternetSetOption(INTERNET_OPTION_HTTP_DECODING) failed: %u\n", GetLastError()); + WARN("InternetSetOption(INTERNET_OPTION_HTTP_DECODING) failed: %lu\n", GetLastError()); do { error = send_http_request(This); @@ -475,7 +471,7 @@ static HRESULT HttpProtocol_open_request(Protocol *prot, IUri *uri, DWORD reques } } while(hres == RPC_E_RETRY); - WARN("HttpSendRequest failed: %d\n", error); + WARN("HttpSendRequest failed: %ld\n", error); return hres; } @@ -485,7 +481,7 @@ static HRESULT HttpProtocol_end_request(Protocol *protocol) res = HttpEndRequestW(protocol->request, NULL, 0, 0); if(!res && GetLastError() != ERROR_IO_PENDING) { - FIXME("HttpEndRequest failed: %u\n", GetLastError()); + FIXME("HttpEndRequest failed: %lu\n", GetLastError()); return E_FAIL; } @@ -513,9 +509,6 @@ static HRESULT HttpProtocol_start_downloading(Protocol *prot) BOOL res; HRESULT hres; - static const WCHAR wszDefaultContentType[] = - {'t','e','x','t','/','h','t','m','l',0}; - if(!This->http_negotiate) { WARN("Expected IHttpNegotiate pointer to be non-NULL\n"); return S_OK; @@ -534,7 +527,7 @@ static HRESULT HttpProtocol_start_downloading(Protocol *prot) location = query_http_info(This, HTTP_QUERY_LOCATION); This->base.flags |= FLAG_RESULT_REPORTED | FLAG_LAST_DATA_REPORTED; IInternetProtocolSink_ReportResult(This->base.protocol_sink, INET_E_REDIRECT_FAILED, 0, location); - heap_free(location); + free(location); return INET_E_REDIRECT_FAILED; } @@ -542,20 +535,20 @@ static HRESULT HttpProtocol_start_downloading(Protocol *prot) if(response_headers) { hres = IHttpNegotiate_OnResponse(This->http_negotiate, status_code, response_headers, NULL, NULL); - heap_free(response_headers); + free(response_headers); if (hres != S_OK) { - WARN("IHttpNegotiate_OnResponse failed: %08x\n", hres); + WARN("IHttpNegotiate_OnResponse failed: %08lx\n", hres); return S_OK; } } }else { - WARN("HttpQueryInfo failed: %d\n", GetLastError()); + WARN("HttpQueryInfo failed: %ld\n", GetLastError()); } ranges = query_http_info(This, HTTP_QUERY_ACCEPT_RANGES); if(ranges) { IInternetProtocolSink_ReportProgress(This->base.protocol_sink, BINDSTATUS_ACCEPTRANGES, NULL); - heap_free(ranges); + free(ranges); } content_type = query_http_info(This, HTTP_QUERY_CONTENT_TYPE); @@ -568,19 +561,18 @@ static HRESULT HttpProtocol_start_downloading(Protocol *prot) (This->base.bindf & BINDF_FROMURLMON) ? BINDSTATUS_MIMETYPEAVAILABLE : BINDSTATUS_RAWMIMETYPE, content_type); - heap_free(content_type); + free(content_type); }else { - WARN("HttpQueryInfo failed: %d\n", GetLastError()); + WARN("HttpQueryInfo failed: %ld\n", GetLastError()); IInternetProtocolSink_ReportProgress(This->base.protocol_sink, (This->base.bindf & BINDF_FROMURLMON) - ? BINDSTATUS_MIMETYPEAVAILABLE : BINDSTATUS_RAWMIMETYPE, - wszDefaultContentType); + ? BINDSTATUS_MIMETYPEAVAILABLE : BINDSTATUS_RAWMIMETYPE, L"text/html"); } content_length = query_http_info(This, HTTP_QUERY_CONTENT_LENGTH); if(content_length) { This->base.content_length = wcstol(content_length, NULL, 10); - heap_free(content_length); + free(content_length); } return S_OK; @@ -595,7 +587,7 @@ static void HttpProtocol_close_connection(Protocol *prot) This->http_negotiate = NULL; } - heap_free(This->full_header); + free(This->full_header); This->full_header = NULL; } @@ -604,10 +596,10 @@ static void HttpProtocol_on_error(Protocol *prot, DWORD error) HttpProtocol *This = impl_from_Protocol(prot); HRESULT hres; - TRACE("(%p) %d\n", prot, error); + TRACE("(%p) %ld\n", prot, error); if(prot->flags & FLAG_FIRST_CONTINUE_COMPLETE) { - FIXME("Not handling error %d\n", error); + FIXME("Not handling error %ld\n", error); return; } @@ -670,7 +662,7 @@ static ULONG WINAPI HttpProtocolUnk_AddRef(IUnknown *iface) { HttpProtocol *This = impl_from_IUnknown(iface); LONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); return ref; } @@ -679,11 +671,11 @@ static ULONG WINAPI HttpProtocolUnk_Release(IUnknown *iface) HttpProtocol *This = impl_from_IUnknown(iface); LONG ref = InterlockedDecrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); if(!ref) { protocol_close_connection(&This->base); - heap_free(This); + free(This); URLMON_UnlockModule(); } @@ -726,7 +718,7 @@ static HRESULT WINAPI HttpProtocol_Start(IInternetProtocolEx *iface, LPCWSTR szU IUri *uri; HRESULT hres; - TRACE("(%p)->(%s %p %p %08x %lx)\n", This, debugstr_w(szUrl), pOIProtSink, + TRACE("(%p)->(%s %p %p %08lx %Ix)\n", This, debugstr_w(szUrl), pOIProtSink, pOIBindInfo, grfPI, dwReserved); hres = CreateUri(szUrl, 0, 0, &uri); @@ -754,7 +746,7 @@ static HRESULT WINAPI HttpProtocol_Abort(IInternetProtocolEx *iface, HRESULT hrR { HttpProtocol *This = impl_from_IInternetProtocolEx(iface); - TRACE("(%p)->(%08x %08x)\n", This, hrReason, dwOptions); + TRACE("(%p)->(%08lx %08lx)\n", This, hrReason, dwOptions); return protocol_abort(&This->base, hrReason); } @@ -763,7 +755,7 @@ static HRESULT WINAPI HttpProtocol_Terminate(IInternetProtocolEx *iface, DWORD d { HttpProtocol *This = impl_from_IInternetProtocolEx(iface); - TRACE("(%p)->(%08x)\n", This, dwOptions); + TRACE("(%p)->(%08lx)\n", This, dwOptions); protocol_close_connection(&This->base); return S_OK; @@ -788,7 +780,7 @@ static HRESULT WINAPI HttpProtocol_Read(IInternetProtocolEx *iface, void *pv, { HttpProtocol *This = impl_from_IInternetProtocolEx(iface); - TRACE("(%p)->(%p %u %p)\n", This, pv, cb, pcbRead); + TRACE("(%p)->(%p %lu %p)\n", This, pv, cb, pcbRead); return protocol_read(&This->base, pv, cb, pcbRead); } @@ -797,7 +789,7 @@ static HRESULT WINAPI HttpProtocol_Seek(IInternetProtocolEx *iface, LARGE_INTEGE DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition) { HttpProtocol *This = impl_from_IInternetProtocolEx(iface); - FIXME("(%p)->(%d %d %p)\n", This, dlibMove.u.LowPart, dwOrigin, plibNewPosition); + FIXME("(%p)->(%ld %ld %p)\n", This, dlibMove.LowPart, dwOrigin, plibNewPosition); return E_NOTIMPL; } @@ -805,7 +797,7 @@ static HRESULT WINAPI HttpProtocol_LockRequest(IInternetProtocolEx *iface, DWORD { HttpProtocol *This = impl_from_IInternetProtocolEx(iface); - TRACE("(%p)->(%08x)\n", This, dwOptions); + TRACE("(%p)->(%08lx)\n", This, dwOptions); return protocol_lock_request(&This->base); } @@ -827,7 +819,7 @@ static HRESULT WINAPI HttpProtocol_StartEx(IInternetProtocolEx *iface, IUri *pUr DWORD scheme = 0; HRESULT hres; - TRACE("(%p)->(%p %p %p %08x %p)\n", This, pUri, pOIProtSink, + TRACE("(%p)->(%p %p %p %08lx %p)\n", This, pUri, pOIProtSink, pOIBindInfo, grfPI, dwReserved); hres = IUri_GetScheme(pUri, &scheme); @@ -879,7 +871,7 @@ static HRESULT WINAPI HttpPriority_SetPriority(IInternetPriority *iface, LONG nP { HttpProtocol *This = impl_from_IInternetPriority(iface); - TRACE("(%p)->(%d)\n", This, nPriority); + TRACE("(%p)->(%ld)\n", This, nPriority); This->base.priority = nPriority; return S_OK; @@ -925,7 +917,7 @@ static HRESULT WINAPI HttpInfo_QueryOption(IWinInetHttpInfo *iface, DWORD dwOpti void *pBuffer, DWORD *pcbBuffer) { HttpProtocol *This = impl_from_IWinInetHttpInfo(iface); - TRACE("(%p)->(%x %p %p)\n", This, dwOption, pBuffer, pcbBuffer); + TRACE("(%p)->(%lx %p %p)\n", This, dwOption, pBuffer, pcbBuffer); if(!This->base.request) return E_FAIL; @@ -939,7 +931,7 @@ static HRESULT WINAPI HttpInfo_QueryInfo(IWinInetHttpInfo *iface, DWORD dwOption void *pBuffer, DWORD *pcbBuffer, DWORD *pdwFlags, DWORD *pdwReserved) { HttpProtocol *This = impl_from_IWinInetHttpInfo(iface); - TRACE("(%p)->(%x %p %p %p %p)\n", This, dwOption, pBuffer, pcbBuffer, pdwFlags, pdwReserved); + TRACE("(%p)->(%lx %p %p %p %p)\n", This, dwOption, pBuffer, pcbBuffer, pdwFlags, pdwReserved); if(!This->base.request) return E_FAIL; @@ -962,7 +954,7 @@ static HRESULT create_http_protocol(BOOL https, IUnknown *outer, void **ppobj) { HttpProtocol *ret; - ret = heap_alloc_zero(sizeof(HttpProtocol)); + ret = calloc(1, sizeof(HttpProtocol)); if(!ret) return E_OUTOFMEMORY; diff --git a/dll/win32/urlmon/internet.c b/dll/win32/urlmon/internet.c index 7356fc8978d..d38bba1d376 100644 --- a/dll/win32/urlmon/internet.c +++ b/dll/win32/urlmon/internet.c @@ -26,74 +26,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(urlmon); static const WCHAR feature_control_keyW[] = - {'S','o','f','t','w','a','r','e','\\', - 'M','i','c','r','o','s','o','f','t','\\', - 'I','n','t','e','r','n','e','t',' ','E','x','p','l','o','r','e','r','\\', - 'M','a','i','n','\\', - 'F','e','a','t','u','r','e','C','o','n','t','r','o','l',0}; - -static const WCHAR feature_object_cachingW[] = - {'F','E','A','T','U','R','E','_','O','B','J','E','C','T','_','C','A','C','H','I','N','G',0}; -static const WCHAR feature_zone_elevationW[] = - {'F','E','A','T','U','R','E','_','Z','O','N','E','_','E','L','E','V','A','T','I','O','N',0}; -static const WCHAR feature_mime_handlingW[] = - {'F','E','A','T','U','R','E','_','M','I','M','E','_','H','A','N','D','L','I','N','G',0}; -static const WCHAR feature_mime_sniffingW[] = - {'F','E','A','T','U','R','E','_','M','I','M','E','_','S','N','I','F','F','I','N','G',0}; -static const WCHAR feature_window_restrictionsW[] = - {'F','E','A','T','U','R','E','_','W','I','N','D','O','W','_','R','E','S','T','R','I','C','T','I','O','N','S',0}; -static const WCHAR feature_weboc_popupmanagementW[] = - {'F','E','A','T','U','R','E','_','W','E','B','O','C','_','P','O','P','U','P','M','A','N','A','G','E','M','E','N','T',0}; -static const WCHAR feature_behaviorsW[] = - {'F','E','A','T','U','R','E','_','B','E','H','A','V','I','O','R','S',0}; -static const WCHAR feature_disable_mk_protocolW[] = - {'F','E','A','T','U','R','E','_','D','I','S','A','B','L','E','_','M','K','_','P','R','O','T','O','C','O','L',0}; -static const WCHAR feature_localmachine_lockdownW[] = - {'F','E','A','T','U','R','E','_','L','O','C','A','L','M','A','C','H','I','N','E','_','L','O','C','K','D','O','W','N',0}; -static const WCHAR feature_securitybandW[] = - {'F','E','A','T','U','R','E','_','S','E','C','U','R','I','T','Y','B','A','N','D',0}; -static const WCHAR feature_restrict_activexinstallW[] = - {'F','E','A','T','U','R','E','_','R','E','S','T','R','I','C','T','_','A','C','T','I','V','E','X','I','N','S','T','A','L','L',0}; -static const WCHAR feature_validate_navigate_urlW[] = - {'F','E','A','T','U','R','E','_','V','A','L','I','D','A','T','E','_','N','A','V','I','G','A','T','E','_','U','R','L',0}; -static const WCHAR feature_restrict_filedownloadW[] = - {'F','E','A','T','U','R','E','_','R','E','S','T','R','I','C','T','_','F','I','L','E','D','O','W','N','L','O','A','D',0}; -static const WCHAR feature_addon_managementW[] = - {'F','E','A','T','U','R','E','_','A','D','D','O','N','_','M','A','N','A','G','E','M','E','N','T',0}; -static const WCHAR feature_protocol_lockdownW[] = - {'F','E','A','T','U','R','E','_','P','R','O','T','O','C','O','L','_','L','O','C','K','D','O','W','N',0}; -static const WCHAR feature_http_username_password_disableW[] = - {'F','E','A','T','U','R','E','_','H','T','T','P','_','U','S','E','R','N','A','M','E','_', - 'P','A','S','S','W','O','R','D','_','D','I','S','A','B','L','E',0}; -static const WCHAR feature_safe_bindtoobjectW[] = - {'F','E','A','T','U','R','E','_','S','A','F','E','_','B','I','N','D','T','O','O','B','J','E','C','T',0}; -static const WCHAR feature_unc_savedfilecheckW[] = - {'F','E','A','T','U','R','E','_','U','N','C','_','S','A','V','E','D','F','I','L','E','C','H','E','C','K',0}; -static const WCHAR feature_get_url_dom_filepath_unencodedW[] = - {'F','E','A','T','U','R','E','_','G','E','T','_','U','R','L','_','D','O','M','_', - 'F','I','L','E','P','A','T','H','_','U','N','E','N','C','O','D','E','D',0}; -static const WCHAR feature_tabbed_browsingW[] = - {'F','E','A','T','U','R','E','_','T','A','B','B','E','D','_','B','R','O','W','S','I','N','G',0}; -static const WCHAR feature_ssluxW[] = - {'F','E','A','T','U','R','E','_','S','S','L','U','X',0}; -static const WCHAR feature_disable_navigation_soundsW[] = - {'F','E','A','T','U','R','E','_','D','I','S','A','B','L','E','_','N','A','V','I','G','A','T','I','O','N','_', - 'S','O','U','N','D','S',0}; -static const WCHAR feature_disable_legacy_compressionW[] = - {'F','E','A','T','U','R','E','_','D','I','S','A','B','L','E','_','L','E','G','A','C','Y','_', - 'C','O','M','P','R','E','S','S','I','O','N',0}; -static const WCHAR feature_force_addr_and_statusW[] = - {'F','E','A','T','U','R','E','_','F','O','R','C','E','_','A','D','D','R','_','A','N','D','_', - 'S','T','A','T','U','S',0}; -static const WCHAR feature_xmlhttpW[] = - {'F','E','A','T','U','R','E','_','X','M','L','H','T','T','P',0}; -static const WCHAR feature_disable_telnet_protocolW[] = - {'F','E','A','T','U','R','E','_','D','I','S','A','B','L','E','_','T','E','L','N','E','T','_', - 'P','R','O','T','O','C','O','L',0}; -static const WCHAR feature_feedsW[] = - {'F','E','A','T','U','R','E','_','F','E','E','D','S',0}; -static const WCHAR feature_block_input_promptsW[] = - {'F','E','A','T','U','R','E','_','B','L','O','C','K','_','I','N','P','U','T','_','P','R','O','M','P','T','S',0}; + L"Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl"; static CRITICAL_SECTION process_features_cs; static CRITICAL_SECTION_DEBUG process_features_cs_dbg = @@ -116,34 +49,34 @@ typedef struct feature_control { * appear in the same order as it does in INTERNETFEATURELIST. */ static feature_control process_feature_controls[FEATURE_ENTRY_COUNT] = { - {feature_object_cachingW, TRUE ,TRUE}, - {feature_zone_elevationW, FALSE,TRUE}, - {feature_mime_handlingW, FALSE,TRUE}, - {feature_mime_sniffingW, FALSE,TRUE}, - {feature_window_restrictionsW, FALSE,TRUE}, - {feature_weboc_popupmanagementW, FALSE,TRUE}, - {feature_behaviorsW, TRUE ,TRUE}, - {feature_disable_mk_protocolW, TRUE ,TRUE}, - {feature_localmachine_lockdownW, FALSE,TRUE}, - {feature_securitybandW, FALSE,TRUE}, - {feature_restrict_activexinstallW, FALSE,TRUE}, - {feature_validate_navigate_urlW, FALSE,TRUE}, - {feature_restrict_filedownloadW, FALSE,TRUE}, - {feature_addon_managementW, FALSE,TRUE}, - {feature_protocol_lockdownW, FALSE,TRUE}, - {feature_http_username_password_disableW, FALSE,TRUE}, - {feature_safe_bindtoobjectW, FALSE,TRUE}, - {feature_unc_savedfilecheckW, FALSE,TRUE}, - {feature_get_url_dom_filepath_unencodedW, TRUE ,TRUE}, - {feature_tabbed_browsingW, FALSE,TRUE}, - {feature_ssluxW, FALSE,TRUE}, - {feature_disable_navigation_soundsW, FALSE,TRUE}, - {feature_disable_legacy_compressionW, TRUE ,TRUE}, - {feature_force_addr_and_statusW, FALSE,TRUE}, - {feature_xmlhttpW, TRUE ,TRUE}, - {feature_disable_telnet_protocolW, FALSE,TRUE}, - {feature_feedsW, FALSE,TRUE}, - {feature_block_input_promptsW, FALSE,TRUE} + {L"FEATURE_OBJECT_CACHING", TRUE ,TRUE}, + {L"FEATURE_ZONE_ELEVATION", FALSE,TRUE}, + {L"FEATURE_MIME_HANDLING", FALSE,TRUE}, + {L"FEATURE_MIME_SNIFFING", FALSE,TRUE}, + {L"FEATURE_WINDOW_RESTRICTIONS", FALSE,TRUE}, + {L"FEATURE_WEBOC_POPUPMANAGEMENT", FALSE,TRUE}, + {L"FEATURE_BEHAVIORS", TRUE ,TRUE}, + {L"FEATURE_DISABLE_MK_PROTOCOL", TRUE ,TRUE}, + {L"FEATURE_LOCALMACHINE_LOCKDOWN", FALSE,TRUE}, + {L"FEATURE_SECURITYBAND", FALSE,TRUE}, + {L"FEATURE_RESTRICT_ACTIVEXINSTALL", FALSE,TRUE}, + {L"FEATURE_VALIDATE_NAVIGATE_URL", FALSE,TRUE}, + {L"FEATURE_RESTRICT_FILEDOWNLOAD", FALSE,TRUE}, + {L"FEATURE_ADDON_MANAGEMENT", FALSE,TRUE}, + {L"FEATURE_PROTOCOL_LOCKDOWN", FALSE,TRUE}, + {L"FEATURE_HTTP_USERNAME_PASSWORD_DISABLE", FALSE,TRUE}, + {L"FEATURE_SAFE_BINDTOOBJECT", FALSE,TRUE}, + {L"FEATURE_UNC_SAVEDFILECHECK", FALSE,TRUE}, + {L"FEATURE_GET_URL_DOM_FILEPATH_UNENCODED", TRUE ,TRUE}, + {L"FEATURE_TABBED_BROWSING", FALSE,TRUE}, + {L"FEATURE_SSLUX", FALSE,TRUE}, + {L"FEATURE_DISABLE_NAVIGATION_SOUNDS", FALSE,TRUE}, + {L"FEATURE_DISABLE_LEGACY_COMPRESSION", TRUE ,TRUE}, + {L"FEATURE_FORCE_ADDR_AND_STATUS", FALSE,TRUE}, + {L"FEATURE_XMLHTTP", TRUE ,TRUE}, + {L"FEATURE_DISABLE_TELNET_PROTOCOL", FALSE,TRUE}, + {L"FEATURE_FEEDS", FALSE,TRUE}, + {L"FEATURE_BLOCK_INPUT_PROMPTS", FALSE,TRUE} }; static HRESULT parse_schema(LPCWSTR url, DWORD flags, LPWSTR result, DWORD size, DWORD *rsize) @@ -151,7 +84,7 @@ static HRESULT parse_schema(LPCWSTR url, DWORD flags, LPWSTR result, DWORD size, WCHAR *ptr; DWORD len = 0; - TRACE("(%s %08x %p %d %p)\n", debugstr_w(url), flags, result, size, rsize); + TRACE("(%s %08lx %p %ld %p)\n", debugstr_w(url), flags, result, size, rsize); if(flags) ERR("wrong flags\n"); @@ -180,7 +113,7 @@ static HRESULT parse_canonicalize_url(LPCWSTR url, DWORD flags, LPWSTR result, DWORD prsize = size; HRESULT hres; - TRACE("(%s %08x %p %d %p)\n", debugstr_w(url), flags, result, size, rsize); + TRACE("(%s %08lx %p %ld %p)\n", debugstr_w(url), flags, result, size, rsize); protocol_info = get_protocol_info(url); @@ -204,7 +137,7 @@ static HRESULT parse_security_url(LPCWSTR url, DWORD flags, LPWSTR result, DWORD IInternetProtocolInfo *protocol_info; HRESULT hres; - TRACE("(%s %08x %p %d %p)\n", debugstr_w(url), flags, result, size, rsize); + TRACE("(%s %08lx %p %ld %p)\n", debugstr_w(url), flags, result, size, rsize); protocol_info = get_protocol_info(url); @@ -224,7 +157,7 @@ static HRESULT parse_encode(LPCWSTR url, PARSEACTION action, DWORD flags, LPWSTR DWORD prsize; HRESULT hres; - TRACE("(%s %08x %p %d %p)\n", debugstr_w(url), flags, result, size, rsize); + TRACE("(%s %08lx %p %ld %p)\n", debugstr_w(url), flags, result, size, rsize); protocol_info = get_protocol_info(url); @@ -251,7 +184,7 @@ static HRESULT parse_path_from_url(LPCWSTR url, DWORD flags, LPWSTR result, DWOR DWORD prsize; HRESULT hres; - TRACE("(%s %08x %p %d %p)\n", debugstr_w(url), flags, result, size, rsize); + TRACE("(%s %08lx %p %ld %p)\n", debugstr_w(url), flags, result, size, rsize); protocol_info = get_protocol_info(url); @@ -277,7 +210,7 @@ static HRESULT parse_security_domain(LPCWSTR url, DWORD flags, LPWSTR result, IInternetProtocolInfo *protocol_info; HRESULT hres; - TRACE("(%s %08x %p %d %p)\n", debugstr_w(url), flags, result, size, rsize); + TRACE("(%s %08lx %p %ld %p)\n", debugstr_w(url), flags, result, size, rsize); protocol_info = get_protocol_info(url); @@ -298,7 +231,7 @@ static HRESULT parse_domain(LPCWSTR url, DWORD flags, LPWSTR result, IInternetProtocolInfo *protocol_info; HRESULT hres; - TRACE("(%s %08x %p %d %p)\n", debugstr_w(url), flags, result, size, rsize); + TRACE("(%s %08lx %p %ld %p)\n", debugstr_w(url), flags, result, size, rsize); protocol_info = get_protocol_info(url); @@ -329,7 +262,7 @@ static HRESULT parse_rootdocument(LPCWSTR url, DWORD flags, LPWSTR result, PARSEDURLW url_info; HRESULT hres; - TRACE("(%s %08x %p %d %p)\n", debugstr_w(url), flags, result, size, rsize); + TRACE("(%s %08lx %p %ld %p)\n", debugstr_w(url), flags, result, size, rsize); protocol_info = get_protocol_info(url); @@ -393,7 +326,7 @@ HRESULT WINAPI CoInternetParseUrl(LPCWSTR pwzUrl, PARSEACTION ParseAction, DWORD LPWSTR pszResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved) { if(dwReserved) - WARN("dwReserved = %d\n", dwReserved); + WARN("dwReserved = %ld\n", dwReserved); switch(ParseAction) { case PARSE_CANONICALIZE: @@ -431,7 +364,7 @@ HRESULT WINAPI CoInternetCombineUrl(LPCWSTR pwzBaseUrl, LPCWSTR pwzRelativeUrl, DWORD size = cchResult; HRESULT hres; - TRACE("(%s,%s,0x%08x,%p,%d,%p,%d)\n", debugstr_w(pwzBaseUrl), + TRACE("(%s,%s,0x%08lx,%p,%ld,%p,%ld)\n", debugstr_w(pwzBaseUrl), debugstr_w(pwzRelativeUrl), dwCombineFlags, pwzResult, cchResult, pcchResult, dwReserved); @@ -462,7 +395,7 @@ HRESULT WINAPI CoInternetCompareUrl(LPCWSTR pwzUrl1, LPCWSTR pwzUrl2, DWORD dwCo IInternetProtocolInfo *protocol_info; HRESULT hres; - TRACE("(%s,%s,%08x)\n", debugstr_w(pwzUrl1), debugstr_w(pwzUrl2), dwCompareFlags); + TRACE("(%s,%s,%08lx)\n", debugstr_w(pwzUrl1), debugstr_w(pwzUrl2), dwCompareFlags); protocol_info = get_protocol_info(pwzUrl1); @@ -489,7 +422,7 @@ HRESULT WINAPI CoInternetQueryInfo(LPCWSTR pwzUrl, QUERYOPTION QueryOption, IInternetProtocolInfo *protocol_info; HRESULT hres; - TRACE("(%s, %x, %x, %p, %x, %p, %x)\n", debugstr_w(pwzUrl), + TRACE("(%s, %x, %lx, %p, %lx, %p, %lx)\n", debugstr_w(pwzUrl), QueryOption, dwQueryFlags, pvBuffer, cbBuffer, pcbBuffer, dwReserved); protocol_info = get_protocol_info(pwzUrl); @@ -538,7 +471,7 @@ static HRESULT set_internet_feature(INTERNETFEATURELIST feature, DWORD flags, BO return E_FAIL; if(flags & ~supported_flags) - FIXME("Unsupported flags: %08x\n", flags & ~supported_flags); + FIXME("Unsupported flags: %08lx\n", flags & ~supported_flags); if(flags & SET_FEATURE_ON_PROCESS) set_feature_on_process(feature, enable); @@ -552,8 +485,6 @@ static BOOL get_feature_from_reg(HKEY feature_control, LPCWSTR feature_name, LPC HKEY feature; DWORD res; - static const WCHAR wildcardW[] = {'*',0}; - res = RegOpenKeyW(feature_control, feature_name, &feature); if(res != ERROR_SUCCESS) return FALSE; @@ -562,7 +493,7 @@ static BOOL get_feature_from_reg(HKEY feature_control, LPCWSTR feature_name, LPC res = RegQueryValueExW(feature, process_name, NULL, &type, (BYTE*)&value, &size); if(res != ERROR_SUCCESS || type != REG_DWORD) { size = sizeof(DWORD); - res = RegQueryValueExW(feature, wildcardW, NULL, &type, (BYTE*)&value, &size); + res = RegQueryValueExW(feature, L"*", NULL, &type, (BYTE*)&value, &size); } RegCloseKey(feature); @@ -570,7 +501,7 @@ static BOOL get_feature_from_reg(HKEY feature_control, LPCWSTR feature_name, LPC return FALSE; if(type != REG_DWORD) { - WARN("Unexpected registry value type %d (expected REG_DWORD) for %s\n", type, debugstr_w(wildcardW)); + WARN("Unexpected registry value type %ld (expected REG_DWORD) for %s\n", type, debugstr_w(L"*")); return FALSE; } @@ -590,7 +521,7 @@ static HRESULT load_process_feature(INTERNETFEATURELIST feature) BOOL enabled; if (!GetModuleFileNameW(NULL, module_name, ARRAY_SIZE(module_name))) { - ERR("Failed to get module file name: %u\n", GetLastError()); + ERR("Failed to get module file name: %lu\n", GetLastError()); return E_UNEXPECTED; } @@ -663,7 +594,7 @@ static HRESULT get_internet_feature(INTERNETFEATURELIST feature, DWORD flags) if(flags == GET_FEATURE_FROM_PROCESS) hres = get_feature_from_process(feature); else { - FIXME("Unsupported flags: %08x\n", flags); + FIXME("Unsupported flags: %08lx\n", flags); hres = E_NOTIMPL; } @@ -675,7 +606,7 @@ static HRESULT get_internet_feature(INTERNETFEATURELIST feature, DWORD flags) */ HRESULT WINAPI CoInternetSetFeatureEnabled(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags, BOOL fEnable) { - TRACE("(%d, %08x, %x)\n", FeatureEntry, dwFlags, fEnable); + TRACE("(%d, %08lx, %x)\n", FeatureEntry, dwFlags, fEnable); return set_internet_feature(FeatureEntry, dwFlags, fEnable); } @@ -684,7 +615,7 @@ HRESULT WINAPI CoInternetSetFeatureEnabled(INTERNETFEATURELIST FeatureEntry, DWO */ HRESULT WINAPI CoInternetIsFeatureEnabled(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags) { - TRACE("(%d, %08x)\n", FeatureEntry, dwFlags); + TRACE("(%d, %08lx)\n", FeatureEntry, dwFlags); return get_internet_feature(FeatureEntry, dwFlags); } @@ -697,7 +628,7 @@ HRESULT WINAPI CoInternetIsFeatureEnabledForUrl(INTERNETFEATURELIST FeatureEntry DWORD urlaction = 0; HRESULT hres; - TRACE("(%d %08x %s %p)\n", FeatureEntry, dwFlags, debugstr_w(szURL), pSecMgr); + TRACE("(%d %08lx %s %p)\n", FeatureEntry, dwFlags, debugstr_w(szURL), pSecMgr); if(FeatureEntry == FEATURE_MIME_SNIFFING) urlaction = URLACTION_FEATURE_MIME_SNIFFING; @@ -716,7 +647,7 @@ HRESULT WINAPI CoInternetIsFeatureEnabledForUrl(INTERNETFEATURELIST FeatureEntry case GET_FEATURE_FROM_THREAD_TRUSTED: case GET_FEATURE_FROM_THREAD_INTERNET: case GET_FEATURE_FROM_THREAD_RESTRICTED: - FIXME("unsupported flags %x\n", dwFlags); + FIXME("unsupported flags %lx\n", dwFlags); return E_NOTIMPL; case GET_FEATURE_FROM_PROCESS: @@ -745,7 +676,7 @@ HRESULT WINAPI CoInternetIsFeatureZoneElevationEnabled(LPCWSTR szFromURL, LPCWST { HRESULT hres; - TRACE("(%s %s %p %x)\n", debugstr_w(szFromURL), debugstr_w(szToURL), pSecMgr, dwFlags); + TRACE("(%s %s %p %lx)\n", debugstr_w(szFromURL), debugstr_w(szToURL), pSecMgr, dwFlags); if(!pSecMgr || !szToURL) return CoInternetIsFeatureEnabled(FEATURE_ZONE_ELEVATION, dwFlags); @@ -757,7 +688,7 @@ HRESULT WINAPI CoInternetIsFeatureZoneElevationEnabled(LPCWSTR szFromURL, LPCWST case GET_FEATURE_FROM_THREAD_TRUSTED: case GET_FEATURE_FROM_THREAD_INTERNET: case GET_FEATURE_FROM_THREAD_RESTRICTED: - FIXME("unsupported flags %x\n", dwFlags); + FIXME("unsupported flags %lx\n", dwFlags); return E_NOTIMPL; case GET_FEATURE_FROM_PROCESS: diff --git a/dll/win32/urlmon/mimefilter.c b/dll/win32/urlmon/mimefilter.c index ebaed6b77d4..793de18a853 100644 --- a/dll/win32/urlmon/mimefilter.c +++ b/dll/win32/urlmon/mimefilter.c @@ -65,7 +65,7 @@ static ULONG WINAPI MimeFilterProtocol_AddRef(IInternetProtocol *iface) { MimeFilter *This = impl_from_IInternetProtocol(iface); LONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); return ref; } @@ -74,10 +74,10 @@ static ULONG WINAPI MimeFilterProtocol_Release(IInternetProtocol *iface) MimeFilter *This = impl_from_IInternetProtocol(iface); LONG ref = InterlockedDecrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); if(!ref) { - heap_free(This); + free(This); URLMON_UnlockModule(); } @@ -90,7 +90,7 @@ static HRESULT WINAPI MimeFilterProtocol_Start(IInternetProtocol *iface, LPCWSTR DWORD grfPI, HANDLE_PTR dwReserved) { MimeFilter *This = impl_from_IInternetProtocol(iface); - FIXME("(%p)->(%s %p %p %08x %lx)\n", This, debugstr_w(szUrl), pOIProtSink, + FIXME("(%p)->(%s %p %p %08lx %Ix)\n", This, debugstr_w(szUrl), pOIProtSink, pOIBindInfo, grfPI, dwReserved); return E_NOTIMPL; } @@ -106,14 +106,14 @@ static HRESULT WINAPI MimeFilterProtocol_Abort(IInternetProtocol *iface, HRESULT DWORD dwOptions) { MimeFilter *This = impl_from_IInternetProtocol(iface); - FIXME("(%p)->(%08x %08x)\n", This, hrReason, dwOptions); + FIXME("(%p)->(%08lx %08lx)\n", This, hrReason, dwOptions); return E_NOTIMPL; } static HRESULT WINAPI MimeFilterProtocol_Terminate(IInternetProtocol *iface, DWORD dwOptions) { MimeFilter *This = impl_from_IInternetProtocol(iface); - FIXME("(%p)->(%08x)\n", This, dwOptions); + FIXME("(%p)->(%08lx)\n", This, dwOptions); return E_NOTIMPL; } @@ -135,7 +135,7 @@ static HRESULT WINAPI MimeFilterProtocol_Read(IInternetProtocol *iface, void *pv ULONG cb, ULONG *pcbRead) { MimeFilter *This = impl_from_IInternetProtocol(iface); - FIXME("(%p)->(%p %u %p)\n", This, pv, cb, pcbRead); + FIXME("(%p)->(%p %lu %p)\n", This, pv, cb, pcbRead); return E_NOTIMPL; } @@ -143,14 +143,14 @@ static HRESULT WINAPI MimeFilterProtocol_Seek(IInternetProtocol *iface, LARGE_IN DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition) { MimeFilter *This = impl_from_IInternetProtocol(iface); - FIXME("(%p)->(%d %d %p)\n", This, dlibMove.u.LowPart, dwOrigin, plibNewPosition); + FIXME("(%p)->(%ld %ld %p)\n", This, dlibMove.u.LowPart, dwOrigin, plibNewPosition); return E_NOTIMPL; } static HRESULT WINAPI MimeFilterProtocol_LockRequest(IInternetProtocol *iface, DWORD dwOptions) { MimeFilter *This = impl_from_IInternetProtocol(iface); - FIXME("(%p)->(%08x)\n", This, dwOptions); + FIXME("(%p)->(%08lx)\n", This, dwOptions); return E_NOTIMPL; } @@ -213,7 +213,7 @@ static HRESULT WINAPI MimeFilterSink_ReportProgress(IInternetProtocolSink *iface ULONG ulStatusCode, LPCWSTR szStatusText) { MimeFilter *This = impl_from_IInternetProtocolSink(iface); - FIXME("(%p)->(%u %s)\n", This, ulStatusCode, debugstr_w(szStatusText)); + FIXME("(%p)->(%lu %s)\n", This, ulStatusCode, debugstr_w(szStatusText)); return E_NOTIMPL; } @@ -221,7 +221,7 @@ static HRESULT WINAPI MimeFilterSink_ReportData(IInternetProtocolSink *iface, DWORD grfBSCF, ULONG ulProgress, ULONG ulProgressMax) { MimeFilter *This = impl_from_IInternetProtocolSink(iface); - FIXME("(%p)->(%d %u %u)\n", This, grfBSCF, ulProgress, ulProgressMax); + FIXME("(%p)->(%ld %lu %lu)\n", This, grfBSCF, ulProgress, ulProgressMax); return E_NOTIMPL; } @@ -229,7 +229,7 @@ static HRESULT WINAPI MimeFilterSink_ReportResult(IInternetProtocolSink *iface, HRESULT hrResult, DWORD dwError, LPCWSTR szResult) { MimeFilter *This = impl_from_IInternetProtocolSink(iface); - FIXME("(%p)->(%08x %d %s)\n", This, hrResult, dwError, debugstr_w(szResult)); + FIXME("(%p)->(%08lx %ld %s)\n", This, hrResult, dwError, debugstr_w(szResult)); return E_NOTIMPL; } @@ -251,7 +251,7 @@ HRESULT MimeFilter_Construct(IUnknown *pUnkOuter, LPVOID *ppobj) URLMON_LockModule(); - ret = heap_alloc_zero(sizeof(MimeFilter)); + ret = calloc(1, sizeof(MimeFilter)); ret->IInternetProtocol_iface.lpVtbl = &MimeFilterProtocolVtbl; ret->IInternetProtocolSink_iface.lpVtbl = &InternetProtocolSinkVtbl; @@ -428,14 +428,12 @@ HRESULT find_mime_from_ext(const WCHAR *ext, WCHAR **ret) WCHAR mime[64]; HKEY hkey; - static const WCHAR content_typeW[] = {'C','o','n','t','e','n','t',' ','T','y','p','e','\0'}; - res = RegOpenKeyW(HKEY_CLASSES_ROOT, ext, &hkey); if(res != ERROR_SUCCESS) return HRESULT_FROM_WIN32(res); size = sizeof(mime); - res = RegQueryValueExW(hkey, content_typeW, NULL, NULL, (LPBYTE)mime, &size); + res = RegQueryValueExW(hkey, L"Content Type", NULL, NULL, (BYTE*)mime, &size); RegCloseKey(hkey); if(res != ERROR_SUCCESS) return HRESULT_FROM_WIN32(res); @@ -469,7 +467,7 @@ static HRESULT find_mime_from_url(const WCHAR *url, WCHAR **ret) if(*end_ptr) { unsigned len = end_ptr-ptr; - ext = heap_alloc((len+1)*sizeof(WCHAR)); + ext = malloc((len + 1) * sizeof(WCHAR)); if(!ext) return E_OUTOFMEMORY; @@ -478,67 +476,44 @@ static HRESULT find_mime_from_url(const WCHAR *url, WCHAR **ret) } hres = find_mime_from_ext(ext ? ext : ptr, ret); - heap_free(ext); + free(ext); return hres; } -static const WCHAR text_htmlW[] = {'t','e','x','t','/','h','t','m','l',0}; -static const WCHAR text_richtextW[] = {'t','e','x','t','/','r','i','c','h','t','e','x','t',0}; -static const WCHAR text_xmlW[] = {'t','e','x','t','/','x','m','l',0}; -static const WCHAR audio_basicW[] = {'a','u','d','i','o','/','b','a','s','i','c',0}; -static const WCHAR audio_wavW[] = {'a','u','d','i','o','/','w','a','v',0}; -static const WCHAR image_gifW[] = {'i','m','a','g','e','/','g','i','f',0}; -static const WCHAR image_pjpegW[] = {'i','m','a','g','e','/','p','j','p','e','g',0}; -static const WCHAR image_tiffW[] = {'i','m','a','g','e','/','t','i','f','f',0}; -static const WCHAR image_xpngW[] = {'i','m','a','g','e','/','x','-','p','n','g',0}; -static const WCHAR image_bmpW[] = {'i','m','a','g','e','/','b','m','p',0}; -static const WCHAR video_aviW[] = {'v','i','d','e','o','/','a','v','i',0}; -static const WCHAR video_mpegW[] = {'v','i','d','e','o','/','m','p','e','g',0}; -static const WCHAR app_postscriptW[] = - {'a','p','p','l','i','c','a','t','i','o','n','/','p','o','s','t','s','c','r','i','p','t',0}; -static const WCHAR app_pdfW[] = {'a','p','p','l','i','c','a','t','i','o','n','/','p','d','f',0}; -static const WCHAR app_xzipW[] = {'a','p','p','l','i','c','a','t','i','o','n','/', - 'x','-','z','i','p','-','c','o','m','p','r','e','s','s','e','d',0}; -static const WCHAR app_xgzipW[] = {'a','p','p','l','i','c','a','t','i','o','n','/', - 'x','-','g','z','i','p','-','c','o','m','p','r','e','s','s','e','d',0}; -static const WCHAR app_javaW[] = {'a','p','p','l','i','c','a','t','i','o','n','/','j','a','v','a',0}; -static const WCHAR app_xmsdownloadW[] = {'a','p','p','l','i','c','a','t','i','o','n','/', - 'x','-','m','s','d','o','w','n','l','o','a','d',0}; -static const WCHAR text_plainW[] = {'t','e','x','t','/','p','l','a','i','n','\0'}; -static const WCHAR app_octetstreamW[] = {'a','p','p','l','i','c','a','t','i','o','n','/', - 'o','c','t','e','t','-','s','t','r','e','a','m','\0'}; +static const WCHAR text_plainW[] = L"text/plain"; +static const WCHAR app_octetstreamW[] = L"application/octet-stream"; static const struct { const WCHAR *mime; BOOL (*filter)(const BYTE *,DWORD); } mime_filters_any_pos[] = { - {text_htmlW, text_html_filter}, - {text_xmlW, text_xml_filter} + {L"text/html", text_html_filter}, + {L"text/xml", text_xml_filter} }, mime_filters[] = { - {text_richtextW, text_richtext_filter}, - /* {audio_xaiffW, audio_xaiff_filter}, */ - {audio_basicW, audio_basic_filter}, - {audio_wavW, audio_wav_filter}, - {image_gifW, image_gif_filter}, - {image_pjpegW, image_pjpeg_filter}, - {image_tiffW, image_tiff_filter}, - {image_xpngW, image_xpng_filter}, - /* {image_xbitmapW, image_xbitmap_filter}, */ - {image_bmpW, image_bmp_filter}, - /* {image_xjgW, image_xjg_filter}, */ - /* {image_xemfW, image_xemf_filter}, */ - /* {image_xwmfW, image_xwmf_filter}, */ - {video_aviW, video_avi_filter}, - {video_mpegW, video_mpeg_filter}, - {app_postscriptW, application_postscript_filter}, - /* {app_base64W, application_base64_filter}, */ - /* {app_macbinhex40W, application_macbinhex40_filter}, */ - {app_pdfW, application_pdf_filter}, - /* {app_zcompressedW, application_xcompressed_filter}, */ - {app_xzipW, application_xzip_filter}, - {app_xgzipW, application_xgzip_filter}, - {app_javaW, application_java_filter}, - {app_xmsdownloadW, application_xmsdownload}, + {L"text/richtext", text_richtext_filter}, + /* {L"audio/x-aiff", audio_xaiff_filter}, */ + {L"audio/basic", audio_basic_filter}, + {L"audio/wav", audio_wav_filter}, + {L"image/gif", image_gif_filter}, + {L"image/pjpeg", image_pjpeg_filter}, + {L"image/tiff", image_tiff_filter}, + {L"image/x-png", image_xpng_filter}, + /* {L"image/x-bitmap", image_xbitmap_filter}, */ + {L"image/bmp", image_bmp_filter}, + /* {L"image/x-jg", image_xjg_filter}, */ + /* {L"image/x-emf", image_xemf_filter}, */ + /* {L"image/x-wmf", image_xwmf_filter}, */ + {L"video/avi", video_avi_filter}, + {L"video/mpeg", video_mpeg_filter}, + {L"application/postscript", application_postscript_filter}, + /* {L"application/base64", application_base64_filter}, */ + /* {L"application/mac-binhex40", application_macbinhex40_filter}, */ + {L"application/pdf", application_pdf_filter}, + /* {L"application/x-compressed", application_xcompressed_filter}, */ + {L"application/x-zip-compressed", application_xzip_filter}, + {L"application/x-gzip-compressed", application_xgzip_filter}, + {L"application/java", application_java_filter}, + {L"application/x-msdownload", application_xmsdownload}, {text_plainW, text_plain_filter}, {app_octetstreamW, application_octet_stream_filter} }; @@ -681,13 +656,13 @@ HRESULT WINAPI FindMimeFromData(LPBC pBC, LPCWSTR pwzUrl, LPVOID pBuffer, DWORD cbSize, LPCWSTR pwzMimeProposed, DWORD dwMimeFlags, LPWSTR* ppwzMimeOut, DWORD dwReserved) { - TRACE("(%p,%s,%p,%d,%s,0x%x,%p,0x%x)\n", pBC, debugstr_w(pwzUrl), pBuffer, cbSize, + TRACE("(%p,%s,%p,%ld,%s,0x%lx,%p,0x%lx)\n", pBC, debugstr_w(pwzUrl), pBuffer, cbSize, debugstr_w(pwzMimeProposed), dwMimeFlags, ppwzMimeOut, dwReserved); if(dwMimeFlags) - WARN("dwMimeFlags=%08x\n", dwMimeFlags); + WARN("dwMimeFlags=%08lx\n", dwMimeFlags); if(dwReserved) - WARN("dwReserved=%d\n", dwReserved); + WARN("dwReserved=%ld\n", dwReserved); /* pBC seems to not be used */ diff --git a/dll/win32/urlmon/mk.c b/dll/win32/urlmon/mk.c index 697b5f2bf8b..54c01c7148c 100644 --- a/dll/win32/urlmon/mk.c +++ b/dll/win32/urlmon/mk.c @@ -74,7 +74,7 @@ static ULONG WINAPI MkProtocolUnk_AddRef(IUnknown *iface) { MkProtocol *This = impl_from_IUnknown(iface); LONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); return ref; } @@ -83,13 +83,13 @@ static ULONG WINAPI MkProtocolUnk_Release(IUnknown *iface) MkProtocol *This = impl_from_IUnknown(iface); LONG ref = InterlockedDecrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); if(!ref) { if(This->stream) IStream_Release(This->stream); - heap_free(This); + free(This); URLMON_UnlockModule(); } @@ -138,7 +138,7 @@ static HRESULT WINAPI MkProtocol_Start(IInternetProtocolEx *iface, LPCWSTR szUrl HRESULT hres; IUri *uri; - TRACE("(%p)->(%s %p %p %08x %lx)\n", This, debugstr_w(szUrl), pOIProtSink, + TRACE("(%p)->(%s %p %p %08lx %Ix)\n", This, debugstr_w(szUrl), pOIProtSink, pOIBindInfo, grfPI, dwReserved); hres = CreateUri(szUrl, 0, 0, &uri); @@ -163,7 +163,7 @@ static HRESULT WINAPI MkProtocol_Abort(IInternetProtocolEx *iface, HRESULT hrRea DWORD dwOptions) { MkProtocol *This = impl_from_IInternetProtocolEx(iface); - FIXME("(%p)->(%08x %08x)\n", This, hrReason, dwOptions); + FIXME("(%p)->(%08lx %08lx)\n", This, hrReason, dwOptions); return E_NOTIMPL; } @@ -171,7 +171,7 @@ static HRESULT WINAPI MkProtocol_Terminate(IInternetProtocolEx *iface, DWORD dwO { MkProtocol *This = impl_from_IInternetProtocolEx(iface); - TRACE("(%p)->(%08x)\n", This, dwOptions); + TRACE("(%p)->(%08lx)\n", This, dwOptions); return S_OK; } @@ -195,7 +195,7 @@ static HRESULT WINAPI MkProtocol_Read(IInternetProtocolEx *iface, void *pv, { MkProtocol *This = impl_from_IInternetProtocolEx(iface); - TRACE("(%p)->(%p %u %p)\n", This, pv, cb, pcbRead); + TRACE("(%p)->(%p %lu %p)\n", This, pv, cb, pcbRead); if(!This->stream) return E_FAIL; @@ -207,7 +207,7 @@ static HRESULT WINAPI MkProtocol_Seek(IInternetProtocolEx *iface, LARGE_INTEGER DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition) { MkProtocol *This = impl_from_IInternetProtocolEx(iface); - FIXME("(%p)->(%d %d %p)\n", This, dlibMove.u.LowPart, dwOrigin, plibNewPosition); + FIXME("(%p)->(%ld %ld %p)\n", This, dlibMove.u.LowPart, dwOrigin, plibNewPosition); return E_NOTIMPL; } @@ -215,7 +215,7 @@ static HRESULT WINAPI MkProtocol_LockRequest(IInternetProtocolEx *iface, DWORD d { MkProtocol *This = impl_from_IInternetProtocolEx(iface); - TRACE("(%p)->(%08x)\n", This, dwOptions); + TRACE("(%p)->(%08lx)\n", This, dwOptions); return S_OK; } @@ -244,7 +244,7 @@ static HRESULT WINAPI MkProtocol_StartEx(IInternetProtocolEx *iface, IUri *pUri, HRESULT hres; CLSID clsid; - TRACE("(%p)->(%p %p %p %08x %p)\n", This, pUri, pOIProtSink, + TRACE("(%p)->(%p %p %p %08lx %p)\n", This, pUri, pOIProtSink, pOIBindInfo, grfPI, dwReserved); hres = IUri_GetScheme(pUri, &scheme); @@ -257,7 +257,7 @@ static HRESULT WINAPI MkProtocol_StartEx(IInternetProtocolEx *iface, IUri *pUri, bindinfo.cbSize = sizeof(BINDINFO); hres = IInternetBindInfo_GetBindInfo(pOIBindInfo, &bindf, &bindinfo); if(FAILED(hres)) { - WARN("GetBindInfo failed: %08x\n", hres); + WARN("GetBindInfo failed: %08lx\n", hres); return hres; } @@ -293,7 +293,7 @@ static HRESULT WINAPI MkProtocol_StartEx(IInternetProtocolEx *iface, IUri *pUri, } len = lstrlenW(path); - display_name = heap_alloc((len+1)*sizeof(WCHAR)); + display_name = malloc((len + 1) * sizeof(WCHAR)); memcpy(display_name, path, (len+1)*sizeof(WCHAR)); progid[colon_ptr-progid] = 0; /* overwrite ':' with NULL terminator */ @@ -301,7 +301,7 @@ static HRESULT WINAPI MkProtocol_StartEx(IInternetProtocolEx *iface, IUri *pUri, SysFreeString(path); if(FAILED(hres)) { - heap_free(display_name); + free(display_name); return report_result(pOIProtSink, INET_E_RESOURCE_NOT_FOUND, ERROR_INVALID_PARAMETER); } @@ -309,15 +309,15 @@ static HRESULT WINAPI MkProtocol_StartEx(IInternetProtocolEx *iface, IUri *pUri, &IID_IParseDisplayName, (void**)&pdn); if(FAILED(hres)) { WARN("Could not create object %s\n", debugstr_guid(&clsid)); - heap_free(display_name); + free(display_name); return report_result(pOIProtSink, hres, ERROR_INVALID_PARAMETER); } hres = IParseDisplayName_ParseDisplayName(pdn, NULL /* FIXME */, display_name, &eaten, &mon); - heap_free(display_name); + free(display_name); IParseDisplayName_Release(pdn); if(FAILED(hres)) { - WARN("ParseDisplayName failed: %08x\n", hres); + WARN("ParseDisplayName failed: %08lx\n", hres); return report_result(pOIProtSink, hres, ERROR_INVALID_PARAMETER); } @@ -329,13 +329,13 @@ static HRESULT WINAPI MkProtocol_StartEx(IInternetProtocolEx *iface, IUri *pUri, hres = IMoniker_BindToStorage(mon, NULL /* FIXME */, NULL, &IID_IStream, (void**)&This->stream); IMoniker_Release(mon); if(FAILED(hres)) { - WARN("BindToStorage failed: %08x\n", hres); + WARN("BindToStorage failed: %08lx\n", hres); return report_result(pOIProtSink, hres, ERROR_INVALID_PARAMETER); } hres = IStream_Stat(This->stream, &statstg, STATFLAG_NONAME); if(FAILED(hres)) { - WARN("Stat failed: %08x\n", hres); + WARN("Stat failed: %08lx\n", hres); return report_result(pOIProtSink, hres, ERROR_INVALID_PARAMETER); } @@ -370,7 +370,7 @@ HRESULT MkProtocol_Construct(IUnknown *outer, void **ppv) URLMON_LockModule(); - ret = heap_alloc(sizeof(MkProtocol)); + ret = malloc(sizeof(MkProtocol)); ret->IUnknown_inner.lpVtbl = &MkProtocolUnkVtbl; ret->IInternetProtocolEx_iface.lpVtbl = &MkProtocolVtbl; diff --git a/dll/win32/urlmon/precomp.h b/dll/win32/urlmon/precomp.h index 814f061f619..0d8d2c5849b 100644 --- a/dll/win32/urlmon/precomp.h +++ b/dll/win32/urlmon/precomp.h @@ -6,8 +6,6 @@ #define _INC_WINDOWS #define COM_NO_WINDOWS_H -#define NONAMELESSUNION -#define NONAMELESSSTRUCT #define OEMRESOURCE #include "urlmon_main.h" diff --git a/dll/win32/urlmon/protocol.c b/dll/win32/urlmon/protocol.c index e6ffd366693..6c08393b809 100644 --- a/dll/win32/urlmon/protocol.c +++ b/dll/win32/urlmon/protocol.c @@ -113,7 +113,7 @@ HRESULT protocol_syncbinding(Protocol *protocol) if(res) protocol->available_bytes = protocol->query_available; else - WARN("InternetQueryDataAvailable failed: %u\n", GetLastError()); + WARN("InternetQueryDataAvailable failed: %lu\n", GetLastError()); protocol->flags |= FLAG_FIRST_DATA_REPORTED|FLAG_LAST_DATA_REPORTED; IInternetProtocolSink_ReportData(protocol->protocol_sink, BSCF_LASTDATANOTIFICATION|BSCF_DATAFULLYAVAILABLE, @@ -171,12 +171,12 @@ static void WINAPI internet_status_callback(HINTERNET internet, DWORD_PTR contex TRACE("%p INTERNET_STATUS_CONNECTING_TO_SERVER %s\n", protocol, (const char*)status_info); - info = heap_strdupAtoW(status_info); + info = strdupAtoW(status_info); if(!info) return; report_progress(protocol, BINDSTATUS_CONNECTING, info); - heap_free(info); + free(info); break; } @@ -221,7 +221,7 @@ static void WINAPI internet_status_callback(HINTERNET internet, DWORD_PTR contex break; default: - WARN("Unhandled Internet status callback %d\n", internet_status); + WARN("Unhandled Internet status callback %ld\n", internet_status); } } @@ -242,7 +242,7 @@ static HRESULT write_post_stream(Protocol *protocol) break; res = InternetWriteFile(protocol->request, buf, size, &written); if(!res) { - FIXME("InternetWriteFile failed: %u\n", GetLastError()); + FIXME("InternetWriteFile failed: %lu\n", GetLastError()); hres = E_FAIL; break; } @@ -274,10 +274,10 @@ static HINTERNET create_internet_session(IInternetBindInfo *bind_info) global_user_agent = get_useragent(); ret = InternetOpenW(user_agent ? user_agent : global_user_agent, 0, NULL, NULL, INTERNET_FLAG_ASYNC); - heap_free(global_user_agent); + free(global_user_agent); CoTaskMemFree(user_agent); if(!ret) { - WARN("InternetOpen failed: %d\n", GetLastError()); + WARN("InternetOpen failed: %ld\n", GetLastError()); return NULL; } @@ -325,7 +325,7 @@ HRESULT protocol_start(Protocol *protocol, IInternetProtocol *prot, IUri *uri, protocol->bind_info.cbSize = sizeof(BINDINFO); hres = IInternetBindInfo_GetBindInfo(bind_info, &protocol->bindf, &protocol->bind_info); if(hres != S_OK) { - WARN("GetBindInfo failed: %08x\n", hres); + WARN("GetBindInfo failed: %08lx\n", hres); return report_result(protocol, hres); } @@ -397,7 +397,7 @@ HRESULT protocol_continue(Protocol *protocol, PROTOCOLDATA *data) protocol->flags &= ~FLAG_REQUEST_COMPLETE; res = InternetQueryDataAvailable(protocol->request, &protocol->query_available, 0, 0); if(res) { - TRACE("available %u bytes\n", protocol->query_available); + TRACE("available %lu bytes\n", protocol->query_available); if(!protocol->query_available) { all_data_read(protocol); return S_OK; @@ -405,7 +405,7 @@ HRESULT protocol_continue(Protocol *protocol, PROTOCOLDATA *data) protocol->available_bytes = protocol->query_available; }else if(GetLastError() != ERROR_IO_PENDING) { protocol->flags |= FLAG_REQUEST_COMPLETE; - WARN("InternetQueryDataAvailable failed: %d\n", GetLastError()); + WARN("InternetQueryDataAvailable failed: %ld\n", GetLastError()); report_result(protocol, INET_E_DATA_NOT_AVAILABLE); return S_OK; } @@ -442,7 +442,7 @@ HRESULT protocol_read(Protocol *protocol, void *buf, ULONG size, ULONG *read_ret res = InternetReadFile(protocol->request, ((BYTE *)buf)+read, protocol->available_bytes > size-read ? size-read : protocol->available_bytes, &len); if(!res) { - WARN("InternetReadFile failed: %d\n", GetLastError()); + WARN("InternetReadFile failed: %ld\n", GetLastError()); hres = INET_E_DOWNLOAD_FAILURE; report_result(protocol, hres); break; @@ -457,7 +457,7 @@ HRESULT protocol_read(Protocol *protocol, void *buf, ULONG size, ULONG *read_ret protocol->current_position += len; protocol->available_bytes -= len; - TRACE("current_position %d, available_bytes %d\n", protocol->current_position, protocol->available_bytes); + TRACE("current_position %ld, available_bytes %ld\n", protocol->current_position, protocol->available_bytes); if(!protocol->available_bytes) { /* InternetQueryDataAvailable may immediately fork and perform its asynchronous @@ -469,7 +469,7 @@ HRESULT protocol_read(Protocol *protocol, void *buf, ULONG size, ULONG *read_ret if (GetLastError() == ERROR_IO_PENDING) { hres = E_PENDING; }else { - WARN("InternetQueryDataAvailable failed: %d\n", GetLastError()); + WARN("InternetQueryDataAvailable failed: %ld\n", GetLastError()); hres = INET_E_DATA_NOT_AVAILABLE; report_result(protocol, hres); } @@ -498,7 +498,7 @@ HRESULT protocol_read(Protocol *protocol, void *buf, ULONG size, ULONG *read_ret HRESULT protocol_lock_request(Protocol *protocol) { if (!InternetLockRequestFile(protocol->request, &protocol->lock)) - WARN("InternetLockRequest failed: %d\n", GetLastError()); + WARN("InternetLockRequestFile failed: %ld\n", GetLastError()); return S_OK; } @@ -509,7 +509,7 @@ HRESULT protocol_unlock_request(Protocol *protocol) return S_OK; if(!InternetUnlockRequestFile(protocol->lock)) - WARN("InternetUnlockRequest failed: %d\n", GetLastError()); + WARN("InternetUnlockRequestFile failed: %ld\n", GetLastError()); protocol->lock = 0; return S_OK; diff --git a/dll/win32/urlmon/resource.h b/dll/win32/urlmon/resource.h index 8515a132cd9..3ff2ac690a5 100644 --- a/dll/win32/urlmon/resource.h +++ b/dll/win32/urlmon/resource.h @@ -16,8 +16,6 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#pragma once - #define ID_AXINSTALL_WARNING_DLG 1000 #define ID_AXINSTALL_LOCATION 1001 #define ID_AXINSTALL_INSTALL_BTN 1002 diff --git a/dll/win32/urlmon/sec_mgr.c b/dll/win32/urlmon/sec_mgr.c index af6cf212bd4..82266066e0f 100644 --- a/dll/win32/urlmon/sec_mgr.c +++ b/dll/win32/urlmon/sec_mgr.c @@ -33,35 +33,12 @@ #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(urlmon); - -static const WCHAR currentlevelW[] = {'C','u','r','r','e','n','t','L','e','v','e','l',0}; -static const WCHAR descriptionW[] = {'D','e','s','c','r','i','p','t','i','o','n',0}; -static const WCHAR displaynameW[] = {'D','i','s','p','l','a','y','N','a','m','e',0}; -static const WCHAR fileW[] = {'f','i','l','e',0}; -static const WCHAR flagsW[] = {'F','l','a','g','s',0}; -static const WCHAR iconW[] = {'I','c','o','n',0}; -static const WCHAR minlevelW[] = {'M','i','n','L','e','v','e','l',0}; -static const WCHAR recommendedlevelW[] = {'R','e','c','o','m','m','e','n','d','e','d', - 'L','e','v','e','l',0}; -static const WCHAR wszZonesKey[] = {'S','o','f','t','w','a','r','e','\\', - 'M','i','c','r','o','s','o','f','t','\\', - 'W','i','n','d','o','w','s','\\', - 'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\', - 'I','n','t','e','r','n','e','t',' ','S','e','t','t','i','n','g','s','\\', - 'Z','o','n','e','s','\\',0}; -static const WCHAR zone_map_keyW[] = {'S','o','f','t','w','a','r','e','\\', - 'M','i','c','r','o','s','o','f','t','\\', - 'W','i','n','d','o','w','s','\\', - 'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\', - 'I','n','t','e','r','n','e','t',' ','S','e','t','t','i','n','g','s','\\', - 'Z','o','n','e','M','a','p',0}; -static const WCHAR wszZoneMapDomainsKey[] = {'S','o','f','t','w','a','r','e','\\', - 'M','i','c','r','o','s','o','f','t','\\', - 'W','i','n','d','o','w','s','\\', - 'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\', - 'I','n','t','e','r','n','e','t',' ','S','e','t','t','i','n','g','s','\\', - 'Z','o','n','e','M','a','p','\\', - 'D','o','m','a','i','n','s',0}; +static const WCHAR wszZonesKey[] = + L"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\"; +static const WCHAR zone_map_keyW[] = + L"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap"; +static const WCHAR wszZoneMapDomainsKey[] = + L"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\Domains"; static inline BOOL is_drive_path(const WCHAR *path) { @@ -98,7 +75,7 @@ static void get_string_from_reg(HKEY hcu, HKEY hklm, LPCWSTR name, LPWSTR out, D } if (res) { - TRACE("%s failed: %d\n", debugstr_w(name), res); + TRACE("%s failed: %ld\n", debugstr_w(name), res); *out = '\0'; } } @@ -124,7 +101,7 @@ static void get_dword_from_reg(HKEY hcu, HKEY hklm, LPCWSTR name, LPDWORD out) } if (res) { - TRACE("%s failed: %d\n", debugstr_w(name), res); + TRACE("%s failed: %ld\n", debugstr_w(name), res); *out = 0; } } @@ -135,13 +112,7 @@ static HRESULT get_zone_from_reg(LPCWSTR schema, DWORD *zone) HKEY hkey; static const WCHAR wszZoneMapProtocolKey[] = - {'S','o','f','t','w','a','r','e','\\', - 'M','i','c','r','o','s','o','f','t','\\', - 'W','i','n','d','o','w','s','\\', - 'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\', - 'I','n','t','e','r','n','e','t',' ','S','e','t','t','i','n','g','s','\\', - 'Z','o','n','e','M','a','p','\\', - 'P','r','o','t','o','c','o','l','D','e','f','a','u','l','t','s',0}; + L"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\ProtocolDefaults"; res = RegOpenKeyW(HKEY_CURRENT_USER, wszZoneMapProtocolKey, &hkey); if(res != ERROR_SUCCESS) { @@ -262,8 +233,6 @@ static BOOL matches_domain_pattern(LPCWSTR pattern, LPCWSTR str, BOOL implicit_w static BOOL get_zone_for_scheme(HKEY key, LPCWSTR schema, DWORD *zone) { - static const WCHAR wildcardW[] = {'*',0}; - DWORD res; DWORD size = sizeof(DWORD); DWORD type; @@ -273,17 +242,17 @@ static BOOL get_zone_for_scheme(HKEY key, LPCWSTR schema, DWORD *zone) if(res == ERROR_SUCCESS) { if(type == REG_DWORD) return TRUE; - WARN("Unexpected value type %d for value %s, expected REG_DWORD\n", type, debugstr_w(schema)); + WARN("Unexpected value type %ld for value %s, expected REG_DWORD\n", type, debugstr_w(schema)); } /* Try to get the zone for the wildcard scheme. */ size = sizeof(DWORD); - res = RegQueryValueExW(key, wildcardW, NULL, &type, (BYTE*)zone, &size); + res = RegQueryValueExW(key, L"*", NULL, &type, (BYTE*)zone, &size); if(res != ERROR_SUCCESS) return FALSE; if(type != REG_DWORD) { - WARN("Unexpected value type %d for value %s, expected REG_DWORD\n", type, debugstr_w(wildcardW)); + WARN("Unexpected value type %ld for value %s, expected REG_DWORD\n", type, debugstr_w(L"*")); return FALSE; } @@ -309,7 +278,7 @@ static HRESULT search_domain_for_zone(HKEY domains, LPCWSTR domain, DWORD domain if(host_len >= domain_len && matches_domain_pattern(domain, host, TRUE, &matched)) { res = RegOpenKeyW(domains, domain, &domain_key); if(res != ERROR_SUCCESS) { - ERR("Failed to open domain key %s: %d\n", debugstr_w(domain), res); + ERR("Failed to open domain key %s: %ld\n", debugstr_w(domain), res); return E_UNEXPECTED; } @@ -325,7 +294,7 @@ static HRESULT search_domain_for_zone(HKEY domains, LPCWSTR domain, DWORD domain res = RegQueryInfoKeyW(domain_key, NULL, NULL, NULL, &subdomain_count, &subdomain_len, NULL, NULL, NULL, NULL, NULL, NULL); if(res != ERROR_SUCCESS) { - ERR("Unable to query info for key %s: %d\n", debugstr_w(domain), res); + ERR("Unable to query info for key %s: %ld\n", debugstr_w(domain), res); RegCloseKey(domain_key); return E_UNEXPECTED; } @@ -335,15 +304,15 @@ static HRESULT search_domain_for_zone(HKEY domains, LPCWSTR domain, DWORD domain WCHAR *component; DWORD i; - subdomain = heap_alloc((subdomain_len+1)*sizeof(WCHAR)); + subdomain = malloc((subdomain_len + 1) * sizeof(WCHAR)); if(!subdomain) { RegCloseKey(domain_key); return E_OUTOFMEMORY; } - component = heap_strndupW(host, matched-host-1); + component = strndupW(host, matched-host - 1); if(!component) { - heap_free(subdomain); + free(subdomain); RegCloseKey(domain_key); return E_OUTOFMEMORY; } @@ -354,8 +323,8 @@ static HRESULT search_domain_for_zone(HKEY domains, LPCWSTR domain, DWORD domain res = RegEnumKeyExW(domain_key, i, subdomain, &len, NULL, NULL, NULL, NULL); if(res != ERROR_SUCCESS) { - heap_free(component); - heap_free(subdomain); + free(component); + free(subdomain); RegCloseKey(domain_key); return E_UNEXPECTED; } @@ -365,10 +334,10 @@ static HRESULT search_domain_for_zone(HKEY domains, LPCWSTR domain, DWORD domain res = RegOpenKeyW(domain_key, subdomain, &subdomain_key); if(res != ERROR_SUCCESS) { - ERR("Unable to open subdomain key %s of %s: %d\n", debugstr_w(subdomain), + ERR("Unable to open subdomain key %s of %s: %ld\n", debugstr_w(subdomain), debugstr_w(domain), res); - heap_free(component); - heap_free(subdomain); + free(component); + free(subdomain); RegCloseKey(domain_key); return E_UNEXPECTED; } @@ -379,8 +348,8 @@ static HRESULT search_domain_for_zone(HKEY domains, LPCWSTR domain, DWORD domain break; } } - heap_free(subdomain); - heap_free(component); + free(subdomain); + free(component); } /* There's a chance that 'host' implicitly mapped into 'domain', in @@ -431,7 +400,7 @@ static HRESULT search_for_domain_mapping(HKEY domains, LPCWSTR schema, LPCWSTR h if(!domain_count) return S_FALSE; - domain = heap_alloc((domain_len+1)*sizeof(WCHAR)); + domain = malloc((domain_len + 1) * sizeof(WCHAR)); if(!domain) return E_OUTOFMEMORY; @@ -440,7 +409,7 @@ static HRESULT search_for_domain_mapping(HKEY domains, LPCWSTR schema, LPCWSTR h res = RegEnumKeyExW(domains, i, domain, &len, NULL, NULL, NULL, NULL); if(res != ERROR_SUCCESS) { - heap_free(domain); + free(domain); return E_UNEXPECTED; } @@ -449,7 +418,7 @@ static HRESULT search_for_domain_mapping(HKEY domains, LPCWSTR schema, LPCWSTR h break; } - heap_free(domain); + free(domain); return hres; } @@ -528,7 +497,7 @@ static HRESULT map_security_uri_to_zone(IUri *uri, DWORD *zone) if(FAILED(hres)) return hres; - if(!wcsicmp(scheme, fileW)) { + if(!wcsicmp(scheme, L"file")) { BSTR path; WCHAR *ptr, *path_start, root[20]; @@ -639,12 +608,10 @@ static HRESULT map_uri_to_zone(IUri *uri, DWORD *zone, IUri **ret_uri) static HRESULT open_zone_key(HKEY parent_key, DWORD zone, HKEY *hkey) { - static const WCHAR wszFormat[] = {'%','s','%','u',0}; - WCHAR key_name[ARRAY_SIZE(wszZonesKey) + 12]; DWORD res; - wsprintfW(key_name, wszFormat, wszZonesKey, zone); + wsprintfW(key_name, L"%s%u", wszZonesKey, zone); res = RegOpenKeyW(parent_key, key_name, hkey); @@ -688,9 +655,7 @@ static HRESULT get_action_policy(DWORD zone, DWORD action, BYTE *policy, DWORD s WCHAR action_str[16]; DWORD len = size; - static const WCHAR formatW[] = {'%','X',0}; - - wsprintfW(action_str, formatW, action); + wsprintfW(action_str, L"%X", action); res = RegQueryValueExW(hkey, action_str, NULL, NULL, policy, &len); if(res == ERROR_MORE_DATA) { @@ -698,7 +663,7 @@ static HRESULT get_action_policy(DWORD zone, DWORD action, BYTE *policy, DWORD s }else if(res == ERROR_FILE_NOT_FOUND) { hres = E_FAIL; }else if(res != ERROR_SUCCESS) { - ERR("RegQueryValue failed: %d\n", res); + ERR("RegQueryValue failed: %ld\n", res); hres = E_UNEXPECTED; } @@ -879,7 +844,7 @@ static ULONG WINAPI SecManagerImpl_AddRef(IInternetSecurityManagerEx2* iface) SecManagerImpl *This = impl_from_IInternetSecurityManagerEx2(iface); ULONG refCount = InterlockedIncrement(&This->ref); - TRACE("(%p) ref=%u\n", This, refCount); + TRACE("(%p) ref=%lu\n", This, refCount); return refCount; } @@ -889,7 +854,7 @@ static ULONG WINAPI SecManagerImpl_Release(IInternetSecurityManagerEx2* iface) SecManagerImpl *This = impl_from_IInternetSecurityManagerEx2(iface); ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p) ref=%u\n", This, refCount); + TRACE("(%p) ref=%lu\n", This, refCount); /* destroy the object if there are no more references on it */ if (!refCount){ @@ -898,7 +863,7 @@ static ULONG WINAPI SecManagerImpl_Release(IInternetSecurityManagerEx2* iface) if(This->custom_manager) IInternetSecurityManager_Release(This->custom_manager); - heap_free(This); + free(This); URLMON_UnlockModule(); } @@ -965,7 +930,7 @@ static HRESULT WINAPI SecManagerImpl_MapUrlToZone(IInternetSecurityManagerEx2 *i SecManagerImpl *This = impl_from_IInternetSecurityManagerEx2(iface); HRESULT hres; - TRACE("(%p)->(%s %p %08x)\n", iface, debugstr_w(pwszUrl), pdwZone, dwFlags); + TRACE("(%p)->(%s %p %08lx)\n", iface, debugstr_w(pwszUrl), pdwZone, dwFlags); if(This->custom_manager) { hres = IInternetSecurityManager_MapUrlToZone(This->custom_manager, @@ -980,7 +945,7 @@ static HRESULT WINAPI SecManagerImpl_MapUrlToZone(IInternetSecurityManagerEx2 *i } if(dwFlags) - FIXME("not supported flags: %08x\n", dwFlags); + FIXME("not supported flags: %08lx\n", dwFlags); return map_url_to_zone(pwszUrl, pdwZone, NULL); } @@ -990,7 +955,7 @@ static HRESULT WINAPI SecManagerImpl_GetSecurityId(IInternetSecurityManagerEx2 * { SecManagerImpl *This = impl_from_IInternetSecurityManagerEx2(iface); - TRACE("(%p)->(%s %p %p %08lx)\n", iface, debugstr_w(pwszUrl), pbSecurityId, + TRACE("(%p)->(%s %p %p %08Ix)\n", iface, debugstr_w(pwszUrl), pbSecurityId, pcbSecurityId, dwReserved); if(This->custom_manager) { @@ -1022,7 +987,7 @@ static HRESULT WINAPI SecManagerImpl_ProcessUrlAction(IInternetSecurityManagerEx DWORD zone, policy; HRESULT hres; - TRACE("(%p)->(%s %08x %p %08x %p %08x %08x %08x)\n", iface, debugstr_w(pwszUrl), dwAction, + TRACE("(%p)->(%s %08lx %p %08lx %p %08lx %08lx %08lx)\n", iface, debugstr_w(pwszUrl), dwAction, pPolicy, cbPolicy, pContext, cbContext, dwFlags, dwReserved); if(This->custom_manager) { @@ -1046,7 +1011,7 @@ static HRESULT WINAPI SecManagerImpl_ProcessUrlAction(IInternetSecurityManagerEx if(FAILED(hres)) return hres; - TRACE("policy %x\n", policy); + TRACE("policy %lx\n", policy); if(cbPolicy >= sizeof(DWORD)) *(DWORD*)pPolicy = policy; @@ -1060,7 +1025,7 @@ static HRESULT WINAPI SecManagerImpl_ProcessUrlAction(IInternetSecurityManagerEx FIXME("URLPOLICY_QUERY not implemented\n"); return E_FAIL; default: - FIXME("Not implemented policy %x\n", policy); + FIXME("Not implemented policy %lx\n", policy); } return E_FAIL; @@ -1076,7 +1041,7 @@ static HRESULT WINAPI SecManagerImpl_QueryCustomPolicy(IInternetSecurityManagerE SecManagerImpl *This = impl_from_IInternetSecurityManagerEx2(iface); HRESULT hres; - TRACE("(%p)->(%s %s %p %p %p %08x %08x )\n", iface, debugstr_w(pwszUrl), debugstr_guid(guidKey), + TRACE("(%p)->(%s %s %p %p %p %08lx %08lx )\n", iface, debugstr_w(pwszUrl), debugstr_guid(guidKey), ppPolicy, pcbPolicy, pContext, cbContext, dwReserved); if(This->custom_manager) { @@ -1096,7 +1061,7 @@ static HRESULT WINAPI SecManagerImpl_SetZoneMapping(IInternetSecurityManagerEx2 SecManagerImpl *This = impl_from_IInternetSecurityManagerEx2(iface); HRESULT hres; - TRACE("(%p)->(%08x %s %08x)\n", iface, dwZone, debugstr_w(pwszPattern),dwFlags); + TRACE("(%p)->(%08lx %s %08lx)\n", iface, dwZone, debugstr_w(pwszPattern),dwFlags); if(This->custom_manager) { hres = IInternetSecurityManager_SetZoneMapping(This->custom_manager, dwZone, @@ -1115,7 +1080,7 @@ static HRESULT WINAPI SecManagerImpl_GetZoneMappings(IInternetSecurityManagerEx2 SecManagerImpl *This = impl_from_IInternetSecurityManagerEx2(iface); HRESULT hres; - TRACE("(%p)->(%08x %p %08x)\n", iface, dwZone, ppenumString,dwFlags); + TRACE("(%p)->(%08lx %p %08lx)\n", iface, dwZone, ppenumString,dwFlags); if(This->custom_manager) { hres = IInternetSecurityManager_GetZoneMappings(This->custom_manager, dwZone, @@ -1133,7 +1098,7 @@ static HRESULT WINAPI SecManagerImpl_ProcessUrlActionEx(IInternetSecurityManager DWORD dwFlags, DWORD dwReserved, DWORD *pdwOutFlags) { SecManagerImpl *This = impl_from_IInternetSecurityManagerEx2(iface); - FIXME("(%p)->(%s %08x %p %d %p %d %08x %08x %p) stub\n", This, debugstr_w(pwszUrl), dwAction, pPolicy, cbPolicy, + FIXME("(%p)->(%s %08lx %p %ld %p %ld %08lx %08lx %p) stub\n", This, debugstr_w(pwszUrl), dwAction, pPolicy, cbPolicy, pContext, cbContext, dwFlags, dwReserved, pdwOutFlags); return E_NOTIMPL; } @@ -1143,7 +1108,7 @@ static HRESULT WINAPI SecManagerImpl_MapUrlToZoneEx2(IInternetSecurityManagerEx2 { SecManagerImpl *This = impl_from_IInternetSecurityManagerEx2(iface); - TRACE("(%p)->(%p %p %08x %p %p)\n", This, pUri, pdwZone, dwFlags, ppwszMappedUrl, pdwOutFlags); + TRACE("(%p)->(%p %p %08lx %p %p)\n", This, pUri, pdwZone, dwFlags, ppwszMappedUrl, pdwOutFlags); if(This->custom_manager) { HRESULT hres; @@ -1178,7 +1143,7 @@ static HRESULT WINAPI SecManagerImpl_MapUrlToZoneEx2(IInternetSecurityManagerEx2 } if(dwFlags) - FIXME("Unsupported flags: %08x\n", dwFlags); + FIXME("Unsupported flags: %08lx\n", dwFlags); return map_uri_to_zone(pUri, pdwZone, NULL); } @@ -1188,8 +1153,8 @@ static HRESULT WINAPI SecManagerImpl_ProcessUrlActionEx2(IInternetSecurityManage DWORD dwFlags, DWORD_PTR dwReserved, DWORD *pdwOutFlags) { SecManagerImpl *This = impl_from_IInternetSecurityManagerEx2(iface); - FIXME("(%p)->(%p %08x %p %d %p %d %08x %08x %p) stub\n", This, pUri, dwAction, pPolicy, - cbPolicy, pContext, cbContext, dwFlags, (DWORD)dwReserved, pdwOutFlags); + FIXME("(%p)->(%p %08lx %p %ld %p %ld %08lx %08Ix %p) stub\n", This, pUri, dwAction, pPolicy, + cbPolicy, pContext, cbContext, dwFlags, dwReserved, pdwOutFlags); return E_NOTIMPL; } @@ -1197,7 +1162,7 @@ static HRESULT WINAPI SecManagerImpl_GetSecurityIdEx2(IInternetSecurityManagerEx IUri *pUri, BYTE *pbSecurityId, DWORD *pcbSecurityId, DWORD_PTR dwReserved) { SecManagerImpl *This = impl_from_IInternetSecurityManagerEx2(iface); - TRACE("(%p)->(%p %p %p %08x) stub\n", This, pUri, pbSecurityId, pcbSecurityId, (DWORD)dwReserved); + TRACE("(%p)->(%p %p %p %08Ix) stub\n", This, pUri, pbSecurityId, pcbSecurityId, dwReserved); if(dwReserved) FIXME("dwReserved is not supported yet\n"); @@ -1213,8 +1178,8 @@ static HRESULT WINAPI SecManagerImpl_QueryCustomPolicyEx2(IInternetSecurityManag DWORD cbContext, DWORD_PTR dwReserved) { SecManagerImpl *This = impl_from_IInternetSecurityManagerEx2(iface); - FIXME("(%p)->(%p %s %p %p %p %d %08x) stub\n", This, pUri, debugstr_guid(guidKey), ppPolicy, pcbPolicy, - pContext, cbContext, (DWORD)dwReserved); + FIXME("(%p)->(%p %s %p %p %p %ld %08Ix) stub\n", This, pUri, debugstr_guid(guidKey), ppPolicy, pcbPolicy, + pContext, cbContext, dwReserved); return E_NOTIMPL; } @@ -1243,7 +1208,7 @@ HRESULT SecManagerImpl_Construct(IUnknown *pUnkOuter, LPVOID *ppobj) SecManagerImpl *This; TRACE("(%p,%p)\n",pUnkOuter,ppobj); - This = heap_alloc(sizeof(*This)); + This = malloc(sizeof(*This)); /* Initialize the virtual function table. */ This->IInternetSecurityManagerEx2_iface.lpVtbl = &VT_SecManagerImpl; @@ -1297,7 +1262,7 @@ static LPDWORD build_zonemap_from_reg(void) if (res) return NULL; - data = heap_alloc(allocated * sizeof(DWORD)); + data = malloc(allocated * sizeof(DWORD)); if (!data) goto cleanup; @@ -1312,7 +1277,7 @@ static LPDWORD build_zonemap_from_reg(void) LPDWORD new_data; allocated *= 2; - new_data = heap_realloc_zero(data, allocated * sizeof(DWORD)); + new_data = realloc(data, allocated * sizeof(DWORD)); if (!new_data) goto cleanup; @@ -1330,7 +1295,7 @@ static LPDWORD build_zonemap_from_reg(void) cleanup: /* something failed */ RegCloseKey(hkey); - heap_free(data); + free(data); return NULL; } @@ -1375,7 +1340,7 @@ static ULONG WINAPI ZoneMgrImpl_AddRef(IInternetZoneManagerEx2* iface) ZoneMgrImpl* This = impl_from_IInternetZoneManagerEx2(iface); ULONG refCount = InterlockedIncrement(&This->ref); - TRACE("(%p)->(ref before=%u)\n",This, refCount - 1); + TRACE("(%p)->(ref before=%lu)\n",This, refCount - 1); return refCount; } @@ -1388,12 +1353,12 @@ static ULONG WINAPI ZoneMgrImpl_Release(IInternetZoneManagerEx2* iface) ZoneMgrImpl* This = impl_from_IInternetZoneManagerEx2(iface); ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p)->(ref before=%u)\n",This, refCount + 1); + TRACE("(%p)->(ref before=%lu)\n",This, refCount + 1); if(!refCount) { - while (This->zonemap_count) heap_free(This->zonemaps[--This->zonemap_count]); - heap_free(This->zonemaps); - heap_free(This); + while (This->zonemap_count) free(This->zonemaps[--This->zonemap_count]); + free(This->zonemaps); + free(This); URLMON_UnlockModule(); } @@ -1412,7 +1377,7 @@ static HRESULT WINAPI ZoneMgrImpl_GetZoneAttributes(IInternetZoneManagerEx2* ifa HKEY hcu; HKEY hklm = NULL; - TRACE("(%p)->(%d %p)\n", This, dwZone, pZoneAttributes); + TRACE("(%p)->(%ld %p)\n", This, dwZone, pZoneAttributes); if (!pZoneAttributes) return E_INVALIDARG; @@ -1423,15 +1388,15 @@ static HRESULT WINAPI ZoneMgrImpl_GetZoneAttributes(IInternetZoneManagerEx2* ifa hr = open_zone_key(HKEY_LOCAL_MACHINE, dwZone, &hklm); if (FAILED(hr)) - TRACE("Zone %d not in HKLM\n", dwZone); + TRACE("Zone %ld not in HKLM\n", dwZone); - get_string_from_reg(hcu, hklm, displaynameW, pZoneAttributes->szDisplayName, MAX_ZONE_PATH); - get_string_from_reg(hcu, hklm, descriptionW, pZoneAttributes->szDescription, MAX_ZONE_DESCRIPTION); - get_string_from_reg(hcu, hklm, iconW, pZoneAttributes->szIconPath, MAX_ZONE_PATH); - get_dword_from_reg(hcu, hklm, minlevelW, &pZoneAttributes->dwTemplateMinLevel); - get_dword_from_reg(hcu, hklm, currentlevelW, &pZoneAttributes->dwTemplateCurrentLevel); - get_dword_from_reg(hcu, hklm, recommendedlevelW, &pZoneAttributes->dwTemplateRecommended); - get_dword_from_reg(hcu, hklm, flagsW, &pZoneAttributes->dwFlags); + get_string_from_reg(hcu, hklm, L"DisplayName", pZoneAttributes->szDisplayName, MAX_ZONE_PATH); + get_string_from_reg(hcu, hklm, L"Description", pZoneAttributes->szDescription, MAX_ZONE_DESCRIPTION); + get_string_from_reg(hcu, hklm, L"Icon", pZoneAttributes->szIconPath, MAX_ZONE_PATH); + get_dword_from_reg(hcu, hklm, L"MinLevel", &pZoneAttributes->dwTemplateMinLevel); + get_dword_from_reg(hcu, hklm, L"CurrentLevel", &pZoneAttributes->dwTemplateCurrentLevel); + get_dword_from_reg(hcu, hklm, L"RecommendedLevel", &pZoneAttributes->dwTemplateRecommended); + get_dword_from_reg(hcu, hklm, L"Flags", &pZoneAttributes->dwFlags); RegCloseKey(hklm); RegCloseKey(hcu); @@ -1449,7 +1414,7 @@ static HRESULT WINAPI ZoneMgrImpl_SetZoneAttributes(IInternetZoneManagerEx2* ifa HRESULT hr; HKEY hcu; - TRACE("(%p)->(%d %p)\n", This, dwZone, pZoneAttributes); + TRACE("(%p)->(%ld %p)\n", This, dwZone, pZoneAttributes); if (!pZoneAttributes) return E_INVALIDARG; @@ -1459,25 +1424,25 @@ static HRESULT WINAPI ZoneMgrImpl_SetZoneAttributes(IInternetZoneManagerEx2* ifa return S_OK; /* IE6 returned E_FAIL here */ /* cbSize is ignored */ - RegSetValueExW(hcu, displaynameW, 0, REG_SZ, (LPBYTE) pZoneAttributes->szDisplayName, + RegSetValueExW(hcu, L"DisplayName", 0, REG_SZ, (BYTE*)pZoneAttributes->szDisplayName, (lstrlenW(pZoneAttributes->szDisplayName)+1)* sizeof(WCHAR)); - RegSetValueExW(hcu, descriptionW, 0, REG_SZ, (LPBYTE) pZoneAttributes->szDescription, + RegSetValueExW(hcu, L"Description", 0, REG_SZ, (BYTE*)pZoneAttributes->szDescription, (lstrlenW(pZoneAttributes->szDescription)+1)* sizeof(WCHAR)); - RegSetValueExW(hcu, iconW, 0, REG_SZ, (LPBYTE) pZoneAttributes->szIconPath, + RegSetValueExW(hcu, L"Icon", 0, REG_SZ, (BYTE*)pZoneAttributes->szIconPath, (lstrlenW(pZoneAttributes->szIconPath)+1)* sizeof(WCHAR)); - RegSetValueExW(hcu, minlevelW, 0, REG_DWORD, + RegSetValueExW(hcu, L"MinLevel", 0, REG_DWORD, (const BYTE*) &pZoneAttributes->dwTemplateMinLevel, sizeof(DWORD)); - RegSetValueExW(hcu, currentlevelW, 0, REG_DWORD, + RegSetValueExW(hcu, L"CurrentLevel", 0, REG_DWORD, (const BYTE*) &pZoneAttributes->dwTemplateCurrentLevel, sizeof(DWORD)); - RegSetValueExW(hcu, recommendedlevelW, 0, REG_DWORD, + RegSetValueExW(hcu, L"RecommendedLevel", 0, REG_DWORD, (const BYTE*) &pZoneAttributes->dwTemplateRecommended, sizeof(DWORD)); - RegSetValueExW(hcu, flagsW, 0, REG_DWORD, (const BYTE*) &pZoneAttributes->dwFlags, sizeof(DWORD)); + RegSetValueExW(hcu, L"Flags", 0, REG_DWORD, (const BYTE*) &pZoneAttributes->dwFlags, sizeof(DWORD)); RegCloseKey(hcu); return S_OK; @@ -1493,7 +1458,7 @@ static HRESULT WINAPI ZoneMgrImpl_GetZoneCustomPolicy(IInternetZoneManagerEx2* i DWORD* pcbPolicy, URLZONEREG ulrZoneReg) { - FIXME("(%p)->(%08x %s %p %p %08x) stub\n", iface, dwZone, debugstr_guid(guidKey), + FIXME("(%p)->(%08lx %s %p %p %08x) stub\n", iface, dwZone, debugstr_guid(guidKey), ppPolicy, pcbPolicy, ulrZoneReg); return E_NOTIMPL; } @@ -1508,7 +1473,7 @@ static HRESULT WINAPI ZoneMgrImpl_SetZoneCustomPolicy(IInternetZoneManagerEx2* i DWORD cbPolicy, URLZONEREG ulrZoneReg) { - FIXME("(%p)->(%08x %s %p %08x %08x) stub\n", iface, dwZone, debugstr_guid(guidKey), + FIXME("(%p)->(%08lx %s %p %08lx %08x) stub\n", iface, dwZone, debugstr_guid(guidKey), ppPolicy, cbPolicy, ulrZoneReg); return E_NOTIMPL; } @@ -1519,7 +1484,7 @@ static HRESULT WINAPI ZoneMgrImpl_SetZoneCustomPolicy(IInternetZoneManagerEx2* i static HRESULT WINAPI ZoneMgrImpl_GetZoneActionPolicy(IInternetZoneManagerEx2* iface, DWORD dwZone, DWORD dwAction, BYTE* pPolicy, DWORD cbPolicy, URLZONEREG urlZoneReg) { - TRACE("(%p)->(%d %08x %p %d %d)\n", iface, dwZone, dwAction, pPolicy, + TRACE("(%p)->(%ld %08lx %p %ld %d)\n", iface, dwZone, dwAction, pPolicy, cbPolicy, urlZoneReg); if(!pPolicy) @@ -1538,7 +1503,7 @@ static HRESULT WINAPI ZoneMgrImpl_SetZoneActionPolicy(IInternetZoneManagerEx2* i DWORD cbPolicy, URLZONEREG urlZoneReg) { - FIXME("(%p)->(%08x %08x %p %08x %08x) stub\n", iface, dwZone, dwAction, pPolicy, + FIXME("(%p)->(%08lx %08lx %p %08lx %08x) stub\n", iface, dwZone, dwAction, pPolicy, cbPolicy, urlZoneReg); return E_NOTIMPL; } @@ -1553,7 +1518,7 @@ static HRESULT WINAPI ZoneMgrImpl_PromptAction(IInternetZoneManagerEx2* iface, LPCWSTR pwszText, DWORD dwPromptFlags) { - FIXME("%p %08x %p %s %s %08x\n", iface, dwAction, hwndParent, + FIXME("%p %08lx %p %s %s %08lx\n", iface, dwAction, hwndParent, debugstr_w(pwszUrl), debugstr_w(pwszText), dwPromptFlags ); return E_NOTIMPL; } @@ -1567,7 +1532,7 @@ static HRESULT WINAPI ZoneMgrImpl_LogAction(IInternetZoneManagerEx2* iface, LPCWSTR pwszText, DWORD dwLogFlags) { - FIXME("(%p)->(%08x %s %s %08x) stub\n", iface, dwAction, debugstr_w(pwszUrl), + FIXME("(%p)->(%08lx %s %s %08lx) stub\n", iface, dwAction, debugstr_w(pwszUrl), debugstr_w(pwszText), dwLogFlags); return E_NOTIMPL; } @@ -1583,14 +1548,15 @@ static HRESULT WINAPI ZoneMgrImpl_CreateZoneEnumerator(IInternetZoneManagerEx2* ZoneMgrImpl* This = impl_from_IInternetZoneManagerEx2(iface); LPDWORD * new_maps; LPDWORD data; + DWORD new_map_count; DWORD i; - TRACE("(%p)->(%p, %p, 0x%08x)\n", This, pdwEnum, pdwCount, dwFlags); + TRACE("(%p)->(%p, %p, 0x%08lx)\n", This, pdwEnum, pdwCount, dwFlags); if (!pdwEnum || !pdwCount || (dwFlags != 0)) return E_INVALIDARG; data = build_zonemap_from_reg(); - TRACE("found %d zones\n", data ? data[0] : -1); + TRACE("found %ld zones\n", data ? data[0] : -1); if (!data) return E_FAIL; @@ -1604,23 +1570,15 @@ static HRESULT WINAPI ZoneMgrImpl_CreateZoneEnumerator(IInternetZoneManagerEx2* } } - if (This->zonemaps) { - /* try to double the nr. of pointers in the array */ - new_maps = heap_realloc_zero(This->zonemaps, This->zonemap_count * 2 * sizeof(LPDWORD)); - if (new_maps) - This->zonemap_count *= 2; - } - else - { - This->zonemap_count = 2; - new_maps = heap_alloc_zero(This->zonemap_count * sizeof(LPDWORD)); - } - + /* try to double the number of pointers in the array */ + new_map_count = This->zonemaps ? This->zonemap_count * 2 : 2; + new_maps = _recalloc(This->zonemaps, new_map_count, sizeof(DWORD*)); if (!new_maps) { - heap_free(data); + free(data); return E_FAIL; } This->zonemaps = new_maps; + This->zonemap_count = new_map_count; This->zonemaps[i] = data; *pdwEnum = i; *pdwCount = data[0]; @@ -1638,7 +1596,7 @@ static HRESULT WINAPI ZoneMgrImpl_GetZoneAt(IInternetZoneManagerEx2* iface, ZoneMgrImpl* This = impl_from_IInternetZoneManagerEx2(iface); LPDWORD data; - TRACE("(%p)->(0x%08x, %d, %p)\n", This, dwEnum, dwIndex, pdwZone); + TRACE("(%p)->(0x%08lx, %ld, %p)\n", This, dwEnum, dwIndex, pdwZone); /* make sure, that dwEnum and dwIndex are in the valid range */ if (dwEnum < This->zonemap_count) { @@ -1661,12 +1619,12 @@ static HRESULT WINAPI ZoneMgrImpl_DestroyZoneEnumerator(IInternetZoneManagerEx2* ZoneMgrImpl* This = impl_from_IInternetZoneManagerEx2(iface); LPDWORD data; - TRACE("(%p)->(0x%08x)\n", This, dwEnum); + TRACE("(%p)->(0x%08lx)\n", This, dwEnum); /* make sure, that dwEnum is valid */ if (dwEnum < This->zonemap_count) { if ((data = This->zonemaps[dwEnum])) { This->zonemaps[dwEnum] = NULL; - heap_free(data); + free(data); return S_OK; } } @@ -1681,7 +1639,7 @@ static HRESULT WINAPI ZoneMgrImpl_CopyTemplatePoliciesToZone(IInternetZoneManage DWORD dwZone, DWORD dwReserved) { - FIXME("(%p)->(%08x %08x %08x) stub\n", iface, dwTemplate, dwZone, dwReserved); + FIXME("(%p)->(%08lx %08lx %08lx) stub\n", iface, dwTemplate, dwZone, dwReserved); return E_NOTIMPL; } @@ -1696,14 +1654,14 @@ static HRESULT WINAPI ZoneMgrImpl_GetZoneActionPolicyEx(IInternetZoneManagerEx2* URLZONEREG urlZoneReg, DWORD dwFlags) { - TRACE("(%p)->(%d, 0x%x, %p, %d, %d, 0x%x)\n", iface, dwZone, + TRACE("(%p)->(%ld, 0x%lx, %p, %ld, %d, 0x%lx)\n", iface, dwZone, dwAction, pPolicy, cbPolicy, urlZoneReg, dwFlags); if(!pPolicy) return E_INVALIDARG; if (dwFlags) - FIXME("dwFlags 0x%x ignored\n", dwFlags); + FIXME("dwFlags 0x%lx ignored\n", dwFlags); return get_action_policy(dwZone, dwAction, pPolicy, cbPolicy, urlZoneReg); } @@ -1719,7 +1677,7 @@ static HRESULT WINAPI ZoneMgrImpl_SetZoneActionPolicyEx(IInternetZoneManagerEx2* URLZONEREG urlZoneReg, DWORD dwFlags) { - FIXME("(%p)->(%d, 0x%x, %p, %d, %d, 0x%x) stub\n", iface, dwZone, dwAction, pPolicy, + FIXME("(%p)->(%ld, 0x%lx, %p, %ld, %d, 0x%lx) stub\n", iface, dwZone, dwAction, pPolicy, cbPolicy, urlZoneReg, dwFlags); return E_NOTIMPL; } @@ -1732,10 +1690,10 @@ static HRESULT WINAPI ZoneMgrImpl_GetZoneAttributesEx(IInternetZoneManagerEx2* i ZONEATTRIBUTES* pZoneAttributes, DWORD dwFlags) { - TRACE("(%p)->(%d, %p, 0x%x)\n", iface, dwZone, pZoneAttributes, dwFlags); + TRACE("(%p)->(%ld, %p, 0x%lx)\n", iface, dwZone, pZoneAttributes, dwFlags); if (dwFlags) - FIXME("dwFlags 0x%x ignored\n", dwFlags); + FIXME("dwFlags 0x%lx ignored\n", dwFlags); return IInternetZoneManagerEx2_GetZoneAttributes(iface, dwZone, pZoneAttributes); } @@ -1750,7 +1708,7 @@ static HRESULT WINAPI ZoneMgrImpl_GetZoneSecurityState(IInternetZoneManagerEx2* LPDWORD pdwState, BOOL *pfPolicyEncountered) { - FIXME("(%p)->(%d, %d, %p, %p) stub\n", iface, dwZoneIndex, fRespectPolicy, + FIXME("(%p)->(%ld, %d, %p, %p) stub\n", iface, dwZoneIndex, fRespectPolicy, pdwState, pfPolicyEncountered); *pdwState = SECURITY_IE_STATE_GREEN; @@ -1822,7 +1780,7 @@ static const IInternetZoneManagerEx2Vtbl ZoneMgrImplVtbl = { HRESULT ZoneMgrImpl_Construct(IUnknown *pUnkOuter, LPVOID *ppobj) { - ZoneMgrImpl* ret = heap_alloc_zero(sizeof(ZoneMgrImpl)); + ZoneMgrImpl *ret = calloc(1, sizeof(ZoneMgrImpl)); TRACE("(%p %p)\n", pUnkOuter, ppobj); ret->IInternetZoneManagerEx2_iface.lpVtbl = &ZoneMgrImplVtbl; @@ -1841,7 +1799,7 @@ HRESULT ZoneMgrImpl_Construct(IUnknown *pUnkOuter, LPVOID *ppobj) HRESULT WINAPI CoInternetCreateSecurityManager( IServiceProvider *pSP, IInternetSecurityManager **ppSM, DWORD dwReserved ) { - TRACE("%p %p %d\n", pSP, ppSM, dwReserved ); + TRACE("%p %p %ld\n", pSP, ppSM, dwReserved ); if(pSP) FIXME("pSP not supported\n"); @@ -1854,7 +1812,7 @@ HRESULT WINAPI CoInternetCreateSecurityManager( IServiceProvider *pSP, */ HRESULT WINAPI CoInternetCreateZoneManager(IServiceProvider* pSP, IInternetZoneManager** ppZM, DWORD dwReserved) { - TRACE("(%p %p %x)\n", pSP, ppZM, dwReserved); + TRACE("(%p %p %lx)\n", pSP, ppZM, dwReserved); return ZoneMgrImpl_Construct(NULL, (void**)ppZM); } @@ -1911,7 +1869,7 @@ static HRESULT parse_security_url(const WCHAR *url, PSUACTION action, WCHAR **re CoTaskMemFree(new_url); if(hres != S_OK) { - WARN("failed: %08x\n", hres); + WARN("failed: %08lx\n", hres); CoTaskMemFree(alloc_url); return hres; } @@ -1954,7 +1912,7 @@ static HRESULT parse_security_url(const WCHAR *url, PSUACTION action, WCHAR **re } if(FAILED(hres)) { - WARN("failed %08x\n", hres); + WARN("failed %08lx\n", hres); CoTaskMemFree(alloc_url); return hres; } @@ -1979,7 +1937,7 @@ HRESULT WINAPI CoInternetGetSecurityUrl(LPCWSTR pwzUrl, LPWSTR *ppwzSecUrl, PSUA WCHAR *secure_url; HRESULT hres; - TRACE("(%p,%p,%u,%u)\n", pwzUrl, ppwzSecUrl, psuAction, dwReserved); + TRACE("(%p,%p,%u,%lu)\n", pwzUrl, ppwzSecUrl, psuAction, dwReserved); hres = parse_security_url(pwzUrl, psuAction, &secure_url); if(FAILED(hres)) @@ -2005,7 +1963,7 @@ HRESULT WINAPI CoInternetGetSecurityUrl(LPCWSTR pwzUrl, LPWSTR *ppwzSecUrl, PSUA hres = E_OUTOFMEMORY; CoTaskMemFree(secure_url); if(hres != S_OK) { - WARN("UrlGetPart failed: %08x\n", hres); + WARN("UrlGetPart failed: %08lx\n", hres); CoTaskMemFree(new_url); return FAILED(hres) ? hres : E_FAIL; } @@ -2028,7 +1986,7 @@ HRESULT WINAPI CoInternetGetSecurityUrlEx(IUri *pUri, IUri **ppSecUri, PSUACTION WCHAR *ret_url; HRESULT hres; - TRACE("(%p,%p,%u,%u)\n", pUri, ppSecUri, psuAction, (DWORD)dwReserved); + TRACE("(%p,%p,%u,%Iu)\n", pUri, ppSecUri, psuAction, dwReserved); if(!pUri || !ppSecUri) return E_INVALIDARG; @@ -2048,7 +2006,7 @@ HRESULT WINAPI CoInternetGetSecurityUrlEx(IUri *pUri, IUri **ppSecUri, PSUACTION const WCHAR *tmp = ret_url; /* Check and see if a "//" is after the scheme name. */ - tmp += ARRAY_SIZE(fileW); + tmp += ARRAY_SIZE(L"file"); if(*tmp != '/' || *(tmp+1) != '/') hres = E_INVALIDARG; } @@ -2064,7 +2022,7 @@ HRESULT WINAPI CoInternetGetSecurityUrlEx(IUri *pUri, IUri **ppSecUri, PSUACTION */ HRESULT WINAPI CompareSecurityIds(BYTE *secid1, DWORD size1, BYTE *secid2, DWORD size2, DWORD reserved) { - FIXME("(%p %d %p %d %x)\n", secid1, size1, secid2, size2, reserved); + FIXME("(%p %ld %p %ld %lx)\n", secid1, size1, secid2, size2, reserved); return E_NOTIMPL; } @@ -2083,11 +2041,9 @@ BOOL WINAPI IsInternetESCEnabledLocal(void) DWORD type, size, val; HKEY zone_map; - static const WCHAR iehardenW[] = {'I','E','H','a','r','d','e','n',0}; - if(RegOpenKeyExW(HKEY_CURRENT_USER, zone_map_keyW, 0, KEY_QUERY_VALUE, &zone_map) == ERROR_SUCCESS) { size = sizeof(DWORD); - if(RegQueryValueExW(zone_map, iehardenW, NULL, &type, (BYTE*)&val, &size) == ERROR_SUCCESS) + if(RegQueryValueExW(zone_map, L"IEHarden", NULL, &type, (BYTE*)&val, &size) == ERROR_SUCCESS) esc_enabled = type == REG_DWORD && val != 0; RegCloseKey(zone_map); } diff --git a/dll/win32/urlmon/session.c b/dll/win32/urlmon/session.c index edde1ece492..660fab54570 100644 --- a/dll/win32/urlmon/session.c +++ b/dll/win32/urlmon/session.c @@ -52,13 +52,6 @@ static CRITICAL_SECTION_DEBUG session_cs_dbg = }; static CRITICAL_SECTION session_cs = { &session_cs_dbg, -1, 0, 0, 0, 0 }; -static const WCHAR internet_settings_keyW[] = - {'S','O','F','T','W','A','R','E', - '\\','M','i','c','r','o','s','o','f','t', - '\\','W','i','n','d','o','w','s', - '\\','C','u','r','r','e','n','t','V','e','r','s','i','o','n', - '\\','I','n','t','e','r','n','e','t',' ','S','e','t','t','i','n','g','s',0}; - static name_space *find_name_space(LPCWSTR protocol) { name_space *iter; @@ -82,30 +75,29 @@ static HRESULT get_protocol_cf(LPCWSTR schema, DWORD schema_len, CLSID *pclsid, static const WCHAR wszProtocolsKey[] = {'P','R','O','T','O','C','O','L','S','\\','H','a','n','d','l','e','r','\\'}; - static const WCHAR wszCLSID[] = {'C','L','S','I','D',0}; - wszKey = heap_alloc(sizeof(wszProtocolsKey)+(schema_len+1)*sizeof(WCHAR)); + wszKey = malloc(sizeof(wszProtocolsKey) + (schema_len + 1) * sizeof(WCHAR)); memcpy(wszKey, wszProtocolsKey, sizeof(wszProtocolsKey)); memcpy(wszKey + ARRAY_SIZE(wszProtocolsKey), schema, (schema_len+1)*sizeof(WCHAR)); res = RegOpenKeyW(HKEY_CLASSES_ROOT, wszKey, &hkey); - heap_free(wszKey); + free(wszKey); if(res != ERROR_SUCCESS) { TRACE("Could not open protocol handler key\n"); return MK_E_SYNTAX; } size = sizeof(str_clsid); - res = RegQueryValueExW(hkey, wszCLSID, NULL, &type, (LPBYTE)str_clsid, &size); + res = RegQueryValueExW(hkey, L"CLSID", NULL, &type, (BYTE*)str_clsid, &size); RegCloseKey(hkey); if(res != ERROR_SUCCESS || type != REG_SZ) { - WARN("Could not get protocol CLSID res=%d\n", res); + WARN("Could not get protocol CLSID res=%ld\n", res); return MK_E_SYNTAX; } hres = CLSIDFromString(str_clsid, &clsid); if(FAILED(hres)) { - WARN("CLSIDFromString failed: %08x\n", hres); + WARN("CLSIDFromString failed: %08lx\n", hres); return hres; } @@ -123,14 +115,14 @@ HRESULT register_namespace(IClassFactory *cf, REFIID clsid, LPCWSTR protocol, BO { name_space *new_name_space; - new_name_space = heap_alloc(sizeof(name_space)); + new_name_space = malloc(sizeof(name_space)); if(!urlmon_protocol) IClassFactory_AddRef(cf); new_name_space->cf = cf; new_name_space->clsid = *clsid; new_name_space->urlmon = urlmon_protocol; - new_name_space->protocol = heap_strdupW(protocol); + new_name_space->protocol = wcsdup(protocol); EnterCriticalSection(&session_cs); @@ -155,8 +147,8 @@ static HRESULT unregister_namespace(IClassFactory *cf, LPCWSTR protocol) if(!iter->urlmon) IClassFactory_Release(iter->cf); - heap_free(iter->protocol); - heap_free(iter); + free(iter->protocol); + free(iter); return S_OK; } } @@ -249,10 +241,6 @@ HRESULT get_protocol_handler(IUri *uri, CLSID *clsid, IClassFactory **ret) IInternetProtocol *get_mime_filter(LPCWSTR mime) { - static const WCHAR filtersW[] = {'P','r','o','t','o','c','o','l','s', - '\\','F','i','l','t','e','r',0 }; - static const WCHAR CLSIDW[] = {'C','L','S','I','D',0}; - IClassFactory *cf = NULL; IInternetProtocol *ret; mime_filter *iter; @@ -276,14 +264,14 @@ IInternetProtocol *get_mime_filter(LPCWSTR mime) if(cf) { hres = IClassFactory_CreateInstance(cf, NULL, &IID_IInternetProtocol, (void**)&ret); if(FAILED(hres)) { - WARN("CreateInstance failed: %08x\n", hres); + WARN("CreateInstance failed: %08lx\n", hres); return NULL; } return ret; } - res = RegOpenKeyW(HKEY_CLASSES_ROOT, filtersW, &hlist); + res = RegOpenKeyW(HKEY_CLASSES_ROOT, L"Protocols\\Filter", &hlist); if(res != ERROR_SUCCESS) { TRACE("Could not open MIME filters key\n"); return NULL; @@ -295,7 +283,7 @@ IInternetProtocol *get_mime_filter(LPCWSTR mime) return NULL; size = sizeof(clsidw); - res = RegQueryValueExW(hfilter, CLSIDW, NULL, &type, (LPBYTE)clsidw, &size); + res = RegQueryValueExW(hfilter, L"CLSID", NULL, &type, (BYTE*)clsidw, &size); CloseHandle(hfilter); if(res!=ERROR_SUCCESS || type!=REG_SZ) { WARN("Could not get filter CLSID for %s\n", debugstr_w(mime)); @@ -304,13 +292,13 @@ IInternetProtocol *get_mime_filter(LPCWSTR mime) hres = CLSIDFromString(clsidw, &clsid); if(FAILED(hres)) { - WARN("CLSIDFromString failed for %s (%x)\n", debugstr_w(mime), hres); + WARN("CLSIDFromString failed for %s (%lx)\n", debugstr_w(mime), hres); return NULL; } hres = CoCreateInstance(&clsid, NULL, CLSCTX_INPROC_SERVER, &IID_IInternetProtocol, (void**)&ret); if(FAILED(hres)) { - WARN("CoCreateInstance failed: %08x\n", hres); + WARN("CoCreateInstance failed: %08lx\n", hres); return NULL; } @@ -350,13 +338,13 @@ static HRESULT WINAPI InternetSession_RegisterNameSpace(IInternetSession *iface, IClassFactory *pCF, REFCLSID rclsid, LPCWSTR pwzProtocol, ULONG cPatterns, const LPCWSTR *ppwzPatterns, DWORD dwReserved) { - TRACE("(%p %s %s %d %p %d)\n", pCF, debugstr_guid(rclsid), debugstr_w(pwzProtocol), + TRACE("(%p %s %s %ld %p %ld)\n", pCF, debugstr_guid(rclsid), debugstr_w(pwzProtocol), cPatterns, ppwzPatterns, dwReserved); if(cPatterns || ppwzPatterns) FIXME("patterns not supported\n"); if(dwReserved) - WARN("dwReserved = %d\n", dwReserved); + WARN("dwReserved = %ld\n", dwReserved); if(!pCF || !pwzProtocol) return E_INVALIDARG; @@ -382,12 +370,12 @@ static HRESULT WINAPI InternetSession_RegisterMimeFilter(IInternetSession *iface TRACE("(%p %s %s)\n", pCF, debugstr_guid(rclsid), debugstr_w(pwzType)); - filter = heap_alloc(sizeof(mime_filter)); + filter = malloc(sizeof(mime_filter)); IClassFactory_AddRef(pCF); filter->cf = pCF; filter->clsid = *rclsid; - filter->mime = heap_strdupW(pwzType); + filter->mime = wcsdup(pwzType); EnterCriticalSection(&session_cs); @@ -414,8 +402,8 @@ static HRESULT WINAPI InternetSession_UnregisterMimeFilter(IInternetSession *ifa LeaveCriticalSection(&session_cs); IClassFactory_Release(iter->cf); - heap_free(iter->mime); - heap_free(iter); + free(iter->mime); + free(iter); return S_OK; } } @@ -431,7 +419,7 @@ static HRESULT WINAPI InternetSession_CreateBinding(IInternetSession *iface, BindProtocol *protocol; HRESULT hres; - TRACE("(%p %s %p %p %p %08x)\n", pBC, debugstr_w(szUrl), pUnkOuter, ppUnk, + TRACE("(%p %s %p %p %p %08lx)\n", pBC, debugstr_w(szUrl), pUnkOuter, ppUnk, ppOInetProt, dwOption); if(pBC || pUnkOuter || ppUnk || dwOption) @@ -448,7 +436,7 @@ static HRESULT WINAPI InternetSession_CreateBinding(IInternetSession *iface, static HRESULT WINAPI InternetSession_SetSessionOption(IInternetSession *iface, DWORD dwOption, LPVOID pBuffer, DWORD dwBufferLength, DWORD dwReserved) { - FIXME("(%08x %p %d %d)\n", dwOption, pBuffer, dwBufferLength, dwReserved); + FIXME("(%08lx %p %ld %ld)\n", dwOption, pBuffer, dwBufferLength, dwReserved); return E_NOTIMPL; } @@ -485,12 +473,12 @@ static IInternetSession InternetSession = { &InternetSessionVtbl }; HRESULT WINAPI CoInternetGetSession(DWORD dwSessionMode, IInternetSession **ppIInternetSession, DWORD dwReserved) { - TRACE("(%d %p %d)\n", dwSessionMode, ppIInternetSession, dwReserved); + TRACE("(%ld %p %ld)\n", dwSessionMode, ppIInternetSession, dwReserved); if(dwSessionMode) - ERR("dwSessionMode=%d\n", dwSessionMode); + ERR("dwSessionMode=%ld\n", dwSessionMode); if(dwReserved) - ERR("dwReserved=%d\n", dwReserved); + ERR("dwReserved=%ld\n", dwReserved); IInternetSession_AddRef(&InternetSession); *ppIInternetSession = &InternetSession; @@ -505,115 +493,136 @@ static BOOL get_url_encoding(HKEY root, DWORD *encoding) DWORD size = sizeof(DWORD), res, type; HKEY hkey; - static const WCHAR wszUrlEncoding[] = {'U','r','l','E','n','c','o','d','i','n','g',0}; - - res = RegOpenKeyW(root, internet_settings_keyW, &hkey); + res = RegOpenKeyW(root, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", &hkey); if(res != ERROR_SUCCESS) return FALSE; - res = RegQueryValueExW(hkey, wszUrlEncoding, NULL, &type, (LPBYTE)encoding, &size); + res = RegQueryValueExW(hkey, L"UrlEncoding", NULL, &type, (BYTE*)encoding, &size); RegCloseKey(hkey); return res == ERROR_SUCCESS; } static LPWSTR user_agent; +static BOOL user_agent_set; -static void ensure_useragent(void) +static size_t obtain_user_agent(unsigned int version, WCHAR *ret, size_t size) { + BOOL is_wow, quirks = FALSE, use_current = FALSE; OSVERSIONINFOW info = {sizeof(info)}; const WCHAR *os_type, *is_nt; - WCHAR buf[512], *ret, *tmp; - DWORD res, idx=0; - size_t len, size; - BOOL is_wow; + DWORD res; + size_t len = 0; HKEY key; - static const WCHAR formatW[] = - {'M','o','z','i','l','l','a','/','4','.','0', - ' ','(','c','o','m','p','a','t','i','b','l','e',';', - ' ','M','S','I','E',' ','8','.','0',';', - ' ','W','i','n','d','o','w','s',' ','%','s','%','d','.','%','d',';', - ' ','%','s','T','r','i','d','e','n','t','/','5','.','0',0}; - static const WCHAR post_platform_keyW[] = - {'S','O','F','T','W','A','R','E', - '\\','M','i','c','r','o','s','o','f','t', - '\\','W','i','n','d','o','w','s', - '\\','C','u','r','r','e','n','t','V','e','r','s','i','o','n', - '\\','I','n','t','e','r','n','e','t',' ','S','e','t','t','i','n','g','s', - '\\','5','.','0','\\','U','s','e','r',' ','A','g','e','n','t', - '\\','P','o','s','t',' ','P','l','a','t','f','o','r','m',0}; - static const WCHAR ntW[] = {'N','T',' ',0}; - static const WCHAR win64W[] = {'W','i','n','6','4',';',' ','x','6','4',';',' ',0}; - static const WCHAR wow64W[] = {'W','O','W','6','4',';',' ',0}; - static const WCHAR emptyW[] = {0}; - - if(user_agent) - return; - - GetVersionExW(&info); - is_nt = info.dwPlatformId == VER_PLATFORM_WIN32_NT ? ntW : emptyW; - - if(sizeof(void*) == 8) - os_type = win64W; - else if(IsWow64Process(GetCurrentProcess(), &is_wow) && is_wow) - os_type = wow64W; - else - os_type = emptyW; - - swprintf(buf, formatW, is_nt, info.dwMajorVersion, info.dwMinorVersion, os_type); - len = lstrlenW(buf); - - size = len+40; - ret = heap_alloc(size * sizeof(WCHAR)); - if(!ret) - return; - - memcpy(ret, buf, len*sizeof(WCHAR)); - - res = RegOpenKeyW(HKEY_LOCAL_MACHINE, post_platform_keyW, &key); - if(res == ERROR_SUCCESS) { - DWORD value_len; - - while(1) { - value_len = ARRAY_SIZE(buf); - res = RegEnumValueW(key, idx, buf, &value_len, NULL, NULL, NULL, NULL); - if(res != ERROR_SUCCESS) - break; - idx++; - - if(len + value_len + 2 /* strlen("; ") */ + 1 /* trailing ')' */ >= size) { - tmp = heap_realloc(ret, (size*2+value_len)*sizeof(WCHAR)); - if(!tmp) - break; - ret = tmp; - size = size*2+value_len; - } - - ret[len++] = ';'; - ret[len++] = ' '; - memcpy(ret+len, buf, value_len*sizeof(WCHAR)); - len += value_len; + if(version & UAS_EXACTLEGACY) { + version &= ~UAS_EXACTLEGACY; + if(version == 7) + quirks = TRUE; + else { + use_current = TRUE; + version = 7; } - - RegCloseKey(key); } - ret[len++] = ')'; - ret[len++] = 0; + if(version > 11) { + FIXME("Unsupported version %u\n", version); + version = 11; + } - user_agent = ret; - TRACE("Using user agent %s\n", debugstr_w(user_agent)); + if(version < 7 || use_current) { + EnterCriticalSection(&session_cs); + if(user_agent) { + len = wcslen(user_agent) + 1; + memcpy(ret, user_agent, min(size, len) * sizeof(WCHAR)); + } + LeaveCriticalSection(&session_cs); + if(len) return len; + } + + if(version < 7) + version = 7; + + swprintf(ret, size, L"Mozilla/%s (", version < 9 ? L"4.0" : L"5.0"); + len = lstrlenW(ret); + if(version < 11) { + swprintf(ret + len, size - len, L"compatible; MSIE %u.0; ", version); + len += wcslen(ret + len); + } + + GetVersionExW(&info); + is_nt = info.dwPlatformId == VER_PLATFORM_WIN32_NT ? L"NT " : L""; + + if(sizeof(void*) == 8) +#ifdef __x86_64__ + os_type = L"; Win64; x64"; +#else + os_type = L"; Win64"; +#endif + else if(IsWow64Process(GetCurrentProcess(), &is_wow) && is_wow) + os_type = L"; WOW64"; + else + os_type = L""; + + swprintf(ret + len, size - len, L"Windows %s%d.%d%s", is_nt, info.dwMajorVersion, + info.dwMinorVersion, os_type); + len = lstrlenW(ret); + + if(!quirks) { + wcscpy(ret + len, L"; Trident/7.0"); + len += ARRAY_SIZE(L"; Trident/7.0") - 1; + } + + if(version < 9) { + res = RegOpenKeyW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\" + "Internet Settings\\5.0\\User Agent\\Post Platform", &key); + if(res == ERROR_SUCCESS) { + DWORD value_len, idx; + + for(idx = 0;; idx++) { + ret[len++] = ';'; + ret[len++] = ' '; + + value_len = size - len - 2; + res = RegEnumValueW(key, idx, ret + len, &value_len, NULL, NULL, NULL, NULL); + if(res != ERROR_SUCCESS) + break; + + len += value_len; + } + + RegCloseKey(key); + if(idx) len -= 2; + } + } + wcscpy(ret + len, version >= 11 ? L"; rv:11.0) like Gecko" : L")"); + len += wcslen(ret + len) + 1; + + TRACE("Using user agent %s\n", debugstr_w(ret)); + return len; +} + +static void ensure_user_agent(void) +{ + EnterCriticalSection(&session_cs); + + if(!user_agent) { + WCHAR buf[1024]; + obtain_user_agent(0, buf, ARRAY_SIZE(buf)); + user_agent = wcsdup(buf); + } + + LeaveCriticalSection(&session_cs); } LPWSTR get_useragent(void) { LPWSTR ret; - ensure_useragent(); + ensure_user_agent(); EnterCriticalSection(&session_cs); - ret = heap_strdupW(user_agent); + ret = wcsdup(user_agent); LeaveCriticalSection(&session_cs); return ret; @@ -622,10 +631,10 @@ LPWSTR get_useragent(void) HRESULT WINAPI UrlMkGetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBufferLength, DWORD* pdwBufferLength, DWORD dwReserved) { - TRACE("(%x, %p, %d, %p)\n", dwOption, pBuffer, dwBufferLength, pdwBufferLength); + TRACE("(%lx, %p, %ld, %p)\n", dwOption, pBuffer, dwBufferLength, pdwBufferLength); if(dwReserved) - WARN("dwReserved = %d\n", dwReserved); + WARN("dwReserved = %ld\n", dwReserved); switch(dwOption) { case URLMON_OPTION_USERAGENT: { @@ -637,7 +646,7 @@ HRESULT WINAPI UrlMkGetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBuf EnterCriticalSection(&session_cs); - ensure_useragent(); + ensure_user_agent(); if(user_agent) { size = WideCharToMultiByte(CP_ACP, 0, user_agent, -1, NULL, 0, NULL, NULL); *pdwBufferLength = size; @@ -668,7 +677,7 @@ HRESULT WINAPI UrlMkGetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBuf return S_OK; } default: - FIXME("unsupported option %x\n", dwOption); + FIXME("unsupported option %lx\n", dwOption); } return E_INVALIDARG; @@ -680,7 +689,7 @@ HRESULT WINAPI UrlMkGetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBuf HRESULT WINAPI UrlMkSetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBufferLength, DWORD Reserved) { - TRACE("(%x %p %x)\n", dwOption, pBuffer, dwBufferLength); + TRACE("(%lx %p %lx)\n", dwOption, pBuffer, dwBufferLength); switch(dwOption) { case URLMON_OPTION_USERAGENT: { @@ -696,7 +705,7 @@ HRESULT WINAPI UrlMkSetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBuf TRACE("Setting user agent %s\n", debugstr_an(buf, len)); size = MultiByteToWideChar(CP_ACP, 0, buf, len, NULL, 0); - new_user_agent = heap_alloc((size+1)*sizeof(WCHAR)); + new_user_agent = malloc((size + 1) * sizeof(WCHAR)); if(!new_user_agent) return E_OUTOFMEMORY; MultiByteToWideChar(CP_ACP, 0, buf, len, new_user_agent, size); @@ -704,15 +713,16 @@ HRESULT WINAPI UrlMkSetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBuf EnterCriticalSection(&session_cs); - heap_free(user_agent); + free(user_agent); user_agent = new_user_agent; + user_agent_set = TRUE; update_user_agent(user_agent); LeaveCriticalSection(&session_cs); break; } default: - FIXME("Unknown option %x\n", dwOption); + FIXME("Unknown option %lx\n", dwOption); return E_INVALIDARG; } @@ -722,34 +732,64 @@ HRESULT WINAPI UrlMkSetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBuf /************************************************************************** * ObtainUserAgentString (URLMON.@) */ -HRESULT WINAPI ObtainUserAgentString(DWORD dwOption, LPSTR pcszUAOut, DWORD *cbSize) +HRESULT WINAPI ObtainUserAgentString(DWORD option, char *ret, DWORD *ret_size) { - DWORD size; - HRESULT hres = E_FAIL; + DWORD size, len; + WCHAR buf[1024]; + HRESULT hres = S_OK; - TRACE("(%d %p %p)\n", dwOption, pcszUAOut, cbSize); + TRACE("(%ld %p %p)\n", option, ret, ret_size); - if(!pcszUAOut || !cbSize) + if(!ret || !ret_size) return E_INVALIDARG; - EnterCriticalSection(&session_cs); + len = obtain_user_agent(option, buf, ARRAY_SIZE(buf)); + size = WideCharToMultiByte(CP_ACP, 0, buf, len, NULL, 0, NULL, NULL); + if(size <= *ret_size) + WideCharToMultiByte(CP_ACP, 0, buf, len, ret, *ret_size+1, NULL, NULL); + else + hres = E_OUTOFMEMORY; - ensure_useragent(); - if(user_agent) { - size = WideCharToMultiByte(CP_ACP, 0, user_agent, -1, NULL, 0, NULL, NULL); + *ret_size = size; + return hres; +} - if(size <= *cbSize) { - WideCharToMultiByte(CP_ACP, 0, user_agent, -1, pcszUAOut, *cbSize, NULL, NULL); - hres = S_OK; - }else { - hres = E_OUTOFMEMORY; - } +/*********************************************************************** + * MapBrowserEmulationModeToUserAgent (URLMON.445) + * Undocumented, added in IE8 + */ +HRESULT WINAPI MapBrowserEmulationModeToUserAgent(const void *arg, WCHAR **ret) +{ + DWORD size, version; + const WCHAR *ua; + WCHAR buf[1024]; - *cbSize = size; + TRACE("%p %p: semi-stub\n", arg, ret); + + if(user_agent_set) { + /* Native ignores first arg if custom user agent has been set, doesn't crash even if NULL */ + size = (wcslen(user_agent) + 1) * sizeof(WCHAR); + ua = user_agent; + }else { + *ret = NULL; + + /* First arg seems to be a pointer to a structure of unknown size, and crashes + if it's too small (or filled with arbitrary values from the stack). For our + purposes, we only check first field which seems to be the requested version. */ + version = *(DWORD*)arg; + if(version == 5) + version = 7; + if(version < 7 || version > 11) + return E_FAIL; + + size = obtain_user_agent(version, buf, ARRAY_SIZE(buf)) * sizeof(WCHAR); + ua = buf; } - LeaveCriticalSection(&session_cs); - return hres; + if(!(*ret = CoTaskMemAlloc(size))) + return E_OUTOFMEMORY; + memcpy(*ret, ua, size); + return S_OK; } void free_session(void) @@ -760,15 +800,15 @@ void free_session(void) LIST_FOR_EACH_ENTRY_SAFE(ns_iter, ns_last, &name_space_list, name_space, entry) { if(!ns_iter->urlmon) IClassFactory_Release(ns_iter->cf); - heap_free(ns_iter->protocol); - heap_free(ns_iter); + free(ns_iter->protocol); + free(ns_iter); } LIST_FOR_EACH_ENTRY_SAFE(mf_iter, mf_last, &mime_filter_list, mime_filter, entry) { IClassFactory_Release(mf_iter->cf); - heap_free(mf_iter->mime); - heap_free(mf_iter); + free(mf_iter->mime); + free(mf_iter); } - heap_free(user_agent); + free(user_agent); } diff --git a/dll/win32/urlmon/umon.c b/dll/win32/urlmon/umon.c index 14273efee99..0ee8502d070 100644 --- a/dll/win32/urlmon/umon.c +++ b/dll/win32/urlmon/umon.c @@ -86,7 +86,7 @@ static ULONG WINAPI URLMoniker_AddRef(IMoniker *iface) URLMoniker *This = impl_from_IMoniker(iface); ULONG refCount = InterlockedIncrement(&This->ref); - TRACE("(%p) ref=%u\n",This, refCount); + TRACE("(%p) ref=%lu\n",This, refCount); return refCount; } @@ -96,13 +96,13 @@ static ULONG WINAPI URLMoniker_Release(IMoniker *iface) URLMoniker *This = impl_from_IMoniker(iface); ULONG refCount = InterlockedDecrement(&This->ref); - TRACE("(%p) ref=%u\n",This, refCount); + TRACE("(%p) ref=%lu\n",This, refCount); if (!refCount) { if(This->uri) IUri_Release(This->uri); SysFreeString(This->URLName); - heap_free(This); + free(This); URLMON_UnlockModule(); } @@ -162,7 +162,7 @@ static HRESULT WINAPI URLMoniker_Load(IMoniker* iface,IStream* pStm) if(got != sizeof(ULONG)) return E_FAIL; - new_uri_str = heap_alloc(size+sizeof(WCHAR)); + new_uri_str = malloc(size + sizeof(WCHAR)); if(!new_uri_str) return E_OUTOFMEMORY; @@ -170,7 +170,7 @@ static HRESULT WINAPI URLMoniker_Load(IMoniker* iface,IStream* pStm) new_uri_str[size/sizeof(WCHAR)] = 0; if(SUCCEEDED(hres)) hres = CreateUri(new_uri_str, 0, 0, &new_uri); - heap_free(new_uri_str); + free(new_uri_str); if(FAILED(hres)) return hres; @@ -285,7 +285,7 @@ static HRESULT WINAPI URLMoniker_Reduce(IMoniker *iface, IBindCtx *pbc, { URLMoniker *This = impl_from_IMoniker(iface); - TRACE("(%p,%p,%d,%p,%p)\n", This, pbc, dwReduceHowFar, ppmkToLeft, ppmkReduced); + TRACE("(%p,%p,%ld,%p,%p)\n", This, pbc, dwReduceHowFar, ppmkToLeft, ppmkReduced); if(!ppmkReduced) return E_INVALIDARG; @@ -295,12 +295,27 @@ static HRESULT WINAPI URLMoniker_Reduce(IMoniker *iface, IBindCtx *pbc, return MK_S_REDUCED_TO_SELF; } -static HRESULT WINAPI URLMoniker_ComposeWith(IMoniker *iface, IMoniker *pmkRight, - BOOL fOnlyIfNotGeneric, IMoniker **ppmkComposite) +static HRESULT WINAPI URLMoniker_ComposeWith(IMoniker *iface, IMoniker *right, + BOOL only_if_not_generic, IMoniker **composite) { - URLMoniker *This = impl_from_IMoniker(iface); - FIXME("(%p)->(%p,%d,%p): stub\n",This,pmkRight,fOnlyIfNotGeneric,ppmkComposite); - return E_NOTIMPL; + HRESULT res; + IUri *right_uri; + IUriContainer *uri_container; + + TRACE("(%p)->(%p,%d,%p)\n", iface, right, only_if_not_generic, composite); + + if (!right || !composite) return E_INVALIDARG; + + res = IMoniker_QueryInterface(right, &IID_IUriContainer, (void**)&uri_container); + if (SUCCEEDED(res)){ + res = IUriContainer_GetIUri(uri_container, &right_uri); + if (SUCCEEDED(res)) res = CreateURLMonikerEx2(iface, right_uri, composite, 0); + IUriContainer_Release(uri_container); + return res; + } + + if(only_if_not_generic) return MK_E_NEEDGENERIC; + return CreateGenericComposite(iface, right, composite); } static HRESULT WINAPI URLMoniker_Enum(IMoniker *iface, BOOL fForward, IEnumMoniker **ppenumMoniker) @@ -542,7 +557,7 @@ static HRESULT create_moniker(IUri *uri, URLMoniker **ret) URLMoniker *mon; HRESULT hres; - mon = heap_alloc(sizeof(*mon)); + mon = malloc(sizeof(*mon)); if(!mon) return E_OUTOFMEMORY; @@ -554,7 +569,7 @@ static HRESULT create_moniker(IUri *uri, URLMoniker **ret) /* FIXME: try to avoid it */ hres = IUri_GetDisplayUri(uri, &mon->URLName); if(FAILED(hres)) { - heap_free(mon); + free(mon); return hres; } @@ -619,7 +634,7 @@ HRESULT WINAPI CreateURLMonikerEx(IMoniker *pmkContext, LPCWSTR szURL, IMoniker URLMoniker *obj; HRESULT hres; - TRACE("(%p, %s, %p, %08x)\n", pmkContext, debugstr_w(szURL), ppmk, dwFlags); + TRACE("(%p, %s, %p, %08lx)\n", pmkContext, debugstr_w(szURL), ppmk, dwFlags); if (ppmk) *ppmk = NULL; @@ -628,7 +643,7 @@ HRESULT WINAPI CreateURLMonikerEx(IMoniker *pmkContext, LPCWSTR szURL, IMoniker return E_INVALIDARG; if(dwFlags >= ARRAY_SIZE(create_flags_map)) { - FIXME("Unsupported flags %x\n", dwFlags); + FIXME("Unsupported flags %lx\n", dwFlags); return E_INVALIDARG; } @@ -672,7 +687,7 @@ HRESULT WINAPI CreateURLMonikerEx2(IMoniker *pmkContext, IUri *pUri, IMoniker ** URLMoniker *ret; HRESULT hres; - TRACE("(%p %p %p %x)\n", pmkContext, pUri, ppmk, dwFlags); + TRACE("(%p %p %p %lx)\n", pmkContext, pUri, ppmk, dwFlags); if (ppmk) *ppmk = NULL; @@ -681,7 +696,7 @@ HRESULT WINAPI CreateURLMonikerEx2(IMoniker *pmkContext, IUri *pUri, IMoniker ** return E_INVALIDARG; if(dwFlags >= ARRAY_SIZE(create_flags_map)) { - FIXME("Unsupported flags %x\n", dwFlags); + FIXME("Unsupported flags %lx\n", dwFlags); return E_INVALIDARG; } @@ -773,7 +788,7 @@ HRESULT WINAPI BindAsyncMoniker(IMoniker *pmk, DWORD grfOpt, IBindStatusCallback LPBC pbc = NULL; HRESULT hr = E_INVALIDARG; - TRACE("(%p %08x %p %s %p)\n", pmk, grfOpt, pbsc, debugstr_guid(iidResult), ppvResult); + TRACE("(%p %08lx %p %s %p)\n", pmk, grfOpt, pbsc, debugstr_guid(iidResult), ppvResult); if (pmk && ppvResult) { @@ -823,17 +838,17 @@ HRESULT WINAPI URLDownloadToCacheFileA(LPUNKNOWN lpUnkCaller, LPCSTR szURL, LPST int len; HRESULT hres; - TRACE("(%p %s %p %d %d %p)\n", lpUnkCaller, debugstr_a(szURL), szFileName, + TRACE("(%p %s %p %ld %ld %p)\n", lpUnkCaller, debugstr_a(szURL), szFileName, dwBufLength, dwReserved, pBSC); if(szURL) { len = MultiByteToWideChar(CP_ACP, 0, szURL, -1, NULL, 0); - url = heap_alloc(len*sizeof(WCHAR)); + url = malloc(len * sizeof(WCHAR)); MultiByteToWideChar(CP_ACP, 0, szURL, -1, url, len); } if(szFileName) - file_name = heap_alloc(dwBufLength*sizeof(WCHAR)); + file_name = malloc(dwBufLength * sizeof(WCHAR)); hres = URLDownloadToCacheFileW(lpUnkCaller, url, file_name, dwBufLength*sizeof(WCHAR), dwReserved, pBSC); @@ -841,8 +856,8 @@ HRESULT WINAPI URLDownloadToCacheFileA(LPUNKNOWN lpUnkCaller, LPCSTR szURL, LPST if(SUCCEEDED(hres) && file_name) WideCharToMultiByte(CP_ACP, 0, file_name, -1, szFileName, dwBufLength, NULL, NULL); - heap_free(url); - heap_free(file_name); + free(url); + free(file_name); return hres; } @@ -858,12 +873,9 @@ HRESULT WINAPI URLDownloadToCacheFileW(LPUNKNOWN lpUnkCaller, LPCWSTR szURL, LPW HRESULT hr; LPWSTR ext; - static WCHAR header[] = { - 'H','T','T','P','/','1','.','0',' ','2','0','0',' ', - 'O','K','\\','r','\\','n','\\','r','\\','n',0 - }; + static WCHAR header[] = L"HTTP/1.0 200 OK\\r\\n\\r\\n"; - TRACE("(%p, %s, %p, %d, %d, %p)\n", lpUnkCaller, debugstr_w(szURL), + TRACE("(%p, %s, %p, %ld, %ld, %p)\n", lpUnkCaller, debugstr_w(szURL), szFileName, dwBufLength, dwReserved, pBSC); if (!szURL || !szFileName) @@ -923,7 +935,7 @@ HRESULT WINAPI HlinkSimpleNavigateToString( LPCWSTR szTarget, LPCWSTR szLocation, LPCWSTR szTargetFrameName, IUnknown *pUnk, IBindCtx *pbc, IBindStatusCallback *pbsc, DWORD grfHLNF, DWORD dwReserved) { - FIXME("%s %s %s %p %p %p %u %u partial stub\n", debugstr_w( szTarget ), debugstr_w( szLocation ), + FIXME("%s %s %s %p %p %p %lu %lu partial stub\n", debugstr_w( szTarget ), debugstr_w( szLocation ), debugstr_w( szTargetFrameName ), pUnk, pbc, pbsc, grfHLNF, dwReserved); /* undocumented: 0 means HLNF_OPENINNEWWINDOW*/ @@ -932,11 +944,10 @@ HRESULT WINAPI HlinkSimpleNavigateToString( LPCWSTR szTarget, if (grfHLNF == HLNF_OPENINNEWWINDOW) { SHELLEXECUTEINFOW sei; - static const WCHAR openW[] = { 'o', 'p', 'e', 'n', 0 }; memset(&sei, 0, sizeof(sei)); sei.cbSize = sizeof(sei); - sei.lpVerb = openW; + sei.lpVerb = L"open"; sei.nShow = SW_SHOWNORMAL; sei.fMask = SEE_MASK_FLAG_NO_UI | SEE_MASK_NO_CONSOLE; sei.lpFile = szTarget; diff --git a/dll/win32/urlmon/umstream.c b/dll/win32/urlmon/umstream.c index 6243954526a..466e7668906 100644 --- a/dll/win32/urlmon/umstream.c +++ b/dll/win32/urlmon/umstream.c @@ -22,7 +22,7 @@ #include "urlmon_main.h" #include "winreg.h" -#include "wine/winternl.h" +#include "winternl.h" #include "wininet.h" #include "shlwapi.h" @@ -263,13 +263,13 @@ HRESULT WINAPI URLOpenBlockingStreamA(LPUNKNOWN pCaller, LPCSTR szURL, int len; HRESULT hr; - TRACE("(%p, %s, %p, 0x%x, %p)\n", pCaller, szURL, ppStream, dwReserved, lpfnCB); + TRACE("(%p, %s, %p, 0x%lx, %p)\n", pCaller, szURL, ppStream, dwReserved, lpfnCB); if (!szURL || !ppStream) return E_INVALIDARG; len = MultiByteToWideChar(CP_ACP, 0, szURL, -1, NULL, 0); - szURLW = heap_alloc(len * sizeof(WCHAR)); + szURLW = malloc(len * sizeof(WCHAR)); if (!szURLW) { *ppStream = NULL; @@ -279,7 +279,7 @@ HRESULT WINAPI URLOpenBlockingStreamA(LPUNKNOWN pCaller, LPCSTR szURL, hr = URLOpenBlockingStreamW(pCaller, szURLW, ppStream, dwReserved, lpfnCB); - heap_free(szURLW); + free(szURLW); return hr; } @@ -293,7 +293,7 @@ HRESULT WINAPI URLOpenBlockingStreamW(LPUNKNOWN pCaller, LPCWSTR szURL, { ProxyBindStatusCallback blocking_bsc; - TRACE("(%p, %s, %p, 0x%x, %p)\n", pCaller, debugstr_w(szURL), ppStream, + TRACE("(%p, %s, %p, 0x%lx, %p)\n", pCaller, debugstr_w(szURL), ppStream, dwReserved, lpfnCB); if (!szURL || !ppStream) @@ -315,20 +315,20 @@ HRESULT WINAPI URLOpenStreamA(LPUNKNOWN pCaller, LPCSTR szURL, DWORD dwReserved, int len; HRESULT hr; - TRACE("(%p, %s, 0x%x, %p)\n", pCaller, szURL, dwReserved, lpfnCB); + TRACE("(%p, %s, 0x%lx, %p)\n", pCaller, szURL, dwReserved, lpfnCB); if (!szURL) return E_INVALIDARG; len = MultiByteToWideChar(CP_ACP, 0, szURL, -1, NULL, 0); - szURLW = heap_alloc(len * sizeof(WCHAR)); + szURLW = malloc(len * sizeof(WCHAR)); if (!szURLW) return E_OUTOFMEMORY; MultiByteToWideChar(CP_ACP, 0, szURL, -1, szURLW, len); hr = URLOpenStreamW(pCaller, szURLW, dwReserved, lpfnCB); - heap_free(szURLW); + free(szURLW); return hr; } @@ -343,7 +343,7 @@ HRESULT WINAPI URLOpenStreamW(LPUNKNOWN pCaller, LPCWSTR szURL, DWORD dwReserved ProxyBindStatusCallback async_bsc; IStream *pStream; - TRACE("(%p, %s, 0x%x, %p)\n", pCaller, debugstr_w(szURL), dwReserved, + TRACE("(%p, %s, 0x%lx, %p)\n", pCaller, debugstr_w(szURL), dwReserved, lpfnCB); if (!szURL) @@ -358,3 +358,13 @@ HRESULT WINAPI URLOpenStreamW(LPUNKNOWN pCaller, LPCWSTR szURL, DWORD dwReserved return hr; } + +/*********************************************************************** + * URLOpenPullStreamW (URLMON.@) + */ +HRESULT WINAPI URLOpenPullStreamW(IUnknown *caller, const WCHAR *url, DWORD reserved, + IBindStatusCallback *callback) +{ + FIXME("%p %s %lu %p, stub!\n", caller, debugstr_w(url), reserved, callback); + return E_NOTIMPL; +} diff --git a/dll/win32/urlmon/uri.c b/dll/win32/urlmon/uri.c index 733671cf74f..cb5266518d1 100644 --- a/dll/win32/urlmon/uri.c +++ b/dll/win32/urlmon/uri.c @@ -27,6 +27,10 @@ #include "shlwapi.h" #include "strsafe.h" +#include "winternl.h" +#include "inaddr.h" +#include "in6addr.h" +#include "ip2string.h" #define URI_DISPLAY_NO_ABSOLUTE_URI 0x1 #define URI_DISPLAY_NO_DEFAULT_PORT_AUTH 0x2 @@ -128,27 +132,6 @@ typedef struct { DWORD username_len; } UriBuilder; -typedef struct { - const WCHAR *str; - DWORD len; -} h16; - -typedef struct { - /* IPv6 addresses can hold up to 8 h16 components. */ - h16 components[8]; - DWORD h16_count; - - /* An IPv6 can have 1 elision ("::"). */ - const WCHAR *elision; - - /* An IPv6 can contain 1 IPv4 address as the last 32bits of the address. */ - const WCHAR *ipv4; - DWORD ipv4_len; - - INT components_size; - INT elision_size; -} ipv6_address; - typedef struct { BSTR uri; @@ -173,8 +156,7 @@ typedef struct { DWORD host_len; Uri_HOST_TYPE host_type; - BOOL has_ipv6; - ipv6_address ipv6_address; + IN6_ADDR ipv6_address; BOOL has_port; const WCHAR *port; @@ -198,28 +180,28 @@ static const struct { URL_SCHEME scheme; WCHAR scheme_name[16]; } recognized_schemes[] = { - {URL_SCHEME_FTP, {'f','t','p',0}}, - {URL_SCHEME_HTTP, {'h','t','t','p',0}}, - {URL_SCHEME_GOPHER, {'g','o','p','h','e','r',0}}, - {URL_SCHEME_MAILTO, {'m','a','i','l','t','o',0}}, - {URL_SCHEME_NEWS, {'n','e','w','s',0}}, - {URL_SCHEME_NNTP, {'n','n','t','p',0}}, - {URL_SCHEME_TELNET, {'t','e','l','n','e','t',0}}, - {URL_SCHEME_WAIS, {'w','a','i','s',0}}, - {URL_SCHEME_FILE, {'f','i','l','e',0}}, - {URL_SCHEME_MK, {'m','k',0}}, - {URL_SCHEME_HTTPS, {'h','t','t','p','s',0}}, - {URL_SCHEME_SHELL, {'s','h','e','l','l',0}}, - {URL_SCHEME_SNEWS, {'s','n','e','w','s',0}}, - {URL_SCHEME_LOCAL, {'l','o','c','a','l',0}}, - {URL_SCHEME_JAVASCRIPT, {'j','a','v','a','s','c','r','i','p','t',0}}, - {URL_SCHEME_VBSCRIPT, {'v','b','s','c','r','i','p','t',0}}, - {URL_SCHEME_ABOUT, {'a','b','o','u','t',0}}, - {URL_SCHEME_RES, {'r','e','s',0}}, - {URL_SCHEME_MSSHELLROOTED, {'m','s','-','s','h','e','l','l','-','r','o','o','t','e','d',0}}, - {URL_SCHEME_MSSHELLIDLIST, {'m','s','-','s','h','e','l','l','-','i','d','l','i','s','t',0}}, - {URL_SCHEME_MSHELP, {'h','c','p',0}}, - {URL_SCHEME_WILDCARD, {'*',0}} + {URL_SCHEME_FTP, L"ftp"}, + {URL_SCHEME_HTTP, L"http"}, + {URL_SCHEME_GOPHER, L"gopher"}, + {URL_SCHEME_MAILTO, L"mailto"}, + {URL_SCHEME_NEWS, L"news"}, + {URL_SCHEME_NNTP, L"nntp"}, + {URL_SCHEME_TELNET, L"telnet"}, + {URL_SCHEME_WAIS, L"wais"}, + {URL_SCHEME_FILE, L"file"}, + {URL_SCHEME_MK, L"mk"}, + {URL_SCHEME_HTTPS, L"https"}, + {URL_SCHEME_SHELL, L"shell"}, + {URL_SCHEME_SNEWS, L"snews"}, + {URL_SCHEME_LOCAL, L"local"}, + {URL_SCHEME_JAVASCRIPT, L"javascript"}, + {URL_SCHEME_VBSCRIPT, L"vbscript"}, + {URL_SCHEME_ABOUT, L"about"}, + {URL_SCHEME_RES, L"res"}, + {URL_SCHEME_MSSHELLROOTED, L"ms-shell-rooted"}, + {URL_SCHEME_MSSHELLIDLIST, L"ms-shell-idlist"}, + {URL_SCHEME_MSHELP, L"hcp"}, + {URL_SCHEME_WILDCARD, L"*"} }; /* List of default ports Windows recognizes. */ @@ -242,13 +224,13 @@ static const struct { static const struct { WCHAR tld_name[4]; } recognized_tlds[] = { - {{'c','o','m',0}}, - {{'e','d','u',0}}, - {{'g','o','v',0}}, - {{'i','n','t',0}}, - {{'m','i','l',0}}, - {{'n','e','t',0}}, - {{'o','r','g',0}} + {L"com"}, + {L"edu"}, + {L"gov"}, + {L"int"}, + {L"mil"}, + {L"net"}, + {L"org"} }; static Uri *get_uri_obj(IUri *uri) @@ -435,31 +417,6 @@ static inline BOOL is_hierarchical_uri(const WCHAR **ptr, const parse_data *data return FALSE; } -/* Computes the size of the given IPv6 address. - * Each h16 component is 16 bits. If there is an IPv4 address, it's - * 32 bits. If there's an elision it can be 16 to 128 bits, depending - * on the number of other components. - * - * Modeled after google-url's CheckIPv6ComponentsSize function - */ -static void compute_ipv6_comps_size(ipv6_address *address) { - address->components_size = address->h16_count * 2; - - if(address->ipv4) - /* IPv4 address is 4 bytes. */ - address->components_size += 4; - - if(address->elision) { - /* An elision can be anywhere from 2 bytes up to 16 bytes. - * Its size depends on the size of the h16 and IPv4 components. - */ - address->elision_size = 16 - address->components_size; - if(address->elision_size < 2) - address->elision_size = 2; - } else - address->elision_size = 0; -} - /* Taken from dlls/jscript/lex.c */ static int hex_to_int(WCHAR val) { if(val >= '0' && val <= '9') @@ -568,11 +525,19 @@ void find_domain_name(const WCHAR *host, DWORD host_len, return; } } else if(last_tld-host < 3) - /* Anything less than 3 characters is considered part + { + /* Anything less than 3 ASCII characters is considered part * of the TLD name. * Ex: ak.uk -> Has no domain name. */ - return; + for(p = host; p < last_tld; p++) { + if(!is_ascii(*p)) + break; + } + + if(p == last_tld) + return; + } /* Otherwise the domain name is the whole host name. */ *domain_start = 0; @@ -677,7 +642,7 @@ static DWORD remove_dot_segments(WCHAR *path, DWORD path_len) { } len = out - path; - TRACE("(%p %d): Path after dot segments removed %s len=%d\n", path, path_len, + TRACE("(%p %ld): Path after dot segments removed %s len=%ld\n", path, path_len, debugstr_wn(path, len), len); return len; } @@ -694,72 +659,6 @@ static INT find_file_extension(const WCHAR *path, DWORD path_len) { return -1; } -/* Computes the location where the elision should occur in the IPv6 - * address using the numerical values of each component stored in - * 'values'. If the address shouldn't contain an elision then 'index' - * is assigned -1 as its value. Otherwise 'index' will contain the - * starting index (into values) where the elision should be, and 'count' - * will contain the number of cells the elision covers. - * - * NOTES: - * Windows will expand an elision if the elision only represents one h16 - * component of the address. - * - * Ex: [1::2:3:4:5:6:7] -> [1:0:2:3:4:5:6:7] - * - * If the IPv6 address contains an IPv4 address, the IPv4 address is also - * considered for being included as part of an elision if all its components - * are zeros. - * - * Ex: [1:2:3:4:5:6:0.0.0.0] -> [1:2:3:4:5:6::] - */ -static void compute_elision_location(const ipv6_address *address, const USHORT values[8], - INT *index, DWORD *count) { - DWORD i, max_len, cur_len; - INT max_index, cur_index; - - max_len = cur_len = 0; - max_index = cur_index = -1; - for(i = 0; i < 8; ++i) { - BOOL check_ipv4 = (address->ipv4 && i == 6); - BOOL is_end = (check_ipv4 || i == 7); - - if(check_ipv4) { - /* Check if the IPv4 address contains only zeros. */ - if(values[i] == 0 && values[i+1] == 0) { - if(cur_index == -1) - cur_index = i; - - cur_len += 2; - ++i; - } - } else if(values[i] == 0) { - if(cur_index == -1) - cur_index = i; - - ++cur_len; - } - - if(is_end || values[i] != 0) { - /* We only consider it for an elision if it's - * more than 1 component long. - */ - if(cur_len > 1 && cur_len > max_len) { - /* Found the new elision location. */ - max_len = cur_len; - max_index = cur_index; - } - - /* Reset the current range for the next range of zeros. */ - cur_index = -1; - cur_len = 0; - } - } - - *index = max_index; - *count = max_len; -} - /* Removes all the leading and trailing white spaces or * control characters from the URI and removes all control * characters inside of the URI string. @@ -799,30 +698,6 @@ static BSTR pre_process_uri(LPCWSTR uri) { return ret; } -/* Converts the specified IPv4 address into an uint value. - * - * This function assumes that the IPv4 address has already been validated. - */ -static UINT ipv4toui(const WCHAR *ip, DWORD len) { - UINT ret = 0; - DWORD comp_value = 0; - const WCHAR *ptr; - - for(ptr = ip; ptr < ip+len; ++ptr) { - if(*ptr == '.') { - ret <<= 8; - ret += comp_value; - comp_value = 0; - } else - comp_value = comp_value*10 + (*ptr-'0'); - } - - ret <<= 8; - ret += comp_value; - - return ret; -} - /* Converts an IPv4 address in numerical form into its fully qualified * string form. This function returns the number of characters written * to 'dest'. If 'dest' is NULL this function will return the number of @@ -832,8 +707,6 @@ static UINT ipv4toui(const WCHAR *ip, DWORD len) { * address. */ static DWORD ui2ipv4(WCHAR *dest, UINT address) { - static const WCHAR formatW[] = - {'%','u','.','%','u','.','%','u','.','%','u',0}; DWORD ret = 0; UCHAR digits[4]; @@ -844,90 +717,25 @@ static DWORD ui2ipv4(WCHAR *dest, UINT address) { if(!dest) { WCHAR tmp[16]; - ret = swprintf(tmp, formatW, digits[0], digits[1], digits[2], digits[3]); + ret = swprintf(tmp, ARRAY_SIZE(tmp), L"%u.%u.%u.%u", digits[0], digits[1], digits[2], digits[3]); } else - ret = swprintf(dest, formatW, digits[0], digits[1], digits[2], digits[3]); + ret = swprintf(dest, 16, L"%u.%u.%u.%u", digits[0], digits[1], digits[2], digits[3]); return ret; } static DWORD ui2str(WCHAR *dest, UINT value) { - static const WCHAR formatW[] = {'%','u',0}; DWORD ret = 0; if(!dest) { WCHAR tmp[11]; - ret = swprintf(tmp, formatW, value); + ret = swprintf(tmp, ARRAY_SIZE(tmp), L"%u", value); } else - ret = swprintf(dest, formatW, value); + ret = swprintf(dest, 11, L"%u", value); return ret; } -/* Converts a h16 component (from an IPv6 address) into its - * numerical value. - * - * This function assumes that the h16 component has already been validated. - */ -static USHORT h16tous(h16 component) { - DWORD i; - USHORT ret = 0; - - for(i = 0; i < component.len; ++i) { - ret <<= 4; - ret += hex_to_int(component.str[i]); - } - - return ret; -} - -/* Converts an IPv6 address into its 128 bits (16 bytes) numerical value. - * - * This function assumes that the ipv6_address has already been validated. - */ -static BOOL ipv6_to_number(const ipv6_address *address, USHORT number[8]) { - DWORD i, cur_component = 0; - BOOL already_passed_elision = FALSE; - - for(i = 0; i < address->h16_count; ++i) { - if(address->elision) { - if(address->components[i].str > address->elision && !already_passed_elision) { - /* Means we just passed the elision and need to add its values to - * 'number' before we do anything else. - */ - INT j; - for(j = 0; j < address->elision_size; j+=2) - number[cur_component++] = 0; - - already_passed_elision = TRUE; - } - } - - number[cur_component++] = h16tous(address->components[i]); - } - - /* Case when the elision appears after the h16 components. */ - if(!already_passed_elision && address->elision) { - INT j; - for(j = 0; j < address->elision_size; j+=2) - number[cur_component++] = 0; - } - - if(address->ipv4) { - UINT value = ipv4toui(address->ipv4, address->ipv4_len); - - if(cur_component != 6) { - ERR("(%p %p): Failed sanity check with %d\n", address, number, cur_component); - return FALSE; - } - - number[cur_component++] = (value >> 16) & 0xffff; - number[cur_component] = value & 0xffff; - } - - return TRUE; -} - /* Checks if the characters pointed to by 'ptr' are * a percent encoded data octet. * @@ -1167,22 +975,19 @@ static BOOL parse_scheme_type(parse_data *data) { * Returns TRUE if it was able to successfully parse the information. */ static BOOL parse_scheme(const WCHAR **ptr, parse_data *data, DWORD flags, DWORD extras) { - static const WCHAR fileW[] = {'f','i','l','e',0}; - static const WCHAR wildcardW[] = {'*',0}; - /* First check to see if the uri could implicitly be a file path. */ if(is_implicit_file_path(*ptr)) { if(flags & Uri_CREATE_ALLOW_IMPLICIT_FILE_SCHEME) { - data->scheme = fileW; - data->scheme_len = lstrlenW(fileW); + data->scheme = L"file"; + data->scheme_len = lstrlenW(L"file"); data->has_implicit_scheme = TRUE; - TRACE("(%p %p %x): URI is an implicit file path.\n", ptr, data, flags); + TRACE("(%p %p %lx): URI is an implicit file path.\n", ptr, data, flags); } else { /* Windows does not consider anything that can implicitly be a file * path to be a valid URI if the ALLOW_IMPLICIT_FILE_SCHEME flag is not set... */ - TRACE("(%p %p %x): URI is implicitly a file path, but, the ALLOW_IMPLICIT_FILE_SCHEME flag wasn't set.\n", + TRACE("(%p %p %lx): URI is implicitly a file path, but, the ALLOW_IMPLICIT_FILE_SCHEME flag wasn't set.\n", ptr, data, flags); return FALSE; } @@ -1193,28 +998,28 @@ static BOOL parse_scheme(const WCHAR **ptr, parse_data *data, DWORD flags, DWORD * c) an invalid URI. */ if(flags & Uri_CREATE_ALLOW_IMPLICIT_WILDCARD_SCHEME) { - data->scheme = wildcardW; - data->scheme_len = lstrlenW(wildcardW); + data->scheme = L"*"; + data->scheme_len = lstrlenW(L"*"); data->has_implicit_scheme = TRUE; - TRACE("(%p %p %x): URI is an implicit wildcard scheme.\n", ptr, data, flags); + TRACE("(%p %p %lx): URI is an implicit wildcard scheme.\n", ptr, data, flags); } else if (flags & Uri_CREATE_ALLOW_RELATIVE) { data->is_relative = TRUE; - TRACE("(%p %p %x): URI is relative.\n", ptr, data, flags); + TRACE("(%p %p %lx): URI is relative.\n", ptr, data, flags); } else { - TRACE("(%p %p %x): Malformed URI found. Unable to deduce scheme name.\n", ptr, data, flags); + TRACE("(%p %p %lx): Malformed URI found. Unable to deduce scheme name.\n", ptr, data, flags); return FALSE; } } if(!data->is_relative) - TRACE("(%p %p %x): Found scheme=%s scheme_len=%d\n", ptr, data, flags, + TRACE("(%p %p %lx): Found scheme=%s scheme_len=%ld\n", ptr, data, flags, debugstr_wn(data->scheme, data->scheme_len), data->scheme_len); if(!parse_scheme_type(data)) return FALSE; - TRACE("(%p %p %x): Assigned %d as the URL_SCHEME.\n", ptr, data, flags, data->scheme_type); + TRACE("(%p %p %lx): Assigned %d as the URL_SCHEME.\n", ptr, data, flags, data->scheme_type); return TRUE; } @@ -1297,7 +1102,7 @@ static void parse_userinfo(const WCHAR **ptr, parse_data *data, DWORD flags) { const WCHAR *start = *ptr; if(!parse_username(ptr, data, flags, 0)) { - TRACE("(%p %p %x): URI contained no userinfo.\n", ptr, data, flags); + TRACE("(%p %p %lx): URI contained no userinfo.\n", ptr, data, flags); return; } @@ -1307,7 +1112,7 @@ static void parse_userinfo(const WCHAR **ptr, parse_data *data, DWORD flags) { *ptr = start; data->username = NULL; data->username_len = 0; - TRACE("(%p %p %x): URI contained no userinfo.\n", ptr, data, flags); + TRACE("(%p %p %lx): URI contained no userinfo.\n", ptr, data, flags); return; } } @@ -1319,16 +1124,16 @@ static void parse_userinfo(const WCHAR **ptr, parse_data *data, DWORD flags) { data->password = NULL; data->password_len = 0; - TRACE("(%p %p %x): URI contained no userinfo.\n", ptr, data, flags); + TRACE("(%p %p %lx): URI contained no userinfo.\n", ptr, data, flags); return; } if(data->username) - TRACE("(%p %p %x): Found username %s len=%d.\n", ptr, data, flags, + TRACE("(%p %p %lx): Found username %s len=%ld.\n", ptr, data, flags, debugstr_wn(data->username, data->username_len), data->username_len); if(data->password) - TRACE("(%p %p %x): Found password %s len=%d.\n", ptr, data, flags, + TRACE("(%p %p %lx): Found password %s len=%ld.\n", ptr, data, flags, debugstr_wn(data->password, data->password_len), data->password_len); ++(*ptr); @@ -1342,7 +1147,7 @@ static void parse_userinfo(const WCHAR **ptr, parse_data *data, DWORD flags) { * * port = *DIGIT */ -static BOOL parse_port(const WCHAR **ptr, parse_data *data, DWORD flags) { +static BOOL parse_port(const WCHAR **ptr, parse_data *data) { UINT port = 0; data->port = *ptr; @@ -1368,7 +1173,7 @@ static BOOL parse_port(const WCHAR **ptr, parse_data *data, DWORD flags) { data->port_value = port; data->port_len = *ptr - data->port; - TRACE("(%p %p %x): Found port %s len=%d value=%u\n", ptr, data, flags, + TRACE("(%p %p): Found port %s len=%ld value=%lu\n", ptr, data, debugstr_wn(data->port, data->port_len), data->port_len, data->port_value); return TRUE; } @@ -1387,14 +1192,13 @@ static BOOL parse_port(const WCHAR **ptr, parse_data *data, DWORD flags) { * is UINT_MAX, if the value in the URI exceeds this then * it is not considered an IPv4 address. */ -static BOOL parse_ipv4address(const WCHAR **ptr, parse_data *data, DWORD flags) { +static BOOL parse_ipv4address(const WCHAR **ptr, parse_data *data) { const BOOL is_unknown = data->scheme_type == URL_SCHEME_UNKNOWN; data->host = *ptr; if(!check_ipv4address(ptr, FALSE)) { if(!check_implicit_ipv4(ptr, &data->implicit_ipv4)) { - TRACE("(%p %p %x): URI didn't contain anything looking like an IPv4 address.\n", - ptr, data, flags); + TRACE("(%p %p): URI didn't contain anything looking like an IPv4 address.\n", ptr, data); *ptr = data->host; data->host = NULL; return FALSE; @@ -1410,7 +1214,7 @@ static BOOL parse_ipv4address(const WCHAR **ptr, parse_data *data, DWORD flags) */ if(**ptr == ':') { ++(*ptr); - if(!parse_port(ptr, data, flags)) { + if(!parse_port(ptr, data)) { *ptr = data->host; data->host = NULL; return FALSE; @@ -1423,8 +1227,8 @@ static BOOL parse_ipv4address(const WCHAR **ptr, parse_data *data, DWORD flags) return FALSE; } - TRACE("(%p %p %x): IPv4 address found. host=%s host_len=%d host_type=%d\n", - ptr, data, flags, debugstr_wn(data->host, data->host_len), + TRACE("(%p %p): IPv4 address found. host=%s host_len=%ld host_type=%d\n", + ptr, data, debugstr_wn(data->host, data->host_len), data->host_len, data->host_type); return TRUE; } @@ -1449,7 +1253,7 @@ static BOOL parse_ipv4address(const WCHAR **ptr, parse_data *data, DWORD flags) * * A reg-name CAN be empty. */ -static BOOL parse_reg_name(const WCHAR **ptr, parse_data *data, DWORD flags, DWORD extras) { +static BOOL parse_reg_name(const WCHAR **ptr, parse_data *data, DWORD extras) { const BOOL has_start_bracket = **ptr == '['; const BOOL known_scheme = data->scheme_type != URL_SCHEME_UNKNOWN; const BOOL is_res = data->scheme_type == URL_SCHEME_RES; @@ -1489,12 +1293,12 @@ static BOOL parse_reg_name(const WCHAR **ptr, parse_data *data, DWORD flags, DWO const WCHAR *tmp = (*ptr)++; /* Attempt to parse the port. */ - if(!parse_port(ptr, data, flags)) { + if(!parse_port(ptr, data)) { /* Windows expects there to be a valid port for known scheme types. */ if(data->scheme_type != URL_SCHEME_UNKNOWN) { *ptr = data->host; data->host = NULL; - TRACE("(%p %p %x %x): Expected valid port\n", ptr, data, flags, extras); + TRACE("(%p %p %lx): Expected valid port\n", ptr, data, extras); return FALSE; } else /* Windows gives up on trying to parse a port when it @@ -1529,8 +1333,7 @@ static BOOL parse_reg_name(const WCHAR **ptr, parse_data *data, DWORD flags, DWO if(has_start_bracket) { /* Make sure the last character of the host wasn't a ']'. */ if(*(*ptr-1) == ']') { - TRACE("(%p %p %x %x): Expected an IP literal inside of the host\n", - ptr, data, flags, extras); + TRACE("(%p %p %lx): Expected an IP literal inside of the host\n", ptr, data, extras); *ptr = data->host; data->host = NULL; return FALSE; @@ -1544,11 +1347,21 @@ static BOOL parse_reg_name(const WCHAR **ptr, parse_data *data, DWORD flags, DWO /* If the host is empty, then it's an unknown host type. */ if(data->host_len == 0 || is_res) data->host_type = Uri_HOST_UNKNOWN; - else + else { + unsigned int i; + data->host_type = Uri_HOST_DNS; - TRACE("(%p %p %x %x): Parsed reg-name. host=%s len=%d\n", ptr, data, flags, extras, - debugstr_wn(data->host, data->host_len), data->host_len); + for(i = 0; i < data->host_len; i++) { + if(!is_ascii(data->host[i])) { + data->host_type = Uri_HOST_IDN; + break; + } + } + } + + TRACE("(%p %p %lx): Parsed reg-name. host=%s len=%ld type=%d\n", ptr, data, extras, + debugstr_wn(data->host, data->host_len), data->host_len, data->host_type); return TRUE; } @@ -1569,155 +1382,22 @@ static BOOL parse_reg_name(const WCHAR **ptr, parse_data *data, DWORD flags, DWO * * h16 = 1*4HEXDIG * ; 16 bits of address represented in hexadecimal. - * - * Modeled after google-url's 'DoParseIPv6' function. */ -static BOOL parse_ipv6address(const WCHAR **ptr, parse_data *data, DWORD flags) { - const WCHAR *start, *cur_start; - ipv6_address ip; +static BOOL parse_ipv6address(const WCHAR **ptr, parse_data *data) { + const WCHAR *terminator; - start = cur_start = *ptr; - memset(&ip, 0, sizeof(ipv6_address)); - - for(;; ++(*ptr)) { - /* Check if we're on the last character of the host. */ - BOOL is_end = (is_auth_delim(**ptr, data->scheme_type != URL_SCHEME_UNKNOWN) - || **ptr == ']'); - - BOOL is_split = (**ptr == ':'); - BOOL is_elision = (is_split && !is_end && *(*ptr+1) == ':'); - - /* Check if we're at the end of a component, or - * if we're at the end of the IPv6 address. - */ - if(is_split || is_end) { - DWORD cur_len = 0; - - cur_len = *ptr - cur_start; - - /* h16 can't have a length > 4. */ - if(cur_len > 4) { - *ptr = start; - - TRACE("(%p %p %x): h16 component to long.\n", - ptr, data, flags); - return FALSE; - } - - if(cur_len == 0) { - /* An h16 component can't have the length of 0 unless - * the elision is at the beginning of the address, or - * at the end of the address. - */ - if(!((*ptr == start && is_elision) || - (is_end && (*ptr-2) == ip.elision))) { - *ptr = start; - TRACE("(%p %p %x): IPv6 component cannot have a length of 0.\n", - ptr, data, flags); - return FALSE; - } - } - - if(cur_len > 0) { - /* An IPv6 address can have no more than 8 h16 components. */ - if(ip.h16_count >= 8) { - *ptr = start; - TRACE("(%p %p %x): Not a IPv6 address, too many h16 components.\n", - ptr, data, flags); - return FALSE; - } - - ip.components[ip.h16_count].str = cur_start; - ip.components[ip.h16_count].len = cur_len; - - TRACE("(%p %p %x): Found h16 component %s, len=%d, h16_count=%d\n", - ptr, data, flags, debugstr_wn(cur_start, cur_len), cur_len, - ip.h16_count); - ++ip.h16_count; - } - } - - if(is_end) - break; - - if(is_elision) { - /* A IPv6 address can only have 1 elision ('::'). */ - if(ip.elision) { - *ptr = start; - - TRACE("(%p %p %x): IPv6 address cannot have 2 elisions.\n", - ptr, data, flags); - return FALSE; - } - - ip.elision = *ptr; - ++(*ptr); - } - - if(is_split) - cur_start = *ptr+1; - else { - if(!check_ipv4address(ptr, TRUE)) { - if(!is_hexdigit(**ptr)) { - /* Not a valid character for an IPv6 address. */ - *ptr = start; - return FALSE; - } - } else { - /* Found an IPv4 address. */ - ip.ipv4 = cur_start; - ip.ipv4_len = *ptr - cur_start; - - TRACE("(%p %p %x): Found an attached IPv4 address %s len=%d.\n", - ptr, data, flags, debugstr_wn(ip.ipv4, ip.ipv4_len), - ip.ipv4_len); - - /* IPv4 addresses can only appear at the end of a IPv6. */ - break; - } - } - } - - compute_ipv6_comps_size(&ip); - - /* Make sure the IPv6 address adds up to 16 bytes. */ - if(ip.components_size + ip.elision_size != 16) { - *ptr = start; - TRACE("(%p %p %x): Invalid IPv6 address, did not add up to 16 bytes.\n", - ptr, data, flags); + if(RtlIpv6StringToAddressW(*ptr, &terminator, &data->ipv6_address)) + return FALSE; + if(*terminator != ']' && !is_auth_delim(*terminator, data->scheme_type != URL_SCHEME_UNKNOWN)) return FALSE; - } - - if(ip.elision_size == 2) { - /* For some reason on Windows if an elision that represents - * only one h16 component is encountered at the very begin or - * end of an IPv6 address, Windows does not consider it a - * valid IPv6 address. - * - * Ex: [::2:3:4:5:6:7] is not valid, even though the sum - * of all the components == 128bits. - */ - if(ip.elision < ip.components[0].str || - ip.elision > ip.components[ip.h16_count-1].str) { - *ptr = start; - TRACE("(%p %p %x): Invalid IPv6 address. Detected elision of 2 bytes at the beginning or end of the address.\n", - ptr, data, flags); - return FALSE; - } - } + *ptr = terminator; data->host_type = Uri_HOST_IPV6; - data->has_ipv6 = TRUE; - data->ipv6_address = ip; - - TRACE("(%p %p %x): Found valid IPv6 literal %s len=%d\n", - ptr, data, flags, debugstr_wn(start, *ptr-start), - (int)(*ptr-start)); return TRUE; } /* IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" ) */ -static BOOL parse_ipvfuture(const WCHAR **ptr, parse_data *data, DWORD flags) { +static BOOL parse_ipvfuture(const WCHAR **ptr, parse_data *data) { const WCHAR *start = *ptr; /* IPvFuture has to start with a 'v' or 'V'. */ @@ -1753,14 +1433,14 @@ static BOOL parse_ipvfuture(const WCHAR **ptr, parse_data *data, DWORD flags) { data->host_type = Uri_HOST_UNKNOWN; - TRACE("(%p %p %x): Parsed IPvFuture address %s len=%d\n", ptr, data, flags, + TRACE("(%p %p): Parsed IPvFuture address %s len=%d\n", ptr, data, debugstr_wn(start, *ptr-start), (int)(*ptr-start)); return TRUE; } /* IP-literal = "[" ( IPv6address / IPvFuture ) "]" */ -static BOOL parse_ip_literal(const WCHAR **ptr, parse_data *data, DWORD flags, DWORD extras) { +static BOOL parse_ip_literal(const WCHAR **ptr, parse_data *data, DWORD extras) { data->host = *ptr; if(**ptr != '[' && !(extras & ALLOW_BRACKETLESS_IP_LITERAL)) { @@ -1769,8 +1449,8 @@ static BOOL parse_ip_literal(const WCHAR **ptr, parse_data *data, DWORD flags, D } else if(**ptr == '[') ++(*ptr); - if(!parse_ipv6address(ptr, data, flags)) { - if(extras & SKIP_IP_FUTURE_CHECK || !parse_ipvfuture(ptr, data, flags)) { + if(!parse_ipv6address(ptr, data)) { + if(extras & SKIP_IP_FUTURE_CHECK || !parse_ipvfuture(ptr, data)) { *ptr = data->host; data->host = NULL; return FALSE; @@ -1795,7 +1475,7 @@ static BOOL parse_ip_literal(const WCHAR **ptr, parse_data *data, DWORD flags, D /* If a valid port is not found, then let it trickle down to * parse_reg_name. */ - if(!parse_port(ptr, data, flags)) { + if(!parse_port(ptr, data)) { *ptr = data->host; data->host = NULL; return FALSE; @@ -1810,12 +1490,11 @@ static BOOL parse_ip_literal(const WCHAR **ptr, parse_data *data, DWORD flags, D * * host = IP-literal / IPv4address / reg-name */ -static BOOL parse_host(const WCHAR **ptr, parse_data *data, DWORD flags, DWORD extras) { - if(!parse_ip_literal(ptr, data, flags, extras)) { - if(!parse_ipv4address(ptr, data, flags)) { - if(!parse_reg_name(ptr, data, flags, extras)) { - TRACE("(%p %p %x %x): Malformed URI, Unknown host type.\n", - ptr, data, flags, extras); +static BOOL parse_host(const WCHAR **ptr, parse_data *data, DWORD extras) { + if(!parse_ip_literal(ptr, data, extras)) { + if(!parse_ipv4address(ptr, data)) { + if(!parse_reg_name(ptr, data, extras)) { + TRACE("(%p %p %lx): Malformed URI, Unknown host type.\n", ptr, data, extras); return FALSE; } } @@ -1834,7 +1513,7 @@ static BOOL parse_authority(const WCHAR **ptr, parse_data *data, DWORD flags) { /* Parsing the port will happen during one of the host parsing * routines (if the URI has a port). */ - if(!parse_host(ptr, data, flags, 0)) + if(!parse_host(ptr, data, 0)) return FALSE; return TRUE; @@ -1843,7 +1522,6 @@ static BOOL parse_authority(const WCHAR **ptr, parse_data *data, DWORD flags) { /* Attempts to parse the path information of a hierarchical URI. */ static BOOL parse_path_hierarchical(const WCHAR **ptr, parse_data *data, DWORD flags) { const WCHAR *start = *ptr; - static const WCHAR slash[] = {'/',0}; const BOOL is_file = data->scheme_type == URL_SCHEME_FILE; if(is_path_delim(data->scheme_type, **ptr)) { @@ -1852,7 +1530,7 @@ static BOOL parse_path_hierarchical(const WCHAR **ptr, parse_data *data, DWORD f data->path_len = 0; } else if(!(flags & Uri_CREATE_NO_CANONICALIZE)) { /* If the path component is empty, then a '/' is added. */ - data->path = slash; + data->path = L"/"; data->path_len = 1; } } else { @@ -1900,10 +1578,10 @@ static BOOL parse_path_hierarchical(const WCHAR **ptr, parse_data *data, DWORD f } if(data->path) - TRACE("(%p %p %x): Parsed path %s len=%d\n", ptr, data, flags, + TRACE("(%p %p %lx): Parsed path %s len=%ld\n", ptr, data, flags, debugstr_wn(data->path, data->path_len), data->path_len); else - TRACE("(%p %p %x): The URI contained no path\n", ptr, data, flags); + TRACE("(%p %p %lx): The URI contained no path\n", ptr, data, flags); return TRUE; } @@ -1950,7 +1628,7 @@ static BOOL parse_path_opaque(const WCHAR **ptr, parse_data *data, DWORD flags) } if (data->path) data->path_len = *ptr - data->path; - TRACE("(%p %p %x): Parsed opaque URI path %s len=%d\n", ptr, data, flags, + TRACE("(%p %p %lx): Parsed opaque URI path %s len=%ld\n", ptr, data, flags, debugstr_wn(data->path, data->path_len), data->path_len); return TRUE; } @@ -1999,7 +1677,7 @@ static BOOL parse_hierpart(const WCHAR **ptr, parse_data *data, DWORD flags) { */ if(data->scheme_type != URL_SCHEME_UNKNOWN || !(flags & Uri_CREATE_NO_CRACK_UNKNOWN_SCHEMES)) { - TRACE("(%p %p %x): Treating URI as an hierarchical URI.\n", ptr, data, flags); + TRACE("(%p %p %lx): Treating URI as an hierarchical URI.\n", ptr, data, flags); data->is_opaque = FALSE; if(data->scheme_type == URL_SCHEME_WILDCARD && !data->has_implicit_scheme) { @@ -2025,7 +1703,7 @@ static BOOL parse_hierpart(const WCHAR **ptr, parse_data *data, DWORD flags) { * URI. */ - TRACE("(%p %p %x): Treating URI as an opaque URI.\n", ptr, data, flags); + TRACE("(%p %p %lx): Treating URI as an opaque URI.\n", ptr, data, flags); data->is_opaque = TRUE; if(!parse_path_opaque(ptr, data, flags)) @@ -2045,7 +1723,7 @@ static BOOL parse_query(const WCHAR **ptr, parse_data *data, DWORD flags) { const BOOL known_scheme = data->scheme_type != URL_SCHEME_UNKNOWN; if(**ptr != '?') { - TRACE("(%p %p %x): URI didn't contain a query string.\n", ptr, data, flags); + TRACE("(%p %p %lx): URI didn't contain a query string.\n", ptr, data, flags); return TRUE; } @@ -2068,7 +1746,7 @@ static BOOL parse_query(const WCHAR **ptr, parse_data *data, DWORD flags) { data->query_len = *ptr - data->query; - TRACE("(%p %p %x): Parsed query string %s len=%d\n", ptr, data, flags, + TRACE("(%p %p %lx): Parsed query string %s len=%ld\n", ptr, data, flags, debugstr_wn(data->query, data->query_len), data->query_len); return TRUE; } @@ -2084,7 +1762,7 @@ static BOOL parse_fragment(const WCHAR **ptr, parse_data *data, DWORD flags) { const BOOL known_scheme = data->scheme_type != URL_SCHEME_UNKNOWN; if(**ptr != '#') { - TRACE("(%p %p %x): URI didn't contain a fragment.\n", ptr, data, flags); + TRACE("(%p %p %lx): URI didn't contain a fragment.\n", ptr, data, flags); return TRUE; } @@ -2107,7 +1785,7 @@ static BOOL parse_fragment(const WCHAR **ptr, parse_data *data, DWORD flags) { data->fragment_len = *ptr - data->fragment; - TRACE("(%p %p %x): Parsed fragment %s len=%d\n", ptr, data, flags, + TRACE("(%p %p %lx): Parsed fragment %s len=%ld\n", ptr, data, flags, debugstr_wn(data->fragment, data->fragment_len), data->fragment_len); return TRUE; } @@ -2124,7 +1802,7 @@ static BOOL parse_uri(parse_data *data, DWORD flags) { ptr = data->uri; pptr = &ptr; - TRACE("(%p %x): BEGINNING TO PARSE URI %s.\n", data, flags, debugstr_w(data->uri)); + TRACE("(%p %lx): BEGINNING TO PARSE URI %s.\n", data, flags, debugstr_w(data->uri)); if(!parse_scheme(pptr, data, flags, 0)) return FALSE; @@ -2138,7 +1816,7 @@ static BOOL parse_uri(parse_data *data, DWORD flags) { if(!parse_fragment(pptr, data, flags)) return FALSE; - TRACE("(%p %x): FINISHED PARSING URI.\n", data, flags); + TRACE("(%p %lx): FINISHED PARSING URI.\n", data, flags); return TRUE; } @@ -2272,7 +1950,7 @@ static BOOL canonicalize_userinfo(const parse_data *data, Uri *uri, DWORD flags, uri->userinfo_len = uri->canon_len - uri->userinfo_start; if(!computeOnly) - TRACE("(%p %p %x %d): Canonicalized userinfo, userinfo_start=%d, userinfo=%s, userinfo_split=%d userinfo_len=%d.\n", + TRACE("(%p %p %lx %d): Canonicalized userinfo, userinfo_start=%d, userinfo=%s, userinfo_split=%d userinfo_len=%ld.\n", data, uri, flags, computeOnly, uri->userinfo_start, debugstr_wn(uri->canon_uri + uri->userinfo_start, uri->userinfo_len), uri->userinfo_split, uri->userinfo_len); @@ -2305,14 +1983,12 @@ static BOOL canonicalize_userinfo(const parse_data *data, Uri *uri, DWORD flags, */ static BOOL canonicalize_reg_name(const parse_data *data, Uri *uri, DWORD flags, BOOL computeOnly) { - static const WCHAR localhostW[] = - {'l','o','c','a','l','h','o','s','t',0}; const WCHAR *ptr; const BOOL known_scheme = data->scheme_type != URL_SCHEME_UNKNOWN; if(data->scheme_type == URL_SCHEME_FILE && - data->host_len == lstrlenW(localhostW)) { - if(!StrCmpNIW(data->host, localhostW, data->host_len)) { + data->host_len == lstrlenW(L"localhost")) { + if(!StrCmpNIW(data->host, L"localhost", data->host_len)) { uri->host_start = -1; uri->host_len = 0; uri->host_type = Uri_HOST_UNKNOWN; @@ -2389,7 +2065,7 @@ static BOOL canonicalize_reg_name(const parse_data *data, Uri *uri, uri->host_len = uri->canon_len - uri->host_start; if(!computeOnly) - TRACE("(%p %p %x %d): Canonicalize reg_name=%s len=%d\n", data, uri, flags, + TRACE("(%p %p %lx %d): Canonicalize reg_name=%s len=%ld\n", data, uri, flags, computeOnly, debugstr_wn(uri->canon_uri+uri->host_start, uri->host_len), uri->host_len); @@ -2424,7 +2100,7 @@ static BOOL canonicalize_implicit_ipv4address(const parse_data *data, Uri *uri, uri->host_type = Uri_HOST_IPV4; if(!computeOnly) - TRACE("%p %p %x %d): Canonicalized implicit IP address=%s len=%d\n", + TRACE("%p %p %lx %d): Canonicalized implicit IP address=%s len=%ld\n", data, uri, flags, computeOnly, debugstr_wn(uri->canon_uri+uri->host_start, uri->host_len), uri->host_len); @@ -2515,7 +2191,7 @@ static BOOL canonicalize_ipv4address(const parse_data *data, Uri *uri, DWORD fla uri->host_len = uri->canon_len - uri->host_start; if(!computeOnly) - TRACE("(%p %p %x %d): Canonicalized IPv4 address, ip=%s len=%d\n", + TRACE("(%p %p %lx %d): Canonicalized IPv4 address, ip=%s len=%ld\n", data, uri, flags, computeOnly, debugstr_wn(uri->canon_uri+uri->host_start, uri->host_len), uri->host_len); @@ -2568,102 +2244,24 @@ static BOOL canonicalize_ipv6address(const parse_data *data, Uri *uri, memcpy(uri->canon_uri+uri->canon_len, data->host, data->host_len*sizeof(WCHAR)); uri->canon_len += data->host_len; } else { - USHORT values[8]; - INT elision_start; - DWORD i, elision_len; + WCHAR buffer[46]; + ULONG size = ARRAY_SIZE(buffer); - if(!ipv6_to_number(&(data->ipv6_address), values)) { - TRACE("(%p %p %x %d): Failed to compute numerical value for IPv6 address.\n", - data, uri, flags, computeOnly); - return FALSE; + if(computeOnly) { + RtlIpv6AddressToStringExW(&data->ipv6_address, 0, 0, buffer, &size); + uri->canon_len += size + 1; + } else { + uri->canon_uri[uri->canon_len++] = '['; + RtlIpv6AddressToStringExW(&data->ipv6_address, 0, 0, uri->canon_uri + uri->canon_len, &size); + uri->canon_len += size - 1; + uri->canon_uri[uri->canon_len++] = ']'; } - - if(!computeOnly) - uri->canon_uri[uri->canon_len] = '['; - ++uri->canon_len; - - /* Find where the elision should occur (if any). */ - compute_elision_location(&(data->ipv6_address), values, &elision_start, &elision_len); - - TRACE("%p %p %x %d): Elision starts at %d, len=%u\n", data, uri, flags, - computeOnly, elision_start, elision_len); - - for(i = 0; i < 8; ++i) { - BOOL in_elision = (elision_start > -1 && i >= elision_start && - i < elision_start+elision_len); - BOOL do_ipv4 = (i == 6 && data->ipv6_address.ipv4 && !in_elision && - data->ipv6_address.h16_count == 0); - - if(i == elision_start) { - if(!computeOnly) { - uri->canon_uri[uri->canon_len] = ':'; - uri->canon_uri[uri->canon_len+1] = ':'; - } - uri->canon_len += 2; - } - - /* We can ignore the current component if we're in the elision. */ - if(in_elision) - continue; - - /* We only add a ':' if we're not at i == 0, or when we're at - * the very end of elision range since the ':' colon was handled - * earlier. Otherwise we would end up with ":::" after elision. - */ - if(i != 0 && !(elision_start > -1 && i == elision_start+elision_len)) { - if(!computeOnly) - uri->canon_uri[uri->canon_len] = ':'; - ++uri->canon_len; - } - - if(do_ipv4) { - UINT val; - DWORD len; - - /* Combine the two parts of the IPv4 address values. */ - val = values[i]; - val <<= 16; - val += values[i+1]; - - if(!computeOnly) - len = ui2ipv4(uri->canon_uri+uri->canon_len, val); - else - len = ui2ipv4(NULL, val); - - uri->canon_len += len; - ++i; - } else { - /* Write a regular h16 component to the URI. */ - - /* Short circuit for the trivial case. */ - if(values[i] == 0) { - if(!computeOnly) - uri->canon_uri[uri->canon_len] = '0'; - ++uri->canon_len; - } else { - static const WCHAR formatW[] = {'%','x',0}; - - if(!computeOnly) - uri->canon_len += swprintf(uri->canon_uri+uri->canon_len, - formatW, values[i]); - else { - WCHAR tmp[5]; - uri->canon_len += swprintf(tmp, formatW, values[i]); - } - } - } - } - - /* Add the closing ']'. */ - if(!computeOnly) - uri->canon_uri[uri->canon_len] = ']'; - ++uri->canon_len; } uri->host_len = uri->canon_len - uri->host_start; if(!computeOnly) - TRACE("(%p %p %x %d): Canonicalized IPv6 address %s, len=%d\n", data, uri, flags, + TRACE("(%p %p %lx %d): Canonicalized IPv6 address %s, len=%ld\n", data, uri, flags, computeOnly, debugstr_wn(uri->canon_uri+uri->host_start, uri->host_len), uri->host_len); @@ -2696,6 +2294,13 @@ static BOOL canonicalize_host(const parse_data *data, Uri *uri, DWORD flags, BOO uri->host_type = Uri_HOST_IPV6; break; + + case Uri_HOST_IDN: + uri->host_type = Uri_HOST_IDN; + if(!canonicalize_reg_name(data, uri, flags, computeOnly)) + return FALSE; + + break; case Uri_HOST_UNKNOWN: if(data->host_len > 0 || data->scheme_type != URL_SCHEME_FILE) { uri->host_start = uri->canon_len; @@ -2710,7 +2315,7 @@ static BOOL canonicalize_host(const parse_data *data, Uri *uri, DWORD flags, BOO uri->host_type = Uri_HOST_UNKNOWN; break; default: - FIXME("(%p %p %x %d): Canonicalization for host type %d not supported.\n", data, + FIXME("(%p %p %lx %d): Canonicalization for host type %d not supported.\n", data, uri, flags, computeOnly, data->host_type); return FALSE; } @@ -2964,7 +2569,7 @@ static DWORD canonicalize_path_hierarchical(const WCHAR *path, DWORD path_len, U } if(ret_path) - TRACE("Canonicalized path %s len=%d\n", debugstr_wn(ret_path, len), len); + TRACE("Canonicalized path %s len=%ld\n", debugstr_wn(ret_path, len), len); return len; } @@ -3083,7 +2688,7 @@ static BOOL canonicalize_path_opaque(const parse_data *data, Uri *uri, DWORD fla uri->path_len = uri->canon_len - uri->path_start; if(!computeOnly) - TRACE("(%p %p %x %d): Canonicalized opaque URI path %s len=%d\n", data, uri, flags, computeOnly, + TRACE("(%p %p %lx %d): Canonicalized opaque URI path %s len=%ld\n", data, uri, flags, computeOnly, debugstr_wn(uri->canon_uri+uri->path_start, uri->path_len), uri->path_len); return TRUE; } @@ -3229,7 +2834,7 @@ static BOOL canonicalize_query(const parse_data *data, Uri *uri, DWORD flags, BO uri->query_len = uri->canon_len - uri->query_start; if(!computeOnly) - TRACE("(%p %p %x %d): Canonicalized query string %s len=%d\n", data, uri, flags, + TRACE("(%p %p %lx %d): Canonicalized query string %s len=%ld\n", data, uri, flags, computeOnly, debugstr_wn(uri->canon_uri+uri->query_start, uri->query_len), uri->query_len); return TRUE; @@ -3279,7 +2884,7 @@ static BOOL canonicalize_fragment(const parse_data *data, Uri *uri, DWORD flags, uri->fragment_len = uri->canon_len - uri->fragment_start; if(!computeOnly) - TRACE("(%p %p %x %d): Canonicalized fragment %s len=%d\n", data, uri, flags, + TRACE("(%p %p %lx %d): Canonicalized fragment %s len=%ld\n", data, uri, flags, computeOnly, debugstr_wn(uri->canon_uri+uri->fragment_start, uri->fragment_len), uri->fragment_len); return TRUE; @@ -3295,7 +2900,7 @@ static BOOL canonicalize_scheme(const parse_data *data, Uri *uri, DWORD flags, B * URI. */ if(!data->is_relative) { - FIXME("(%p %p %x): Unable to determine the scheme type of %s.\n", data, + FIXME("(%p %p %lx): Unable to determine the scheme type of %s.\n", data, uri, flags, debugstr_w(data->uri)); return FALSE; } @@ -3312,7 +2917,7 @@ static BOOL canonicalize_scheme(const parse_data *data, Uri *uri, DWORD flags, B uri->canon_uri[i + pos] = ':'; uri->scheme_start = pos; - TRACE("(%p %p %x): Canonicalized scheme=%s, len=%d.\n", data, uri, flags, + TRACE("(%p %p %lx): Canonicalized scheme=%s, len=%ld.\n", data, uri, flags, debugstr_wn(uri->canon_uri+uri->scheme_start, data->scheme_len), data->scheme_len); } @@ -3334,30 +2939,30 @@ static int compute_canonicalized_length(const parse_data *data, DWORD flags) { memset(&uri, 0, sizeof(Uri)); - TRACE("(%p %x): Beginning to compute canonicalized length for URI %s\n", data, flags, + TRACE("(%p %lx): Beginning to compute canonicalized length for URI %s\n", data, flags, debugstr_w(data->uri)); if(!canonicalize_scheme(data, &uri, flags, TRUE)) { - ERR("(%p %x): Failed to compute URI scheme length.\n", data, flags); + ERR("(%p %lx): Failed to compute URI scheme length.\n", data, flags); return -1; } if(!canonicalize_hierpart(data, &uri, flags, TRUE)) { - ERR("(%p %x): Failed to compute URI hierpart length.\n", data, flags); + ERR("(%p %lx): Failed to compute URI hierpart length.\n", data, flags); return -1; } if(!canonicalize_query(data, &uri, flags, TRUE)) { - ERR("(%p %x): Failed to compute query string length.\n", data, flags); + ERR("(%p %lx): Failed to compute query string length.\n", data, flags); return -1; } if(!canonicalize_fragment(data, &uri, flags, TRUE)) { - ERR("(%p %x): Failed to compute fragment length.\n", data, flags); + ERR("(%p %lx): Failed to compute fragment length.\n", data, flags); return -1; } - TRACE("(%p %x): Finished computing canonicalized URI length. length=%d\n", data, flags, uri.canon_len); + TRACE("(%p %lx): Finished computing canonicalized URI length. length=%ld\n", data, flags, uri.canon_len); return uri.canon_len; } @@ -3376,40 +2981,40 @@ static HRESULT canonicalize_uri(const parse_data *data, Uri *uri, DWORD flags) { uri->canon_uri = NULL; uri->canon_size = uri->canon_len = 0; - TRACE("(%p %p %x): beginning to canonicalize URI %s.\n", data, uri, flags, debugstr_w(data->uri)); + TRACE("(%p %p %lx): beginning to canonicalize URI %s.\n", data, uri, flags, debugstr_w(data->uri)); /* First try to compute the length of the URI. */ len = compute_canonicalized_length(data, flags); if(len == -1) { - ERR("(%p %p %x): Could not compute the canonicalized length of %s.\n", data, uri, flags, + ERR("(%p %p %lx): Could not compute the canonicalized length of %s.\n", data, uri, flags, debugstr_w(data->uri)); return E_INVALIDARG; } - uri->canon_uri = heap_alloc((len+1)*sizeof(WCHAR)); + uri->canon_uri = malloc((len + 1) * sizeof(WCHAR)); if(!uri->canon_uri) return E_OUTOFMEMORY; uri->canon_size = len; if(!canonicalize_scheme(data, uri, flags, FALSE)) { - ERR("(%p %p %x): Unable to canonicalize the scheme of the URI.\n", data, uri, flags); + ERR("(%p %p %lx): Unable to canonicalize the scheme of the URI.\n", data, uri, flags); return E_INVALIDARG; } uri->scheme_type = data->scheme_type; if(!canonicalize_hierpart(data, uri, flags, FALSE)) { - ERR("(%p %p %x): Unable to canonicalize the heirpart of the URI\n", data, uri, flags); + ERR("(%p %p %lx): Unable to canonicalize the hierpart of the URI\n", data, uri, flags); return E_INVALIDARG; } if(!canonicalize_query(data, uri, flags, FALSE)) { - ERR("(%p %p %x): Unable to canonicalize query string of the URI.\n", + ERR("(%p %p %lx): Unable to canonicalize query string of the URI.\n", data, uri, flags); return E_INVALIDARG; } if(!canonicalize_fragment(data, uri, flags, FALSE)) { - ERR("(%p %p %x): Unable to canonicalize fragment of the URI.\n", + ERR("(%p %p %lx): Unable to canonicalize fragment of the URI.\n", data, uri, flags); return E_INVALIDARG; } @@ -3421,7 +3026,7 @@ static HRESULT canonicalize_uri(const parse_data *data, Uri *uri, DWORD flags) { /* This happens if the URI is hierarchical and dot * segments were removed from its path. */ - WCHAR *tmp = heap_realloc(uri->canon_uri, (uri->canon_len+1)*sizeof(WCHAR)); + WCHAR *tmp = realloc(uri->canon_uri, (uri->canon_len + 1) * sizeof(WCHAR)); if(!tmp) return E_OUTOFMEMORY; @@ -3430,7 +3035,7 @@ static HRESULT canonicalize_uri(const parse_data *data, Uri *uri, DWORD flags) { } uri->canon_uri[uri->canon_len] = '\0'; - TRACE("(%p %p %x): finished canonicalizing the URI. uri=%s\n", data, uri, flags, debugstr_w(uri->canon_uri)); + TRACE("(%p %p %lx): finished canonicalizing the URI. uri=%s\n", data, uri, flags, debugstr_w(uri->canon_uri)); return S_OK; } @@ -3454,7 +3059,7 @@ static HRESULT get_builder_component(LPWSTR *component, DWORD *component_len, /* Allocate 'component', and copy the contents from 'source' * into the new allocation. */ - *component = heap_alloc((source_len+1)*sizeof(WCHAR)); + *component = malloc((source_len + 1) * sizeof(WCHAR)); if(!(*component)) return E_OUTOFMEMORY; @@ -3477,7 +3082,7 @@ static HRESULT get_builder_component(LPWSTR *component, DWORD *component_len, static HRESULT set_builder_component(LPWSTR *component, DWORD *component_len, LPCWSTR new_value, WCHAR prefix, DWORD *flags, DWORD success_flag) { - heap_free(*component); + free(*component); if(!new_value) { *component = NULL; @@ -3489,9 +3094,9 @@ static HRESULT set_builder_component(LPWSTR *component, DWORD *component_len, LP if(prefix && *new_value != prefix) { add_prefix = TRUE; - *component = heap_alloc((len+2)*sizeof(WCHAR)); + *component = malloc((len + 2) * sizeof(WCHAR)); } else - *component = heap_alloc((len+1)*sizeof(WCHAR)); + *component = malloc((len + 1) * sizeof(WCHAR)); if(!(*component)) return E_OUTOFMEMORY; @@ -3512,31 +3117,31 @@ static void reset_builder(UriBuilder *builder) { IUri_Release(&builder->uri->IUri_iface); builder->uri = NULL; - heap_free(builder->fragment); + free(builder->fragment); builder->fragment = NULL; builder->fragment_len = 0; - heap_free(builder->host); + free(builder->host); builder->host = NULL; builder->host_len = 0; - heap_free(builder->password); + free(builder->password); builder->password = NULL; builder->password_len = 0; - heap_free(builder->path); + free(builder->path); builder->path = NULL; builder->path_len = 0; - heap_free(builder->query); + free(builder->query); builder->query = NULL; builder->query_len = 0; - heap_free(builder->scheme); + free(builder->scheme); builder->scheme = NULL; builder->scheme_len = 0; - heap_free(builder->username); + free(builder->username); builder->username = NULL; builder->username_len = 0; @@ -3558,8 +3163,7 @@ static HRESULT validate_scheme_name(const UriBuilder *builder, parse_data *data, ptr = builder->uri->canon_uri+builder->uri->scheme_start; expected_len = builder->uri->scheme_len; } else { - static const WCHAR nullW[] = {0}; - ptr = nullW; + ptr = L""; expected_len = 0; } @@ -3568,10 +3172,10 @@ static HRESULT validate_scheme_name(const UriBuilder *builder, parse_data *data, if(parse_scheme(pptr, data, flags, ALLOW_NULL_TERM_SCHEME) && data->scheme_len == expected_len) { if(data->scheme) - TRACE("(%p %p %x): Found valid scheme component %s len=%d.\n", builder, data, flags, + TRACE("(%p %p %lx): Found valid scheme component %s len=%ld.\n", builder, data, flags, debugstr_wn(data->scheme, data->scheme_len), data->scheme_len); } else { - TRACE("(%p %p %x): Invalid scheme component found %s.\n", builder, data, flags, + TRACE("(%p %p %lx): Invalid scheme component found %s.\n", builder, data, flags, debugstr_wn(component, expected_len)); return INET_E_INVALID_URL; } @@ -3604,10 +3208,10 @@ static HRESULT validate_username(const UriBuilder *builder, parse_data *data, DW pptr = &ptr; if(parse_username(pptr, data, flags, ALLOW_NULL_TERM_USER_NAME) && data->username_len == expected_len) - TRACE("(%p %p %x): Found valid username component %s len=%d.\n", builder, data, flags, + TRACE("(%p %p %lx): Found valid username component %s len=%ld.\n", builder, data, flags, debugstr_wn(data->username, data->username_len), data->username_len); else { - TRACE("(%p %p %x): Invalid username component found %s.\n", builder, data, flags, + TRACE("(%p %p %lx): Invalid username component found %s.\n", builder, data, flags, debugstr_wn(component, expected_len)); return INET_E_INVALID_URL; } @@ -3639,10 +3243,10 @@ static HRESULT validate_password(const UriBuilder *builder, parse_data *data, DW pptr = &ptr; if(parse_password(pptr, data, flags, ALLOW_NULL_TERM_PASSWORD) && data->password_len == expected_len) - TRACE("(%p %p %x): Found valid password component %s len=%d.\n", builder, data, flags, + TRACE("(%p %p %lx): Found valid password component %s len=%ld.\n", builder, data, flags, debugstr_wn(data->password, data->password_len), data->password_len); else { - TRACE("(%p %p %x): Invalid password component found %s.\n", builder, data, flags, + TRACE("(%p %p %lx): Invalid password component found %s.\n", builder, data, flags, debugstr_wn(component, expected_len)); return INET_E_INVALID_URL; } @@ -3665,7 +3269,7 @@ static HRESULT validate_userinfo(const UriBuilder *builder, parse_data *data, DW return S_OK; } -static HRESULT validate_host(const UriBuilder *builder, parse_data *data, DWORD flags) { +static HRESULT validate_host(const UriBuilder *builder, parse_data *data) { const WCHAR *ptr; const WCHAR **pptr; DWORD expected_len; @@ -3684,11 +3288,11 @@ static HRESULT validate_host(const UriBuilder *builder, parse_data *data, DWORD DWORD extras = ALLOW_BRACKETLESS_IP_LITERAL|IGNORE_PORT_DELIMITER|SKIP_IP_FUTURE_CHECK; pptr = &ptr; - if(parse_host(pptr, data, flags, extras) && data->host_len == expected_len) - TRACE("(%p %p %x): Found valid host name %s len=%d type=%d.\n", builder, data, flags, + if(parse_host(pptr, data, extras) && data->host_len == expected_len) + TRACE("(%p %p): Found valid host name %s len=%ld type=%d.\n", builder, data, debugstr_wn(data->host, data->host_len), data->host_len, data->host_type); else { - TRACE("(%p %p %x): Invalid host name found %s.\n", builder, data, flags, + TRACE("(%p %p): Invalid host name found %s.\n", builder, data, debugstr_wn(component, expected_len)); return INET_E_INVALID_URL; } @@ -3709,7 +3313,7 @@ static void setup_port(const UriBuilder *builder, parse_data *data, DWORD flags) } if(data->has_port) - TRACE("(%p %p %x): Using %u as port for IUri.\n", builder, data, flags, data->port_value); + TRACE("(%p %p %lx): Using %lu as port for IUri.\n", builder, data, flags, data->port_value); } static HRESULT validate_path(const UriBuilder *builder, parse_data *data, DWORD flags) { @@ -3728,8 +3332,7 @@ static HRESULT validate_path(const UriBuilder *builder, parse_data *data, DWORD ptr = builder->uri->canon_uri+builder->uri->path_start; expected_len = builder->uri->path_len; } else { - static const WCHAR nullW[] = {0}; - ptr = nullW; + ptr = L""; check_len = FALSE; expected_len = -1; } @@ -3744,12 +3347,12 @@ static HRESULT validate_path(const UriBuilder *builder, parse_data *data, DWORD parse_path_opaque(pptr, data, flags) : parse_path_hierarchical(pptr, data, flags); if(!valid || (check_len && expected_len != data->path_len)) { - TRACE("(%p %p %x): Invalid path component %s.\n", builder, data, flags, + TRACE("(%p %p %lx): Invalid path component %s.\n", builder, data, flags, debugstr_wn(component, expected_len) ); return INET_E_INVALID_URL; } - TRACE("(%p %p %x): Valid path component %s len=%d.\n", builder, data, flags, + TRACE("(%p %p %lx): Valid path component %s len=%ld.\n", builder, data, flags, debugstr_wn(data->path, data->path_len), data->path_len); return S_OK; @@ -3774,10 +3377,10 @@ static HRESULT validate_query(const UriBuilder *builder, parse_data *data, DWORD pptr = &ptr; if(parse_query(pptr, data, flags) && expected_len == data->query_len) - TRACE("(%p %p %x): Valid query component %s len=%d.\n", builder, data, flags, + TRACE("(%p %p %lx): Valid query component %s len=%ld.\n", builder, data, flags, debugstr_wn(data->query, data->query_len), data->query_len); else { - TRACE("(%p %p %x): Invalid query component %s.\n", builder, data, flags, + TRACE("(%p %p %lx): Invalid query component %s.\n", builder, data, flags, debugstr_wn(component, expected_len)); return INET_E_INVALID_URL; } @@ -3805,10 +3408,10 @@ static HRESULT validate_fragment(const UriBuilder *builder, parse_data *data, DW pptr = &ptr; if(parse_fragment(pptr, data, flags) && expected_len == data->fragment_len) - TRACE("(%p %p %x): Valid fragment component %s len=%d.\n", builder, data, flags, + TRACE("(%p %p %lx): Valid fragment component %s len=%ld.\n", builder, data, flags, debugstr_wn(data->fragment, data->fragment_len), data->fragment_len); else { - TRACE("(%p %p %x): Invalid fragment component %s.\n", builder, data, flags, + TRACE("(%p %p %lx): Invalid fragment component %s.\n", builder, data, flags, debugstr_wn(component, expected_len)); return INET_E_INVALID_URL; } @@ -3822,7 +3425,7 @@ static HRESULT validate_components(const UriBuilder *builder, parse_data *data, memset(data, 0, sizeof(parse_data)); - TRACE("(%p %p %x): Beginning to validate builder components.\n", builder, data, flags); + TRACE("(%p %p %lx): Beginning to validate builder components.\n", builder, data, flags); hr = validate_scheme_name(builder, data, flags); if(FAILED(hr)) @@ -3832,7 +3435,7 @@ static HRESULT validate_components(const UriBuilder *builder, parse_data *data, if(data->scheme_type == URL_SCHEME_FILE) { if((builder->password || (builder->uri && builder->uri->userinfo_split > -1)) || (builder->username || (builder->uri && builder->uri->userinfo_start > -1))) { - TRACE("(%p %p %x): File schemes can't contain a username or password.\n", + TRACE("(%p %p %lx): File schemes can't contain a username or password.\n", builder, data, flags); return INET_E_INVALID_URL; } @@ -3842,7 +3445,7 @@ static HRESULT validate_components(const UriBuilder *builder, parse_data *data, if(FAILED(hr)) return hr; - hr = validate_host(builder, data, flags); + hr = validate_host(builder, data); if(FAILED(hr)) return hr; @@ -3867,7 +3470,7 @@ static HRESULT validate_components(const UriBuilder *builder, parse_data *data, if(FAILED(hr)) return hr; - TRACE("(%p %p %x): Finished validating builder components.\n", builder, data, flags); + TRACE("(%p %p %lx): Finished validating builder components.\n", builder, data, flags); return S_OK; } @@ -3888,7 +3491,7 @@ static HRESULT compare_file_paths(const Uri *a, const Uri *b, BOOL *ret) } /* Fast path */ - if(a->path_len == b->path_len && !_wcsnicmp(a->canon_uri+a->path_start, b->canon_uri+b->path_start, a->path_len)) { + if(a->path_len == b->path_len && !wcsnicmp(a->canon_uri+a->path_start, b->canon_uri+b->path_start, a->path_len)) { *ret = TRUE; return S_OK; } @@ -3896,22 +3499,22 @@ static HRESULT compare_file_paths(const Uri *a, const Uri *b, BOOL *ret) len_a = canonicalize_path_hierarchical(a->canon_uri+a->path_start, a->path_len, a->scheme_type, FALSE, 0, FALSE, NULL); len_b = canonicalize_path_hierarchical(b->canon_uri+b->path_start, b->path_len, b->scheme_type, FALSE, 0, FALSE, NULL); - canon_path_a = heap_alloc(len_a*sizeof(WCHAR)); + canon_path_a = malloc(len_a * sizeof(WCHAR)); if(!canon_path_a) return E_OUTOFMEMORY; - canon_path_b = heap_alloc(len_b*sizeof(WCHAR)); + canon_path_b = malloc(len_b * sizeof(WCHAR)); if(!canon_path_b) { - heap_free(canon_path_a); + free(canon_path_a); return E_OUTOFMEMORY; } len_a = canonicalize_path_hierarchical(a->canon_uri+a->path_start, a->path_len, a->scheme_type, FALSE, 0, FALSE, canon_path_a); len_b = canonicalize_path_hierarchical(b->canon_uri+b->path_start, b->path_len, b->scheme_type, FALSE, 0, FALSE, canon_path_b); - *ret = len_a == len_b && !_wcsnicmp(canon_path_a, canon_path_b, len_a); + *ret = len_a == len_b && !wcsnicmp(canon_path_a, canon_path_b, len_a); - heap_free(canon_path_a); - heap_free(canon_path_b); + free(canon_path_a); + free(canon_path_b); return S_OK; } @@ -4176,9 +3779,9 @@ static DWORD generate_raw_uri(const parse_data *data, BSTR uri, DWORD flags) { } if(uri) - TRACE("(%p %p): Generated raw uri=%s len=%d\n", data, uri, debugstr_wn(uri, length), length); + TRACE("(%p %p): Generated raw uri=%s len=%ld\n", data, uri, debugstr_wn(uri, length), length); else - TRACE("(%p %p): Computed raw uri len=%d\n", data, uri, length); + TRACE("(%p %p): Computed raw uri len=%ld\n", data, uri, length); return length; } @@ -4211,8 +3814,8 @@ static inline Uri* impl_from_IUri(IUri *iface) static inline void destroy_uri_obj(Uri *This) { SysFreeString(This->raw_uri); - heap_free(This->canon_uri); - heap_free(This); + free(This->canon_uri); + free(This); } static HRESULT WINAPI Uri_QueryInterface(IUri *iface, REFIID riid, void **ppv) @@ -4253,7 +3856,7 @@ static ULONG WINAPI Uri_AddRef(IUri *iface) Uri *This = impl_from_IUri(iface); LONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); return ref; } @@ -4263,7 +3866,7 @@ static ULONG WINAPI Uri_Release(IUri *iface) Uri *This = impl_from_IUri(iface); LONG ref = InterlockedDecrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); if(!ref) destroy_uri_obj(This); @@ -4275,7 +3878,7 @@ static HRESULT WINAPI Uri_GetPropertyBSTR(IUri *iface, Uri_PROPERTY uriProp, BST { Uri *This = impl_from_IUri(iface); HRESULT hres; - TRACE("(%p %s)->(%d %p %x)\n", This, debugstr_w(This->canon_uri), uriProp, pbstrProperty, dwFlags); + TRACE("(%p %s)->(%d %p %lx)\n", This, debugstr_w(This->canon_uri), uriProp, pbstrProperty, dwFlags); if(!This->create_flags) return E_UNEXPECTED; @@ -4295,17 +3898,37 @@ static HRESULT WINAPI Uri_GetPropertyBSTR(IUri *iface, Uri_PROPERTY uriProp, BST return E_INVALIDARG; } - /* Don't have support for flags yet. */ - if(dwFlags) { - FIXME("(%p)->(%d %p %x)\n", This, uriProp, pbstrProperty, dwFlags); - return E_NOTIMPL; - } + if(dwFlags != 0 && dwFlags != Uri_DISPLAY_NO_FRAGMENT && dwFlags != Uri_PUNYCODE_IDN_HOST + && dwFlags != Uri_DISPLAY_IDN_HOST) + return E_INVALIDARG; + + if((dwFlags == Uri_DISPLAY_NO_FRAGMENT && uriProp != Uri_PROPERTY_DISPLAY_URI) + || (dwFlags == Uri_PUNYCODE_IDN_HOST && uriProp != Uri_PROPERTY_ABSOLUTE_URI + && uriProp != Uri_PROPERTY_DOMAIN && uriProp != Uri_PROPERTY_HOST) + || (dwFlags == Uri_DISPLAY_IDN_HOST && uriProp != Uri_PROPERTY_ABSOLUTE_URI + && uriProp != Uri_PROPERTY_DOMAIN && uriProp != Uri_PROPERTY_HOST)) + return E_INVALIDARG; switch(uriProp) { case Uri_PROPERTY_ABSOLUTE_URI: if(This->display_modifiers & URI_DISPLAY_NO_ABSOLUTE_URI) { *pbstrProperty = SysAllocStringLen(NULL, 0); hres = S_FALSE; + } + /* Uri_PUNYCODE_IDN_HOST doesn't remove user info containing only "@" and ":@" */ + else if (dwFlags == Uri_PUNYCODE_IDN_HOST && This->host_type == Uri_HOST_IDN && This->host_start > -1) { + unsigned int punycode_host_len; + + punycode_host_len = IdnToAscii(0, This->canon_uri+This->host_start, This->host_len, NULL, 0); + *pbstrProperty = SysAllocStringLen(NULL, This->canon_len-This->host_len+punycode_host_len); + hres = S_OK; + if(*pbstrProperty) { + memcpy(*pbstrProperty, This->canon_uri, This->host_start*sizeof(WCHAR)); + IdnToAscii(0, This->canon_uri+This->host_start, This->host_len, *pbstrProperty+This->host_start, punycode_host_len); + memcpy(*pbstrProperty+This->host_start+punycode_host_len, + This->canon_uri+This->host_start+This->host_len, + (This->canon_len-This->host_start-This->host_len)*sizeof(WCHAR)); + } } else { if(This->scheme_type != URL_SCHEME_UNKNOWN && This->userinfo_start > -1) { if(This->userinfo_len == 0) { @@ -4366,18 +3989,32 @@ static HRESULT WINAPI Uri_GetPropertyBSTR(IUri *iface, Uri_PROPERTY uriProp, BST * scheme types. */ if(This->scheme_type != URL_SCHEME_UNKNOWN && This->userinfo_start > -1) { - *pbstrProperty = SysAllocStringLen(NULL, This->canon_len-This->userinfo_len); + unsigned int length = This->canon_len-This->userinfo_len; + + /* Skip fragment if Uri_DISPLAY_NO_FRAGMENT is specified */ + if(dwFlags == Uri_DISPLAY_NO_FRAGMENT && This->fragment_start > -1) + length -= This->fragment_len; + + *pbstrProperty = SysAllocStringLen(NULL, length); if(*pbstrProperty) { /* Copy everything before the userinfo over. */ memcpy(*pbstrProperty, This->canon_uri, This->userinfo_start*sizeof(WCHAR)); + /* Copy everything after the userinfo over. */ + length -= This->userinfo_start+1; memcpy(*pbstrProperty+This->userinfo_start, - This->canon_uri+This->userinfo_start+This->userinfo_len+1, - (This->canon_len-(This->userinfo_start+This->userinfo_len+1))*sizeof(WCHAR)); + This->canon_uri+This->userinfo_start+This->userinfo_len+1, length*sizeof(WCHAR)); } - } else - *pbstrProperty = SysAllocString(This->canon_uri); + } else { + unsigned int length = This->canon_len; + + /* Skip fragment if Uri_DISPLAY_NO_FRAGMENT is specified */ + if(dwFlags == Uri_DISPLAY_NO_FRAGMENT && This->fragment_start > -1) + length -= This->fragment_len; + + *pbstrProperty = SysAllocStringLen(This->canon_uri, length); + } if(!(*pbstrProperty)) hres = E_OUTOFMEMORY; @@ -4387,8 +4024,20 @@ static HRESULT WINAPI Uri_GetPropertyBSTR(IUri *iface, Uri_PROPERTY uriProp, BST break; case Uri_PROPERTY_DOMAIN: if(This->domain_offset > -1) { - *pbstrProperty = SysAllocStringLen(This->canon_uri+This->host_start+This->domain_offset, - This->host_len-This->domain_offset); + if(dwFlags == Uri_PUNYCODE_IDN_HOST && This->host_type == Uri_HOST_IDN) { + unsigned int punycode_length; + + punycode_length = IdnToAscii(0, This->canon_uri+This->host_start+This->domain_offset, + This->host_len-This->domain_offset, NULL, 0); + *pbstrProperty = SysAllocStringLen(NULL, punycode_length); + if (*pbstrProperty) + IdnToAscii(0, This->canon_uri+This->host_start+This->domain_offset, + This->host_len-This->domain_offset, *pbstrProperty, punycode_length); + } else { + *pbstrProperty = SysAllocStringLen(This->canon_uri+This->host_start+This->domain_offset, + This->host_len-This->domain_offset); + } + hres = S_OK; } else { *pbstrProperty = SysAllocStringLen(NULL, 0); @@ -4431,6 +4080,14 @@ static HRESULT WINAPI Uri_GetPropertyBSTR(IUri *iface, Uri_PROPERTY uriProp, BST /* The '[' and ']' aren't included for IPv6 addresses. */ if(This->host_type == Uri_HOST_IPV6) *pbstrProperty = SysAllocStringLen(This->canon_uri+This->host_start+1, This->host_len-2); + else if(dwFlags == Uri_PUNYCODE_IDN_HOST && This->host_type == Uri_HOST_IDN) { + unsigned int punycode_length; + + punycode_length = IdnToAscii(0, This->canon_uri+This->host_start, This->host_len, NULL, 0); + *pbstrProperty = SysAllocStringLen(NULL, punycode_length); + if (*pbstrProperty) + IdnToAscii(0, This->canon_uri+This->host_start, This->host_len, *pbstrProperty, punycode_length); + } else *pbstrProperty = SysAllocStringLen(This->canon_uri+This->host_start, This->host_len); @@ -4556,7 +4213,7 @@ static HRESULT WINAPI Uri_GetPropertyBSTR(IUri *iface, Uri_PROPERTY uriProp, BST break; default: - FIXME("(%p)->(%d %p %x)\n", This, uriProp, pbstrProperty, dwFlags); + FIXME("(%p)->(%d %p %lx)\n", This, uriProp, pbstrProperty, dwFlags); hres = E_NOTIMPL; } @@ -4567,7 +4224,7 @@ static HRESULT WINAPI Uri_GetPropertyLength(IUri *iface, Uri_PROPERTY uriProp, D { Uri *This = impl_from_IUri(iface); HRESULT hres; - TRACE("(%p %s)->(%d %p %x)\n", This, debugstr_w(This->canon_uri), uriProp, pcchProperty, dwFlags); + TRACE("(%p %s)->(%d %p %lx)\n", This, debugstr_w(This->canon_uri), uriProp, pcchProperty, dwFlags); if(!This->create_flags) return E_UNEXPECTED; @@ -4578,10 +4235,10 @@ static HRESULT WINAPI Uri_GetPropertyLength(IUri *iface, Uri_PROPERTY uriProp, D if(uriProp > Uri_PROPERTY_STRING_LAST) return E_INVALIDARG; - /* Don't have support for flags yet. */ - if(dwFlags) { - FIXME("(%p)->(%d %p %x)\n", This, uriProp, pcchProperty, dwFlags); - return E_NOTIMPL; + if(dwFlags != 0 && dwFlags != Uri_DISPLAY_NO_FRAGMENT && dwFlags != Uri_PUNYCODE_IDN_HOST + && dwFlags != Uri_DISPLAY_IDN_HOST) { + *pcchProperty = 0; + return E_INVALIDARG; } switch(uriProp) { @@ -4589,6 +4246,12 @@ static HRESULT WINAPI Uri_GetPropertyLength(IUri *iface, Uri_PROPERTY uriProp, D if(This->display_modifiers & URI_DISPLAY_NO_ABSOLUTE_URI) { *pcchProperty = 0; hres = S_FALSE; + } + /* Uri_PUNYCODE_IDN_HOST doesn't remove user info containing only "@" and ":@" */ + else if(dwFlags == Uri_PUNYCODE_IDN_HOST && This->host_type == Uri_HOST_IDN && This->host_start > -1) { + unsigned int punycode_host_len = IdnToAscii(0, This->canon_uri+This->host_start, This->host_len, NULL, 0); + *pcchProperty = This->canon_len - This->host_len + punycode_host_len; + hres = S_OK; } else { if(This->scheme_type != URL_SCHEME_UNKNOWN) { if(This->userinfo_start > -1 && This->userinfo_len == 0) @@ -4623,11 +4286,18 @@ static HRESULT WINAPI Uri_GetPropertyLength(IUri *iface, Uri_PROPERTY uriProp, D else *pcchProperty = This->canon_len; + if(dwFlags == Uri_DISPLAY_NO_FRAGMENT && This->fragment_start > -1) + *pcchProperty -= This->fragment_len; + hres = S_OK; break; case Uri_PROPERTY_DOMAIN: - if(This->domain_offset > -1) - *pcchProperty = This->host_len - This->domain_offset; + if(This->domain_offset > -1) { + if(dwFlags == Uri_PUNYCODE_IDN_HOST && This->host_type == Uri_HOST_IDN) + *pcchProperty = IdnToAscii(0, This->canon_uri+This->host_start+This->domain_offset, This->host_len-This->domain_offset, NULL, 0); + else + *pcchProperty = This->host_len - This->domain_offset; + } else *pcchProperty = 0; @@ -4653,6 +4323,8 @@ static HRESULT WINAPI Uri_GetPropertyLength(IUri *iface, Uri_PROPERTY uriProp, D /* '[' and ']' aren't included in the length. */ if(This->host_type == Uri_HOST_IPV6) *pcchProperty -= 2; + else if(dwFlags == Uri_PUNYCODE_IDN_HOST && This->host_type == Uri_HOST_IDN && This->host_start > -1) + *pcchProperty = IdnToAscii(0, This->canon_uri+This->host_start, This->host_len, NULL, 0); hres = (This->host_start > -1) ? S_OK : S_FALSE; break; @@ -4692,10 +4364,20 @@ static HRESULT WINAPI Uri_GetPropertyLength(IUri *iface, Uri_PROPERTY uriProp, D hres = (This->userinfo_start > -1) ? S_OK : S_FALSE; break; default: - FIXME("(%p)->(%d %p %x)\n", This, uriProp, pcchProperty, dwFlags); + FIXME("(%p)->(%d %p %lx)\n", This, uriProp, pcchProperty, dwFlags); hres = E_NOTIMPL; } + if(hres == S_OK + && ((dwFlags == Uri_DISPLAY_NO_FRAGMENT && uriProp != Uri_PROPERTY_DISPLAY_URI) + || (dwFlags == Uri_PUNYCODE_IDN_HOST && uriProp != Uri_PROPERTY_ABSOLUTE_URI + && uriProp != Uri_PROPERTY_DOMAIN && uriProp != Uri_PROPERTY_HOST) + || (dwFlags == Uri_DISPLAY_IDN_HOST && uriProp != Uri_PROPERTY_ABSOLUTE_URI + && uriProp != Uri_PROPERTY_DOMAIN && uriProp != Uri_PROPERTY_HOST))) { + *pcchProperty = 0; + hres = E_INVALIDARG; + } + return hres; } @@ -4704,7 +4386,7 @@ static HRESULT WINAPI Uri_GetPropertyDWORD(IUri *iface, Uri_PROPERTY uriProp, DW Uri *This = impl_from_IUri(iface); HRESULT hres; - TRACE("(%p %s)->(%d %p %x)\n", This, debugstr_w(This->canon_uri), uriProp, pcchProperty, dwFlags); + TRACE("(%p %s)->(%d %p %lx)\n", This, debugstr_w(This->canon_uri), uriProp, pcchProperty, dwFlags); if(!This->create_flags) return E_UNEXPECTED; @@ -4746,7 +4428,7 @@ static HRESULT WINAPI Uri_GetPropertyDWORD(IUri *iface, Uri_PROPERTY uriProp, DW hres = S_OK; break; default: - FIXME("(%p)->(%d %p %x)\n", This, uriProp, pcchProperty, dwFlags); + FIXME("(%p)->(%d %p %lx)\n", This, uriProp, pcchProperty, dwFlags); hres = E_NOTIMPL; } @@ -5084,7 +4766,7 @@ static HRESULT WINAPI UriBuilderFactory_CreateIUriBuilder(IUriBuilderFactory *if IUriBuilder **ppIUriBuilder) { Uri *This = impl_from_IUriBuilderFactory(iface); - TRACE("(%p)->(%08x %08x %p)\n", This, dwFlags, (DWORD)dwReserved, ppIUriBuilder); + TRACE("(%p)->(%08lx %08Ix %p)\n", This, dwFlags, dwReserved, ppIUriBuilder); if(!ppIUriBuilder) return E_POINTER; @@ -5103,7 +4785,7 @@ static HRESULT WINAPI UriBuilderFactory_CreateInitializedIUriBuilder(IUriBuilder IUriBuilder **ppIUriBuilder) { Uri *This = impl_from_IUriBuilderFactory(iface); - TRACE("(%p)->(%08x %08x %p)\n", This, dwFlags, (DWORD)dwReserved, ppIUriBuilder); + TRACE("(%p)->(%08lx %08Ix %p)\n", This, dwFlags, dwReserved, ppIUriBuilder); if(!ppIUriBuilder) return E_POINTER; @@ -5193,34 +4875,34 @@ static HRESULT WINAPI PersistStream_Load(IPersistStream *iface, IStream *pStm) hr = IStream_Read(pStm, &size, sizeof(DWORD), NULL); if(FAILED(hr)) return hr; - data = heap_alloc(size); + data = malloc(size); if(!data) return E_OUTOFMEMORY; hr = IStream_Read(pStm, data->unk1, size-sizeof(DWORD)-2, NULL); if(FAILED(hr)) { - heap_free(data); + free(data); return hr; } if(size < sizeof(struct persist_uri)) { - heap_free(data); + free(data); return S_OK; } if(*(DWORD*)data->data != Uri_PROPERTY_RAW_URI) { - heap_free(data); + free(data); ERR("Can't find raw_uri\n"); return E_UNEXPECTED; } This->raw_uri = SysAllocString((WCHAR*)(data->data+sizeof(DWORD)*2)); if(!This->raw_uri) { - heap_free(data); + free(data); return E_OUTOFMEMORY; } This->create_flags = data->create_flags; - heap_free(data); - TRACE("%x %s\n", This->create_flags, debugstr_w(This->raw_uri)); + free(data); + TRACE("%lx %s\n", This->create_flags, debugstr_w(This->raw_uri)); memset(&parse, 0, sizeof(parse_data)); parse.uri = This->raw_uri; @@ -5350,14 +5032,14 @@ static HRESULT WINAPI PersistStream_Save(IPersistStream *iface, IStream *pStm, B if(FAILED(hres)) return hres; - data = heap_alloc_zero(size.u.LowPart); + data = calloc(1, size.u.LowPart); if(!data) return E_OUTOFMEMORY; data->size = size.u.LowPart; persist_stream_save(This, pStm, FALSE, data); hres = IStream_Write(pStm, data, data->size-2, NULL); - heap_free(data); + free(data); return hres; } @@ -5444,7 +5126,7 @@ static HRESULT WINAPI Marshal_GetUnmarshalClass(IMarshal *iface, REFIID riid, vo DWORD dwDestContext, void *pvDestContext, DWORD mshlflags, CLSID *pCid) { Uri *This = impl_from_IMarshal(iface); - TRACE("(%p)->(%s %p %x %p %x %p)\n", This, debugstr_guid(riid), pv, + TRACE("(%p)->(%s %p %lx %p %lx %p)\n", This, debugstr_guid(riid), pv, dwDestContext, pvDestContext, mshlflags, pCid); if(!pCid || (dwDestContext!=MSHCTX_LOCAL && dwDestContext!=MSHCTX_NOSHAREDMEM @@ -5468,7 +5150,7 @@ static HRESULT WINAPI Marshal_GetMarshalSizeMax(IMarshal *iface, REFIID riid, vo Uri *This = impl_from_IMarshal(iface); ULARGE_INTEGER size; HRESULT hres; - TRACE("(%p)->(%s %p %x %p %x %p)\n", This, debugstr_guid(riid), pv, + TRACE("(%p)->(%s %p %lx %p %lx %p)\n", This, debugstr_guid(riid), pv, dwDestContext, pvDestContext, mshlflags, pSize); if(!pSize || (dwDestContext!=MSHCTX_LOCAL && dwDestContext!=MSHCTX_NOSHAREDMEM @@ -5499,7 +5181,7 @@ static HRESULT WINAPI Marshal_MarshalInterface(IMarshal *iface, IStream *pStm, R DWORD size; HRESULT hres; - TRACE("(%p)->(%p %s %p %x %p %x)\n", This, pStm, debugstr_guid(riid), pv, + TRACE("(%p)->(%p %s %p %lx %p %lx)\n", This, pStm, debugstr_guid(riid), pv, dwDestContext, pvDestContext, mshlflags); if(!pStm || mshlflags!=MSHLFLAGS_NORMAL || (dwDestContext!=MSHCTX_LOCAL @@ -5530,7 +5212,7 @@ static HRESULT WINAPI Marshal_MarshalInterface(IMarshal *iface, IStream *pStm, R if(FAILED(hres)) return hres; - data = heap_alloc_zero(size); + data = calloc(1, size); if(!data) return E_OUTOFMEMORY; @@ -5540,7 +5222,7 @@ static HRESULT WINAPI Marshal_MarshalInterface(IMarshal *iface, IStream *pStm, R persist_stream_save(This, pStm, TRUE, (struct persist_uri*)(data+2)); hres = IStream_Write(pStm, data, data[0]-2, NULL); - heap_free(data); + free(data); return hres; } @@ -5637,7 +5319,7 @@ static HRESULT WINAPI Marshal_ReleaseMarshalData(IMarshal *iface, IStream *pStm) static HRESULT WINAPI Marshal_DisconnectObject(IMarshal *iface, DWORD dwReserved) { Uri *This = impl_from_IMarshal(iface); - TRACE("(%p)->(%x)\n", This, dwReserved); + TRACE("(%p)->(%lx)\n", This, dwReserved); return S_OK; } @@ -5655,7 +5337,7 @@ static const IMarshalVtbl MarshalVtbl = { HRESULT Uri_Construct(IUnknown *pUnkOuter, LPVOID *ppobj) { - Uri *ret = heap_alloc_zero(sizeof(Uri)); + Uri *ret = calloc(1, sizeof(Uri)); TRACE("(%p %p)\n", pUnkOuter, ppobj); @@ -5708,7 +5390,7 @@ HRESULT WINAPI CreateUri(LPCWSTR pwzURI, DWORD dwFlags, DWORD_PTR dwReserved, IU HRESULT hr; parse_data data; - TRACE("(%s %x %x %p)\n", debugstr_w(pwzURI), dwFlags, (DWORD)dwReserved, ppURI); + TRACE("(%s %lx %Ix %p)\n", debugstr_w(pwzURI), dwFlags, dwReserved, ppURI); if(!ppURI) return E_INVALIDARG; @@ -5726,7 +5408,7 @@ HRESULT WINAPI CreateUri(LPCWSTR pwzURI, DWORD dwFlags, DWORD_PTR dwReserved, IU /* Currently unsupported. */ if(dwFlags & ~supported_flags) - FIXME("Ignoring unsupported flag(s) %x\n", dwFlags & ~supported_flags); + FIXME("Ignoring unsupported flag(s) %lx\n", dwFlags & ~supported_flags); hr = Uri_Construct(NULL, (void**)&ret); if(FAILED(hr)) { @@ -5744,7 +5426,7 @@ HRESULT WINAPI CreateUri(LPCWSTR pwzURI, DWORD dwFlags, DWORD_PTR dwReserved, IU ret->raw_uri = SysAllocString(pwzURI); if(!ret->raw_uri) { - heap_free(ret); + free(ret); return E_OUTOFMEMORY; } @@ -5796,7 +5478,7 @@ HRESULT WINAPI CreateUriWithFragment(LPCWSTR pwzURI, LPCWSTR pwzFragment, DWORD DWORD_PTR dwReserved, IUri **ppURI) { HRESULT hres; - TRACE("(%s %s %x %x %p)\n", debugstr_w(pwzURI), debugstr_w(pwzFragment), dwFlags, (DWORD)dwReserved, ppURI); + TRACE("(%s %s %lx %Ix %p)\n", debugstr_w(pwzURI), debugstr_w(pwzFragment), dwFlags, dwReserved, ppURI); if(!ppURI) return E_INVALIDARG; @@ -5825,9 +5507,9 @@ HRESULT WINAPI CreateUriWithFragment(LPCWSTR pwzURI, LPCWSTR pwzFragment, DWORD add_pound = *pwzFragment != '#'; if(add_pound) - uriW = heap_alloc((uri_len+frag_len+2)*sizeof(WCHAR)); + uriW = malloc((uri_len + frag_len + 2) * sizeof(WCHAR)); else - uriW = heap_alloc((uri_len+frag_len+1)*sizeof(WCHAR)); + uriW = malloc((uri_len + frag_len + 1) * sizeof(WCHAR)); if(!uriW) return E_OUTOFMEMORY; @@ -5839,7 +5521,7 @@ HRESULT WINAPI CreateUriWithFragment(LPCWSTR pwzURI, LPCWSTR pwzFragment, DWORD hres = CreateUri(uriW, dwFlags, 0, ppURI); - heap_free(uriW); + free(uriW); } else /* A fragment string wasn't specified, so just forward the call. */ hres = CreateUri(pwzURI, dwFlags, 0, ppURI); @@ -5935,7 +5617,7 @@ static ULONG WINAPI UriBuilder_AddRef(IUriBuilder *iface) UriBuilder *This = impl_from_IUriBuilder(iface); LONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); return ref; } @@ -5945,18 +5627,18 @@ static ULONG WINAPI UriBuilder_Release(IUriBuilder *iface) UriBuilder *This = impl_from_IUriBuilder(iface); LONG ref = InterlockedDecrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); + TRACE("(%p) ref=%ld\n", This, ref); if(!ref) { if(This->uri) IUri_Release(&This->uri->IUri_iface); - heap_free(This->fragment); - heap_free(This->host); - heap_free(This->password); - heap_free(This->path); - heap_free(This->query); - heap_free(This->scheme); - heap_free(This->username); - heap_free(This); + free(This->fragment); + free(This->host); + free(This->password); + free(This->path); + free(This->query); + free(This->scheme); + free(This->username); + free(This); } return ref; @@ -5969,11 +5651,11 @@ static HRESULT WINAPI UriBuilder_CreateUriSimple(IUriBuilder *iface, { UriBuilder *This = impl_from_IUriBuilder(iface); HRESULT hr; - TRACE("(%p)->(%d %d %p)\n", This, dwAllowEncodingPropertyMask, (DWORD)dwReserved, ppIUri); + TRACE("(%p)->(%ld %Id %p)\n", This, dwAllowEncodingPropertyMask, dwReserved, ppIUri); hr = build_uri(This, ppIUri, 0, UriBuilder_USE_ORIGINAL_FLAGS, dwAllowEncodingPropertyMask); if(hr == E_NOTIMPL) - FIXME("(%p)->(%d %d %p)\n", This, dwAllowEncodingPropertyMask, (DWORD)dwReserved, ppIUri); + FIXME("(%p)->(%ld %Id %p)\n", This, dwAllowEncodingPropertyMask, dwReserved, ppIUri); return hr; } @@ -5985,7 +5667,7 @@ static HRESULT WINAPI UriBuilder_CreateUri(IUriBuilder *iface, { UriBuilder *This = impl_from_IUriBuilder(iface); HRESULT hr; - TRACE("(%p)->(0x%08x %d %d %p)\n", This, dwCreateFlags, dwAllowEncodingPropertyMask, (DWORD)dwReserved, ppIUri); + TRACE("(%p)->(0x%08lx %ld %Id %p)\n", This, dwCreateFlags, dwAllowEncodingPropertyMask, dwReserved, ppIUri); if(dwCreateFlags == -1) hr = build_uri(This, ppIUri, 0, UriBuilder_USE_ORIGINAL_FLAGS, dwAllowEncodingPropertyMask); @@ -5993,7 +5675,7 @@ static HRESULT WINAPI UriBuilder_CreateUri(IUriBuilder *iface, hr = build_uri(This, ppIUri, dwCreateFlags, 0, dwAllowEncodingPropertyMask); if(hr == E_NOTIMPL) - FIXME("(%p)->(0x%08x %d %d %p)\n", This, dwCreateFlags, dwAllowEncodingPropertyMask, (DWORD)dwReserved, ppIUri); + FIXME("(%p)->(0x%08lx %ld %Id %p)\n", This, dwCreateFlags, dwAllowEncodingPropertyMask, dwReserved, ppIUri); return hr; } @@ -6006,13 +5688,13 @@ static HRESULT WINAPI UriBuilder_CreateUriWithFlags(IUriBuilder *iface, { UriBuilder *This = impl_from_IUriBuilder(iface); HRESULT hr; - TRACE("(%p)->(0x%08x 0x%08x %d %d %p)\n", This, dwCreateFlags, dwUriBuilderFlags, - dwAllowEncodingPropertyMask, (DWORD)dwReserved, ppIUri); + TRACE("(%p)->(0x%08lx 0x%08lx %ld %Id %p)\n", This, dwCreateFlags, dwUriBuilderFlags, + dwAllowEncodingPropertyMask, dwReserved, ppIUri); hr = build_uri(This, ppIUri, dwCreateFlags, dwUriBuilderFlags, dwAllowEncodingPropertyMask); if(hr == E_NOTIMPL) - FIXME("(%p)->(0x%08x 0x%08x %d %d %p)\n", This, dwCreateFlags, dwUriBuilderFlags, - dwAllowEncodingPropertyMask, (DWORD)dwReserved, ppIUri); + FIXME("(%p)->(0x%08lx 0x%08lx %ld %Id %p)\n", This, dwCreateFlags, dwUriBuilderFlags, + dwAllowEncodingPropertyMask, dwReserved, ppIUri); return hr; } @@ -6229,7 +5911,7 @@ static HRESULT WINAPI UriBuilder_SetPath(IUriBuilder *iface, LPCWSTR pwzNewValue static HRESULT WINAPI UriBuilder_SetPort(IUriBuilder *iface, BOOL fHasPort, DWORD dwNewValue) { UriBuilder *This = impl_from_IUriBuilder(iface); - TRACE("(%p)->(%d %d)\n", This, fHasPort, dwNewValue); + TRACE("(%p)->(%d %ld)\n", This, fHasPort, dwNewValue); This->has_port = fHasPort; This->port = dwNewValue; @@ -6273,7 +5955,7 @@ static HRESULT WINAPI UriBuilder_RemoveProperties(IUriBuilder *iface, DWORD dwPr Uri_HAS_USER_INFO|Uri_HAS_USER_NAME; UriBuilder *This = impl_from_IUriBuilder(iface); - TRACE("(%p)->(0x%08x)\n", This, dwPropertyMask); + TRACE("(%p)->(0x%08lx)\n", This, dwPropertyMask); if(dwPropertyMask & ~accepted_flags) return E_INVALIDARG; @@ -6354,12 +6036,12 @@ HRESULT WINAPI CreateIUriBuilder(IUri *pIUri, DWORD dwFlags, DWORD_PTR dwReserve { UriBuilder *ret; - TRACE("(%p %x %x %p)\n", pIUri, dwFlags, (DWORD)dwReserved, ppIUriBuilder); + TRACE("(%p %lx %Ix %p)\n", pIUri, dwFlags, dwReserved, ppIUriBuilder); if(!ppIUriBuilder) return E_POINTER; - ret = heap_alloc_zero(sizeof(UriBuilder)); + ret = calloc(1, sizeof(UriBuilder)); if(!ret) return E_OUTOFMEMORY; @@ -6371,7 +6053,7 @@ HRESULT WINAPI CreateIUriBuilder(IUri *pIUri, DWORD dwFlags, DWORD_PTR dwReserve if((uri = get_uri_obj(pIUri))) { if(!uri->create_flags) { - heap_free(ret); + free(ret); return E_UNEXPECTED; } IUri_AddRef(pIUri); @@ -6382,10 +6064,10 @@ HRESULT WINAPI CreateIUriBuilder(IUri *pIUri, DWORD dwFlags, DWORD_PTR dwReserve ret->port = uri->port; } else { - heap_free(ret); + free(ret); *ppIUriBuilder = NULL; - FIXME("(%p %x %x %p): Unknown IUri types not supported yet.\n", pIUri, dwFlags, - (DWORD)dwReserved, ppIUriBuilder); + FIXME("(%p %lx %Ix %p): Unknown IUri types not supported yet.\n", pIUri, dwFlags, + dwReserved, ppIUriBuilder); return E_NOTIMPL; } } @@ -6427,7 +6109,7 @@ static HRESULT merge_paths(parse_data *data, const WCHAR *base, DWORD base_len, } if (end) base_copy_len = (end+1)-base; - *result = heap_alloc((base_copy_len+relative_len+1)*sizeof(WCHAR)); + *result = malloc((base_copy_len + relative_len + 1) * sizeof(WCHAR)); if(!(*result)) { *result_len = 0; @@ -6523,9 +6205,8 @@ static HRESULT combine_uri(Uri *base, Uri *relative, DWORD flags, IUri **result, } if(proc_uri->host_start > -1) { - data.host = proc_uri->canon_uri+proc_uri->host_start; - data.host_len = proc_uri->host_len; - data.host_type = proc_uri->host_type; + const WCHAR *host = proc_uri->canon_uri+proc_uri->host_start; + parse_host(&host, &data, 0); } if(proc_uri->has_port) { @@ -6543,8 +6224,7 @@ static HRESULT combine_uri(Uri *base, Uri *relative, DWORD flags, IUri **result, /* Just set the path as a '/' if the base didn't have * one and if it's a hierarchical URI. */ - static const WCHAR slashW[] = {'/',0}; - data.path = slashW; + data.path = L"/"; data.path_len = 1; } @@ -6584,7 +6264,7 @@ static HRESULT combine_uri(Uri *base, Uri *relative, DWORD flags, IUri **result, path_len += relative->path_len; - path = heap_alloc((path_len+1)*sizeof(WCHAR)); + path = malloc((path_len + 1) * sizeof(WCHAR)); if(!path) { *result = NULL; return E_OUTOFMEMORY; @@ -6627,9 +6307,9 @@ static HRESULT combine_uri(Uri *base, Uri *relative, DWORD flags, IUri **result, DWORD new_len = remove_dot_segments(path+offset,path_len-offset); if(new_len != path_len) { - WCHAR *tmp = heap_realloc(path, (offset+new_len+1)*sizeof(WCHAR)); + WCHAR *tmp = realloc(path, (offset + new_len + 1) * sizeof(WCHAR)); if(!tmp) { - heap_free(path); + free(path); *result = NULL; return E_OUTOFMEMORY; } @@ -6650,7 +6330,7 @@ static HRESULT combine_uri(Uri *base, Uri *relative, DWORD flags, IUri **result, pptr = &ptr; if((data.is_opaque && !parse_path_opaque(pptr, &data, 0)) || (!data.is_opaque && !parse_path_hierarchical(pptr, &data, 0))) { - heap_free(path); + free(path); *result = NULL; return E_INVALIDARG; } @@ -6669,7 +6349,7 @@ static HRESULT combine_uri(Uri *base, Uri *relative, DWORD flags, IUri **result, len = generate_raw_uri(&data, data.uri, raw_flags); data.uri = SysAllocStringLen(NULL, len); if(!data.uri) { - heap_free(path); + free(path); *result = NULL; return E_OUTOFMEMORY; } @@ -6679,7 +6359,7 @@ static HRESULT combine_uri(Uri *base, Uri *relative, DWORD flags, IUri **result, hr = Uri_Construct(NULL, (void**)&ret); if(FAILED(hr)) { SysFreeString(data.uri); - heap_free(path); + free(path); *result = NULL; return hr; } @@ -6704,7 +6384,7 @@ static HRESULT combine_uri(Uri *base, Uri *relative, DWORD flags, IUri **result, ret->create_flags = create_flags; *result = &ret->IUri_iface; - heap_free(path); + free(path); } return S_OK; @@ -6719,7 +6399,7 @@ HRESULT WINAPI CoInternetCombineIUri(IUri *pBaseUri, IUri *pRelativeUri, DWORD d HRESULT hr; IInternetProtocolInfo *info; Uri *relative, *base; - TRACE("(%p %p %x %p %x)\n", pBaseUri, pRelativeUri, dwCombineFlags, ppCombinedUri, (DWORD)dwReserved); + TRACE("(%p %p %lx %p %Ix)\n", pBaseUri, pRelativeUri, dwCombineFlags, ppCombinedUri, dwReserved); if(!ppCombinedUri) return E_INVALIDARG; @@ -6733,8 +6413,8 @@ HRESULT WINAPI CoInternetCombineIUri(IUri *pBaseUri, IUri *pRelativeUri, DWORD d base = get_uri_obj(pBaseUri); if(!relative || !base) { *ppCombinedUri = NULL; - FIXME("(%p %p %x %p %x) Unknown IUri types not supported yet.\n", - pBaseUri, pRelativeUri, dwCombineFlags, ppCombinedUri, (DWORD)dwReserved); + FIXME("(%p %p %lx %p %Ix) Unknown IUri types not supported yet.\n", + pBaseUri, pRelativeUri, dwCombineFlags, ppCombinedUri, dwReserved); return E_NOTIMPL; } @@ -6767,8 +6447,8 @@ HRESULT WINAPI CoInternetCombineUrlEx(IUri *pBaseUri, LPCWSTR pwzRelativeUrl, DW HRESULT hr; IInternetProtocolInfo *info; - TRACE("(%p %s %x %p %x)\n", pBaseUri, debugstr_w(pwzRelativeUrl), dwCombineFlags, - ppCombinedUri, (DWORD)dwReserved); + TRACE("(%p %s %lx %p %Ix)\n", pBaseUri, debugstr_w(pwzRelativeUrl), dwCombineFlags, + ppCombinedUri, dwReserved); if(!ppCombinedUri) return E_POINTER; @@ -6786,8 +6466,8 @@ HRESULT WINAPI CoInternetCombineUrlEx(IUri *pBaseUri, LPCWSTR pwzRelativeUrl, DW base = get_uri_obj(pBaseUri); if(!base) { *ppCombinedUri = NULL; - FIXME("(%p %s %x %p %x) Unknown IUri's not supported yet.\n", pBaseUri, debugstr_w(pwzRelativeUrl), - dwCombineFlags, ppCombinedUri, (DWORD)dwReserved); + FIXME("(%p %s %lx %p %Ix) Unknown IUri's not supported yet.\n", pBaseUri, debugstr_w(pwzRelativeUrl), + dwCombineFlags, ppCombinedUri, dwReserved); return E_NOTIMPL; } @@ -7252,8 +6932,8 @@ HRESULT WINAPI CoInternetParseIUri(IUri *pIUri, PARSEACTION ParseAction, DWORD d Uri *uri; IInternetProtocolInfo *info; - TRACE("(%p %d %x %p %d %p %x)\n", pIUri, ParseAction, dwFlags, pwzResult, - cchResult, pcchResult, (DWORD)dwReserved); + TRACE("(%p %d %lx %p %ld %p %Ix)\n", pIUri, ParseAction, dwFlags, pwzResult, + cchResult, pcchResult, dwReserved); if(!pcchResult) return E_POINTER; @@ -7265,8 +6945,8 @@ HRESULT WINAPI CoInternetParseIUri(IUri *pIUri, PARSEACTION ParseAction, DWORD d if(!(uri = get_uri_obj(pIUri))) { *pcchResult = 0; - FIXME("(%p %d %x %p %d %p %x) Unknown IUri's not supported for this action.\n", - pIUri, ParseAction, dwFlags, pwzResult, cchResult, pcchResult, (DWORD)dwReserved); + FIXME("(%p %d %lx %p %ld %p %Ix) Unknown IUri's not supported for this action.\n", + pIUri, ParseAction, dwFlags, pwzResult, cchResult, pcchResult, dwReserved); return E_NOTIMPL; } @@ -7320,8 +7000,8 @@ HRESULT WINAPI CoInternetParseIUri(IUri *pIUri, PARSEACTION ParseAction, DWORD d default: *pcchResult = 0; hr = E_NOTIMPL; - FIXME("(%p %d %x %p %d %p %x) Partial stub.\n", pIUri, ParseAction, dwFlags, - pwzResult, cchResult, pcchResult, (DWORD)dwReserved); + FIXME("(%p %d %lx %p %ld %p %Ix) Partial stub.\n", pIUri, ParseAction, dwFlags, + pwzResult, cchResult, pcchResult, dwReserved); } return hr; diff --git a/dll/win32/urlmon/urlmon.rc b/dll/win32/urlmon/urlmon.rc index 4a7bbfeb7bd..99bc0aba81b 100644 --- a/dll/win32/urlmon/urlmon.rc +++ b/dll/win32/urlmon/urlmon.rc @@ -22,10 +22,12 @@ #include "resource.h" +#pragma makedep po + LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT -ID_AXINSTALL_WARNING_DLG DIALOGEX 0, 0, 260, 115 -STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +ID_AXINSTALL_WARNING_DLG DIALOG 0, 0, 260, 115 +STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Security Warning" FONT 8, "MS Shell Dlg" { @@ -37,8 +39,15 @@ FONT 8, "MS Shell Dlg" PUSHBUTTON "", ID_AXINSTALL_INSTALL_BTN, 144, 48, 50, 14, WS_GROUP | WS_TABSTOP | WS_DISABLED CONTROL "", 102, "static", SS_ETCHEDHORZ, 10, 70, 240, 1 ICON "", ID_AXINSTALL_ICON, 10, 82, 32, 32, WS_CHILD | WS_VISIBLE +#if defined(__REACTOS__) && defined(RC_INVOKED) CONTROL "When installed, an ActiveX component has full access to your computer. Do not click install unless you have absolute trust in the above source.", 22002, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 46, 80, 194, 23 +#else + CONTROL "When installed, an ActiveX component has full access to your " \ + "computer. Do not click install unless you have absolute trust " \ + "in the above source.", + 22002, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 46, 80, 194, 23 +#endif } STRINGTABLE @@ -53,10 +62,12 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL /* @makedep: urlmon.rgs */ 1 WINE_REGISTRY urlmon.rgs -2 WINE_REGISTRY "urlmon_urlmon.rgs" - /* @makedep: urlmon.inf */ +#ifdef __REACTOS__ REGINST REGINST urlmon_utf16.inf +#else +REGINST REGINST urlmon.inf +#endif #define WINE_FILENAME_STR "urlmon.dll" #define WINE_FILEVERSION 6,0,2800,1485 diff --git a/dll/win32/urlmon/urlmon.spec b/dll/win32/urlmon/urlmon.spec index 5fe8bf5b014..deb302e5179 100644 --- a/dll/win32/urlmon/urlmon.spec +++ b/dll/win32/urlmon/urlmon.spec @@ -1,269 +1,116 @@ -#100 ZoneMappingToRegKey -#101 CoInternetIsExtensionsOff -#102 CoInternetSetExtensionsOff -#103 CoInternetExtensionAllowed -#104 CoInternetCreateExtension -#105 CoInternetExtensionCollectStats -#106 CoInternetExtensionNeedsApproval -#107 CoInternetApproveExtension -108 stdcall -noname IsInternetESCEnabledLocal() -#109 stub AsyncGetClassBits -110 stdcall AsyncInstallDistributionUnit(wstr wstr wstr long long wstr ptr ptr long) -111 stdcall -noname IsProtectedModeURL(ptr) -#112 IsProtectedModeIUri -#113 IsFileInSpecialDirs -#114 SkipBrokerCheckForURL -#115 IEIsProtectedModeURLInternal -#116 CoInternetDomainNeedsApproval -117 stdcall BindAsyncMoniker(ptr long ptr ptr ptr) -#118 stub CDLGetLongPathNameA -#119 stub CDLGetLongPathNameW -120 stdcall CoGetClassObjectFromURL(ptr wstr long long wstr ptr long ptr ptr ptr) -#121 stub CoInstall -#122 CoInternetCanonicalizeIUri -123 stdcall CoInternetCombineIUri(ptr ptr long ptr long) -124 stdcall CoInternetCombineUrl(wstr wstr long ptr long ptr long) -125 stdcall CoInternetCombineUrlEx(ptr wstr long ptr long) -126 stdcall CoInternetCompareUrl(wstr wstr long) -127 stdcall CoInternetCreateSecurityManager(ptr ptr long) -128 stdcall CoInternetCreateZoneManager(ptr ptr long) -#129 CoInternetFeatureSettingsChanged -#130 stub CoInternetGetProtocolFlags -131 stdcall CoInternetGetSecurityUrl(wstr ptr long long) -132 stdcall CoInternetGetSecurityUrlEx(ptr ptr long long) -133 stdcall CoInternetGetSession(long ptr long) -134 stdcall CoInternetIsFeatureEnabled(long long) -#135 CoInternetIsFeatureEnabledForIUri -136 stdcall CoInternetIsFeatureEnabledForUrl(long long wstr ptr) -137 stdcall CoInternetIsFeatureZoneElevationEnabled(wstr wstr ptr long) -138 stdcall CoInternetParseIUri(ptr long long wstr long ptr long) -139 stdcall CoInternetParseUrl(wstr long long wstr long ptr long) -140 stdcall CoInternetQueryInfo(wstr long long ptr long ptr long) -141 stdcall CoInternetSetFeatureEnabled(long long long) -142 stdcall CompareSecurityIds(ptr long ptr long long) -#143 CompatFlagsFromClsid -144 stdcall CopyBindInfo(ptr ptr) -145 stdcall CopyStgMedium(ptr ptr) -146 stdcall CreateAsyncBindCtx(long ptr ptr ptr) -147 stdcall CreateAsyncBindCtxEx(ptr long ptr ptr ptr long) -148 stdcall CreateFormatEnumerator(long ptr ptr) -149 stdcall CreateIUriBuilder(ptr long long ptr) -150 stdcall CreateURLMoniker(ptr wstr ptr) -151 stdcall CreateURLMonikerEx2(ptr ptr ptr long) -152 stdcall CreateURLMonikerEx(ptr wstr ptr long) -153 stdcall CreateUri(wstr long long ptr) -#154 CreateUriFromMultiByteString -#155 CreateUriPriv -156 stdcall CreateUriWithFragment(wstr wstr long long ptr) +# Up until Windows 2000 these APIs have hardcoded ordinals. +# Keep it that way for compatibility. +1 stub CDLGetLongPathNameA +2 stub CDLGetLongPathNameW +# IsJITInProgress has a hardcoded ordinal on WinME and Windows 2000 +#3 stub IsJITInProgress + +@ stub AsyncGetClassBits +@ stdcall AsyncInstallDistributionUnit(wstr wstr wstr long long wstr ptr ptr long) +@ stdcall BindAsyncMoniker(ptr long ptr ptr ptr) +@ stdcall CoGetClassObjectFromURL(ptr wstr long long wstr ptr long ptr ptr ptr) +@ stub CoInstall +@ stdcall CoInternetCombineUrl(wstr wstr long ptr long ptr long) +@ stdcall CoInternetCombineUrlEx(ptr wstr long ptr long) +@ stdcall CoInternetCompareUrl(wstr wstr long) +@ stdcall CoInternetCombineIUri(ptr ptr long ptr long) +@ stdcall CoInternetCreateSecurityManager(ptr ptr long) +@ stdcall CoInternetCreateZoneManager(ptr ptr long) +@ stub CoInternetGetProtocolFlags +@ stdcall CoInternetGetSecurityUrl(wstr ptr long long) +@ stdcall CoInternetGetSecurityUrlEx(ptr ptr long long) +@ stdcall CoInternetGetSession(long ptr long) +@ stdcall CoInternetIsFeatureEnabled(long long) +@ stdcall CoInternetIsFeatureEnabledForUrl(long long wstr ptr) +@ stdcall CoInternetIsFeatureZoneElevationEnabled(wstr wstr ptr long) +@ stdcall CoInternetParseUrl(wstr long long ptr long ptr long) +@ stdcall CoInternetParseIUri(ptr long long ptr long ptr long) +@ stdcall CoInternetQueryInfo(wstr long long ptr long ptr long) +@ stdcall CoInternetSetFeatureEnabled(long long long) +@ stdcall CompareSecurityIds(ptr long ptr long long) +@ stdcall CopyBindInfo(ptr ptr) +@ stdcall CopyStgMedium(ptr ptr) +@ stdcall CreateAsyncBindCtx(long ptr ptr ptr) +@ stdcall CreateAsyncBindCtxEx(ptr long ptr ptr ptr long) +@ stdcall CreateFormatEnumerator(long ptr ptr) +@ stdcall CreateIUriBuilder(ptr long long ptr) +@ stdcall CreateUri(wstr long long ptr) +@ stdcall CreateUriWithFragment(wstr wstr long long ptr) +@ stdcall CreateURLMoniker(ptr wstr ptr) +@ stdcall CreateURLMonikerEx(ptr wstr ptr long) +@ stdcall CreateURLMonikerEx2(ptr ptr ptr long) @ stdcall -private DllCanUnloadNow() @ stdcall -private DllGetClassObject(ptr ptr ptr) @ stdcall -private DllInstall(long wstr) @ stdcall -private DllRegisterServer() @ stdcall -private DllRegisterServerEx() @ stdcall -private DllUnregisterServer() -163 stdcall Extract(ptr str) -164 stdcall FaultInIEFeature(long ptr ptr long) -#165 stub FindMediaType -#166 stub FindMediaTypeClass -167 stdcall FindMimeFromData(ptr wstr ptr long wstr long ptr long) -#168 GetAddSitesFileUrl -169 stdcall GetClassFileOrMime(ptr wstr ptr long wstr long ptr) -#170 stub GetClassURL -#171 stub GetComponentIDFromCLSSPEC -#172 GetIDNFlagsForUri -#173 GetIUriPriv -#174 GetLabelsFromNamedHost -#175 stub GetMarkOfTheWeb -#176 GetPortFromUrlScheme -#177 GetPropertyFromName -#178 GetPropertyName -179 stdcall GetSoftwareUpdateInfo(wstr ptr) -#180 GetUrlmonThreadNotificationHwnd -181 stdcall -stub HlinkGoBack(ptr) -182 stdcall -stub HlinkGoForward(ptr) -#183 stub HlinkNavigateMoniker -184 stdcall HlinkNavigateString(ptr wstr) -185 stdcall HlinkSimpleNavigateToMoniker(ptr wstr wstr ptr ptr ptr long long) -186 stdcall HlinkSimpleNavigateToString(wstr wstr wstr ptr ptr ptr long long) -187 stdcall -stub IEInstallScope(ptr) -#188 InstallFlash -#189 IntlPercentEncodeNormalize -190 stdcall IsAsyncMoniker(ptr) -#191 IsDWORDProperty -#192 IsIntranetAvailable -#193 stub IsJITInProgress -194 stdcall IsLoggingEnabledA(str) -195 stdcall IsLoggingEnabledW(wstr) -#196 IsStringProperty -197 stdcall IsValidURL(ptr wstr long) -198 stdcall MkParseDisplayNameEx(ptr wstr ptr ptr) -199 stdcall ObtainUserAgentString(long str ptr) -#200 stub PrivateCoInstall -#201 QueryAssociations -#202 QueryClsidAssociation -203 stdcall RegisterBindStatusCallback(ptr ptr ptr long) -204 stdcall RegisterFormatEnumerator(ptr ptr long) -#205 stub RegisterMediaTypeClass -206 stdcall RegisterMediaTypes(long ptr ptr) -207 stdcall ReleaseBindInfo(ptr) -#208 ResetUrlmonLanguageData -209 stdcall RevokeBindStatusCallback(ptr ptr) -210 stdcall RevokeFormatEnumerator(ptr ptr) -#211 stub SetSoftwareUpdateAdvertisementState -#212 ShouldDisplayPunycodeForUri -#213 ShouldShowIntranetWarningSecband -#214 ShowTrustAlertDialog -215 stdcall -stub URLDownloadA(long ptr long ptr long) -216 stdcall URLDownloadToCacheFileA(ptr str str long long ptr) -217 stdcall URLDownloadToCacheFileW(ptr wstr wstr long long ptr) -218 stdcall URLDownloadToFileA(ptr str str long ptr) -219 stdcall URLDownloadToFileW(ptr wstr wstr long ptr) -#220 stub URLDownloadW -221 stdcall URLOpenBlockingStreamA(ptr str ptr long ptr) -222 stdcall URLOpenBlockingStreamW(ptr wstr ptr long ptr) -#223 stub URLOpenPullStreamA -#224 stub URLOpenPullStreamW -225 stdcall URLOpenStreamA(ptr str long ptr) -226 stdcall URLOpenStreamW(ptr wstr long ptr) -#227 stub UrlMkBuildVersion -228 stdcall UrlMkGetSessionOption(long ptr long ptr long) -229 stdcall UrlMkSetSessionOption(long ptr long long) -#230 stub WriteHitLogging -#231 stub ZonesReInit -#304 IECompatLogEventWithUrl -#305 IECompatLogPopupMgr -#306 IECompatLogMkAndViewSource -#307 IECompatLogMimeHandling -#308 IECompatLogControlBlock -#309 IECompatLogObjCache -#310 IECompatLogWindowRestriction -#311 IECompatLogBinaryBhvr -#312 IECompatLogIDNNavigation -#313 IECompatLogSSLNavBlock -#314 IECompatLogRedirectUrl -#315 IECompatLogScriptUrl -#316 IECompatLogAntiphishingUrl -#318 IECompatLogZoneElevation3 -#319 IECompatLogZoneElevation4 -#320 IECompatLogSubframeNavigate -#321 IECompatLogFileDownloadWithSrcUrl -#322 IECompatLogCSSFix -#323 IECompatLogUIPIBlockedExtension -#324 ResetWarnOnIntranetFlag -#325 PSCreateMemoryPropertyStore -#326 PSCreatePropertyStoreFromObject -#327 PSCreateAdapterFromPropertyStore -#328 VariantCompare -#329 VariantToGUID -#330 VariantToStringWithDefault -#331 InitPropVariantFromBuffer -#332 InitPropVariantFromCLSID -#333 InitPropVariantFromFileTime -#334 InitPropVariantFromString -#335 InitVariantFromBuffer -#336 InitVariantFromStrRet -#337 PropVariantGetElementCount -#338 PropVariantToBoolean -#339 PropVariantToInt32 -#340 PropVariantToUInt32 -#341 PropVariantToInt64 -#342 PropVariantToUInt64 -#343 PropVariantToBooleanWithDefault -#344 PropVariantToInt32WithDefault -#345 PropVariantToUInt32WithDefault -#346 PropVariantToInt64WithDefault -#347 PropVariantToUInt64WithDefault -#348 PropVariantToBuffer -#349 PropVariantToFileTime -#350 PropVariantToGUID -#351 PropVariantToStringAlloc -#352 VariantToBoolean -#353 VariantToBooleanWithDefault -#354 VariantToPropVariant -#355 PropVariantToVariant -#360 ClearVariantArray -#361 InitVariantFromFileTime -#362 InitVariantFromGUIDAsString -#363 InitVariantFromResource -#364 PropVariantToStringWithDefault -#365 PropVariantToString -#366 VariantToBuffer -#367 VariantToDouble -#368 VariantToDoubleArray -#369 VariantToDoubleArrayAlloc -#370 VariantToFileTime -#371 VariantToInt16 -#372 VariantToUInt16 -#373 VariantToInt32 -#374 VariantToUInt32 -#375 VariantToInt64 -#376 VariantToUInt64 -#377 VariantToInt16Array -#378 VariantToUInt16Array -#379 VariantToInt32Array -#380 VariantToUInt32Array -#381 VariantToInt64Array -#382 VariantToUInt64Array -#383 VariantToInt16ArrayAlloc -#384 VariantToUInt16ArrayAlloc -#385 VariantToInt32ArrayAlloc -#386 VariantToUInt32ArrayAlloc -#387 VariantToUInt32WithDefault -#388 VariantToInt64ArrayAlloc -#389 VariantToUInt64ArrayAlloc -#390 VariantToString -#391 VariantToStringArray -#392 VariantToStringArrayAlloc -#393 VariantToStringAlloc -#394 VariantToStrRet -#395 PropVariantToBSTR -#396 PropVariantChangeType -#400 InitCustomerFeedback -#401 DeinitCustomerFeedback -#403 SqmAddExtensionClsid -#404 SqmOptedIn -#406 ScheduleSqmTasksInIdleThread -#407 IESqmGetSession -#408 LogSqmDWord -#409 LogSqmBool -#410 LogSqmBits -#411 LogSqmSetString -#412 LogSqmIfMax -#413 LogSqmIfMin -#414 LogSqmIncrement -#415 LogSqmAddToAverage -#416 LogSqmAddToStreamDWord -#417 LogSqmAddToStreamString -#420 FindDomainOrHostFromUri -#421 GetIESqmMutex -#422 ReleaseIESqmMutex -#423 LogSqmUXCommandOffsetInternal -#430 IsSQMOptionEnabled -#431 SetSQMOption -#432 GetSQMUrl -#433 LCIELowerConnLimit -#434 IECompatLogApplicationProtocolDialog -#435 IECompatLogNavigationRestricted -#436 IECompatLogMimeSniffUnsafe -#437 IECompatLogMimeSniffImageNotUpgraded -#438 IECompatLogProxyContentManaged -#439 IECompatLogNoCompression -#440 LCIEGetEffectiveConnLimit -#441 UrlmonCreateInstance -#442 CreateBrowserEmulationFilter -#443 CreateReadOnlyBrowserEmulationFilter -#444 MapUriToBrowserEmulationState -#445 MapBrowserEmulationModeToUserAgent -#446 CoInternetGetBrowserProfile -#447 CoInternetSetBrowserProfile -#448 DeleteBrowserEmulationUserData -#449 CoInternetGetBrowserEmulationMode -#450 CoInternetSetBrowserEmulationMode -#451 CleanBrowserEmulationCache -#452 ClearSessionBasedEmulationData -#453 GetSecMgrCacheSeed -#454 SeedSecMgrCache -#455 FlushUrlmonZonesCache -#456 Urlmon_CleanIETldListCache -#457 CreateIETldListManager -#458 IsClientCertSuppliedInProcess +@ stdcall Extract(ptr str) +@ stdcall FaultInIEFeature(long ptr ptr long) +@ stub FindMediaType +@ stub FindMediaTypeClass +@ stdcall FindMimeFromData(ptr wstr ptr long wstr long ptr long) +@ stdcall GetClassFileOrMime(ptr wstr ptr long wstr long ptr) +@ stub GetClassURL +@ stub GetComponentIDFromCLSSPEC +@ stdcall GetIUriPriv(ptr ptr) +@ stub GetMarkOfTheWeb +@ stdcall GetSoftwareUpdateInfo(wstr ptr) +@ stub HlinkGoBack +@ stub HlinkGoForward +@ stub HlinkNavigateMoniker +@ stdcall HlinkNavigateString(ptr wstr) +@ stdcall HlinkSimpleNavigateToMoniker(ptr wstr wstr ptr ptr ptr long long) +@ stdcall HlinkSimpleNavigateToString(wstr wstr wstr ptr ptr ptr long long) +@ stub IEInstallScope +@ stdcall IsAsyncMoniker(ptr) +@ stdcall IsLoggingEnabledA(str) +@ stdcall IsLoggingEnabledW(wstr) +@ stdcall IsValidURL(ptr wstr long) +@ stdcall MkParseDisplayNameEx(ptr wstr ptr ptr) +@ stdcall ObtainUserAgentString(long str ptr) +@ stub PrivateCoInstall +@ stdcall RegisterBindStatusCallback(ptr ptr ptr long) +@ stdcall RegisterFormatEnumerator(ptr ptr long) +@ stub RegisterMediaTypeClass +@ stdcall RegisterMediaTypes(long ptr ptr) +@ stdcall ReleaseBindInfo(ptr) +@ stdcall RevokeBindStatusCallback(ptr ptr) +@ stdcall RevokeFormatEnumerator(ptr ptr) +@ stub SetSoftwareUpdateAdvertisementState +@ stdcall ShouldShowIntranetWarningSecband(long) +@ stub URLDownloadA +@ stdcall URLDownloadToCacheFileA(ptr str str long long ptr) +@ stdcall URLDownloadToCacheFileW(ptr wstr wstr long long ptr) +@ stdcall URLDownloadToFileA(ptr str str long ptr) +@ stdcall URLDownloadToFileW(ptr wstr wstr long ptr) +@ stub URLDownloadW +@ stdcall URLOpenBlockingStreamA(ptr str ptr long ptr) +@ stdcall URLOpenBlockingStreamW(ptr wstr ptr long ptr) +@ stub URLOpenPullStreamA +@ stdcall URLOpenPullStreamW(ptr wstr long ptr) +@ stdcall URLOpenStreamA(ptr str long ptr) +@ stdcall URLOpenStreamW(ptr wstr long ptr) +@ stub UrlMkBuildVersion +@ stdcall UrlMkGetSessionOption(long ptr long ptr long) +@ stdcall UrlMkSetSessionOption(long ptr long long) +@ stub WriteHitLogging +@ stub ZonesReInit + +108 stdcall @() IsInternetESCEnabledLocal +111 stdcall @(wstr) IsProtectedModeURL +328 stdcall @(ptr ptr) propsys.VariantCompare +329 stdcall @(ptr ptr) propsys.VariantToGUID +331 stdcall @(ptr long ptr) propsys.InitPropVariantFromBuffer +335 stdcall @(ptr long ptr) propsys.InitVariantFromBuffer +350 stdcall @(ptr ptr) propsys.PropVariantToGUID +362 stdcall @(ptr ptr) propsys.InitVariantFromGUIDAsString +363 stdcall @(long long ptr) propsys.InitVariantFromResource +387 stdcall @(ptr long) propsys.VariantToUInt32WithDefault +410 stdcall @(long long) LogSqmBits +414 stdcall @(long long) LogSqmIncrement +423 stdcall @(long long long long) LogSqmUXCommandOffsetInternal +444 stdcall @(long long long) MapUriToBrowserEmulationState +445 stdcall -noname MapBrowserEmulationModeToUserAgent(ptr ptr) +446 stdcall @(long) CoInternetGetBrowserProfile +455 stdcall @() FlushUrlmonZonesCache diff --git a/dll/win32/urlmon/urlmon_main.c b/dll/win32/urlmon/urlmon_main.c index 0e98b9e3fc9..c5a8fdcffa2 100644 --- a/dll/win32/urlmon/urlmon_main.c +++ b/dll/win32/urlmon/urlmon_main.c @@ -20,8 +20,6 @@ #include -#define NONAMELESSUNION - #include "urlmon_main.h" #include "winreg.h" @@ -75,7 +73,7 @@ tls_data_t *get_tls_data(void) data = TlsGetValue(urlmon_tls); if(!data) { - data = heap_alloc_zero(sizeof(tls_data_t)); + data = calloc(1, sizeof(tls_data_t)); if(!data) return NULL; @@ -99,7 +97,7 @@ static void free_tls_list(void) while(!list_empty(&tls_list)) { data = LIST_ENTRY(list_head(&tls_list), tls_data_t, entry); list_remove(&data->entry); - heap_free(data); + free(data); } TlsFree(urlmon_tls); @@ -125,7 +123,7 @@ static void detach_thread(void) DestroyWindow(data->notif_hwnd); } - heap_free(data); + free(data); } static void process_detach(void) @@ -149,7 +147,7 @@ static void process_detach(void) */ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad) { - TRACE("%p 0x%x %p\n", hinstDLL, fdwReason, fImpLoad); + TRACE("%p 0x%lx %p\n", hinstDLL, fdwReason, fImpLoad); URLMON_DllMain( hinstDLL, fdwReason, fImpLoad ); @@ -230,7 +228,7 @@ const char *debugstr_bindstatus(ULONG status) X(BINDSTATUS_DISPLAYNAMEAVAILABLE); #undef X default: - return wine_dbg_sprintf("(invalid status %u)", status); + return wine_dbg_sprintf("(invalid status %lu)", status); } } @@ -383,21 +381,14 @@ struct object_creation_info LPCWSTR protocol; }; -static const WCHAR wszFile[] = {'f','i','l','e',0}; -static const WCHAR wszFtp[] = {'f','t','p',0}; -static const WCHAR wszGopher[] = {'g','o','p','h','e','r',0}; -static const WCHAR wszHttp[] = {'h','t','t','p',0}; -static const WCHAR wszHttps[] = {'h','t','t','p','s',0}; -static const WCHAR wszMk[] = {'m','k',0}; - static const struct object_creation_info object_creation[] = { - { &CLSID_FileProtocol, &FileProtocolCF.IClassFactory_iface, wszFile }, - { &CLSID_FtpProtocol, &FtpProtocolCF.IClassFactory_iface, wszFtp }, - { &CLSID_GopherProtocol, &GopherProtocolCF.IClassFactory_iface, wszGopher }, - { &CLSID_HttpProtocol, &HttpProtocolCF.IClassFactory_iface, wszHttp }, - { &CLSID_HttpSProtocol, &HttpSProtocolCF.IClassFactory_iface, wszHttps }, - { &CLSID_MkProtocol, &MkProtocolCF.IClassFactory_iface, wszMk }, + { &CLSID_FileProtocol, &FileProtocolCF.IClassFactory_iface, L"file" }, + { &CLSID_FtpProtocol, &FtpProtocolCF.IClassFactory_iface, L"ftp" }, + { &CLSID_GopherProtocol, &GopherProtocolCF.IClassFactory_iface, L"gopher" }, + { &CLSID_HttpProtocol, &HttpProtocolCF.IClassFactory_iface, L"http" }, + { &CLSID_HttpSProtocol, &HttpSProtocolCF.IClassFactory_iface, L"https" }, + { &CLSID_MkProtocol, &MkProtocolCF.IClassFactory_iface, L"mk" }, { &CLSID_InternetSecurityManager, &SecurityManagerCF.IClassFactory_iface, NULL }, { &CLSID_InternetZoneManager, &ZoneManagerCF.IClassFactory_iface, NULL }, { &CLSID_StdURLMoniker, &StdURLMonikerCF.IClassFactory_iface, NULL }, @@ -460,9 +451,7 @@ static HRESULT register_inf(BOOL doregister) HRESULT (WINAPI *pRegInstall)(HMODULE hm, LPCSTR pszSection, const STRTABLEA* pstTable); HMODULE hAdvpack; - static const WCHAR wszAdvpack[] = {'a','d','v','p','a','c','k','.','d','l','l',0}; - - hAdvpack = LoadLibraryW(wszAdvpack); + hAdvpack = LoadLibraryW(L"advpack.dll"); pRegInstall = (void *)GetProcAddress(hAdvpack, "RegInstall"); return pRegInstall(hProxyDll, doregister ? "RegisterDll" : "UnregisterDll", NULL); @@ -524,7 +513,7 @@ HRESULT WINAPI DllRegisterServerEx(void) */ HRESULT WINAPI IsValidURL(LPBC pBC, LPCWSTR szURL, DWORD dwReserved) { - FIXME("(%p, %s, %d): stub\n", pBC, debugstr_w(szURL), dwReserved); + FIXME("(%p, %s, %ld): stub\n", pBC, debugstr_w(szURL), dwReserved); if (dwReserved || !szURL) return E_INVALIDARG; @@ -540,7 +529,7 @@ HRESULT WINAPI IsValidURL(LPBC pBC, LPCWSTR szURL, DWORD dwReserved) HRESULT WINAPI FaultInIEFeature( HWND hwnd, uCLSSPEC * pClassSpec, QUERYCONTEXT *pQuery, DWORD flags ) { - FIXME("%p %p %p %08x\n", hwnd, pClassSpec, pQuery, flags); + FIXME("%p %p %p %08lx\n", hwnd, pClassSpec, pQuery, flags); return E_NOTIMPL; } @@ -552,7 +541,7 @@ HRESULT WINAPI CoGetClassObjectFromURL( REFCLSID rclsid, LPCWSTR szCodeURL, DWOR LPBINDCTX pBindCtx, DWORD dwClsContext, LPVOID pvReserved, REFIID riid, LPVOID *ppv ) { - FIXME("(%s %s %d %d %s %p %d %p %s %p) Stub!\n", debugstr_guid(rclsid), debugstr_w(szCodeURL), + FIXME("(%s %s %ld %ld %s %p %ld %p %s %p) Stub!\n", debugstr_guid(rclsid), debugstr_w(szCodeURL), dwFileVersionMS, dwFileVersionLS, debugstr_w(szContentType), pBindCtx, dwClsContext, pvReserved, debugstr_guid(riid), ppv); return E_NOINTERFACE; @@ -607,39 +596,39 @@ HRESULT WINAPI CopyStgMedium(const STGMEDIUM *src, STGMEDIUM *dst) case TYMED_NULL: break; case TYMED_FILE: - if(src->u.lpszFileName && !src->pUnkForRelease) { - DWORD size = (lstrlenW(src->u.lpszFileName)+1)*sizeof(WCHAR); - dst->u.lpszFileName = CoTaskMemAlloc(size); - if(!dst->u.lpszFileName) + if(src->lpszFileName && !src->pUnkForRelease) { + DWORD size = (lstrlenW(src->lpszFileName)+1)*sizeof(WCHAR); + dst->lpszFileName = CoTaskMemAlloc(size); + if(!dst->lpszFileName) return E_OUTOFMEMORY; - memcpy(dst->u.lpszFileName, src->u.lpszFileName, size); + memcpy(dst->lpszFileName, src->lpszFileName, size); } break; case TYMED_ISTREAM: - if(dst->u.pstm) - IStream_AddRef(dst->u.pstm); + if(dst->pstm) + IStream_AddRef(dst->pstm); break; case TYMED_ISTORAGE: - if(dst->u.pstg) - IStorage_AddRef(dst->u.pstg); + if(dst->pstg) + IStorage_AddRef(dst->pstg); break; case TYMED_HGLOBAL: - if(dst->u.hGlobal) { - SIZE_T size = GlobalSize(src->u.hGlobal); + if(dst->hGlobal) { + SIZE_T size = GlobalSize(src->hGlobal); char *src_ptr, *dst_ptr; - dst->u.hGlobal = GlobalAlloc(GMEM_FIXED, size); - if(!dst->u.hGlobal) + dst->hGlobal = GlobalAlloc(GMEM_FIXED, size); + if(!dst->hGlobal) return E_OUTOFMEMORY; - dst_ptr = GlobalLock(dst->u.hGlobal); - src_ptr = GlobalLock(src->u.hGlobal); + dst_ptr = GlobalLock(dst->hGlobal); + src_ptr = GlobalLock(src->hGlobal); memcpy(dst_ptr, src_ptr, size); GlobalUnlock(src_ptr); GlobalUnlock(dst_ptr); } break; default: - FIXME("Unimplemented tymed %d\n", src->tymed); + FIXME("Unimplemented tymed %ld\n", src->tymed); } if(dst->pUnkForRelease) @@ -721,7 +710,7 @@ HRESULT WINAPI GetClassFileOrMime(LPBC pBC, LPCWSTR pszFilename, LPVOID pBuffer, DWORD cbBuffer, LPCWSTR pszMimeType, DWORD dwReserved, CLSID *pclsid) { - FIXME("(%p, %s, %p, %d, %s, 0x%08x, %p): stub\n", pBC, debugstr_w(pszFilename), pBuffer, + FIXME("(%p, %s, %p, %ld, %s, 0x%08lx, %p): stub\n", pBC, debugstr_w(pszFilename), pBuffer, cbBuffer, debugstr_w(pszMimeType), dwReserved, pclsid); return E_NOTIMPL; } @@ -777,7 +766,17 @@ BOOL WINAPI IsProtectedModeURL(const WCHAR *url) */ int WINAPI LogSqmBits(DWORD unk1, DWORD unk2) { - FIXME("stub: %d %d\n", unk1, unk2); + FIXME("stub: %ld %ld\n", unk1, unk2); + return 0; +} + +/*********************************************************************** + * LogSqmIncrement (URLMON.414) + * Undocumented, added in IE8 + */ +int WINAPI LogSqmIncrement(DWORD unk1, DWORD unk2) +{ + FIXME("stub: %ld %ld\n", unk1, unk2); return 0; } @@ -787,7 +786,7 @@ int WINAPI LogSqmBits(DWORD unk1, DWORD unk2) */ void WINAPI LogSqmUXCommandOffsetInternal(DWORD unk1, DWORD unk2, DWORD unk3, DWORD unk4) { - FIXME("stub: %d %d %d %d\n", unk1, unk2, unk3, unk4); + FIXME("stub: %ld %ld %ld %ld\n", unk1, unk2, unk3, unk4); } /*********************************************************************** @@ -796,17 +795,7 @@ void WINAPI LogSqmUXCommandOffsetInternal(DWORD unk1, DWORD unk2, DWORD unk3, DW */ int WINAPI MapUriToBrowserEmulationState(DWORD unk1, DWORD unk2, DWORD unk3) { - FIXME("stub: %d %d %d\n", unk1, unk2, unk3); - return 0; -} - -/*********************************************************************** - * MapBrowserEmulationModeToUserAgent (URLMON.445) - * Undocumented, added in IE8 - */ -int WINAPI MapBrowserEmulationModeToUserAgent(DWORD unk1, DWORD unk2) -{ - FIXME("stub: %d %d\n", unk1, unk2); + FIXME("stub: %ld %ld %ld\n", unk1, unk2, unk3); return 0; } @@ -816,7 +805,7 @@ int WINAPI MapBrowserEmulationModeToUserAgent(DWORD unk1, DWORD unk2) */ HRESULT WINAPI CoInternetGetBrowserProfile(DWORD unk) { - FIXME("%x: stub\n", unk); + FIXME("%lx: stub\n", unk); return E_NOTIMPL; } @@ -845,7 +834,7 @@ HRESULT WINAPI RegisterMediaTypes(UINT types, LPCSTR *szTypes, CLIPFORMAT *cfTyp */ BOOL WINAPI ShouldShowIntranetWarningSecband(DWORD unk) { - FIXME("%x: stub\n", unk); + FIXME("%lx: stub\n", unk); return FALSE; } diff --git a/dll/win32/urlmon/urlmon_main.h b/dll/win32/urlmon/urlmon_main.h index 6eca2e0061e..53b969eb410 100644 --- a/dll/win32/urlmon/urlmon_main.h +++ b/dll/win32/urlmon/urlmon_main.h @@ -21,9 +21,6 @@ #define __WINE_URLMON_MAIN_H #include -#ifdef __REACTOS__ -#include -#endif #define COBJMACROS @@ -31,66 +28,65 @@ #include "winbase.h" #include "winuser.h" #ifdef __REACTOS__ -#include "winnls.h" +#include #endif #include "ole2.h" #include "urlmon.h" #include "wininet.h" -#include "wine/heap.h" #include "wine/list.h" -extern HINSTANCE hProxyDll DECLSPEC_HIDDEN; -extern HRESULT SecManagerImpl_Construct(IUnknown *pUnkOuter, LPVOID *ppobj) DECLSPEC_HIDDEN; -extern HRESULT ZoneMgrImpl_Construct(IUnknown *pUnkOuter, LPVOID *ppobj) DECLSPEC_HIDDEN; -extern HRESULT StdURLMoniker_Construct(IUnknown *pUnkOuter, LPVOID *ppobj) DECLSPEC_HIDDEN; -extern HRESULT FileProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj) DECLSPEC_HIDDEN; -extern HRESULT HttpProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj) DECLSPEC_HIDDEN; -extern HRESULT HttpSProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj) DECLSPEC_HIDDEN; -extern HRESULT FtpProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj) DECLSPEC_HIDDEN; -extern HRESULT GopherProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj) DECLSPEC_HIDDEN; -extern HRESULT MkProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj) DECLSPEC_HIDDEN; -extern HRESULT MimeFilter_Construct(IUnknown *pUnkOuter, LPVOID *ppobj) DECLSPEC_HIDDEN; -extern HRESULT Uri_Construct(IUnknown *pUnkOuter, LPVOID *ppobj) DECLSPEC_HIDDEN; +extern HINSTANCE hProxyDll; +extern HRESULT SecManagerImpl_Construct(IUnknown *pUnkOuter, LPVOID *ppobj); +extern HRESULT ZoneMgrImpl_Construct(IUnknown *pUnkOuter, LPVOID *ppobj); +extern HRESULT StdURLMoniker_Construct(IUnknown *pUnkOuter, LPVOID *ppobj); +extern HRESULT FileProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj); +extern HRESULT HttpProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj); +extern HRESULT HttpSProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj); +extern HRESULT FtpProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj); +extern HRESULT GopherProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj); +extern HRESULT MkProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj); +extern HRESULT MimeFilter_Construct(IUnknown *pUnkOuter, LPVOID *ppobj); +extern HRESULT Uri_Construct(IUnknown *pUnkOuter, LPVOID *ppobj); -extern BOOL WINAPI URLMON_DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) DECLSPEC_HIDDEN; -extern HRESULT WINAPI URLMON_DllGetClassObject(REFCLSID rclsid, REFIID iid,LPVOID *ppv) DECLSPEC_HIDDEN; -extern HRESULT WINAPI URLMON_DllRegisterServer(void) DECLSPEC_HIDDEN; -extern HRESULT WINAPI URLMON_DllUnregisterServer(void) DECLSPEC_HIDDEN; +extern BOOL WINAPI URLMON_DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved); +extern HRESULT WINAPI URLMON_DllGetClassObject(REFCLSID rclsid, REFIID iid,LPVOID *ppv); +extern HRESULT WINAPI URLMON_DllRegisterServer(void); +extern HRESULT WINAPI URLMON_DllUnregisterServer(void); -extern GUID const CLSID_PSFactoryBuffer DECLSPEC_HIDDEN; -extern GUID const CLSID_CUri DECLSPEC_HIDDEN; +extern GUID const CLSID_PSFactoryBuffer; +extern GUID const CLSID_CUri; /********************************************************************** * Dll lifetime tracking declaration for urlmon.dll */ -extern LONG URLMON_refCount DECLSPEC_HIDDEN; +extern LONG URLMON_refCount; static inline void URLMON_LockModule(void) { InterlockedIncrement( &URLMON_refCount ); } static inline void URLMON_UnlockModule(void) { InterlockedDecrement( &URLMON_refCount ); } extern HINSTANCE urlmon_instance; -IInternetProtocolInfo *get_protocol_info(LPCWSTR) DECLSPEC_HIDDEN; -HRESULT get_protocol_handler(IUri*,CLSID*,IClassFactory**) DECLSPEC_HIDDEN; -IInternetProtocol *get_mime_filter(LPCWSTR) DECLSPEC_HIDDEN; -BOOL is_registered_protocol(LPCWSTR) DECLSPEC_HIDDEN; -HRESULT register_namespace(IClassFactory*,REFIID,LPCWSTR,BOOL) DECLSPEC_HIDDEN; -HINTERNET get_internet_session(IInternetBindInfo*) DECLSPEC_HIDDEN; -WCHAR *get_useragent(void) DECLSPEC_HIDDEN; -void update_user_agent(WCHAR*) DECLSPEC_HIDDEN; -void free_session(void) DECLSPEC_HIDDEN; +IInternetProtocolInfo *get_protocol_info(LPCWSTR); +HRESULT get_protocol_handler(IUri*,CLSID*,IClassFactory**); +IInternetProtocol *get_mime_filter(LPCWSTR); +BOOL is_registered_protocol(LPCWSTR); +HRESULT register_namespace(IClassFactory*,REFIID,LPCWSTR,BOOL); +HINTERNET get_internet_session(IInternetBindInfo*); +WCHAR *get_useragent(void); +void update_user_agent(WCHAR*); +void free_session(void); -HRESULT find_mime_from_ext(const WCHAR*,WCHAR**) DECLSPEC_HIDDEN; +HRESULT find_mime_from_ext(const WCHAR*,WCHAR**); -HRESULT bind_to_storage(IUri*,IBindCtx*,REFIID,void**) DECLSPEC_HIDDEN; -HRESULT bind_to_object(IMoniker*,IUri*,IBindCtx*,REFIID,void**ppv) DECLSPEC_HIDDEN; +HRESULT bind_to_storage(IUri*,IBindCtx*,REFIID,void**); +HRESULT bind_to_object(IMoniker*,IUri*,IBindCtx*,REFIID,void**ppv); -HRESULT create_default_callback(IBindStatusCallback**) DECLSPEC_HIDDEN; -HRESULT wrap_callback(IBindStatusCallback*,IBindStatusCallback**) DECLSPEC_HIDDEN; -IBindStatusCallback *bsc_from_bctx(IBindCtx*) DECLSPEC_HIDDEN; +HRESULT create_default_callback(IBindStatusCallback**); +HRESULT wrap_callback(IBindStatusCallback*,IBindStatusCallback**); +IBindStatusCallback *bsc_from_bctx(IBindCtx*); typedef HRESULT (*stop_cache_binding_proc_t)(void*,const WCHAR*,HRESULT,const WCHAR*); -HRESULT download_to_cache(IUri*,stop_cache_binding_proc_t,void*,IBindStatusCallback*) DECLSPEC_HIDDEN; +HRESULT download_to_cache(IUri*,stop_cache_binding_proc_t,void*,IBindStatusCallback*); typedef struct ProtocolVtbl ProtocolVtbl; @@ -158,16 +154,16 @@ struct ProtocolVtbl { #define FLAG_ERROR 0x0040 #define FLAG_SYNC_READ 0x0080 -HRESULT protocol_start(Protocol*,IInternetProtocol*,IUri*,IInternetProtocolSink*,IInternetBindInfo*) DECLSPEC_HIDDEN; -HRESULT protocol_continue(Protocol*,PROTOCOLDATA*) DECLSPEC_HIDDEN; -HRESULT protocol_read(Protocol*,void*,ULONG,ULONG*) DECLSPEC_HIDDEN; -HRESULT protocol_lock_request(Protocol*) DECLSPEC_HIDDEN; -HRESULT protocol_unlock_request(Protocol*) DECLSPEC_HIDDEN; -HRESULT protocol_abort(Protocol*,HRESULT) DECLSPEC_HIDDEN; -HRESULT protocol_syncbinding(Protocol*) DECLSPEC_HIDDEN; -void protocol_close_connection(Protocol*) DECLSPEC_HIDDEN; +HRESULT protocol_start(Protocol*,IInternetProtocol*,IUri*,IInternetProtocolSink*,IInternetBindInfo*); +HRESULT protocol_continue(Protocol*,PROTOCOLDATA*); +HRESULT protocol_read(Protocol*,void*,ULONG,ULONG*); +HRESULT protocol_lock_request(Protocol*); +HRESULT protocol_unlock_request(Protocol*); +HRESULT protocol_abort(Protocol*,HRESULT); +HRESULT protocol_syncbinding(Protocol*); +void protocol_close_connection(Protocol*); -void find_domain_name(const WCHAR*,DWORD,INT*) DECLSPEC_HIDDEN; +void find_domain_name(const WCHAR*,DWORD,INT*); typedef struct _task_header_t task_header_t; @@ -219,8 +215,8 @@ typedef struct { BSTR display_uri; } BindProtocol; -HRESULT create_binding_protocol(BindProtocol**) DECLSPEC_HIDDEN; -void set_binding_sink(BindProtocol*,IInternetProtocolSink*,IInternetBindInfo*) DECLSPEC_HIDDEN; +HRESULT create_binding_protocol(BindProtocol**); +void set_binding_sink(BindProtocol*,IInternetProtocolSink*,IInternetBindInfo*); typedef struct { HWND notif_hwnd; @@ -229,41 +225,20 @@ typedef struct { struct list entry; } tls_data_t; -tls_data_t *get_tls_data(void) DECLSPEC_HIDDEN; +tls_data_t *get_tls_data(void); -void unregister_notif_wnd_class(void) DECLSPEC_HIDDEN; -HWND get_notif_hwnd(void) DECLSPEC_HIDDEN; -void release_notif_hwnd(HWND) DECLSPEC_HIDDEN; +void unregister_notif_wnd_class(void); +HWND get_notif_hwnd(void); +void release_notif_hwnd(HWND); -const char *debugstr_bindstatus(ULONG) DECLSPEC_HIDDEN; +const char *debugstr_bindstatus(ULONG); -static inline void* __WINE_ALLOC_SIZE(2) heap_realloc_zero(void *mem, size_t size) -{ - return HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, mem, size); -} - -static inline LPWSTR heap_strdupW(LPCWSTR str) +static inline WCHAR *strndupW(LPCWSTR str, int len) { LPWSTR ret = NULL; if(str) { - DWORD size; - - size = (lstrlenW(str)+1)*sizeof(WCHAR); - ret = heap_alloc(size); - if(ret) - memcpy(ret, str, size); - } - - return ret; -} - -static inline LPWSTR heap_strndupW(LPCWSTR str, int len) -{ - LPWSTR ret = NULL; - - if(str) { - ret = heap_alloc((len+1)*sizeof(WCHAR)); + ret = malloc((len + 1) * sizeof(WCHAR)); if(ret) { memcpy(ret, str, len*sizeof(WCHAR)); ret[len] = 0; @@ -273,13 +248,13 @@ static inline LPWSTR heap_strndupW(LPCWSTR str, int len) return ret; } -static inline LPWSTR heap_strdupAtoW(const char *str) +static inline WCHAR *strdupAtoW(const char *str) { LPWSTR ret = NULL; if(str) { DWORD len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0); - ret = heap_alloc(len*sizeof(WCHAR)); + ret = malloc(len * sizeof(WCHAR)); if(ret) MultiByteToWideChar(CP_ACP, 0, str, -1, ret, len); } @@ -287,18 +262,4 @@ static inline LPWSTR heap_strdupAtoW(const char *str) return ret; } -static inline char *heap_strdupWtoA(const WCHAR *str) -{ - char *ret = NULL; - - if(str) { - size_t size = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL); - ret = heap_alloc(size); - if(ret) - WideCharToMultiByte(CP_ACP, 0, str, -1, ret, size, NULL, NULL); - } - - return ret; -} - #endif /* __WINE_URLMON_MAIN_H */ diff --git a/dll/win32/urlmon/urlmon_urlmon.rgs b/dll/win32/urlmon/urlmon_urlmon.rgs deleted file mode 100644 index 2586db7e0d8..00000000000 --- a/dll/win32/urlmon/urlmon_urlmon.rgs +++ /dev/null @@ -1,141 +0,0 @@ -HKCR -{ - NoRemove Interface - { - '{79EAC9C0-BAF9-11CE-8C82-00AA004BA90B}' = s 'IBinding' - { - NumMethods = s 9 - ProxyStubClsid32 = s '{79EAC9F1-BAF9-11CE-8C82-00AA004BA90B}' - } - '{79EAC9C1-BAF9-11CE-8C82-00AA004BA90B}' = s 'IBindStatusCallback' - { - NumMethods = s 11 - ProxyStubClsid32 = s '{79EAC9F1-BAF9-11CE-8C82-00AA004BA90B}' - } - '{AAA74EF9-8EE7-4659-88D9-F8C504DA73CC}' = s 'IBindStatusCallbackEx' - { - NumMethods = s 12 - ProxyStubClsid32 = s '{79EAC9F1-BAF9-11CE-8C82-00AA004BA90B}' - } - '{79EAC9D0-BAF9-11CE-8C82-00AA004BA90B}' = s 'IAuthenticate' - { - NumMethods = s 4 - ProxyStubClsid32 = s '{79EAC9F1-BAF9-11CE-8C82-00AA004BA90B}' - } - '{79EAC9D2-BAF9-11CE-8C82-00AA004BA90B}' = s 'IHttpNegotiate' - { - NumMethods = s 5 - ProxyStubClsid32 = s '{79EAC9F1-BAF9-11CE-8C82-00AA004BA90B}' - } - '{4F9F9FCB-E0F4-48EB-B7AB-FA2EA9365CB4}' = s 'IHttpNegotiate2' - { - NumMethods = s 6 - ProxyStubClsid32 = s '{79EAC9F1-BAF9-11CE-8C82-00AA004BA90B}' - } - '{FC4801A1-2BA9-11CF-A229-00AA003D7352}' = s 'IBindHost' - { - NumMethods = s 6 - ProxyStubClsid32 = s '{79EAC9F1-BAF9-11CE-8C82-00AA004BA90B}' - } - '{79EAC9D6-BAFA-11CE-8C82-00AA004BA90B}' = s 'IWinInetInfo' - { - NumMethods = s 4 - ProxyStubClsid32 = s '{79EAC9F1-BAF9-11CE-8C82-00AA004BA90B}' - } - '{79EAC9D8-BAFA-11CE-8C82-00AA004BA90B}' = s 'IWinInetHttpInfo' - { - NumMethods = s 5 - ProxyStubClsid32 = s '{79EAC9F1-BAF9-11CE-8C82-00AA004BA90B}' - } - '{79EAC9D7-BAFA-11CE-8C82-00AA004BA90B}' = s 'IHttpSecurity' - { - NumMethods = s 5 - ProxyStubClsid32 = s '{79EAC9F1-BAF9-11CE-8C82-00AA004BA90B}' - } - '{79EAC9C9-BAF9-11CE-8C82-00AA004BA90B}' = s 'IPersistMoniker' - { - NumMethods = s 9 - ProxyStubClsid32 = s '{79EAC9F1-BAF9-11CE-8C82-00AA004BA90B}' - } - '{A5CA5F7F-1847-4D87-9C5B-918509F7511D}' = s 'IMonikerProp' - { - NumMethods = s 4 - ProxyStubClsid32 = s '{79EAC9F1-BAF9-11CE-8C82-00AA004BA90B}' - } - '{79EAC9EE-BAF9-11CE-8C82-00AA004BA90B}' = s 'IInternetSecurityManager' - { - NumMethods = s 11 - ProxyStubClsid32 = s '{79EAC9F1-BAF9-11CE-8C82-00AA004BA90B}' - } - '{F164EDF1-CC7C-4F0D-9A94-34222625C393}' = s 'IInternetSecurityManagerEx' - { - NumMethods = s 12 - ProxyStubClsid32 = s '{79EAC9F1-BAF9-11CE-8C82-00AA004BA90B}' - } - '{F1E50292-A795-4117-8E09-2B560A72AC60}' = s 'IInternetSecurityManagerEx2' - { - NumMethods = s 16 - ProxyStubClsid32 = s '{79EAC9F1-BAF9-11CE-8C82-00AA004BA90B}' - } - '{A39EE748-6A27-4817-A6F2-13914BEF5890}' = s 'IUri' - { - NumMethods = s 28 - ProxyStubClsid32 = s '{79EAC9F1-BAF9-11CE-8C82-00AA004BA90B}' - } - } - NoRemove CLSID - { - '{79EAC9E0-BAF9-11CE-8C82-00AA004BA90B}' = s 'URL Moniker' - { - InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } - } - '{79EAC9E2-BAF9-11CE-8C82-00AA004BA90B}' = s 'http: Asynchronous Pluggable Protocol Handler' - { - InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } - } - '{79EAC9E3-BAF9-11CE-8C82-00AA004BA90B}' = s 'ftp: Asynchronous Pluggable Protocol Handler' - { - InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } - } - '{79EAC9E4-BAF9-11CE-8C82-00AA004BA90B}' = s 'gopher: Asynchronous Pluggable Protocol Handler' - { - InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } - } - '{79EAC9E5-BAF9-11CE-8C82-00AA004BA90B}' = s 'https: Asynchronous Pluggable Protocol Handler' - { - InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } - } - '{79EAC9E6-BAF9-11CE-8C82-00AA004BA90B}' = s 'mk: Asynchronous Pluggable Protocol Handler' - { - InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } - } - '{79EAC9E7-BAF9-11CE-8C82-00AA004BA90B}' = s 'file:, local: Asynchronous Pluggable Protocol Handler' - { - InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } - } - '{3DD53D40-7B8B-11D0-B013-00AA0059CE02}' = s 'CDL: Asynchronous Pluggable Protocol Handler' - { - InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } - } - '{7B8A2D94-0AC9-11D1-896C-00C04FB6BFC4}' = s 'Security Manager' - { - InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Both' } - } - '{7B8A2D95-0AC9-11D1-896C-00C04FB6BFC4}' = s 'URL Zone Manager' - { - InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Both' } - } - '{79EAC9F1-BAF9-11CE-8C82-00AA004BA90B}' = s 'URLMoniker ProxyStub Factory' - { - InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } - } - '{8F6B0360-B80D-11D0-A9B3-006097942311}' = s 'AP lzdhtml encoding/decoding Filter' - { - InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } - } - '{DF2FCE13-25EC-45BB-9D4C-CECD47C2430C}' = s 'CUri' - { - InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } - } - } -} diff --git a/dll/win32/urlmon/usrmarshal.c b/dll/win32/urlmon/usrmarshal.c index 9ddb130646f..57cfaf64ec6 100644 --- a/dll/win32/urlmon/usrmarshal.c +++ b/dll/win32/urlmon/usrmarshal.c @@ -16,8 +16,6 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#define NONAMELESSUNION - #include "urlmon_main.h" #include "wine/debug.h" @@ -28,7 +26,7 @@ HRESULT CALLBACK IWinInetHttpInfo_QueryInfo_Proxy(IWinInetHttpInfo* This, DWORD dwOption, LPVOID pBuffer, DWORD *pcbBuf, DWORD *pdwFlags, DWORD *pdwReserved) { - TRACE("(%p %x %p %p %p %p)\n", This, dwOption, pBuffer, pcbBuf, pdwFlags, pdwReserved); + TRACE("(%p %lx %p %p %p %p)\n", This, dwOption, pBuffer, pcbBuf, pdwFlags, pdwReserved); return IWinInetHttpInfo_RemoteQueryInfo_Proxy(This, dwOption, pBuffer, pcbBuf, pdwFlags, pdwReserved); } @@ -36,21 +34,21 @@ HRESULT __RPC_STUB IWinInetHttpInfo_QueryInfo_Stub(IWinInetHttpInfo* This, DWORD dwOption, BYTE *pBuffer, DWORD *pcbBuf, DWORD *pdwFlags, DWORD *pdwReserved) { - TRACE("(%p %x %p %p %p %p)\n", This, dwOption, pBuffer, pcbBuf, pdwFlags, pdwReserved); + TRACE("(%p %lx %p %p %p %p)\n", This, dwOption, pBuffer, pcbBuf, pdwFlags, pdwReserved); return IWinInetHttpInfo_QueryInfo(This, dwOption, pBuffer, pcbBuf, pdwFlags, pdwReserved); } HRESULT CALLBACK IWinInetInfo_QueryOption_Proxy(IWinInetInfo* This, DWORD dwOption, LPVOID pBuffer, DWORD *pcbBuf) { - TRACE("(%p %x %p %p)\n", This, dwOption, pBuffer, pcbBuf); + TRACE("(%p %lx %p %p)\n", This, dwOption, pBuffer, pcbBuf); return IWinInetInfo_RemoteQueryOption_Proxy(This, dwOption, pBuffer, pcbBuf); } HRESULT __RPC_STUB IWinInetInfo_QueryOption_Stub(IWinInetInfo* This, DWORD dwOption, BYTE *pBuffer, DWORD *pcbBuf) { - TRACE("(%p %x %p %p)\n", This, dwOption, pBuffer, pcbBuf); + TRACE("(%p %lx %p %p)\n", This, dwOption, pBuffer, pcbBuf); return IWinInetInfo_QueryOption(This, dwOption, pBuffer, pcbBuf); } @@ -93,7 +91,7 @@ static HRESULT marshal_stgmed(STGMEDIUM *stgmed, RemSTGMEDIUM **ret) ULONG size = 0; HRESULT hres = S_OK; - if((stgmed->tymed == TYMED_ISTREAM && stgmed->u.pstm) || stgmed->pUnkForRelease) { + if((stgmed->tymed == TYMED_ISTREAM && stgmed->pstm) || stgmed->pUnkForRelease) { hres = CreateStreamOnHGlobal(NULL, TRUE, &stream); if(FAILED(hres)) return hres; @@ -103,12 +101,12 @@ static HRESULT marshal_stgmed(STGMEDIUM *stgmed, RemSTGMEDIUM **ret) case TYMED_NULL: break; case TYMED_ISTREAM: - if(stgmed->u.pstm) - hres = CoMarshalInterface(stream, &IID_IStream, (IUnknown*)stgmed->u.pstm, + if(stgmed->pstm) + hres = CoMarshalInterface(stream, &IID_IStream, (IUnknown*)stgmed->pstm, MSHCTX_LOCAL, NULL, MSHLFLAGS_NORMAL); break; default: - FIXME("unsupported tymed %u\n", stgmed->tymed); + FIXME("unsupported tymed %lu\n", stgmed->tymed); break; } @@ -131,7 +129,7 @@ static HRESULT marshal_stgmed(STGMEDIUM *stgmed, RemSTGMEDIUM **ret) IStream_Seek(stream, zero, STREAM_SEEK_SET, &off); } - rem_stgmed = heap_alloc_zero(FIELD_OFFSET(RemSTGMEDIUM, data[size])); + rem_stgmed = calloc(1, FIELD_OFFSET(RemSTGMEDIUM, data[size])); if(!rem_stgmed) { if(stream) IStream_Release(stream); @@ -140,7 +138,7 @@ static HRESULT marshal_stgmed(STGMEDIUM *stgmed, RemSTGMEDIUM **ret) rem_stgmed->tymed = stgmed->tymed; rem_stgmed->dwHandleType = 0; - rem_stgmed->pData = stgmed->u.pstm != NULL; + rem_stgmed->pData = stgmed->pstm != NULL; rem_stgmed->pUnkForRelease = stgmed->pUnkForRelease != NULL; rem_stgmed->cbData = size; if(stream) { @@ -181,10 +179,10 @@ static HRESULT unmarshal_stgmed(RemSTGMEDIUM *rem_stgmed, STGMEDIUM *stgmed) break; case TYMED_ISTREAM: if(rem_stgmed->pData) - hres = CoUnmarshalInterface(stream, &IID_IStream, (void**)&stgmed->u.pstm); + hres = CoUnmarshalInterface(stream, &IID_IStream, (void**)&stgmed->pstm); break; default: - FIXME("unsupported tymed %u\n", stgmed->tymed); + FIXME("unsupported tymed %lu\n", stgmed->tymed); break; } @@ -227,7 +225,7 @@ static void stub_unmarshal_bindinfo(RemBINDINFO *rem_bindinfo, BINDINFO *bindinf bindinfo->cbstgmedData = rem_bindinfo->cbstgmedData; if(bindinfo->stgmedData.tymed != TYMED_NULL) - WARN("stgmed data (tymed %u) will be lost!\n", bindinfo->stgmedData.tymed); + WARN("stgmed data (tymed %lu) will be lost!\n", bindinfo->stgmedData.tymed); } static void stub_marshal_bindinfo(BINDINFO *bindinfo, RemBINDINFO *rem_bindinfo) @@ -319,7 +317,7 @@ HRESULT CALLBACK IBindStatusCallback_OnDataAvailable_Proxy( RemSTGMEDIUM *rem_stgmed; HRESULT hres; - TRACE("(%p)->(%x %u %p %p)\n", This, grfBSCF, dwSize, pformatetc, pstgmed); + TRACE("(%p)->(%lx %lu %p %p)\n", This, grfBSCF, dwSize, pformatetc, pstgmed); hres = marshal_stgmed(pstgmed, &rem_stgmed); if(FAILED(hres)) @@ -333,7 +331,7 @@ HRESULT CALLBACK IBindStatusCallback_OnDataAvailable_Proxy( hres = IBindStatusCallback_RemoteOnDataAvailable_Proxy(This, grfBSCF, dwSize, &rem_formatetc, rem_stgmed); - heap_free(rem_stgmed); + free(rem_stgmed); return hres; } @@ -345,7 +343,7 @@ HRESULT __RPC_STUB IBindStatusCallback_OnDataAvailable_Stub( FORMATETC formatetc; HRESULT hres; - TRACE("(%p)->(%x %u %p %p)\n", This, grfBSCF, dwSize, pformatetc, pstgmed); + TRACE("(%p)->(%lx %lu %p %p)\n", This, grfBSCF, dwSize, pformatetc, pstgmed); hres = unmarshal_stgmed(pstgmed, &stgmed); if(FAILED(hres)) diff --git a/media/doc/WINESYNC.txt b/media/doc/WINESYNC.txt index 7fa106cf7bd..84bf01deedf 100644 --- a/media/doc/WINESYNC.txt +++ b/media/doc/WINESYNC.txt @@ -204,7 +204,7 @@ dll/win32/twain_32 # Synced to WineStaging-4.18 dll/win32/uiautomationcore # Synced to Wine-10.0 dll/win32/updspapi # Synced to WineStaging-4.18 dll/win32/url # Synced to WineStaging-3.3 -dll/win32/urlmon # Synced to WineStaging-4.18 +dll/win32/urlmon # Synced to Wine-10.0 dll/win32/usp10 # Synced to WineStaging-4.18 dll/win32/uxtheme # Forked dll/win32/vbscript # Synced to Wine-10.0