aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common/DataStores/DB2FileLoader.cpp2
-rw-r--r--src/common/DataStores/DB2FileLoader.h6
-rw-r--r--src/common/DataStores/DB2FileSystemSource.cpp8
-rw-r--r--src/common/DataStores/DB2FileSystemSource.h6
-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
-rw-r--r--src/tools/map_extractor/System.cpp21
-rw-r--r--src/tools/map_extractor/loadlib.cpp14
-rw-r--r--src/tools/vmap4_extractor/cascfile.cpp14
-rw-r--r--src/tools/vmap4_extractor/gameobject_extract.cpp2
12 files changed, 83 insertions, 82 deletions
diff --git a/src/common/DataStores/DB2FileLoader.cpp b/src/common/DataStores/DB2FileLoader.cpp
index 172dd6c19fa..43c2e479096 100644
--- a/src/common/DataStores/DB2FileLoader.cpp
+++ b/src/common/DataStores/DB2FileLoader.cpp
@@ -1755,7 +1755,7 @@ bool DB2FileLoader::LoadHeaders(DB2FileSource* source, DB2FileLoadInfo const* lo
if (loadInfo && !(_header.Flags & 0x1))
{
- std::size_t expectedFileSize =
+ int64 expectedFileSize =
sizeof(DB2Header) +
sizeof(DB2SectionHeader) * _header.SectionCount +
sizeof(DB2FieldEntry) * _header.FieldCount +
diff --git a/src/common/DataStores/DB2FileLoader.h b/src/common/DataStores/DB2FileLoader.h
index 8442805c64a..6a15e0b3a4f 100644
--- a/src/common/DataStores/DB2FileLoader.h
+++ b/src/common/DataStores/DB2FileLoader.h
@@ -101,11 +101,11 @@ struct TC_COMMON_API DB2FileSource
virtual bool Read(void* buffer, std::size_t numBytes) = 0;
// Returns current read position in file
- virtual std::size_t GetPosition() const = 0;
+ virtual int64 GetPosition() const = 0;
- virtual bool SetPosition(std::size_t position) = 0;
+ virtual bool SetPosition(int64 position) = 0;
- virtual std::size_t GetFileSize() const = 0;
+ virtual int64 GetFileSize() const = 0;
virtual char const* GetFileName() const = 0;
};
diff --git a/src/common/DataStores/DB2FileSystemSource.cpp b/src/common/DataStores/DB2FileSystemSource.cpp
index ffbba18f1b2..7c762c35065 100644
--- a/src/common/DataStores/DB2FileSystemSource.cpp
+++ b/src/common/DataStores/DB2FileSystemSource.cpp
@@ -40,20 +40,20 @@ bool DB2FileSystemSource::Read(void* buffer, std::size_t numBytes)
return fread(buffer, numBytes, 1, _file) == 1;
}
-std::size_t DB2FileSystemSource::GetPosition() const
+int64 DB2FileSystemSource::GetPosition() const
{
return ftell(_file);
}
-bool DB2FileSystemSource::SetPosition(std::size_t position)
+bool DB2FileSystemSource::SetPosition(int64 position)
{
return fseek(_file, position, SEEK_SET) == 0;
}
-std::size_t DB2FileSystemSource::GetFileSize() const
+int64 DB2FileSystemSource::GetFileSize() const
{
boost::system::error_code error;
- std::size_t size = boost::filesystem::file_size(_fileName, error);
+ int64 size = boost::filesystem::file_size(_fileName, error);
return !error ? size : 0;
}
diff --git a/src/common/DataStores/DB2FileSystemSource.h b/src/common/DataStores/DB2FileSystemSource.h
index 082d1dd8d46..16fe1482eb1 100644
--- a/src/common/DataStores/DB2FileSystemSource.h
+++ b/src/common/DataStores/DB2FileSystemSource.h
@@ -27,9 +27,9 @@ struct TC_COMMON_API DB2FileSystemSource : public DB2FileSource
~DB2FileSystemSource();
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;
char const* GetFileName() const override;
private:
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;
diff --git a/src/tools/map_extractor/System.cpp b/src/tools/map_extractor/System.cpp
index cf5071d829e..7b2597def85 100644
--- a/src/tools/map_extractor/System.cpp
+++ b/src/tools/map_extractor/System.cpp
@@ -1161,9 +1161,8 @@ void ExtractMaps(uint32 build)
bool ExtractFile(CASC::FileHandle const& fileInArchive, std::string const& filename)
{
- DWORD fileSize, fileSizeHigh;
- fileSize = CASC::GetFileSize(fileInArchive, &fileSizeHigh);
- if (fileSize == CASC_INVALID_SIZE)
+ int64 fileSize = CASC::GetFileSize(fileInArchive);
+ if (fileSize == -1)
{
printf("Can't read file size of '%s'\n", filename.c_str());
return false;
@@ -1177,12 +1176,12 @@ bool ExtractFile(CASC::FileHandle const& fileInArchive, std::string const& filen
}
char buffer[0x10000];
- DWORD readBytes;
+ uint32 readBytes;
do
{
readBytes = 0;
- if (!CASC::ReadFile(fileInArchive, buffer, std::min<DWORD>(fileSize, sizeof(buffer)), &readBytes))
+ if (!CASC::ReadFile(fileInArchive, buffer, std::min<uint32>(fileSize, sizeof(buffer)), &readBytes))
{
printf("Can't read file '%s'\n", filename.c_str());
fclose(output);
@@ -1213,8 +1212,8 @@ bool ExtractDB2File(uint32 fileDataId, char const* cascFileName, int locale, boo
return false;
}
- std::size_t fileSize = source.GetFileSize();
- if (fileSize == std::size_t(-1))
+ int64 fileSize = source.GetFileSize();
+ if (fileSize == -1)
{
printf("Can't read file size of '%s'\n", cascFileName);
return false;
@@ -1237,7 +1236,7 @@ bool ExtractDB2File(uint32 fileDataId, char const* cascFileName, int locale, boo
DB2Header header = db2.GetHeader();
- std::size_t posAfterHeaders = 0;
+ int64 posAfterHeaders = 0;
posAfterHeaders += fwrite(&header, 1, sizeof(header), output);
// erase TactId from header if key is known
@@ -1251,14 +1250,14 @@ bool ExtractDB2File(uint32 fileDataId, char const* cascFileName, int locale, boo
}
char buffer[0x10000];
- DWORD readBatchSize = 0x10000;
- DWORD readBytes;
+ uint32 readBatchSize = 0x10000;
+ uint32 readBytes;
source.SetPosition(posAfterHeaders);
do
{
readBytes = 0;
- if (!CASC::ReadFile(source.GetHandle(), buffer, std::min<DWORD>(fileSize, readBatchSize), &readBytes))
+ if (!CASC::ReadFile(source.GetHandle(), buffer, std::min<uint32>(fileSize, readBatchSize), &readBytes))
{
printf("Can't read file '%s'\n", outputFileName.c_str());
fclose(output);
diff --git a/src/tools/map_extractor/loadlib.cpp b/src/tools/map_extractor/loadlib.cpp
index 04ee35bbb0a..92d440b1462 100644
--- a/src/tools/map_extractor/loadlib.cpp
+++ b/src/tools/map_extractor/loadlib.cpp
@@ -41,13 +41,13 @@ bool ChunkedFile::loadFile(CASC::StorageHandle const& mpq, std::string const& fi
if (!file)
return false;
- DWORD fileSize = CASC::GetFileSize(file, nullptr);
- if (fileSize == CASC_INVALID_SIZE)
+ int64 fileSize = CASC::GetFileSize(file);
+ if (fileSize == -1)
return false;
- data_size = fileSize;
+ data_size = uint32(fileSize);
data = new uint8[data_size];
- DWORD bytesRead = 0;
+ uint32 bytesRead = 0;
if (!CASC::ReadFile(file, data, data_size, &bytesRead) || bytesRead != data_size)
return false;
@@ -68,13 +68,13 @@ bool ChunkedFile::loadFile(CASC::StorageHandle const& mpq, uint32 fileDataId, st
if (!file)
return false;
- DWORD fileSize = CASC::GetFileSize(file, nullptr);
- if (fileSize == CASC_INVALID_SIZE)
+ int64 fileSize = CASC::GetFileSize(file);
+ if (fileSize == -1)
return false;
data_size = fileSize;
data = new uint8[data_size];
- DWORD bytesRead = 0;
+ uint32 bytesRead = 0;
if (!CASC::ReadFile(file, data, data_size, &bytesRead) || bytesRead != data_size)
return false;
diff --git a/src/tools/vmap4_extractor/cascfile.cpp b/src/tools/vmap4_extractor/cascfile.cpp
index 1702ddb5230..691a25f97fa 100644
--- a/src/tools/vmap4_extractor/cascfile.cpp
+++ b/src/tools/vmap4_extractor/cascfile.cpp
@@ -57,25 +57,17 @@ CASCFile::CASCFile(CASC::StorageHandle const& casc, uint32 fileDataId, std::stri
void CASCFile::init(CASC::FileHandle const& file, const char* description)
{
- DWORD fileSizeHigh = 0;
- DWORD fileSize = CASC::GetFileSize(file, &fileSizeHigh);
- if (fileSize == CASC_INVALID_SIZE)
+ int64 fileSize = CASC::GetFileSize(file);
+ if (fileSize == -1)
{
fprintf(stderr, "Can't open %s, failed to get size: %s!\n", description, CASC::HumanReadableCASCError(GetLastError()));
eof = true;
return;
}
- if (fileSizeHigh)
- {
- fprintf(stderr, "Can't open %s, file larger than 2GB", description);
- eof = true;
- return;
- }
-
size = fileSize;
- DWORD read = 0;
+ uint32 read = 0;
buffer = new char[size];
if (!CASC::ReadFile(file, buffer, size, &read) || size != read)
{
diff --git a/src/tools/vmap4_extractor/gameobject_extract.cpp b/src/tools/vmap4_extractor/gameobject_extract.cpp
index 85dd992e6f1..88c13300adb 100644
--- a/src/tools/vmap4_extractor/gameobject_extract.cpp
+++ b/src/tools/vmap4_extractor/gameobject_extract.cpp
@@ -77,7 +77,7 @@ bool GetHeaderMagic(std::string const& fileName, uint32* magic)
if (!file)
return false;
- DWORD bytesRead = 0;
+ uint32 bytesRead = 0;
if (!CASC::ReadFile(file, magic, 4, &bytesRead) || bytesRead != 4)
return false;