aboutsummaryrefslogtreecommitdiff
path: root/dep/CascLib/src/CascRootFile_WoW6.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'dep/CascLib/src/CascRootFile_WoW6.cpp')
-rw-r--r--dep/CascLib/src/CascRootFile_WoW6.cpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/dep/CascLib/src/CascRootFile_WoW6.cpp b/dep/CascLib/src/CascRootFile_WoW6.cpp
index 4f4a1e31db2..737fc0af6db 100644
--- a/dep/CascLib/src/CascRootFile_WoW6.cpp
+++ b/dep/CascLib/src/CascRootFile_WoW6.cpp
@@ -386,7 +386,12 @@ static int WowHandler_Insert(
return ERROR_SUCCESS;
}
-static LPBYTE WowHandler_Search(TRootHandler_WoW6 * pRootHandler, TCascSearch * pSearch, PDWORD /* PtrFileSize */, PDWORD PtrLocaleFlags)
+static LPBYTE WowHandler_Search(
+ TRootHandler_WoW6 * pRootHandler,
+ TCascSearch * pSearch,
+ PDWORD /* PtrFileSize */,
+ PDWORD PtrLocaleFlags,
+ PDWORD PtrFileDataId)
{
PCASC_FILE_ENTRY pFileEntry;
@@ -403,6 +408,8 @@ static LPBYTE WowHandler_Search(TRootHandler_WoW6 * pRootHandler, TCascSearch *
// Give the caller the locale mask
if(PtrLocaleFlags != NULL)
PtrLocaleFlags[0] = pFileEntry->Locales;
+ if(PtrFileDataId != NULL)
+ PtrFileDataId[0] = pFileEntry->FileDataId;
return pFileEntry->EncodingKey.Value;
}
}
@@ -444,6 +451,15 @@ static void WowHandler_EndSearch(TRootHandler_WoW6 * /* pRootHandler */, TCascSe
pSearch->pRootContext = NULL;
}
+static DWORD WowHandler_GetFileId(TRootHandler_WoW6 * pRootHandler, const char * szFileName)
+{
+ PCASC_FILE_ENTRY pFileEntry;
+
+ // Find by the file name hash
+ pFileEntry = FindRootEntry(pRootHandler->pRootMap, szFileName, NULL);
+ return (pFileEntry != NULL) ? pFileEntry->FileDataId : NULL;
+}
+
static void WowHandler_Close(TRootHandler_WoW6 * pRootHandler)
{
if(pRootHandler != NULL)
@@ -545,6 +561,7 @@ int RootHandler_CreateWoW6(TCascStorage * hs, LPBYTE pbRootFile, DWORD cbRootFil
pRootHandler->EndSearch = (ROOT_ENDSEARCH)WowHandler_EndSearch;
pRootHandler->GetKey = (ROOT_GETKEY)WowHandler_GetKey;
pRootHandler->Close = (ROOT_CLOSE)WowHandler_Close;
+ pRootHandler->GetFileId = (ROOT_GETFILEID)WowHandler_GetFileId;
#ifdef _DEBUG
pRootHandler->Dump = TRootHandlerWoW6_Dump; // Support for ROOT file dump