Module: wine Branch: master Commit: 1594b429f85e3682b402eab49ee7576e58da3dd1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=1594b429f85e3682b402eab49e...
Author: Juan Lang juan.lang@gmail.com Date: Fri Oct 19 10:20:25 2007 -0700
wininet: Implement IsUrlCacheEntryExpiredA.
---
dlls/wininet/urlcache.c | 41 +++++++++++++++++++++++++++++++++++++++-- 1 files changed, 39 insertions(+), 2 deletions(-)
diff --git a/dlls/wininet/urlcache.c b/dlls/wininet/urlcache.c index b531c65..a3bf05f 100644 --- a/dlls/wininet/urlcache.c +++ b/dlls/wininet/urlcache.c @@ -2894,8 +2894,45 @@ DWORD WINAPI DeleteIE3Cache(HWND hWnd, HINSTANCE hInst, LPSTR lpszCmdLine, int n */ BOOL WINAPI IsUrlCacheEntryExpiredA( LPCSTR url, DWORD dwFlags, FILETIME* pftLastModified ) { - FIXME("(%s, %08x, %p) stub\n", debugstr_a(url), dwFlags, pftLastModified); - return FALSE; + LPURLCACHE_HEADER pHeader; + CACHEFILE_ENTRY * pEntry; + URL_CACHEFILE_ENTRY * pUrlEntry; + URLCACHECONTAINER * pContainer; + + TRACE("(%s, %08x, %p)\n", debugstr_a(url), dwFlags, pftLastModified); + + if (!URLCacheContainers_FindContainerA(url, &pContainer)) + return FALSE; + + if (!URLCacheContainer_OpenIndex(pContainer)) + return FALSE; + + if (!(pHeader = URLCacheContainer_LockIndex(pContainer))) + return FALSE; + + if (!URLCache_FindEntryInHash(pHeader, url, &pEntry)) + { + URLCacheContainer_UnlockIndex(pContainer, pHeader); + TRACE("entry %s not found!\n", url); + SetLastError(ERROR_FILE_NOT_FOUND); + return FALSE; + } + + if (pEntry->dwSignature != URL_SIGNATURE) + { + URLCacheContainer_UnlockIndex(pContainer, pHeader); + FIXME("Trying to retrieve entry of unknown format %s\n", debugstr_an((LPSTR)&pEntry->dwSignature, sizeof(DWORD))); + SetLastError(ERROR_FILE_NOT_FOUND); + return FALSE; + } + + pUrlEntry = (URL_CACHEFILE_ENTRY *)pEntry; + + DosDateTimeToFileTime(pUrlEntry->wExpiredDate, pUrlEntry->wExpiredTime, pftLastModified); + + URLCacheContainer_UnlockIndex(pContainer, pHeader); + + return TRUE; }
/***********************************************************************