Module: wine Branch: master Commit: cef7e04f18e28217c70e26db36f9e6ada4d5e683 URL: http://source.winehq.org/git/wine.git/?a=commit;h=cef7e04f18e28217c70e26db36...
Author: Jacek Caban jacek@codeweavers.com Date: Sat Jun 27 00:37:52 2009 +0200
urlmon: Added ObtainUserAgentString implementation.
---
dlls/urlmon/session.c | 33 +++++++++++++++++++++++++++++++++ dlls/urlmon/urlmon_main.c | 25 ------------------------- 2 files changed, 33 insertions(+), 25 deletions(-)
diff --git a/dlls/urlmon/session.c b/dlls/urlmon/session.c index 3cee893..69f1aa1 100644 --- a/dlls/urlmon/session.c +++ b/dlls/urlmon/session.c @@ -631,6 +631,39 @@ HRESULT WINAPI UrlMkSetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBuf return S_OK; }
+/************************************************************************** + * ObtainUserAgentString (URLMON.@) + */ +HRESULT WINAPI ObtainUserAgentString(DWORD dwOption, LPSTR pcszUAOut, DWORD *cbSize) +{ + DWORD size; + HRESULT hres = E_FAIL; + + TRACE("(%d %p %p)\n", dwOption, pcszUAOut, cbSize); + + if(!pcszUAOut || !cbSize) + return E_INVALIDARG; + + EnterCriticalSection(&session_cs); + + ensure_useragent(); + if(user_agent) { + size = WideCharToMultiByte(CP_ACP, 0, user_agent, -1, NULL, 0, NULL, NULL); + + if(size <= *cbSize) { + WideCharToMultiByte(CP_ACP, 0, user_agent, -1, pcszUAOut, *cbSize, NULL, NULL); + hres = S_OK; + }else { + hres = E_OUTOFMEMORY; + } + + *cbSize = size; + } + + LeaveCriticalSection(&session_cs); + return hres; +} + void free_session(void) { heap_free(user_agent); diff --git a/dlls/urlmon/urlmon_main.c b/dlls/urlmon/urlmon_main.c index 0d5bc2a..2e624fb 100644 --- a/dlls/urlmon/urlmon_main.c +++ b/dlls/urlmon/urlmon_main.c @@ -362,31 +362,6 @@ HRESULT WINAPI DllRegisterServerEx(void) return E_FAIL; }
-static const CHAR Agent[] = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"; - -/************************************************************************** - * ObtainUserAgentString (URLMON.@) - */ -HRESULT WINAPI ObtainUserAgentString(DWORD dwOption, LPSTR pcszUAOut, DWORD *cbSize) -{ - FIXME("(%d, %p, %p): stub\n", dwOption, pcszUAOut, cbSize); - - if (pcszUAOut == NULL || cbSize == NULL) - return E_INVALIDARG; - - if (*cbSize < sizeof(Agent)) - { - *cbSize = sizeof(Agent); - return E_OUTOFMEMORY; - } - - if (sizeof(Agent) < *cbSize) - *cbSize = sizeof(Agent); - lstrcpynA(pcszUAOut, Agent, *cbSize); - - return S_OK; -} - /************************************************************************** * IsValidURL (URLMON.@) *