[PATCH] wininet: Make GetUrlCacheConfigInfo() return actual dwQuota and dwCacheSize.

Dmitry Timoshkov dmitry at baikal.ru
Sun Jan 27 19:49:09 CST 2019


Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
---
 dlls/wininet/urlcache.c | 71 +++++++++++++++++++++++++----------------
 1 file changed, 43 insertions(+), 28 deletions(-)

diff --git a/dlls/wininet/urlcache.c b/dlls/wininet/urlcache.c
index 4d422c9642..4971fcd5da 100644
--- a/dlls/wininet/urlcache.c
+++ b/dlls/wininet/urlcache.c
@@ -3762,33 +3762,10 @@ BOOL WINAPI SetUrlCacheEntryGroupW(LPCWSTR lpszUrlName, DWORD dwFlags,
     return FALSE;
 }
 
-/***********************************************************************
- *           GetUrlCacheConfigInfoW (WININET.@)
- */
-BOOL WINAPI GetUrlCacheConfigInfoW(LPINTERNET_CACHE_CONFIG_INFOW info, LPDWORD size, DWORD flags)
+static cache_container *find_container(DWORD flags)
 {
     cache_container *container;
 
-    FIXME("(%p, %p, %x): semi-stub\n", info, size, flags);
-
-    if (!info)
-    {
-        INTERNET_SetLastError(ERROR_INVALID_PARAMETER);
-        return FALSE;
-    }
-
-    info->dwContainer = 0;
-    info->dwQuota = 0x3e800; /* FIXME */
-    info->dwReserved4 = 0;
-    info->fPerUser = TRUE;
-    info->dwSyncMode = 0;
-    info->dwNumCachePaths = 1;
-    info->dwNormalUsage = 0;
-    info->dwExemptUsage = 0;
-
-    info->u.s.CachePath[0] = 0;
-    info->u.s.dwCacheSize = 0x3e800; /* FIXME */
-
     LIST_FOR_EACH_ENTRY(container, &UrlContainers, cache_container, entry)
     {
         switch (flags & (CACHE_CONFIG_CONTENT_PATHS_FC | CACHE_CONFIG_COOKIES_PATHS_FC | CACHE_CONFIG_HISTORY_PATHS_FC))
@@ -3796,17 +3773,17 @@ BOOL WINAPI GetUrlCacheConfigInfoW(LPINTERNET_CACHE_CONFIG_INFOW info, LPDWORD s
         case 0:
         case CACHE_CONFIG_CONTENT_PATHS_FC:
             if (container->default_entry_type == NORMAL_CACHE_ENTRY)
-                lstrcpynW(info->u.s.CachePath, container->path, MAX_PATH);
+                return container;
             break;
 
         case CACHE_CONFIG_COOKIES_PATHS_FC:
             if (container->default_entry_type == COOKIE_CACHE_ENTRY)
-                lstrcpynW(info->u.s.CachePath, container->path, MAX_PATH);
+                return container;
             break;
 
         case CACHE_CONFIG_HISTORY_PATHS_FC:
             if (container->default_entry_type == URLHISTORY_CACHE_ENTRY)
-                lstrcpynW(info->u.s.CachePath, container->path, MAX_PATH);
+                return container;
             break;
 
         default:
@@ -3815,6 +3792,45 @@ BOOL WINAPI GetUrlCacheConfigInfoW(LPINTERNET_CACHE_CONFIG_INFOW info, LPDWORD s
         }
     }
 
+    return NULL;
+}
+
+/***********************************************************************
+ *           GetUrlCacheConfigInfoW (WININET.@)
+ */
+BOOL WINAPI GetUrlCacheConfigInfoW(LPINTERNET_CACHE_CONFIG_INFOW info, LPDWORD size, DWORD flags)
+{
+    cache_container *container;
+    DWORD error;
+
+    FIXME("(%p, %p, %x): semi-stub\n", info, size, flags);
+
+    if (!info || !(container = find_container(flags)))
+    {
+        INTERNET_SetLastError(ERROR_INVALID_PARAMETER);
+        return FALSE;
+    }
+
+    error = cache_container_open_index(container, MIN_BLOCK_NO);
+    if (error != ERROR_SUCCESS)
+    {
+        INTERNET_SetLastError(error);
+        return FALSE;
+    }
+
+    info->dwContainer = 0;
+    info->dwQuota = FILE_SIZE(MAX_BLOCK_NO) / 1024;
+    info->dwReserved4 = 0;
+    info->fPerUser = TRUE;
+    info->dwSyncMode = 0;
+    info->dwNumCachePaths = 1;
+    info->dwNormalUsage = 0;
+    info->dwExemptUsage = 0;
+    info->u.s.dwCacheSize = container->file_size / 1024;
+    lstrcpynW(info->u.s.CachePath, container->path, MAX_PATH);
+
+    cache_container_close_index(container);
+
     TRACE("CachePath %s\n", debugstr_w(info->u.s.CachePath));
 
     return TRUE;
@@ -3847,7 +3863,6 @@ BOOL WINAPI GetUrlCacheConfigInfoA(LPINTERNET_CACHE_CONFIG_INFOA info, LPDWORD s
     info->dwNumCachePaths = infoW.dwNumCachePaths;
     info->dwNormalUsage = infoW.dwNormalUsage;
     info->dwExemptUsage = infoW.dwExemptUsage;
-
     info->u.s.dwCacheSize = infoW.u.s.dwCacheSize;
     WideCharToMultiByte(CP_ACP, 0, infoW.u.s.CachePath, -1, info->u.s.CachePath, MAX_PATH, NULL, NULL);
 
-- 
2.20.1




More information about the wine-devel mailing list