aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Publish.bat1
-rw-r--r--Publish_beta.bat1
-rw-r--r--src/FileStream.cpp2
-rw-r--r--src/SCompression.cpp5
-rw-r--r--src/SFileAddFile.cpp3
-rw-r--r--test/Test.cpp50
6 files changed, 45 insertions, 17 deletions
diff --git a/Publish.bat b/Publish.bat
index 59db0b1..9c9a639 100644
--- a/Publish.bat
+++ b/Publish.bat
@@ -16,6 +16,7 @@ zip.exe -u9 ..\WWW\web\download\stormlib.zip StormLib\Info.plist
zip.exe -u9 ..\WWW\web\download\stormlib.zip StormLib\*.bat
zip.exe -u9 ..\WWW\web\download\stormlib.zip StormLib\*.sln
zip.exe -u9 ..\WWW\web\download\stormlib.zip StormLib\*.vcproj
+zip.exe -u9 ..\WWW\web\download\stormlib.zip StormLib\*.vcxproj
echo.
echo Press any key to exit ...
diff --git a/Publish_beta.bat b/Publish_beta.bat
index 380ea1c..a13ea56 100644
--- a/Publish_beta.bat
+++ b/Publish_beta.bat
@@ -16,6 +16,7 @@ zip.exe -u9 ..\WWW\web\download\stormlib_beta.zip StormLib\Info.plist
zip.exe -u9 ..\WWW\web\download\stormlib_beta.zip StormLib\*.bat
zip.exe -u9 ..\WWW\web\download\stormlib_beta.zip StormLib\*.sln
zip.exe -u9 ..\WWW\web\download\stormlib_beta.zip StormLib\*.vcproj
+zip.exe -u9 ..\WWW\web\download\stormlib_beta.zip StormLib\*.vcxproj
echo.
echo Press any key to exit ...
diff --git a/src/FileStream.cpp b/src/FileStream.cpp
index 90bd176..8c49bfa 100644
--- a/src/FileStream.cpp
+++ b/src/FileStream.cpp
@@ -465,7 +465,7 @@ static bool BaseFile_Open(
#ifdef PLATFORM_WINDOWS
{
ULARGE_INTEGER FileSize;
- DWORD dwWriteAccess = (dwStreamFlags & STREAM_FLAG_READ_ONLY) ? 0 : GENERIC_ALL;
+ DWORD dwWriteAccess = (dwStreamFlags & STREAM_FLAG_READ_ONLY) ? 0 : GENERIC_READ | GENERIC_WRITE;
DWORD dwWriteShare = (dwStreamFlags & STREAM_FLAG_WRITE_SHARE) ? FILE_SHARE_WRITE : 0;
// Open the file
diff --git a/src/SCompression.cpp b/src/SCompression.cpp
index dc09be7..b8ac3d3 100644
--- a/src/SCompression.cpp
+++ b/src/SCompression.cpp
@@ -236,6 +236,7 @@ static void Compress_PKLIB(void * pvOutBuffer, int * pcbOutBuffer, void * pvInBu
{
TDataInfo Info; // Data information
char * work_buf = STORM_ALLOC(char, CMP_BUFFER_SIZE);// Pklib's work buffer
+// char * work_buf = (char *)malloc(CMP_BUFFER_SIZE); // Pklib's work buffer
unsigned int dict_size; // Dictionary size
unsigned int ctype = CMP_BINARY; // Compression type
@@ -253,8 +254,8 @@ static void Compress_PKLIB(void * pvOutBuffer, int * pcbOutBuffer, void * pvInBu
//
// Set the dictionary size
//
- // Diablo I ues fixed dictionary size of CMP_IMPLODE_DICT_SIZE3
- // Starcraft uses the variable dictionary size based on algorithm below
+ // Diablo I uses fixed dictionary size of CMP_IMPLODE_DICT_SIZE3
+ // Starcraft I uses the variable dictionary size based on algorithm below
//
if (cbInBuffer < 0x600)
diff --git a/src/SFileAddFile.cpp b/src/SFileAddFile.cpp
index b2b2fd2..57bae82 100644
--- a/src/SFileAddFile.cpp
+++ b/src/SFileAddFile.cpp
@@ -1270,7 +1270,8 @@ bool WINAPI SFileSetAddFileCallback(HANDLE hMpq, SFILE_ADDFILE_CALLBACK AddFileC
{
TMPQArchive * ha = (TMPQArchive *) hMpq;
- if (!IsValidMpqHandle(ha)) {
+ if (!IsValidMpqHandle(ha))
+ {
SetLastError(ERROR_INVALID_HANDLE);
return false;
}
diff --git a/test/Test.cpp b/test/Test.cpp
index c3960db..f3d78c5 100644
--- a/test/Test.cpp
+++ b/test/Test.cpp
@@ -875,23 +875,47 @@ static int CompareHuffmanCompressions0()
//-----------------------------------------------------------------------------
// Compare PKLIB decompression
+FILE * data_file;
+
BYTE pbCompressed1[] = {0x00, 0x04, 0x00, 0x00, 0x04, 0xF0, 0x1F, 0x7B, 0x01, 0xFF};
BYTE pbCompressed2[] = {0x00, 0x04, 0x00, 0x00, 0x04, 0xF0, 0x1F, 0x00, 0x00, 0x04, 0xFC, 0x03};
static int ComparePklibCompressions()
{
- char Decompressed[0x1000];
- char Compressed[0x1000];
- int cbDecompressed = 0x208;
- int cbCompressed = sizeof(Compressed);
+ TFileStream * pStream;
+ ULONGLONG ByteOffset = 0;
+ ULONGLONG FileSize = 0;
+ unsigned char * pbRawData;
+ unsigned char * pbCompressed;
+ unsigned char * pbDecompressed;
+ int cbOutBuffer;
+ int cbInBuffer;
- memset(Decompressed, 0, cbDecompressed);
- SCompImplode(Compressed, &cbCompressed, Decompressed, cbDecompressed);
-
- cbDecompressed = sizeof(Decompressed);
- SCompExplode(Decompressed, &cbDecompressed, Compressed, cbCompressed);
+ pStream = FileStream_OpenFile(_T("doc\\data_to_compress.dat"), BASE_PROVIDER_FILE | STREAM_PROVIDER_LINEAR);
+ if(pStream != NULL)
+ {
+ FileStream_GetSize(pStream, &FileSize);
+ cbOutBuffer = (int)FileSize;
+
+ pbRawData = new unsigned char[cbOutBuffer];
+ pbCompressed = new unsigned char[cbOutBuffer];
+ pbDecompressed = new unsigned char[cbOutBuffer];
+ if(pbRawData && pbCompressed && pbDecompressed)
+ {
+ FileStream_Read(pStream, &ByteOffset, pbRawData, (DWORD)FileSize);
+ SCompImplode(pbCompressed, &cbOutBuffer, pbRawData, (DWORD)FileSize);
+ cbInBuffer = cbOutBuffer;
+ cbOutBuffer = (int)FileSize;
+ SCompExplode(pbDecompressed, &cbOutBuffer, pbCompressed, cbInBuffer);
+ }
+
+ delete [] pbDecompressed;
+ delete [] pbCompressed;
+ delete [] pbRawData;
+ FileStream_Close(pStream);
+ }
return ERROR_SUCCESS;
}
@@ -2177,8 +2201,8 @@ int main(void)
// nError = CompareHuffmanCompressions0();
// }
-// if(nError == ERROR_SUCCESS)
-// nError = ComparePklibCompressions();
+ if(nError == ERROR_SUCCESS)
+ nError = ComparePklibCompressions();
// Test LZMA compression method against the code ripped from Starcraft II
// if(nError == ERROR_SUCCESS)
@@ -2189,8 +2213,8 @@ int main(void)
// nError = TestSectorCompress(MPQ_SECTOR_SIZE);
// Test the archive open and close
- if(nError == ERROR_SUCCESS)
- nError = TestArchiveOpenAndClose(MAKE_PATH("Battle.net.MPQ"));
+// if(nError == ERROR_SUCCESS)
+// nError = TestArchiveOpenAndClose(MAKE_PATH("Battle.net.MPQ"));
// if(nError == ERROR_SUCCESS)
// nError = TestFindFiles(MAKE_PATH("2002 - Warcraft III/HumanEd.mpq"));