Module: wine Branch: master Commit: 78835843c2ced74e7317a3662d21f5b25db20276 URL: http://source.winehq.org/git/wine.git/?a=commit;h=78835843c2ced74e7317a3662d...
Author: Piotr Caban piotr@codeweavers.com Date: Mon Sep 24 14:57:21 2012 +0200
wininet: Added support for cache path parameter in FreeUrlCacheSpace function.
---
dlls/wininet/urlcache.c | 30 +++++++++++++++++++++--------- 1 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/dlls/wininet/urlcache.c b/dlls/wininet/urlcache.c index 5a4ed0b..cbfa04f 100644 --- a/dlls/wininet/urlcache.c +++ b/dlls/wininet/urlcache.c @@ -2413,7 +2413,7 @@ static int dword_cmp(const void *p1, const void *p2) BOOL WINAPI FreeUrlCacheSpaceW(LPCWSTR cache_path, DWORD size, DWORD filter) { URLCACHECONTAINER *container; - DWORD err; + DWORD path_len, err;
TRACE("(%s, %x, %x)\n", debugstr_w(cache_path), size, filter);
@@ -2423,16 +2423,20 @@ BOOL WINAPI FreeUrlCacheSpaceW(LPCWSTR cache_path, DWORD size, DWORD filter) }
if(cache_path) { - FIXME("cache_path != NULL not supported yet\n"); - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return FALSE; + path_len = strlenW(cache_path); + if(cache_path[path_len-1] == '\') + path_len--; + }else { + path_len = 0; }
if(size==100 && !filter) { LIST_FOR_EACH_ENTRY(container, &UrlContainers, URLCACHECONTAINER, entry) { - /* The URL cache has prefix L"" (unlike Cookies and History) */ - if (container->cache_prefix[0] == 0) + /* When cache_path==NULL only clean Temporary Internet Files */ + if((!path_len && container->cache_prefix[0]==0) || + (path_len && !strncmpiW(container->path, cache_path, path_len) && + (container->path[path_len]=='\0' || container->path[path_len]=='\'))) { BOOL ret_del;
@@ -2444,9 +2448,12 @@ BOOL WINAPI FreeUrlCacheSpaceW(LPCWSTR cache_path, DWORD size, DWORD filter) err = URLCacheContainer_OpenIndex(container, MIN_BLOCK_NO);
ReleaseMutex(container->hMutex); - return ret_del && (err == ERROR_SUCCESS); + if(!ret_del || (err != ERROR_SUCCESS)) + return FALSE; } } + + return TRUE; }
LIST_FOR_EACH_ENTRY(container, &UrlContainers, URLCACHECONTAINER, entry) @@ -2460,6 +2467,11 @@ BOOL WINAPI FreeUrlCacheSpaceW(LPCWSTR cache_path, DWORD size, DWORD filter) DWORD rate[100], rate_no; FILETIME cur_time;
+ if((path_len || container->cache_prefix[0]!=0) && + (!path_len || strncmpiW(container->path, cache_path, path_len) || + (container->path[path_len]!='\0' && container->path[path_len]!='\'))) + continue; + err = URLCacheContainer_OpenIndex(container, MIN_BLOCK_NO); if(err != ERROR_SUCCESS) continue; @@ -2555,12 +2567,12 @@ BOOL WINAPI FreeUrlCacheSpaceW(LPCWSTR cache_path, DWORD size, DWORD filter) * * See FreeUrlCacheSpaceW. */ -BOOL WINAPI FreeUrlCacheSpaceA(LPCSTR lpszCachePath, DWORD dwSize, DWORD dwSizeType) +BOOL WINAPI FreeUrlCacheSpaceA(LPCSTR lpszCachePath, DWORD dwSize, DWORD dwFilter) { BOOL ret = FALSE; LPWSTR path = heap_strdupAtoW(lpszCachePath); if (lpszCachePath == NULL || path != NULL) - ret = FreeUrlCacheSpaceW(path, dwSize, dwSizeType); + ret = FreeUrlCacheSpaceW(path, dwSize, dwFilter); heap_free(path); return ret; }