Signed-off-by: Dmitry Timoshkov <dmitry(a)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