aboutsummaryrefslogtreecommitdiff
path: root/dep
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2015-03-04 12:18:51 +0100
committerShauren <shauren.trinity@gmail.com>2015-03-04 12:18:51 +0100
commitb60cfa9bf4863776a767ba5c43c48ca35fecea1a (patch)
tree365913cbda918c15aee3d12be98ff5844c408595 /dep
parente63872e1eeafb39483bfdecbd5c4efc1e3703069 (diff)
Deps/CascLib: Updated to ladislav-zezula/CascLib@d1d617d4feecd39bae049e19b0e217a1a84bedc6
Diffstat (limited to 'dep')
-rw-r--r--dep/CascLib/src/CascBuildCfg.cpp91
-rw-r--r--dep/CascLib/src/CascCommon.h1
-rw-r--r--dep/PackageList.txt2
3 files changed, 58 insertions, 36 deletions
diff --git a/dep/CascLib/src/CascBuildCfg.cpp b/dep/CascLib/src/CascBuildCfg.cpp
index 8bfc9523af7..f39f09d886a 100644
--- a/dep/CascLib/src/CascBuildCfg.cpp
+++ b/dep/CascLib/src/CascBuildCfg.cpp
@@ -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(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
- szLineBegin1 = SkipInfoVariable(szLineBegin1, szLineEnd1);
- if(szLineBegin1 == NULL)
- break;
+ // 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);
+
+ // Move both line pointers
+ szLinePtr1 = SkipInfoVariable(szLinePtr1, 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;
}
diff --git a/dep/CascLib/src/CascCommon.h b/dep/CascLib/src/CascCommon.h
index a59cc878ec7..7a2b4071dc6 100644
--- a/dep/CascLib/src/CascCommon.h
+++ b/dep/CascLib/src/CascCommon.h
@@ -38,6 +38,7 @@
#define CASC_GAME_HOTS 0x00010000 // Heroes of the Storm
#define CASC_GAME_WOW6 0x00020000 // World of Warcraft - Warlords of Draenor
+#define CASC_GAME_DIABLO3 0x00030000 // Diablo 3 Since PTR 2.2.0
#define CASC_GAME_MASK 0xFFFF0000 // Mask for getting game ID
#define CASC_INDEX_COUNT 0x10
diff --git a/dep/PackageList.txt b/dep/PackageList.txt
index 9e38aaea941..de284cb1a10 100644
--- a/dep/PackageList.txt
+++ b/dep/PackageList.txt
@@ -38,7 +38,7 @@ recastnavigation (Recast is state of the art navigation mesh construction toolse
CascLib (An open-source implementation of library for reading CASC storage from Blizzard games since 2014)
https://github.com/ladislav-zezula/CascLib
- Version: 4235e5f2033e2de709c83034503d49e532d03630
+ Version: d1d617d4feecd39bae049e19b0e217a1a84bedc6
zmqpp (C++ binding for 0mq/zmq is a 'high-level' library that hides most of the c-style interface core 0mq provides.)
https://github.com/zeromq/zmqpp