aboutsummaryrefslogtreecommitdiff
path: root/dep/CascLib/src/CascRootFile_Install.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2019-08-10 19:01:24 +0200
committerShauren <shauren.trinity@gmail.com>2019-08-10 19:01:24 +0200
commitcd720efbfa60f434f420ab66e220eca742c48e45 (patch)
tree3c960ac5249d0711b71fbfdc62f6c0b665ed85ee /dep/CascLib/src/CascRootFile_Install.cpp
parent0d6320dfd3932865edb69c8528327b767bd476ef (diff)
Dep/CascLib: Update to ladislav-zezula/CascLib@b91f87c770c78340dcd96df970e55b5c0469e884
Diffstat (limited to 'dep/CascLib/src/CascRootFile_Install.cpp')
-rw-r--r--dep/CascLib/src/CascRootFile_Install.cpp65
1 files changed, 29 insertions, 36 deletions
diff --git a/dep/CascLib/src/CascRootFile_Install.cpp b/dep/CascLib/src/CascRootFile_Install.cpp
index a0b00f73168..86d621e2e47 100644
--- a/dep/CascLib/src/CascRootFile_Install.cpp
+++ b/dep/CascLib/src/CascRootFile_Install.cpp
@@ -25,30 +25,7 @@ struct TRootHandler_Install : public TFileTreeRoot
dwFeatures |= (CASC_FEATURE_FILE_NAMES | CASC_FEATURE_ROOT_CKEY);
}
- static int CaptureInstallHeader(CASC_INSTALL_HEADER & InHeader, LPBYTE pbFileData, size_t cbFileData)
- {
- PFILE_INSTALL_HEADER pFileHeader = (PFILE_INSTALL_HEADER)pbFileData;
-
- // Check the signature ('DL') and version
- if (cbFileData < sizeof(FILE_INSTALL_HEADER) || pFileHeader->Magic != FILE_MAGIC_INSTALL || pFileHeader->Version != 1)
- return ERROR_BAD_FORMAT;
-
- // Note that we don't support CKey sizes greater than 0x10 in the INSTALL file
- if (pFileHeader->EKeyLength > MD5_HASH_SIZE)
- return ERROR_BAD_FORMAT;
-
- // Capture the header version 1
- memset(&InHeader, 0, sizeof(CASC_INSTALL_HEADER));
- InHeader.Magic = pFileHeader->Magic;
- InHeader.Version = pFileHeader->Version;
- InHeader.EKeyLength = pFileHeader->EKeyLength;
- InHeader.TagCount = ConvertBytesToInteger_2(pFileHeader->TagCount);
- InHeader.EntryCount = ConvertBytesToInteger_4(pFileHeader->EntryCount);
- InHeader.HeaderLength = sizeof(FILE_INSTALL_HEADER);
- return ERROR_SUCCESS;
- }
-
- int Load(TCascStorage * hs, CASC_INSTALL_HEADER InHeader, LPBYTE pbInstallFile, LPBYTE pbInstallEnd)
+ DWORD Load(TCascStorage * hs, CASC_INSTALL_HEADER InHeader, LPBYTE pbInstallFile, LPBYTE pbInstallEnd)
{
PCASC_CKEY_ENTRY pCKeyEntry;
const char * szString;
@@ -90,32 +67,48 @@ struct TRootHandler_Install : public TFileTreeRoot
//-----------------------------------------------------------------------------
// Public functions
-//
-// Starcraft ROOT file is a text file with the following format:
-// HD2/portraits/NBluCrit/NLCFID01.webm|c2795b120592355d45eba9cdc37f691e
-// locales/enUS/Assets/campaign/EXPZerg/Zerg08/staredit/wav/zovtra01.ogg|316b0274bf2dabaa8db60c3ff1270c85
-// locales/zhCN/Assets/sound/terran/ghost/tghdth01.wav|6637ed776bd22089e083b8b0b2c0374c
-//
+DWORD CaptureInstallHeader(CASC_INSTALL_HEADER & InHeader, LPBYTE pbFileData, size_t cbFileData)
+{
+ PFILE_INSTALL_HEADER pFileHeader = (PFILE_INSTALL_HEADER)pbFileData;
+
+ // Check the signature ('DL') and version
+ if (cbFileData < sizeof(FILE_INSTALL_HEADER) || pFileHeader->Magic != FILE_MAGIC_INSTALL || pFileHeader->Version != 1)
+ return ERROR_BAD_FORMAT;
+
+ // Note that we don't support CKey sizes greater than 0x10 in the INSTALL file
+ if (pFileHeader->EKeyLength > MD5_HASH_SIZE)
+ return ERROR_BAD_FORMAT;
+
+ // Capture the header version 1
+ memset(&InHeader, 0, sizeof(CASC_INSTALL_HEADER));
+ InHeader.Magic = pFileHeader->Magic;
+ InHeader.Version = pFileHeader->Version;
+ InHeader.EKeyLength = pFileHeader->EKeyLength;
+ InHeader.TagCount = ConvertBytesToInteger_2(pFileHeader->TagCount);
+ InHeader.EntryCount = ConvertBytesToInteger_4(pFileHeader->EntryCount);
+ InHeader.HeaderLength = sizeof(FILE_INSTALL_HEADER);
+ return ERROR_SUCCESS;
+}
-int RootHandler_CreateInstall(TCascStorage * hs, LPBYTE pbInstallFile, DWORD cbInstallFile)
+DWORD RootHandler_CreateInstall(TCascStorage * hs, LPBYTE pbInstallFile, DWORD cbInstallFile)
{
CASC_INSTALL_HEADER InHeader;
TRootHandler_Install * pRootHandler = NULL;
- int nError = ERROR_BAD_FORMAT;
+ DWORD dwErrCode = ERROR_BAD_FORMAT;
// Capture the header of the DOWNLOAD file
- nError = TRootHandler_Install::CaptureInstallHeader(InHeader, pbInstallFile, cbInstallFile);
- if (nError == ERROR_SUCCESS)
+ dwErrCode = CaptureInstallHeader(InHeader, pbInstallFile, cbInstallFile);
+ if (dwErrCode == ERROR_SUCCESS)
{
// Allocate the root handler object
pRootHandler = new TRootHandler_Install();
if (pRootHandler != NULL)
{
// Parse the entire install manifest
- nError = pRootHandler->Load(hs, InHeader, pbInstallFile, pbInstallFile + cbInstallFile);
+ dwErrCode = pRootHandler->Load(hs, InHeader, pbInstallFile, pbInstallFile + cbInstallFile);
hs->pRootHandler = pRootHandler;
}
}
- return nError;
+ return dwErrCode;
}