Jacek Caban : urlmon: Added ObtainUserAgentString implementation.

Alexandre Julliard julliard at winehq.org
Mon Jun 29 09:17:38 CDT 2009


Module: wine
Branch: master
Commit: cef7e04f18e28217c70e26db36f9e6ada4d5e683
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=cef7e04f18e28217c70e26db36f9e6ada4d5e683

Author: Jacek Caban <jacek at 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.@)
  * 




More information about the wine-cvs mailing list