Jacek Caban : urlmon: Added UrlMkSetSessionOption(URLMON_OPTION_USERAGENT) implementation.
Alexandre Julliard
julliard at winehq.org
Mon Jun 29 09:17:38 CDT 2009
Module: wine
Branch: master
Commit: e237c127c1004e82e92d9c31352f7eea2d697060
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e237c127c1004e82e92d9c31352f7eea2d697060
Author: Jacek Caban <jacek at 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)";
/**************************************************************************
More information about the wine-cvs
mailing list