aboutsummaryrefslogtreecommitdiff
path: root/src/tools/extractor_common
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2019-08-10 19:03:24 +0200
committerShauren <shauren.trinity@gmail.com>2019-08-10 19:03:24 +0200
commit420e0d0fd7c7b97c7b62b7463746da75bd30553b (patch)
tree68cffa05857ead661b14440371136f137ab9c15b /src/tools/extractor_common
parentcd720efbfa60f434f420ab66e220eca742c48e45 (diff)
Tools/Extractors: Swapped to new casclib 64bit file size functions
Diffstat (limited to 'src/tools/extractor_common')
-rw-r--r--src/tools/extractor_common/CascHandles.cpp47
-rw-r--r--src/tools/extractor_common/CascHandles.h23
-rw-r--r--src/tools/extractor_common/DB2CascFileSource.cpp16
-rw-r--r--src/tools/extractor_common/DB2CascFileSource.h6
4 files changed, 51 insertions, 41 deletions
diff --git a/src/tools/extractor_common/CascHandles.cpp b/src/tools/extractor_common/CascHandles.cpp
index cfce1c22999..9cc2fde7c42 100644
--- a/src/tools/extractor_common/CascHandles.cpp
+++ b/src/tools/extractor_common/CascHandles.cpp
@@ -19,7 +19,7 @@
#include <CascLib.h>
#include <boost/filesystem/operations.hpp>
-char const* CASC::HumanReadableCASCError(DWORD error)
+char const* CASC::HumanReadableCASCError(uint32 error)
{
switch (error)
{
@@ -55,7 +55,7 @@ void CASC::FileDeleter::operator()(HANDLE handle)
::CascCloseFile(handle);
}
-CASC::StorageHandle CASC::OpenStorage(boost::filesystem::path const& path, DWORD localeMask, char const* product)
+CASC::StorageHandle CASC::OpenStorage(boost::filesystem::path const& path, uint32 localeMask, char const* product)
{
std::string strPath = path.string();
CASC_OPEN_STORAGE_ARGS args = {};
@@ -87,16 +87,16 @@ namespace CASC
}
}
-DWORD CASC::GetBuildNumber(StorageHandle const& storage)
+uint32 CASC::GetBuildNumber(StorageHandle const& storage)
{
CASC_STORAGE_PRODUCT product;
if (GetStorageInfo(storage, CascStorageProduct, &product))
- return product.dwBuildNumber;
+ return product.BuildNumber;
return 0;
}
-DWORD CASC::GetInstalledLocalesMask(StorageHandle const& storage)
+uint32 CASC::GetInstalledLocalesMask(StorageHandle const& storage)
{
DWORD locales;
if (GetStorageInfo(storage, CascStorageInstalledLocales, &locales))
@@ -105,12 +105,12 @@ DWORD CASC::GetInstalledLocalesMask(StorageHandle const& storage)
return 0;
}
-bool CASC::HasTactKey(StorageHandle const& storage, ULONGLONG keyLookup)
+bool CASC::HasTactKey(StorageHandle const& storage, uint64 keyLookup)
{
return CascFindEncryptionKey(storage.get(), keyLookup) != nullptr;
}
-CASC::FileHandle CASC::OpenFile(StorageHandle const& storage, char const* fileName, DWORD localeMask, bool printErrors /*= false*/, bool zerofillEncryptedParts /*= false*/)
+CASC::FileHandle CASC::OpenFile(StorageHandle const& storage, char const* fileName, uint32 localeMask, bool printErrors /*= false*/, bool zerofillEncryptedParts /*= false*/)
{
DWORD openFlags = CASC_OPEN_BY_NAME;
if (zerofillEncryptedParts)
@@ -131,7 +131,7 @@ CASC::FileHandle CASC::OpenFile(StorageHandle const& storage, char const* fileNa
return FileHandle(handle);
}
-CASC::FileHandle CASC::OpenFile(StorageHandle const& storage, DWORD fileDataId, DWORD localeMask, bool printErrors /*= false*/, bool zerofillEncryptedParts /*= false*/)
+CASC::FileHandle CASC::OpenFile(StorageHandle const& storage, uint32 fileDataId, uint32 localeMask, bool printErrors /*= false*/, bool zerofillEncryptedParts /*= false*/)
{
DWORD openFlags = CASC_OPEN_BY_FILEID;
if (zerofillEncryptedParts)
@@ -152,24 +152,39 @@ CASC::FileHandle CASC::OpenFile(StorageHandle const& storage, DWORD fileDataId,
return FileHandle(handle);
}
-DWORD CASC::GetFileSize(FileHandle const& file, PDWORD fileSizeHigh)
+int64 CASC::GetFileSize(FileHandle const& file)
{
- return ::CascGetFileSize(file.get(), fileSizeHigh);
+ ULONGLONG size;
+ if (!::CascGetFileSize64(file.get(), &size))
+ return -1;
+
+ return int64(size);
}
-DWORD CASC::GetFilePointer(FileHandle const& file)
+int64 CASC::GetFilePointer(FileHandle const& file)
{
- return ::CascSetFilePointer(file.get(), 0, nullptr, FILE_CURRENT);
+ ULONGLONG position;
+ if (!::CascSetFilePointer64(file.get(), 0, &position, FILE_CURRENT))
+ return -1;
+
+ return int64(position);
}
-bool CASC::SetFilePointer(FileHandle const& file, LONGLONG position)
+bool CASC::SetFilePointer(FileHandle const& file, int64 position)
{
LONG parts[2];
memcpy(parts, &position, sizeof(parts));
- return ::CascSetFilePointer(file.get(), parts[0], &parts[1], FILE_BEGIN) != CASC_INVALID_POS;
+ return ::CascSetFilePointer64(file.get(), position, nullptr, FILE_BEGIN);
}
-bool CASC::ReadFile(FileHandle const& file, void* buffer, DWORD bytes, PDWORD bytesRead)
+bool CASC::ReadFile(FileHandle const& file, void* buffer, uint32 bytes, uint32* bytesRead)
{
- return ::CascReadFile(file.get(), buffer, bytes, bytesRead);
+ DWORD bytesReadDWORD;
+ if (!::CascReadFile(file.get(), buffer, bytes, &bytesReadDWORD))
+ return false;
+
+ if (bytesRead)
+ *bytesRead = bytesReadDWORD;
+
+ return true;
}
diff --git a/src/tools/extractor_common/CascHandles.h b/src/tools/extractor_common/CascHandles.h
index 008f118c68d..809df4ce67f 100644
--- a/src/tools/extractor_common/CascHandles.h
+++ b/src/tools/extractor_common/CascHandles.h
@@ -18,6 +18,7 @@
#ifndef CascHandles_h__
#define CascHandles_h__
+#include "Define.h"
#include <CascPort.h>
#include <memory>
@@ -46,19 +47,19 @@ namespace CASC
typedef std::unique_ptr<HANDLE, StorageDeleter> StorageHandle;
typedef std::unique_ptr<HANDLE, FileDeleter> FileHandle;
- char const* HumanReadableCASCError(DWORD error);
+ char const* HumanReadableCASCError(uint32 error);
- StorageHandle OpenStorage(boost::filesystem::path const& path, DWORD localeMask, char const* product);
- DWORD GetBuildNumber(StorageHandle const& storage);
- DWORD GetInstalledLocalesMask(StorageHandle const& storage);
- bool HasTactKey(StorageHandle const& storage, ULONGLONG keyLookup);
+ StorageHandle OpenStorage(boost::filesystem::path const& path, uint32 localeMask, char const* product);
+ uint32 GetBuildNumber(StorageHandle const& storage);
+ uint32 GetInstalledLocalesMask(StorageHandle const& storage);
+ bool HasTactKey(StorageHandle const& storage, uint64 keyLookup);
- FileHandle OpenFile(StorageHandle const& storage, char const* fileName, DWORD localeMask, bool printErrors = false, bool zerofillEncryptedParts = false);
- FileHandle OpenFile(StorageHandle const& storage, DWORD fileDataId, DWORD localeMask, bool printErrors = false, bool zerofillEncryptedParts = false);
- DWORD GetFileSize(FileHandle const& file, PDWORD fileSizeHigh);
- DWORD GetFilePointer(FileHandle const& file);
- bool SetFilePointer(FileHandle const& file, LONGLONG position);
- bool ReadFile(FileHandle const& file, void* buffer, DWORD bytes, PDWORD bytesRead);
+ FileHandle OpenFile(StorageHandle const& storage, char const* fileName, uint32 localeMask, bool printErrors = false, bool zerofillEncryptedParts = false);
+ FileHandle OpenFile(StorageHandle const& storage, uint32 fileDataId, uint32 localeMask, bool printErrors = false, bool zerofillEncryptedParts = false);
+ int64 GetFileSize(FileHandle const& file);
+ int64 GetFilePointer(FileHandle const& file);
+ bool SetFilePointer(FileHandle const& file, int64 position);
+ bool ReadFile(FileHandle const& file, void* buffer, uint32 bytes, uint32* bytesRead);
}
#endif // CascHandles_h__
diff --git a/src/tools/extractor_common/DB2CascFileSource.cpp b/src/tools/extractor_common/DB2CascFileSource.cpp
index c697b01b7fc..b4380e3160b 100644
--- a/src/tools/extractor_common/DB2CascFileSource.cpp
+++ b/src/tools/extractor_common/DB2CascFileSource.cpp
@@ -32,29 +32,23 @@ bool DB2CascFileSource::IsOpen() const
bool DB2CascFileSource::Read(void* buffer, std::size_t numBytes)
{
- DWORD bytesRead = 0;
+ uint32 bytesRead = 0;
return CASC::ReadFile(_fileHandle, buffer, numBytes, &bytesRead) && numBytes == bytesRead;
}
-std::size_t DB2CascFileSource::GetPosition() const
+int64 DB2CascFileSource::GetPosition() const
{
return CASC::GetFilePointer(_fileHandle);
}
-bool DB2CascFileSource::SetPosition(std::size_t position)
+bool DB2CascFileSource::SetPosition(int64 position)
{
return CASC::SetFilePointer(_fileHandle, position);
}
-std::size_t DB2CascFileSource::GetFileSize() const
+int64 DB2CascFileSource::GetFileSize() const
{
- DWORD sizeLow = 0;
- DWORD sizeHigh = 0;
- sizeLow = CASC::GetFileSize(_fileHandle, &sizeHigh);
- if (sizeLow == CASC_INVALID_SIZE)
- return std::size_t(-1);
-
- return std::size_t(uint64(sizeLow) | (uint64(sizeHigh) << 32));
+ return CASC::GetFileSize(_fileHandle);
}
CASC::FileHandle const& DB2CascFileSource::GetHandle() const
diff --git a/src/tools/extractor_common/DB2CascFileSource.h b/src/tools/extractor_common/DB2CascFileSource.h
index f5686a802c8..63b282099af 100644
--- a/src/tools/extractor_common/DB2CascFileSource.h
+++ b/src/tools/extractor_common/DB2CascFileSource.h
@@ -27,9 +27,9 @@ struct DB2CascFileSource : public DB2FileSource
DB2CascFileSource(CASC::StorageHandle const& storage, uint32 fileDataId, bool printErrors = true);
bool IsOpen() const override;
bool Read(void* buffer, std::size_t numBytes) override;
- std::size_t GetPosition() const override;
- bool SetPosition(std::size_t position) override;
- std::size_t GetFileSize() const override;
+ int64 GetPosition() const override;
+ bool SetPosition(int64 position) override;
+ int64 GetFileSize() const override;
CASC::FileHandle const& GetHandle() const;
char const* GetFileName() const override;