static LPBYTE WowHandler_Search(TRootHandler_WoW6 * pRootHandler, TCascSearch * pSearch, PDWORD /* PtrFileSize */, PDWORD PtrLocaleFlags) { PCASC_FILE_ENTRY pFileEntry; // Only if we have a listfile if(pSearch->pCache != NULL) { // Keep going through the listfile while(ListFile_GetNext(pSearch->pCache, pSearch->szMask, pSearch->szFileName, MAX_PATH)) { // Find the root entry pFileEntry = FindRootEntry(pRootHandler->pRootMap, pSearch->szFileName, NULL); if(pFileEntry != NULL) { // Give the caller the locale mask if(PtrLocaleFlags != NULL) PtrLocaleFlags[0] = pFileEntry->Locales; return pFileEntry->EncodingKey.Value; } } } // No more files return NULL; }
PLISTFILE_MAP ListFile_CreateMap(const TCHAR * szListFile) { PLISTFILE_MAP pListMap = NULL; void * pvListFile; char szFileName[MAX_PATH+1]; size_t nLength; // Only if the listfile name has been given if(szListFile != NULL) { // Create map for the listfile pListMap = ListMap_Create(); if(pListMap != NULL) { // Open the external listfile pvListFile = ListFile_OpenExternal(szListFile); if(pvListFile != NULL) { // Go through the entire listfile and insert each name to the map while((nLength = ListFile_GetNext(pvListFile, "*", szFileName, MAX_PATH)) != 0) { // Insert the file name to the map pListMap = ListMap_InsertName(pListMap, szFileName, nLength); if(pListMap == NULL) break; } // Finish the listfile map pListMap = ListMap_Finish(pListMap); // Free the listfile ListFile_Free(pvListFile); } } } // Return the created map return pListMap; }