mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-29 05:11:55 +01:00
Deps/CascLib: Updated to ladislav-zezula/CascLib@d1d617d4fe
This commit is contained in:
@@ -539,6 +539,13 @@ static int GetGameType(TCascStorage * hs, LPBYTE pbVarBegin, LPBYTE pbLineEnd)
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
// Diablo III BETA 2.2.0
|
||||
if((pbLineEnd - pbVarBegin) == 7 && !_strnicmp((const char *)pbVarBegin, "Diablo3", 7))
|
||||
{
|
||||
hs->dwGameInfo = CASC_GAME_DIABLO3;
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
// An unknown game
|
||||
assert(false);
|
||||
return ERROR_BAD_FORMAT;
|
||||
@@ -546,6 +553,7 @@ static int GetGameType(TCascStorage * hs, LPBYTE pbVarBegin, LPBYTE pbLineEnd)
|
||||
|
||||
// "B29049"
|
||||
// "WOW-18125patch6.0.1"
|
||||
// "30013_Win32_2_2_0_Ptr_ptr"
|
||||
static int GetBuildNumber(TCascStorage * hs, LPBYTE pbVarBegin, LPBYTE pbLineEnd)
|
||||
{
|
||||
DWORD dwBuildNumber = 0;
|
||||
@@ -625,10 +633,12 @@ static int FetchAndVerifyConfigFile(TCascStorage * hs, PQUERY_KEY pFileKey, PQUE
|
||||
|
||||
static int ParseInfoFile(TCascStorage * hs, PQUERY_KEY pFileBlob)
|
||||
{
|
||||
QUERY_KEY Active = {NULL, 0};
|
||||
QUERY_KEY TagString = {NULL, 0};
|
||||
QUERY_KEY CdnHost = {NULL, 0};
|
||||
QUERY_KEY CdnPath = {NULL, 0};
|
||||
const char * szLineBegin1 = NULL;
|
||||
const char * szLinePtr1 = NULL;
|
||||
const char * szLineBegin2 = NULL;
|
||||
const char * szLineEnd1 = NULL;
|
||||
const char * szLineEnd2 = NULL;
|
||||
@@ -650,46 +660,57 @@ static int ParseInfoFile(TCascStorage * hs, PQUERY_KEY pFileBlob)
|
||||
szFilePtr++;
|
||||
}
|
||||
|
||||
// Skip the newline character(s)
|
||||
while(szFilePtr < szFileEnd && (szFilePtr[0] == 0x0D || szFilePtr[0] == 0x0A))
|
||||
szFilePtr++;
|
||||
|
||||
// Find the second line
|
||||
szLineBegin2 = szFilePtr;
|
||||
while(szFilePtr < szFileEnd)
|
||||
while (szFilePtr < szFileEnd)
|
||||
{
|
||||
// Check for the end of the line
|
||||
if(szFilePtr[0] == 0x0D || szFilePtr[0] == 0x0A)
|
||||
szLinePtr1 = szLineBegin1;
|
||||
|
||||
// Skip the newline character(s)
|
||||
while (szFilePtr < szFileEnd && (szFilePtr[0] == 0x0D || szFilePtr[0] == 0x0A))
|
||||
szFilePtr++;
|
||||
|
||||
// Find the next line
|
||||
szLineBegin2 = szFilePtr;
|
||||
while (szFilePtr < szFileEnd)
|
||||
{
|
||||
szLineEnd2 = szFilePtr;
|
||||
break;
|
||||
// Check for the end of the line
|
||||
if (szFilePtr[0] == 0x0D || szFilePtr[0] == 0x0A)
|
||||
{
|
||||
szLineEnd2 = szFilePtr;
|
||||
break;
|
||||
}
|
||||
|
||||
szFilePtr++;
|
||||
}
|
||||
|
||||
szFilePtr++;
|
||||
}
|
||||
// Find the build key, CDN config key and the URL path
|
||||
while (szLinePtr1 < szLineEnd1)
|
||||
{
|
||||
// Check for variables we need
|
||||
if (IsInfoVariable(szLinePtr1, szLineEnd1, "Active", "DEC"))
|
||||
LoadInfoVariable(&Active, szLineBegin2, szLineEnd2, false);
|
||||
if (IsInfoVariable(szLinePtr1, szLineEnd1, "Build Key", "HEX"))
|
||||
LoadInfoVariable(&hs->CdnBuildKey, szLineBegin2, szLineEnd2, true);
|
||||
if (IsInfoVariable(szLinePtr1, szLineEnd1, "CDN Key", "HEX"))
|
||||
LoadInfoVariable(&hs->CdnConfigKey, szLineBegin2, szLineEnd2, true);
|
||||
if (IsInfoVariable(szLinePtr1, szLineEnd1, "CDN Hosts", "STRING"))
|
||||
LoadInfoVariable(&CdnHost, szLineBegin2, szLineEnd2, false);
|
||||
if (IsInfoVariable(szLinePtr1, szLineEnd1, "CDN Path", "STRING"))
|
||||
LoadInfoVariable(&CdnPath, szLineBegin2, szLineEnd2, false);
|
||||
if (IsInfoVariable(szLinePtr1, szLineEnd1, "Tags", "STRING"))
|
||||
LoadInfoVariable(&TagString, szLineBegin2, szLineEnd2, false);
|
||||
|
||||
// Find the build key, CDN config key and the URL path
|
||||
while(szLineBegin1 < szLineEnd1)
|
||||
{
|
||||
// Check for variables we need
|
||||
if(IsInfoVariable(szLineBegin1, szLineEnd1, "Build Key", "HEX"))
|
||||
LoadInfoVariable(&hs->CdnBuildKey, szLineBegin2, szLineEnd2, true);
|
||||
if(IsInfoVariable(szLineBegin1, szLineEnd1, "CDN Key", "HEX"))
|
||||
LoadInfoVariable(&hs->CdnConfigKey, szLineBegin2, szLineEnd2, true);
|
||||
if(IsInfoVariable(szLineBegin1, szLineEnd1, "CDN Hosts", "STRING"))
|
||||
LoadInfoVariable(&CdnHost, szLineBegin2, szLineEnd2, false);
|
||||
if(IsInfoVariable(szLineBegin1, szLineEnd1, "CDN Path", "STRING"))
|
||||
LoadInfoVariable(&CdnPath, szLineBegin2, szLineEnd2, false);
|
||||
if(IsInfoVariable(szLineBegin1, szLineEnd1, "Tags", "STRING"))
|
||||
LoadInfoVariable(&TagString, szLineBegin2, szLineEnd2, false);
|
||||
// Move both line pointers
|
||||
szLinePtr1 = SkipInfoVariable(szLinePtr1, szLineEnd1);
|
||||
if (szLineBegin1 == NULL)
|
||||
break;
|
||||
|
||||
// Move both line pointers
|
||||
szLineBegin1 = SkipInfoVariable(szLineBegin1, szLineEnd1);
|
||||
if(szLineBegin1 == NULL)
|
||||
break;
|
||||
szLineBegin2 = SkipInfoVariable(szLineBegin2, szLineEnd2);
|
||||
if (szLineBegin2 == NULL)
|
||||
break;
|
||||
}
|
||||
|
||||
szLineBegin2 = SkipInfoVariable(szLineBegin2, szLineEnd2);
|
||||
if(szLineBegin2 == NULL)
|
||||
// Stop parsing if found active config
|
||||
if (Active.pbData != NULL && *Active.pbData == '1')
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user