diff options
| author | Shauren <shauren.trinity@gmail.com> | 2023-06-23 10:27:44 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2023-06-23 10:27:44 +0200 |
| commit | 8ffc4c1034931d04f9904187c76b730f2ae61965 (patch) | |
| tree | d8892ca628fbb2272e3660147c01205e6ce6be94 /src/tools/extractor_common | |
| parent | 9ad1e5d635e2fd4c2486d5f2bf1cb52d8e768558 (diff) | |
Tools/Extractors: Warn when casc storage could not be opened in remote mode because a local installation was detected in input/cache directory
Diffstat (limited to 'src/tools/extractor_common')
| -rw-r--r-- | src/tools/extractor_common/CascHandles.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/tools/extractor_common/CascHandles.cpp b/src/tools/extractor_common/CascHandles.cpp index d06bc7ed74e..7a984fb0784 100644 --- a/src/tools/extractor_common/CascHandles.cpp +++ b/src/tools/extractor_common/CascHandles.cpp @@ -47,6 +47,7 @@ char const* CASC::HumanReadableCASCError(uint32 error) case ERROR_ACCESS_DENIED: return "ACCESS_DENIED"; case ERROR_FILE_NOT_FOUND: return "FILE_NOT_FOUND"; case ERROR_FILE_ENCRYPTED: return "FILE_ENCRYPTED"; + case ERROR_FILE_OFFLINE: return "FILE_OFFLINE"; default: return "UNKNOWN"; } } @@ -210,6 +211,15 @@ CASC::Storage* CASC::Storage::OpenRemote(boost::filesystem::path const& path, ui return nullptr; } + DWORD features = 0; + if (!GetStorageInfo(handle, CascStorageFeatures, &features) || !(features & CASC_FEATURE_ONLINE)) + { + printf("Local casc storage detected in cache path \"%s\" (or its parent directory). Remote storage not opened!\n", args.szLocalPath); + CascCloseStorage(handle); + SetCascError(ERROR_FILE_OFFLINE); + return nullptr; + } + printf("Opened remote casc storage '%s'\n", path.string().c_str()); Storage* storage = new Storage(handle); |
