change filename of isocache to always include extension and filesize.

Fixes issue 3669.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6541 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
LPFaint99 2010-12-08 06:46:59 +00:00
parent ef093a4d35
commit 8fd825c18c
1 changed files with 7 additions and 11 deletions

View File

@ -35,7 +35,7 @@
#include "ChunkFile.h" #include "ChunkFile.h"
#include "../resources/no_banner.cpp" #include "../resources/no_banner.cpp"
#define CACHE_REVISION 0x10A #define CACHE_REVISION 0x10B
#define DVD_BANNER_WIDTH 96 #define DVD_BANNER_WIDTH 96
#define DVD_BANNER_HEIGHT 32 #define DVD_BANNER_HEIGHT 32
@ -179,20 +179,16 @@ void GameListItem::DoState(PointerWrap &p)
std::string GameListItem::CreateCacheFilename() std::string GameListItem::CreateCacheFilename()
{ {
std::string Filename, LegalPathname; std::string Filename, LegalPathname, extension;
SplitPath(m_FileName, &LegalPathname, &Filename, NULL); SplitPath(m_FileName, &LegalPathname, &Filename, &extension);
if (Filename.empty()) return Filename; // Disc Drive if (Filename.empty()) return Filename; // Disc Drive
// Filename.extension_HashOfFolderPath_Size.cache
// Append hash to prevent ISO name-clashing in different folders. // Append hash to prevent ISO name-clashing in different folders.
Filename.append(StringFromFormat("%x", Filename.append(StringFromFormat("%s_%x_%llx.cache",
HashFletcher((const u8 *)LegalPathname.c_str(), LegalPathname.size()))); extension.c_str(), HashFletcher((const u8 *)LegalPathname.c_str(), LegalPathname.size()),
File::GetSize(m_FileName.c_str())));
// We add gcz to the cache file if the file is compressed to avoid it reading
// the uncompressed file's cache if it has the same name, but not the same ext.
if (DiscIO::IsCompressedBlob(m_FileName.c_str()))
Filename.append(".gcz");
Filename.append(".cache");
std::string fullname(std::string(File::GetUserPath(D_CACHE_IDX))); std::string fullname(std::string(File::GetUserPath(D_CACHE_IDX)));
fullname += Filename; fullname += Filename;