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