diff options
-rw-r--r-- | Publish.bat | 1 | ||||
-rw-r--r-- | Publish_beta.bat | 1 | ||||
-rw-r--r-- | src/FileStream.cpp | 2 | ||||
-rw-r--r-- | src/SCompression.cpp | 5 | ||||
-rw-r--r-- | src/SFileAddFile.cpp | 3 | ||||
-rw-r--r-- | test/Test.cpp | 50 |
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")); |