Juan Lang : wininet: Implement DeleteUrlCacheEntryW.
Alexandre Julliard
julliard at winehq.org
Mon Oct 22 09:55:21 CDT 2007
Module: wine
Branch: master
Commit: c527c7611a169986d65d3f14c31009e6ce690c36
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c527c7611a169986d65d3f14c31009e6ce690c36
Author: Juan Lang <juan.lang at gmail.com>
Date: Fri Oct 19 10:22:43 2007 -0700
wininet: Implement DeleteUrlCacheEntryW.
---
dlls/wininet/urlcache.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 49 insertions(+), 1 deletions(-)
diff --git a/dlls/wininet/urlcache.c b/dlls/wininet/urlcache.c
index 4d0ceab..9887994 100644
--- a/dlls/wininet/urlcache.c
+++ b/dlls/wininet/urlcache.c
@@ -2528,7 +2528,55 @@ BOOL WINAPI DeleteUrlCacheEntryA(LPCSTR lpszUrlName)
*/
BOOL WINAPI DeleteUrlCacheEntryW(LPCWSTR lpszUrlName)
{
- FIXME("(%s) stub\n", debugstr_w(lpszUrlName));
+ URLCACHECONTAINER * pContainer;
+ LPURLCACHE_HEADER pHeader;
+ CACHEFILE_ENTRY * pEntry;
+ LPSTR urlA;
+ int url_len;
+
+ TRACE("(%s)\n", debugstr_w(lpszUrlName));
+
+ url_len = WideCharToMultiByte(CP_ACP, 0, lpszUrlName, -1, NULL, 0, NULL, NULL);
+ urlA = HeapAlloc(GetProcessHeap(), 0, url_len * sizeof(CHAR));
+ if (!urlA)
+ {
+ SetLastError(ERROR_OUTOFMEMORY);
+ return FALSE;
+ }
+ WideCharToMultiByte(CP_ACP, 0, lpszUrlName, -1, urlA, url_len, NULL, NULL);
+
+ if (!URLCacheContainers_FindContainerW(lpszUrlName, &pContainer))
+ {
+ HeapFree(GetProcessHeap(), 0, urlA);
+ return FALSE;
+ }
+ if (!URLCacheContainer_OpenIndex(pContainer))
+ {
+ HeapFree(GetProcessHeap(), 0, urlA);
+ return FALSE;
+ }
+ if (!(pHeader = URLCacheContainer_LockIndex(pContainer)))
+ {
+ HeapFree(GetProcessHeap(), 0, urlA);
+ return FALSE;
+ }
+
+ if (!URLCache_FindEntryInHash(pHeader, urlA, &pEntry))
+ {
+ URLCacheContainer_UnlockIndex(pContainer, pHeader);
+ TRACE("entry %s not found!\n", debugstr_a(urlA));
+ HeapFree(GetProcessHeap(), 0, urlA);
+ SetLastError(ERROR_FILE_NOT_FOUND);
+ return FALSE;
+ }
+
+ URLCache_DeleteEntry(pHeader, pEntry);
+
+ URLCache_DeleteEntryFromHash(pHeader, urlA);
+
+ URLCacheContainer_UnlockIndex(pContainer, pHeader);
+
+ HeapFree(GetProcessHeap(), 0, urlA);
return TRUE;
}
More information about the wine-cvs
mailing list