Module: wine Branch: master Commit: e237c127c1004e82e92d9c31352f7eea2d697060 URL: http://source.winehq.org/git/wine.git/?a=commit;h=e237c127c1004e82e92d9c3135...
Author: Jacek Caban jacek@codeweavers.com Date: Sat Jun 27 00:37:11 2009 +0200
urlmon: Added UrlMkSetSessionOption(URLMON_OPTION_USERAGENT) implementation.
---
dlls/urlmon/session.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ dlls/urlmon/urlmon_main.c | 11 ----------- 2 files changed, 44 insertions(+), 11 deletions(-)
diff --git a/dlls/urlmon/session.c b/dlls/urlmon/session.c index 60402ad..3cee893 100644 --- a/dlls/urlmon/session.c +++ b/dlls/urlmon/session.c @@ -587,6 +587,50 @@ HRESULT WINAPI UrlMkGetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBuf return E_INVALIDARG; }
+/************************************************************************** + * UrlMkSetSessionOption (URLMON.@) + */ +HRESULT WINAPI UrlMkSetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBufferLength, + DWORD Reserved) +{ + TRACE("(%x %p %x)\n", dwOption, pBuffer, dwBufferLength); + + switch(dwOption) { + case URLMON_OPTION_USERAGENT: { + LPWSTR new_user_agent; + char *buf = pBuffer; + DWORD len, size; + + if(!pBuffer || !dwBufferLength) + return E_INVALIDARG; + + for(len=0; len<dwBufferLength && buf[len]; len++); + + 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)); + if(!new_user_agent) + return E_OUTOFMEMORY; + MultiByteToWideChar(CP_ACP, 0, buf, len, new_user_agent, size); + new_user_agent[size] = 0; + + EnterCriticalSection(&session_cs); + + heap_free(user_agent); + user_agent = new_user_agent; + + LeaveCriticalSection(&session_cs); + break; + } + default: + FIXME("Unknown option %x\n", dwOption); + return E_INVALIDARG; + } + + return S_OK; +} + void free_session(void) { heap_free(user_agent); diff --git a/dlls/urlmon/urlmon_main.c b/dlls/urlmon/urlmon_main.c index 62fe4ec..0d5bc2a 100644 --- a/dlls/urlmon/urlmon_main.c +++ b/dlls/urlmon/urlmon_main.c @@ -362,17 +362,6 @@ HRESULT WINAPI DllRegisterServerEx(void) return E_FAIL; }
-/************************************************************************** - * UrlMkSetSessionOption (URLMON.@) - */ -HRESULT WINAPI UrlMkSetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBufferLength, - DWORD Reserved) -{ - FIXME("(%#x, %p, %#x): stub\n", dwOption, pBuffer, dwBufferLength); - - return S_OK; -} - static const CHAR Agent[] = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)";
/**************************************************************************