Juan Lang : wininet: Implement DeleteUrlCacheEntryA/ W with a helper function.

Alexandre Julliard julliard at winehq.org
Thu Mar 10 11:30:26 CST 2011


Module: wine
Branch: master
Commit: cb0a5c91060553a28577cf10e65d948b0842d397
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=cb0a5c91060553a28577cf10e65d948b0842d397

Author: Juan Lang <juan.lang at gmail.com>
Date:   Wed Mar  9 11:04:42 2011 -0800

wininet: Implement DeleteUrlCacheEntryA/W with a helper function.

---

 dlls/wininet/urlcache.c |  119 ++++++++++++++++++----------------------------
 1 files changed, 47 insertions(+), 72 deletions(-)

diff --git a/dlls/wininet/urlcache.c b/dlls/wininet/urlcache.c
index 05e16a8..6e357b0 100644
--- a/dlls/wininet/urlcache.c
+++ b/dlls/wininet/urlcache.c
@@ -2039,6 +2039,47 @@ BOOL WINAPI RetrieveUrlCacheEntryFileW(
     return TRUE;
 }
 
+static BOOL DeleteUrlCacheEntryInternal(LPURLCACHE_HEADER pHeader,
+        struct _HASH_ENTRY *pHashEntry)
+{
+    CACHEFILE_ENTRY * pEntry;
+    URL_CACHEFILE_ENTRY * pUrlEntry;
+
+    pEntry = (CACHEFILE_ENTRY *)((LPBYTE)pHeader + pHashEntry->dwOffsetEntry);
+    if (pEntry->dwSignature != URL_SIGNATURE)
+    {
+        FIXME("Trying to delete entry of unknown format %s\n",
+              debugstr_an((LPCSTR)&pEntry->dwSignature, sizeof(DWORD)));
+        SetLastError(ERROR_FILE_NOT_FOUND);
+        return FALSE;
+    }
+    pUrlEntry = (URL_CACHEFILE_ENTRY *)pEntry;
+    if (pUrlEntry->CacheDir < pHeader->DirectoryCount)
+    {
+        if (pHeader->directory_data[pUrlEntry->CacheDir].dwNumFiles)
+            pHeader->directory_data[pUrlEntry->CacheDir].dwNumFiles--;
+    }
+    if (pUrlEntry->CacheEntryType & STICKY_CACHE_ENTRY)
+    {
+        if (pUrlEntry->size.QuadPart < pHeader->ExemptUsage.QuadPart)
+            pHeader->ExemptUsage.QuadPart -= pUrlEntry->size.QuadPart;
+        else
+            pHeader->ExemptUsage.QuadPart = 0;
+    }
+    else
+    {
+        if (pUrlEntry->size.QuadPart < pHeader->CacheUsage.QuadPart)
+            pHeader->CacheUsage.QuadPart -= pUrlEntry->size.QuadPart;
+        else
+            pHeader->CacheUsage.QuadPart = 0;
+    }
+
+    URLCache_DeleteEntry(pHeader, pEntry);
+
+    URLCache_DeleteEntryFromHash(pHashEntry);
+    return TRUE;
+}
+
 /***********************************************************************
  *           UnlockUrlCacheEntryFileA (WININET.@)
  *
@@ -3001,9 +3042,8 @@ BOOL WINAPI DeleteUrlCacheEntryA(LPCSTR lpszUrlName)
     URLCACHECONTAINER * pContainer;
     LPURLCACHE_HEADER pHeader;
     struct _HASH_ENTRY * pHashEntry;
-    CACHEFILE_ENTRY * pEntry;
-    const URL_CACHEFILE_ENTRY * pUrlEntry;
     DWORD error;
+    BOOL ret;
 
     TRACE("(%s)\n", debugstr_a(lpszUrlName));
 
@@ -3032,43 +3072,11 @@ BOOL WINAPI DeleteUrlCacheEntryA(LPCSTR lpszUrlName)
         return FALSE;
     }
 
-    pEntry = (CACHEFILE_ENTRY *)((LPBYTE)pHeader + pHashEntry->dwOffsetEntry);
-    if (pEntry->dwSignature != URL_SIGNATURE)
-    {
-        URLCacheContainer_UnlockIndex(pContainer, pHeader);
-        FIXME("Trying to delete entry of unknown format %s\n",
-              debugstr_an((LPCSTR)&pEntry->dwSignature, sizeof(DWORD)));
-        SetLastError(ERROR_FILE_NOT_FOUND);
-        return FALSE;
-    }
-    pUrlEntry = (const URL_CACHEFILE_ENTRY *)pEntry;
-    if (pUrlEntry->CacheDir < pHeader->DirectoryCount)
-    {
-        if (pHeader->directory_data[pUrlEntry->CacheDir].dwNumFiles)
-            pHeader->directory_data[pUrlEntry->CacheDir].dwNumFiles--;
-    }
-    if (pUrlEntry->CacheEntryType & STICKY_CACHE_ENTRY)
-    {
-        if (pUrlEntry->size.QuadPart < pHeader->ExemptUsage.QuadPart)
-            pHeader->ExemptUsage.QuadPart -= pUrlEntry->size.QuadPart;
-        else
-            pHeader->ExemptUsage.QuadPart = 0;
-    }
-    else
-    {
-        if (pUrlEntry->size.QuadPart < pHeader->CacheUsage.QuadPart)
-            pHeader->CacheUsage.QuadPart -= pUrlEntry->size.QuadPart;
-        else
-            pHeader->CacheUsage.QuadPart = 0;
-    }
-
-    URLCache_DeleteEntry(pHeader, pEntry);
-
-    URLCache_DeleteEntryFromHash(pHashEntry);
+    ret = DeleteUrlCacheEntryInternal(pHeader, pHashEntry);
 
     URLCacheContainer_UnlockIndex(pContainer, pHeader);
 
-    return TRUE;
+    return ret;
 }
 
 /***********************************************************************
@@ -3080,10 +3088,9 @@ BOOL WINAPI DeleteUrlCacheEntryW(LPCWSTR lpszUrlName)
     URLCACHECONTAINER * pContainer;
     LPURLCACHE_HEADER pHeader;
     struct _HASH_ENTRY * pHashEntry;
-    CACHEFILE_ENTRY * pEntry;
-    const URL_CACHEFILE_ENTRY * pUrlEntry;
     LPSTR urlA;
     DWORD error;
+    BOOL ret;
 
     TRACE("(%s)\n", debugstr_w(lpszUrlName));
 
@@ -3125,44 +3132,12 @@ BOOL WINAPI DeleteUrlCacheEntryW(LPCWSTR lpszUrlName)
         return FALSE;
     }
 
-    pEntry = (CACHEFILE_ENTRY *)((LPBYTE)pHeader + pHashEntry->dwOffsetEntry);
-    if (pEntry->dwSignature != URL_SIGNATURE)
-    {
-        URLCacheContainer_UnlockIndex(pContainer, pHeader);
-        FIXME("Trying to delete entry of unknown format %s\n",
-              debugstr_an((LPCSTR)&pEntry->dwSignature, sizeof(DWORD)));
-        SetLastError(ERROR_FILE_NOT_FOUND);
-        return FALSE;
-    }
-    pUrlEntry = (const URL_CACHEFILE_ENTRY *)pEntry;
-    if (pUrlEntry->CacheDir < pHeader->DirectoryCount)
-    {
-        if (pHeader->directory_data[pUrlEntry->CacheDir].dwNumFiles)
-            pHeader->directory_data[pUrlEntry->CacheDir].dwNumFiles--;
-    }
-    if (pUrlEntry->CacheEntryType & STICKY_CACHE_ENTRY)
-    {
-        if (pUrlEntry->size.QuadPart < pHeader->ExemptUsage.QuadPart)
-            pHeader->ExemptUsage.QuadPart -= pUrlEntry->size.QuadPart;
-        else
-            pHeader->ExemptUsage.QuadPart = 0;
-    }
-    else
-    {
-        if (pUrlEntry->size.QuadPart < pHeader->CacheUsage.QuadPart)
-            pHeader->CacheUsage.QuadPart -= pUrlEntry->size.QuadPart;
-        else
-            pHeader->CacheUsage.QuadPart = 0;
-    }
-
-    URLCache_DeleteEntry(pHeader, pEntry);
-
-    URLCache_DeleteEntryFromHash(pHashEntry);
+    ret = DeleteUrlCacheEntryInternal(pHeader, pHashEntry);
 
     URLCacheContainer_UnlockIndex(pContainer, pHeader);
 
     HeapFree(GetProcessHeap(), 0, urlA);
-    return TRUE;
+    return ret;
 }
 
 BOOL WINAPI DeleteUrlCacheContainerA(DWORD d1, DWORD d2)




More information about the wine-cvs mailing list