diff options
-rw-r--r-- | make.bat | 31 | ||||
-rw-r--r-- | src/FileStream.cpp | 73 | ||||
-rw-r--r-- | src/SBaseCommon.cpp | 52 | ||||
-rw-r--r-- | src/SBaseDumpData.cpp | 4 | ||||
-rw-r--r-- | src/SBaseFileTable.cpp | 26 | ||||
-rw-r--r-- | src/SBaseSubTypes.cpp | 24 | ||||
-rw-r--r-- | src/SCompression.cpp | 26 | ||||
-rw-r--r-- | src/SFileAddFile.cpp | 60 | ||||
-rw-r--r-- | src/SFileAttributes.cpp | 12 | ||||
-rw-r--r-- | src/SFileCompactArchive.cpp | 30 | ||||
-rw-r--r-- | src/SFileCreateArchive.cpp | 12 | ||||
-rw-r--r-- | src/SFileExtractFile.cpp | 10 | ||||
-rw-r--r-- | src/SFileFindFile.cpp | 6 | ||||
-rw-r--r-- | src/SFileGetFileInfo.cpp | 10 | ||||
-rw-r--r-- | src/SFileListFile.cpp | 16 | ||||
-rw-r--r-- | src/SFileOpenArchive.cpp | 18 | ||||
-rw-r--r-- | src/SFileOpenFileEx.cpp | 10 | ||||
-rw-r--r-- | src/SFilePatchArchives.cpp | 4 | ||||
-rw-r--r-- | src/SFileReadFile.cpp | 24 | ||||
-rw-r--r-- | src/SFileVerify.cpp | 14 | ||||
-rw-r--r-- | src/SMemUtf8.cpp | 29 | ||||
-rw-r--r-- | src/StormCommon.h | 2 | ||||
-rw-r--r-- | src/StormLib.h | 18 | ||||
-rw-r--r-- | src/lzma/C/Threads.c | 2 | ||||
-rwxr-xr-x | test/StormTest.cpp | 54 |
25 files changed, 287 insertions, 280 deletions
@@ -1,15 +1,15 @@ @echo off -if not "x%WDKDIR%" == "x" goto SELECT_LIB +if not "x%WDKDIR%" == "x" goto SELECT_BINARY echo The WDKDIR environment variable is not set echo Set this variable to your WDK directory (without ending backslash) echo Example: set WDKDIR C:\WinDDK\6001 pause goto:eof -:SELECT_LIB +:SELECT_BINARY set PROJECT_DIR=%~dp0 -set LIBRARY_NAME=StormLibWDK set SAVE_PATH=%PATH% +set BINARY_NAME=StormLibWDK :PREPARE_SOURCES echo Preparing sources ... @@ -17,22 +17,22 @@ copy .\src\wdk\sources-cpp.cpp . >nul copy .\src\wdk\sources-wdk-* . >nul echo. -:BUILD_LIB_32 -echo Building %LIBRARY_NAME%.lib (32-bit) ... +:BUILD_BINARY_64 +echo Building %BINARY_NAME%.lib (64-bit) ... set DDKBUILDENV= -call %WDKDIR%\bin\setenv.bat %WDKDIR%\ fre w2k -cd %PROJECT_DIR% +call %WDKDIR%\bin\setenv.bat %WDKDIR%\ fre x64 WLH +cd /d %PROJECT_DIR% build.exe -czgw -del buildfre_w2k_x86.log +del buildfre_wlh_amd64.log echo. -:BUILD_LIB_64 -echo Building %LIBRARY_NAME%.lib (64-bit) ... +:BUILD_BINARY_32 +echo Building %BINARY_NAME%.lib (32-bit) ... set DDKBUILDENV= -call %WDKDIR%\bin\setenv.bat %WDKDIR%\ fre x64 WLH -cd %PROJECT_DIR% +call %WDKDIR%\bin\setenv.bat %WDKDIR%\ fre w2k +cd /d %PROJECT_DIR% build.exe -czgw -del buildfre_wlh_amd64.log +del buildfre_w2k_x86.log echo. :COPY_OUTPUT @@ -42,12 +42,11 @@ if not exist ..\aaa\lib32 md ..\aaa\lib32 if not exist ..\aaa\lib64 md ..\aaa\lib64 copy /Y .\src\StormLib.h ..\aaa\inc >nul copy /Y .\src\StormPort.h ..\aaa\inc >nul -copy /Y .\objfre_wlh_amd64\amd64\%LIBRARY_NAME%.lib ..\aaa\lib64\%LIBRARY_NAME%.lib >nul -copy /Y .\objfre_w2k_x86\i386\%LIBRARY_NAME%.lib ..\aaa\lib32\%LIBRARY_NAME%.lib >nul +copy /Y .\objfre_wlh_amd64\amd64\%BINARY_NAME%.lib ..\aaa\lib64\%BINARY_NAME%.lib >nul +copy /Y .\objfre_w2k_x86\i386\%BINARY_NAME%.lib ..\aaa\lib32\%BINARY_NAME%.lib >nul :CLEANUP if exist sources-cpp.cpp del sources-cpp.cpp if exist sources-wdk-* del sources-wdk-* if exist build.bat del build.bat set PATH=%SAVE_PATH% -set SAVE_PATH= diff --git a/src/FileStream.cpp b/src/FileStream.cpp index 39db0a0..b5a0a6d 100644 --- a/src/FileStream.cpp +++ b/src/FileStream.cpp @@ -33,25 +33,6 @@ //-----------------------------------------------------------------------------
// Local functions - platform-specific functions
-#ifndef STORMLIB_WINDOWS
-
-#ifndef STORMLIB_WIIU
-static thread_local DWORD dwLastError = ERROR_SUCCESS;
-#else
-static DWORD dwLastError = ERROR_SUCCESS;
-#endif
-
-DWORD GetLastError()
-{
- return dwLastError;
-}
-
-void SetLastError(DWORD dwErrCode)
-{
- dwLastError = dwErrCode;
-}
-#endif
-
static DWORD StringToInt(const char * szString)
{
DWORD dwValue = 0;
@@ -262,7 +243,7 @@ static bool BaseFile_Read( // If the number of bytes read doesn't match to required amount, return false
pStream->Base.File.FilePos = ByteOffset + dwBytesRead;
if(dwBytesRead != dwBytesToRead)
- SetLastError(ERROR_HANDLE_EOF);
+ SErrSetLastError(ERROR_HANDLE_EOF);
return (dwBytesRead == dwBytesToRead);
}
@@ -334,7 +315,7 @@ static bool BaseFile_Write(TFileStream * pStream, ULONGLONG * pByteOffset, const pStream->Base.File.FileSize = pStream->Base.File.FilePos;
if(dwBytesWritten != dwBytesToWrite)
- SetLastError(ERROR_DISK_FULL);
+ SErrSetLastError(ERROR_DISK_FULL);
return (dwBytesWritten == dwBytesToWrite);
}
@@ -353,7 +334,7 @@ static bool BaseFile_Resize(TFileStream * pStream, ULONGLONG NewFileSize) // Set the position at the new file size
dwNewPos = SetFilePointer(pStream->Base.File.hFile, (LONG)NewFileSize, &FileSizeHi, FILE_BEGIN);
- if(dwNewPos == INVALID_SET_FILE_POINTER && GetLastError() != ERROR_SUCCESS)
+ if(dwNewPos == INVALID_SET_FILE_POINTER && SErrGetLastError() != ERROR_SUCCESS)
return false;
// Set the current file pointer as the end of the file
@@ -748,7 +729,7 @@ static bool BaseHttp_Open(TFileStream * pStream, const TCHAR * szFileName, DWORD if(_tcscmp(StatusCode, _T("200")))
{
InternetCloseHandle(hRequest);
- SetLastError(ERROR_FILE_NOT_FOUND);
+ SErrSetLastError(ERROR_FILE_NOT_FOUND);
return false;
}
}
@@ -793,7 +774,7 @@ static bool BaseHttp_Open(TFileStream * pStream, const TCHAR * szFileName, DWORD #else
// Not supported
- SetLastError(ERROR_NOT_SUPPORTED);
+ SErrSetLastError(ERROR_NOT_SUPPORTED);
pStream = pStream;
return false;
@@ -861,7 +842,7 @@ static bool BaseHttp_Read( // If the number of bytes read doesn't match the required amount, return false
if(dwTotalBytesRead != dwBytesToRead)
- SetLastError(ERROR_HANDLE_EOF);
+ SErrSetLastError(ERROR_HANDLE_EOF);
return (dwTotalBytesRead == dwBytesToRead);
#else
@@ -871,7 +852,7 @@ static bool BaseHttp_Read( pByteOffset = pByteOffset;
pvBuffer = pvBuffer;
dwBytesToRead = dwBytesToRead;
- SetLastError(ERROR_NOT_SUPPORTED);
+ SErrSetLastError(ERROR_NOT_SUPPORTED);
return false;
#endif
@@ -945,7 +926,7 @@ static bool BlockStream_Read( EndOffset = ByteOffset + dwBytesToRead;
if(EndOffset > pStream->StreamSize)
{
- SetLastError(ERROR_HANDLE_EOF);
+ SErrSetLastError(ERROR_HANDLE_EOF);
return false;
}
@@ -962,7 +943,7 @@ static bool BlockStream_Read( TransferBuffer = BlockBuffer = STORM_ALLOC(BYTE, (BlockCount * BlockSize));
if(TransferBuffer == NULL)
{
- SetLastError(ERROR_NOT_ENOUGH_MEMORY);
+ SErrSetLastError(ERROR_NOT_ENOUGH_MEMORY);
return false;
}
@@ -1040,7 +1021,7 @@ static bool BlockStream_Read( else
{
// If the block read failed, set the last error
- SetLastError(ERROR_FILE_INCOMPLETE);
+ SErrSetLastError(ERROR_FILE_INCOMPLETE);
}
// Call the callback to indicate we are done
@@ -1117,7 +1098,7 @@ static TFileStream * AllocateFileStream( // Don't allow another master file in the string
if(_tcschr(szNextFile + 1, _T('*')) != NULL)
{
- SetLastError(ERROR_INVALID_PARAMETER);
+ SErrSetLastError(ERROR_INVALID_PARAMETER);
return NULL;
}
@@ -1456,7 +1437,7 @@ static TFileStream * FlatStream_Open(const TCHAR * szFileName, DWORD dwStreamFla if(!FlatStream_CreateMirror(pStream))
{
FileStream_Close(pStream);
- SetLastError(ERROR_FILE_NOT_FOUND);
+ SErrSetLastError(ERROR_FILE_NOT_FOUND);
return NULL;
}
}
@@ -1875,7 +1856,7 @@ static TFileStream * PartStream_Open(const TCHAR * szFileName, DWORD dwStreamFla if(!PartStream_CreateMirror(pStream))
{
FileStream_Close(pStream);
- SetLastError(ERROR_FILE_NOT_FOUND);
+ SErrSetLastError(ERROR_FILE_NOT_FOUND);
return NULL;
}
}
@@ -1892,7 +1873,7 @@ static TFileStream * PartStream_Open(const TCHAR * szFileName, DWORD dwStreamFla if(!PartStream_LoadBitmap(pStream))
{
FileStream_Close(pStream);
- SetLastError(ERROR_BAD_FORMAT);
+ SErrSetLastError(ERROR_BAD_FORMAT);
return NULL;
}
}
@@ -2212,7 +2193,7 @@ static TFileStream * MpqeStream_Open(const TCHAR * szFileName, DWORD dwStreamFla // Cleanup the stream and return
FileStream_Close(pStream);
- SetLastError(ERROR_UNKNOWN_FILE_KEY);
+ SErrSetLastError(ERROR_UNKNOWN_FILE_KEY);
return NULL;
}
@@ -2358,7 +2339,7 @@ static TFileStream * Block4Stream_Open(const TCHAR * szFileName, DWORD dwStreamF NewBaseArray = STORM_ALLOC(TBaseProviderData, dwBaseFiles + 1);
if(NewBaseArray == NULL)
{
- SetLastError(ERROR_NOT_ENOUGH_MEMORY);
+ SErrSetLastError(ERROR_NOT_ENOUGH_MEMORY);
return NULL;
}
@@ -2413,7 +2394,7 @@ static TFileStream * Block4Stream_Open(const TCHAR * szFileName, DWORD dwStreamF if(dwBaseFiles == 0)
{
FileStream_Close(pStream);
- SetLastError(ERROR_FILE_NOT_FOUND);
+ SErrSetLastError(ERROR_FILE_NOT_FOUND);
pStream = NULL;
}
@@ -2449,7 +2430,7 @@ TFileStream * FileStream_CreateFile( // We only support creation of flat, local file
if((dwStreamFlags & (STREAM_PROVIDERS_MASK)) != (STREAM_PROVIDER_FLAT | BASE_PROVIDER_FILE))
{
- SetLastError(ERROR_NOT_SUPPORTED);
+ SErrSetLastError(ERROR_NOT_SUPPORTED);
return NULL;
}
@@ -2523,7 +2504,7 @@ TFileStream * FileStream_OpenFile( return Block4Stream_Open(szFileName, dwStreamFlags);
default:
- SetLastError(ERROR_INVALID_PARAMETER);
+ SErrSetLastError(ERROR_INVALID_PARAMETER);
return NULL;
}
}
@@ -2635,7 +2616,7 @@ bool FileStream_SetCallback(TFileStream * pStream, SFILE_DOWNLOAD_CALLBACK pfnCa if(pStream->BlockRead == NULL)
{
- SetLastError(ERROR_NOT_SUPPORTED);
+ SErrSetLastError(ERROR_NOT_SUPPORTED);
return false;
}
@@ -2733,7 +2714,7 @@ bool FileStream_GetBitmap(TFileStream * pStream, void * pvBitmap, DWORD cbBitmap // Set last error value and return
if(bResult == false)
- SetLastError(ERROR_INSUFFICIENT_BUFFER);
+ SErrSetLastError(ERROR_INSUFFICIENT_BUFFER);
return bResult;
}
@@ -2753,8 +2734,8 @@ bool FileStream_GetBitmap(TFileStream * pStream, void * pvBitmap, DWORD cbBitmap *
* \returns
* - If the function reads the required amount of bytes, it returns true.
- * - If the function reads less than required bytes, it returns false and GetLastError() returns ERROR_HANDLE_EOF
- * - If the function fails, it reads false and GetLastError() returns an error code different from ERROR_HANDLE_EOF
+ * - If the function reads less than required bytes, it returns false and SErrGetLastError() returns ERROR_HANDLE_EOF
+ * - If the function fails, it reads false and SErrGetLastError() returns an error code different from ERROR_HANDLE_EOF
*/
bool FileStream_Read(TFileStream * pStream, ULONGLONG * pByteOffset, void * pvBuffer, DWORD dwBytesToRead)
{
@@ -2778,7 +2759,7 @@ bool FileStream_Write(TFileStream * pStream, ULONGLONG * pByteOffset, const void {
if(pStream->dwFlags & STREAM_FLAG_READ_ONLY)
{
- SetLastError(ERROR_ACCESS_DENIED);
+ SErrSetLastError(ERROR_ACCESS_DENIED);
return false;
}
@@ -2808,7 +2789,7 @@ bool FileStream_SetSize(TFileStream * pStream, ULONGLONG NewFileSize) {
if(pStream->dwFlags & STREAM_FLAG_READ_ONLY)
{
- SetLastError(ERROR_ACCESS_DENIED);
+ SErrSetLastError(ERROR_ACCESS_DENIED);
return false;
}
@@ -2868,14 +2849,14 @@ bool FileStream_Replace(TFileStream * pStream, TFileStream * pNewStream) // Only supported on flat files
if((pStream->dwFlags & STREAM_PROVIDERS_MASK) != (STREAM_PROVIDER_FLAT | BASE_PROVIDER_FILE))
{
- SetLastError(ERROR_NOT_SUPPORTED);
+ SErrSetLastError(ERROR_NOT_SUPPORTED);
return false;
}
// Not supported on read-only streams
if(pStream->dwFlags & STREAM_FLAG_READ_ONLY)
{
- SetLastError(ERROR_ACCESS_DENIED);
+ SErrSetLastError(ERROR_ACCESS_DENIED);
return false;
}
diff --git a/src/SBaseCommon.cpp b/src/SBaseCommon.cpp index 0d9598a..16caf4f 100644 --- a/src/SBaseCommon.cpp +++ b/src/SBaseCommon.cpp @@ -736,7 +736,7 @@ TMPQFile * IsValidFileHandle(HANDLE hFile) // Hash table and block table manipulation
// Attempts to search a free hash entry, or an entry whose names and locale matches
-TMPQHash * FindFreeHashEntry(TMPQArchive * ha, DWORD dwStartIndex, DWORD dwName1, DWORD dwName2, LCID lcFileLocale)
+TMPQHash * FindFreeHashEntry(TMPQArchive * ha, DWORD dwStartIndex, DWORD dwHashCheck1, DWORD dwHashCheck2, LCID lcFileLocale)
{
TMPQHash * pDeletedEntry = NULL; // If a deleted entry was found in the continuous hash range
TMPQHash * pFreeEntry = NULL; // If a free entry was found in the continuous hash range
@@ -757,7 +757,7 @@ TMPQHash * FindFreeHashEntry(TMPQArchive * ha, DWORD dwStartIndex, DWORD dwName1 TMPQHash * pHash = ha->pHashTable + dwIndex;
// If we found a matching entry, return that one
- if(pHash->dwName1 == dwName1 && pHash->dwName2 == dwName2 && pHash->Locale == Locale)
+ if(pHash->dwHashCheck1 == dwHashCheck1 && pHash->dwHashCheck2 == dwHashCheck2 && pHash->Locale == Locale)
return pHash;
// If we found a deleted entry, remember it but keep searching
@@ -788,8 +788,8 @@ TMPQHash * GetFirstHashEntry(TMPQArchive * ha, const char * szFileName) {
DWORD dwHashIndexMask = HASH_INDEX_MASK(ha);
DWORD dwStartIndex = ha->pfnHashString(szFileName, MPQ_HASH_TABLE_INDEX);
- DWORD dwName1 = ha->pfnHashString(szFileName, MPQ_HASH_NAME_A);
- DWORD dwName2 = ha->pfnHashString(szFileName, MPQ_HASH_NAME_B);
+ DWORD dwHashCheck1 = ha->pfnHashString(szFileName, MPQ_HASH_NAME_A);
+ DWORD dwHashCheck2 = ha->pfnHashString(szFileName, MPQ_HASH_NAME_B);
DWORD dwIndex;
// Set the initial index
@@ -801,7 +801,7 @@ TMPQHash * GetFirstHashEntry(TMPQArchive * ha, const char * szFileName) TMPQHash * pHash = ha->pHashTable + dwIndex;
// If the entry matches, we found it.
- if(pHash->dwName1 == dwName1 && pHash->dwName2 == dwName2 && MPQ_BLOCK_INDEX(pHash) < ha->dwFileTableSize)
+ if(pHash->dwHashCheck1 == dwHashCheck1 && pHash->dwHashCheck2 == dwHashCheck2 && MPQ_BLOCK_INDEX(pHash) < ha->dwFileTableSize)
return pHash;
// If that hash entry is a free entry, it means we haven't found the file
@@ -820,8 +820,8 @@ TMPQHash * GetNextHashEntry(TMPQArchive * ha, TMPQHash * pFirstHash, TMPQHash * {
DWORD dwHashIndexMask = HASH_INDEX_MASK(ha);
DWORD dwStartIndex = (DWORD)(pFirstHash - ha->pHashTable);
- DWORD dwName1 = pHash->dwName1;
- DWORD dwName2 = pHash->dwName2;
+ DWORD dwHashCheck1 = pHash->dwHashCheck1;
+ DWORD dwHashCheck2 = pHash->dwHashCheck2;
DWORD dwIndex = (DWORD)(pHash - ha->pHashTable);
// Now go for any next entry that follows the pHash,
@@ -836,7 +836,7 @@ TMPQHash * GetNextHashEntry(TMPQArchive * ha, TMPQHash * pFirstHash, TMPQHash * pHash = ha->pHashTable + dwIndex;
// If the entry matches, we found it.
- if(pHash->dwName1 == dwName1 && pHash->dwName2 == dwName2 && MPQ_BLOCK_INDEX(pHash) < ha->dwFileTableSize)
+ if(pHash->dwHashCheck1 == dwHashCheck1 && pHash->dwHashCheck2 == dwHashCheck2 && MPQ_BLOCK_INDEX(pHash) < ha->dwFileTableSize)
return pHash;
// If that hash entry is a free entry, it means we haven't found the file
@@ -853,19 +853,19 @@ TMPQHash * AllocateHashEntry( {
TMPQHash * pHash;
DWORD dwStartIndex = ha->pfnHashString(pFileEntry->szFileName, MPQ_HASH_TABLE_INDEX);
- DWORD dwName1 = ha->pfnHashString(pFileEntry->szFileName, MPQ_HASH_NAME_A);
- DWORD dwName2 = ha->pfnHashString(pFileEntry->szFileName, MPQ_HASH_NAME_B);
+ DWORD dwHashCheck1 = ha->pfnHashString(pFileEntry->szFileName, MPQ_HASH_NAME_A);
+ DWORD dwHashCheck2 = ha->pfnHashString(pFileEntry->szFileName, MPQ_HASH_NAME_B);
// Attempt to find a free hash entry
- pHash = FindFreeHashEntry(ha, dwStartIndex, dwName1, dwName2, lcFileLocale);
+ pHash = FindFreeHashEntry(ha, dwStartIndex, dwHashCheck1, dwHashCheck2, lcFileLocale);
if(pHash != NULL)
{
// Fill the free hash entry
- pHash->dwName1 = dwName1;
- pHash->dwName2 = dwName2;
+ pHash->dwHashCheck1 = dwHashCheck1;
+ pHash->dwHashCheck2 = dwHashCheck2;
pHash->Locale = SFILE_LOCALE(lcFileLocale);
pHash->Platform = SFILE_PLATFORM(lcFileLocale);
- pHash->Reserved = 0;
+ pHash->Flags = 0;
pHash->dwBlockIndex = (DWORD)(pFileEntry - ha->pFileTable);
}
@@ -965,7 +965,7 @@ TMPQFile * CreateWritableHandle(TMPQArchive * ha, DWORD dwFileSize) (ha->dwFileTableSize * sizeof(TMPQBlock));
if((TempPos >> 32) != 0)
{
- SetLastError(ERROR_DISK_FULL);
+ SErrSetLastError(ERROR_DISK_FULL);
return NULL;
}
}
@@ -974,7 +974,7 @@ TMPQFile * CreateWritableHandle(TMPQArchive * ha, DWORD dwFileSize) hf = CreateFileHandle(ha, NULL);
if(hf == NULL)
{
- SetLastError(ERROR_NOT_ENOUGH_MEMORY);
+ SErrSetLastError(ERROR_NOT_ENOUGH_MEMORY);
return NULL;
}
@@ -1063,7 +1063,7 @@ void * LoadMpqTable( }
else
{
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
}
if(dwErrCode == ERROR_SUCCESS)
@@ -1083,7 +1083,7 @@ void * LoadMpqTable( int cbInBuffer = (int)dwCompressedSize;
if(!SCompDecompress2(pbMpqTable, &cbOutBuffer, pbCompressed, cbInBuffer))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
}
// Make sure that the table is properly byte-swapped
@@ -1179,7 +1179,7 @@ __AllocateAndLoadPatchInfo: if(!FileStream_Read(ha->pStream, &hf->RawFilePos, pPatchInfo, dwLength))
{
STORM_FREE(pPatchInfo);
- return GetLastError();
+ return SErrGetLastError();
}
// Perform necessary swapping
@@ -1289,7 +1289,7 @@ DWORD AllocateSectorOffsets(TMPQFile * hf, bool bLoadFromFile) // Free the sector offsets
STORM_FREE(hf->SectorOffsets);
hf->SectorOffsets = NULL;
- return GetLastError();
+ return SErrGetLastError();
}
// Swap the sector positions
@@ -1479,7 +1479,7 @@ DWORD WritePatchInfo(TMPQFile * hf) BSWAP_ARRAY32_UNSIGNED(pPatchInfo, 3 * sizeof(DWORD));
if(!FileStream_Write(ha->pStream, &hf->RawFilePos, pPatchInfo, sizeof(TPatchInfo)))
- return GetLastError();
+ return SErrGetLastError();
return ERROR_SUCCESS;
}
@@ -1508,7 +1508,7 @@ DWORD WriteSectorOffsets(TMPQFile * hf) // Write sector offsets to the archive
if(!FileStream_Write(ha->pStream, &RawFilePos, hf->SectorOffsets, dwSectorOffsLen))
- return GetLastError();
+ return SErrGetLastError();
// Not necessary, as the sector checksums
// are going to be freed when this is done.
@@ -1561,7 +1561,7 @@ DWORD WriteSectorChecksums(TMPQFile * hf) if(hf->pPatchInfo != NULL)
RawFilePos += hf->pPatchInfo->dwLength;
if(!FileStream_Write(ha->pStream, &RawFilePos, pbCompressed, dwCompressedSize))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
// Not necessary, as the sector checksums
// are going to be freed when this is done.
@@ -1612,7 +1612,7 @@ DWORD WriteMemDataMD5( // Write the array od MD5's to the file
RawDataOffs += dwRawDataSize;
if(!FileStream_Write(pStream, &RawDataOffs, md5_array, dwMd5ArraySize))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
// Give the caller the size of the MD5 array
if(pcbTotalSize != NULL)
@@ -1660,7 +1660,7 @@ DWORD WriteMpqDataMD5( // Read the chunk
if(!FileStream_Read(pStream, &RawDataOffs, pbFileChunk, dwToRead))
{
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
break;
}
@@ -1677,7 +1677,7 @@ DWORD WriteMpqDataMD5( if(dwErrCode == ERROR_SUCCESS)
{
if(!FileStream_Write(pStream, NULL, md5_array, dwMd5ArraySize))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
}
// Free buffers and exit
diff --git a/src/SBaseDumpData.cpp b/src/SBaseDumpData.cpp index 16313dd..f52b927 100644 --- a/src/SBaseDumpData.cpp +++ b/src/SBaseDumpData.cpp @@ -52,8 +52,8 @@ void DumpHashTable(TMPQHash * pHashTable, DWORD dwHashTableSize) for(i = 0; i < dwHashTableSize; i++) { printf("[%08x] %08X %08X %04X %02X %08X\n", i, - pHashTable[i].dwName1, - pHashTable[i].dwName2, + pHashTable[i].dwHashCheck1, + pHashTable[i].dwHashCheck2, pHashTable[i].Locale, pHashTable[i].Platform, pHashTable[i].dwBlockIndex); diff --git a/src/SBaseFileTable.cpp b/src/SBaseFileTable.cpp index e4ce6f6..e854ac0 100644 --- a/src/SBaseFileTable.cpp +++ b/src/SBaseFileTable.cpp @@ -1031,7 +1031,7 @@ static DWORD BuildFileTableFromBlockTable( pHash->dwBlockIndex = dwNewIndex;
// Dump the relocation entry
-// printf("Relocating hash entry %08X-%08X: %08X -> %08X\n", pHash->dwName1, pHash->dwName2, dwBlockIndex, dwNewIndex);
+// printf("Relocating hash entry %08X-%08X: %08X -> %08X\n", pHash->dwHashCheck1, pHash->dwHashCheck2, dwBlockIndex, dwNewIndex);
}
// Get the pointer to the file entry and the block entry
@@ -1293,7 +1293,7 @@ static DWORD SaveMpqTable( BSWAP_ARRAY32_UNSIGNED(pMpqTable, Size);
FileOffset = ha->MpqPos + ByteOffset;
if(!FileStream_Write(ha->pStream, &FileOffset, pMpqTable, (DWORD)Size))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
// Free the compressed table, if any
if(pCompressed != NULL)
@@ -1364,7 +1364,7 @@ static DWORD SaveExtTable( if(FileStream_Write(ha->pStream, &FileOffset, pExtTable, dwTableSize))
cbTotalSize += dwTableSize;
else
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
// We have to write raw data MD5
if(dwErrCode == ERROR_SUCCESS && ha->pHeader->dwRawChunkSize != 0)
@@ -2224,11 +2224,11 @@ DWORD RenameFileEntry( lcFileLocale = SFILE_MAKE_LCID(pHashEntry->Locale, pHashEntry->Platform);
// Mark the hash table entry as deleted
- pHashEntry->dwName1 = 0xFFFFFFFF;
- pHashEntry->dwName2 = 0xFFFFFFFF;
+ pHashEntry->dwHashCheck1 = 0xFFFFFFFF;
+ pHashEntry->dwHashCheck2 = 0xFFFFFFFF;
pHashEntry->Locale = 0xFFFF;
pHashEntry->Platform = 0xFF;
- pHashEntry->Reserved = 0xFF;
+ pHashEntry->Flags = 0xFF;
pHashEntry->dwBlockIndex = HASH_ENTRY_DELETED;
}
@@ -2265,11 +2265,11 @@ DWORD DeleteFileEntry(TMPQArchive * ha, TMPQFile * hf) return ERROR_NOT_SUPPORTED;
// Mark the hash table entry as deleted
- pHashEntry->dwName1 = 0xFFFFFFFF;
- pHashEntry->dwName2 = 0xFFFFFFFF;
+ pHashEntry->dwHashCheck1 = 0xFFFFFFFF;
+ pHashEntry->dwHashCheck2 = 0xFFFFFFFF;
pHashEntry->Locale = 0xFFFF;
pHashEntry->Platform = 0xFF;
- pHashEntry->Reserved = 0xFF;
+ pHashEntry->Flags = 0xFF;
pHashEntry->dwBlockIndex = HASH_ENTRY_DELETED;
}
@@ -2618,7 +2618,7 @@ static DWORD BuildFileTable_Classic(TMPQArchive * ha) // Load the hi-block table. It is not encrypted, nor compressed
ByteOffset = ha->MpqPos + pHeader->HiBlockTablePos64;
if(!FileStream_Read(ha->pStream, &ByteOffset, pHiBlockTable, dwTableSize))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
// Now merge the hi-block table to the file table
if(dwErrCode == ERROR_SUCCESS)
@@ -3141,7 +3141,7 @@ DWORD SaveMPQTables(TMPQArchive * ha) BSWAP_ARRAY16_UNSIGNED(pHiBlockTable, HiBlockTableSize64);
if(!FileStream_Write(ha->pStream, &ByteOffset, pHiBlockTable, (DWORD)HiBlockTableSize64))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
TablePos += HiBlockTableSize64;
}
@@ -3151,7 +3151,7 @@ DWORD SaveMPQTables(TMPQArchive * ha) ULONGLONG FileSize = ha->MpqPos + TablePos;
if(!FileStream_SetSize(ha->pStream, FileSize))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
}
// Write the MPQ header
@@ -3174,7 +3174,7 @@ DWORD SaveMPQTables(TMPQArchive * ha) BSWAP_TMPQHEADER(&SaveMpqHeader, MPQ_FORMAT_VERSION_3);
BSWAP_TMPQHEADER(&SaveMpqHeader, MPQ_FORMAT_VERSION_4);
if(!FileStream_Write(ha->pStream, &ha->MpqPos, &SaveMpqHeader, pHeader->dwHeaderSize))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
}
// Clear the changed flag
diff --git a/src/SBaseSubTypes.cpp b/src/SBaseSubTypes.cpp index 1ae9aae..10410dc 100644 --- a/src/SBaseSubTypes.cpp +++ b/src/SBaseSubTypes.cpp @@ -65,10 +65,10 @@ typedef struct _TSQPHash DWORD dwBlockIndex; // The hash of the file path, using method A. - DWORD dwName1; + DWORD dwHashCheck1; // The hash of the file path, using method B. - DWORD dwName2; + DWORD dwHashCheck2; } TSQPHash; @@ -213,12 +213,12 @@ TMPQHash * LoadSqpHashTable(TMPQArchive * ha) dwErrCode = ERROR_FILE_CORRUPT; // Copy the entry to the MPQ hash entry - pMpqHash->dwName1 = TempEntry.dwName1; - pMpqHash->dwName2 = TempEntry.dwName2; + pMpqHash->dwHashCheck1 = TempEntry.dwHashCheck1; + pMpqHash->dwHashCheck2 = TempEntry.dwHashCheck2; pMpqHash->dwBlockIndex = MPQ_BLOCK_INDEX(&TempEntry); pMpqHash->Locale = 0; pMpqHash->Platform = 0; - pMpqHash->Reserved = 0; + pMpqHash->Flags = 0; } } @@ -320,13 +320,13 @@ typedef struct _TMPKHeader typedef struct _TMPKHash { // The hash of the file path, using method A. - DWORD dwName1; + DWORD dwHashCheck1; // The hash of the file path, using method B. - DWORD dwName2; + DWORD dwHashCheck2; // The hash of the file path, using method C. - DWORD dwName3; + DWORD dwHashCheck3; // If the hash table entry is valid, this is the index into the block table of the file. // Otherwise, one of the following two values: @@ -590,16 +590,16 @@ TMPQHash * LoadMpkHashTable(TMPQArchive * ha) { // Finds the free hash entry in the hash table // We don't expect any errors here, because we are putting files to empty hash table - pHash = FindFreeHashEntry(pHashTable, pHeader->dwHashTableSize, pMpkHash[i].dwName1); + pHash = FindFreeHashEntry(pHashTable, pHeader->dwHashTableSize, pMpkHash[i].dwHashCheck1); assert(pHash->dwBlockIndex == HASH_ENTRY_FREE); // Copy the MPK hash entry to the hash table pHash->dwBlockIndex = pMpkHash[i].dwBlockIndex; pHash->Locale = 0; pHash->Platform = 0; - pHash->Reserved = 0; - pHash->dwName1 = pMpkHash[i].dwName2; - pHash->dwName2 = pMpkHash[i].dwName3; + pHash->Flags = 0; + pHash->dwHashCheck1 = pMpkHash[i].dwHashCheck2; + pHash->dwHashCheck2 = pMpkHash[i].dwHashCheck3; } } diff --git a/src/SCompression.cpp b/src/SCompression.cpp index 316a7fb..d585e82 100644 --- a/src/SCompression.cpp +++ b/src/SCompression.cpp @@ -678,7 +678,7 @@ int WINAPI SCompImplode(void * pvOutBuffer, int * pcbOutBuffer, void * pvInBuffe // Check for valid parameters if(!pcbOutBuffer || *pcbOutBuffer < cbInBuffer || !pvOutBuffer || !pvInBuffer) { - SetLastError(ERROR_INVALID_PARAMETER); + SErrSetLastError(ERROR_INVALID_PARAMETER); return 0; } @@ -710,7 +710,7 @@ int WINAPI SCompExplode(void * pvOutBuffer, int * pcbOutBuffer, void * pvInBuffe // Check for valid parameters if(!pcbOutBuffer || *pcbOutBuffer < cbInBuffer || !pvOutBuffer || !pvInBuffer) { - SetLastError(ERROR_INVALID_PARAMETER); + SErrSetLastError(ERROR_INVALID_PARAMETER); return 0; } @@ -729,7 +729,7 @@ int WINAPI SCompExplode(void * pvOutBuffer, int * pcbOutBuffer, void * pvInBuffe // Perform decompression if(!Decompress_PKLIB(pvOutBuffer, &cbOutBuffer, pvInBuffer, cbInBuffer)) { - SetLastError(ERROR_FILE_CORRUPT); + SErrSetLastError(ERROR_FILE_CORRUPT); return 0; } @@ -781,7 +781,7 @@ int WINAPI SCompCompress(void * pvOutBuffer, int * pcbOutBuffer, void * pvInBuff // Check for valid parameters if(!pcbOutBuffer || *pcbOutBuffer < cbInBuffer || !pvOutBuffer || !pvInBuffer) { - SetLastError(ERROR_INVALID_PARAMETER); + SErrSetLastError(ERROR_INVALID_PARAMETER); return 0; } @@ -817,7 +817,7 @@ int WINAPI SCompCompress(void * pvOutBuffer, int * pcbOutBuffer, void * pvInBuff // If at least one of the compressions remaing unknown, return an error if(uCompressionMask != 0) { - SetLastError(ERROR_NOT_SUPPORTED); + SErrSetLastError(ERROR_NOT_SUPPORTED); return 0; } } @@ -831,7 +831,7 @@ int WINAPI SCompCompress(void * pvOutBuffer, int * pcbOutBuffer, void * pvInBuff pbWorkBuffer = STORM_ALLOC(unsigned char, *pcbOutBuffer); if(pbWorkBuffer == NULL) { - SetLastError(ERROR_NOT_ENOUGH_MEMORY); + SErrSetLastError(ERROR_NOT_ENOUGH_MEMORY); return 0; } } @@ -980,7 +980,7 @@ static int SCompDecompressInternal( // If at least one of the compressions remaing unknown, return an error if(nCompressCount == 0 || uCompressionMask2 != 0) { - SetLastError(ERROR_NOT_SUPPORTED); + SErrSetLastError(ERROR_NOT_SUPPORTED); return 0; } @@ -990,7 +990,7 @@ static int SCompDecompressInternal( pbWorkBuffer = STORM_ALLOC(unsigned char, cbOutBuffer); if(pbWorkBuffer == NULL) { - SetLastError(ERROR_NOT_ENOUGH_MEMORY); + SErrSetLastError(ERROR_NOT_ENOUGH_MEMORY); return 0; } } @@ -1013,7 +1013,7 @@ static int SCompDecompressInternal( nResult = table[i].Decompress(pbOutput, &cbOutBuffer, pbInput, cbInLength); if(nResult == 0 || cbOutBuffer == 0) { - SetLastError(ERROR_FILE_CORRUPT); + SErrSetLastError(ERROR_FILE_CORRUPT); nResult = 0; break; } @@ -1051,7 +1051,7 @@ int WINAPI SCompDecompress2(void * pvOutBuffer, int * pcbOutBuffer, void * pvInB // Verify buffer sizes if(*pcbOutBuffer < cbInBuffer || cbInBuffer < 1) { - SetLastError(ERROR_INVALID_PARAMETER); + SErrSetLastError(ERROR_INVALID_PARAMETER); return 0; } @@ -1117,7 +1117,7 @@ int WINAPI SCompDecompress2(void * pvOutBuffer, int * pcbOutBuffer, void * pvInB break; default: - SetLastError(ERROR_FILE_CORRUPT); + SErrSetLastError(ERROR_FILE_CORRUPT); return 0; } @@ -1127,7 +1127,7 @@ int WINAPI SCompDecompress2(void * pvOutBuffer, int * pcbOutBuffer, void * pvInB pbWorkBuffer = STORM_ALLOC(unsigned char, *pcbOutBuffer); if(pbWorkBuffer == NULL) { - SetLastError(ERROR_NOT_ENOUGH_MEMORY); + SErrSetLastError(ERROR_NOT_ENOUGH_MEMORY); return 0; } } @@ -1151,7 +1151,7 @@ int WINAPI SCompDecompress2(void * pvOutBuffer, int * pcbOutBuffer, void * pvInB STORM_FREE(pbWorkBuffer); if(nResult == 0) - SetLastError(ERROR_FILE_CORRUPT); + SErrSetLastError(ERROR_FILE_CORRUPT); return nResult; } diff --git a/src/SFileAddFile.cpp b/src/SFileAddFile.cpp index f98a185..e04e876 100644 --- a/src/SFileAddFile.cpp +++ b/src/SFileAddFile.cpp @@ -257,7 +257,7 @@ static DWORD WriteDataToMpqFile( // Write the file sector
if(!FileStream_Write(ha->pStream, &ByteOffset, pbToWrite, dwBytesInSector))
{
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
break;
}
@@ -343,7 +343,7 @@ static DWORD RecryptFileData( // Write the recrypted array back
if(!FileStream_Write(ha->pStream, &hf->RawFilePos, SectorOffsetsCopy, dwSectorOffsLen))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
STORM_FREE(SectorOffsetsCopy);
}
@@ -373,7 +373,7 @@ static DWORD RecryptFileData( // Read the file sector
if(!FileStream_Read(ha->pStream, &RawFilePos, hf->pbFileSector, dwRawDataInSector))
{
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
break;
}
@@ -388,7 +388,7 @@ static DWORD RecryptFileData( // Write the sector back
if(!FileStream_Write(ha->pStream, &RawFilePos, hf->pbFileSector, dwRawDataInSector))
{
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
break;
}
@@ -443,7 +443,7 @@ DWORD SFileAddFile_Init( // Allocate the TMPQFile entry for newly added file
hf = CreateWritableHandle(ha, dwFileSize);
if(hf == NULL)
- return GetLastError();
+ return SErrGetLastError();
// Allocate file entry in the MPQ
if(dwErrCode == ERROR_SUCCESS)
@@ -477,7 +477,7 @@ DWORD SFileAddFile_Init( hf->pHashEntry = ha->pHashTable + dwHashIndex;
hf->pHashEntry->Locale = SFILE_LOCALE(lcFileLocale);
hf->pHashEntry->Platform = SFILE_PLATFORM(lcFileLocale);
- hf->pHashEntry->Reserved = 0;
+ hf->pHashEntry->Flags = 0;
}
// Prepare the file key
@@ -630,7 +630,7 @@ DWORD SFileAddFile_Write(TMPQFile * hf, const void * pvData, DWORD dwSize, DWORD if(hf->pPatchInfo != NULL)
{
if(!FileStream_Write(ha->pStream, &RawFilePos, hf->pPatchInfo, hf->pPatchInfo->dwLength))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
pFileEntry->dwCmpSize += hf->pPatchInfo->dwLength;
RawFilePos += hf->pPatchInfo->dwLength;
@@ -642,7 +642,7 @@ DWORD SFileAddFile_Write(TMPQFile * hf, const void * pvData, DWORD dwSize, DWORD if(hf->SectorOffsets != NULL)
{
if(!FileStream_Write(ha->pStream, &RawFilePos, hf->SectorOffsets, hf->SectorOffsets[0]))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
pFileEntry->dwCmpSize += hf->SectorOffsets[0];
RawFilePos += hf->SectorOffsets[0];
@@ -819,7 +819,7 @@ bool WINAPI SFileCreateFile( // Deal with the errors
if(dwErrCode != ERROR_SUCCESS)
- SetLastError(dwErrCode);
+ SErrSetLastError(dwErrCode);
return (dwErrCode == ERROR_SUCCESS);
}
@@ -865,7 +865,7 @@ bool WINAPI SFileWriteFile( // Deal with errors
if(dwErrCode != ERROR_SUCCESS)
- SetLastError(dwErrCode);
+ SErrSetLastError(dwErrCode);
return (dwErrCode == ERROR_SUCCESS);
}
@@ -886,7 +886,7 @@ bool WINAPI SFileFinishFile(HANDLE hFile) // Deal with errors
if(dwErrCode != ERROR_SUCCESS)
- SetLastError(dwErrCode);
+ SErrSetLastError(dwErrCode);
return (dwErrCode == ERROR_SUCCESS);
}
@@ -918,7 +918,7 @@ bool WINAPI SFileAddFileEx( // Check parameters
if(hMpq == NULL || szFileName == NULL || *szFileName == 0 || (ha = IsValidMpqHandle(hMpq)) == NULL)
{
- SetLastError(ERROR_INVALID_PARAMETER);
+ SErrSetLastError(ERROR_INVALID_PARAMETER);
return false;
}
@@ -974,7 +974,7 @@ bool WINAPI SFileAddFileEx( // Initiate adding file to the MPQ
if(!SFileCreateFile(hMpq, szArchivedName, FileTime, (DWORD)FileSize, g_lcFileLocale, dwFlags, &hMpqFile))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
}
// Write the file data to the MPQ
@@ -988,7 +988,7 @@ bool WINAPI SFileAddFileEx( // Read data from the local file
if(!FileStream_Read(pStream, NULL, pbFileData, dwBytesToRead))
{
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
break;
}
@@ -1014,7 +1014,7 @@ bool WINAPI SFileAddFileEx( // Add the file sectors to the MPQ
if(!SFileWriteFile(hMpqFile, pbFileData, dwBytesToRead, dwCompression))
{
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
break;
}
@@ -1027,7 +1027,7 @@ bool WINAPI SFileAddFileEx( if(hMpqFile != NULL)
{
if(!SFileFinishFile(hMpqFile))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
}
// Cleanup and exit
@@ -1036,7 +1036,7 @@ bool WINAPI SFileAddFileEx( if(pStream != NULL)
FileStream_Close(pStream);
if(dwErrCode != ERROR_SUCCESS)
- SetLastError(dwErrCode);
+ SErrSetLastError(dwErrCode);
return (dwErrCode == ERROR_SUCCESS);
}
@@ -1136,7 +1136,7 @@ bool WINAPI SFileRemoveFile(HANDLE hMpq, const char * szFileName, DWORD dwSearch FreeFileHandle(hf);
}
else
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
}
// If the file has been deleted, we need to invalidate
@@ -1155,7 +1155,7 @@ bool WINAPI SFileRemoveFile(HANDLE hMpq, const char * szFileName, DWORD dwSearch // Resolve error and exit
if(dwErrCode != ERROR_SUCCESS)
- SetLastError(dwErrCode);
+ SErrSetLastError(dwErrCode);
return (dwErrCode == ERROR_SUCCESS);
}
@@ -1226,7 +1226,7 @@ bool WINAPI SFileRenameFile(HANDLE hMpq, const char * szFileName, const char * s }
else
{
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
}
}
@@ -1236,7 +1236,7 @@ bool WINAPI SFileRenameFile(HANDLE hMpq, const char * szFileName, const char * s // Resolve error and exit
if(dwErrCode != ERROR_SUCCESS)
- SetLastError(dwErrCode);
+ SErrSetLastError(dwErrCode);
return (dwErrCode == ERROR_SUCCESS);
}
@@ -1249,7 +1249,7 @@ bool WINAPI SFileSetDataCompression(DWORD DataCompression) if((DataCompression & uValidMask) != DataCompression)
{
- SetLastError(ERROR_INVALID_PARAMETER);
+ SErrSetLastError(ERROR_INVALID_PARAMETER);
return false;
}
@@ -1269,7 +1269,7 @@ bool WINAPI SFileSetFileLocale(HANDLE hFile, LCID lcNewLocale) // Invalid handle => do nothing
if(hf == NULL)
{
- SetLastError(ERROR_INVALID_HANDLE);
+ SErrSetLastError(ERROR_INVALID_HANDLE);
return false;
}
@@ -1277,28 +1277,28 @@ bool WINAPI SFileSetFileLocale(HANDLE hFile, LCID lcNewLocale) ha = hf->ha;
if(ha->dwFlags & MPQ_FLAG_READ_ONLY)
{
- SetLastError(ERROR_ACCESS_DENIED);
+ SErrSetLastError(ERROR_ACCESS_DENIED);
return false;
}
// Do not allow unnamed access
if(hf->pFileEntry->szFileName == NULL)
{
- SetLastError(ERROR_CAN_NOT_COMPLETE);
+ SErrSetLastError(ERROR_CAN_NOT_COMPLETE);
return false;
}
// Do not allow to change locale of any internal file
if(IsInternalMpqFileName(hf->pFileEntry->szFileName))
{
- SetLastError(ERROR_INTERNAL_FILE);
+ SErrSetLastError(ERROR_INTERNAL_FILE);
return false;
}
// Do not allow changing file locales if there is no hash table
if(hf->pHashEntry == NULL)
{
- SetLastError(ERROR_NOT_SUPPORTED);
+ SErrSetLastError(ERROR_NOT_SUPPORTED);
return false;
}
@@ -1306,14 +1306,14 @@ bool WINAPI SFileSetFileLocale(HANDLE hFile, LCID lcNewLocale) pFileEntry = GetFileEntryExact(ha, hf->pFileEntry->szFileName, lcNewLocale, NULL);
if(pFileEntry != NULL)
{
- SetLastError(ERROR_ALREADY_EXISTS);
+ SErrSetLastError(ERROR_ALREADY_EXISTS);
return false;
}
// Update the locale in the hash table entry
hf->pHashEntry->Locale = SFILE_LOCALE(lcNewLocale);
hf->pHashEntry->Platform = SFILE_PLATFORM(lcNewLocale);
- hf->pHashEntry->Reserved = 0;
+ hf->pHashEntry->Flags = 0;
ha->dwFlags |= MPQ_FLAG_CHANGED;
return true;
}
@@ -1327,7 +1327,7 @@ bool WINAPI SFileSetAddFileCallback(HANDLE hMpq, SFILE_ADDFILE_CALLBACK AddFileC if(!IsValidMpqHandle(hMpq))
{
- SetLastError(ERROR_INVALID_HANDLE);
+ SErrSetLastError(ERROR_INVALID_HANDLE);
return false;
}
diff --git a/src/SFileAttributes.cpp b/src/SFileAttributes.cpp index dbcc456..7a26562 100644 --- a/src/SFileAttributes.cpp +++ b/src/SFileAttributes.cpp @@ -392,7 +392,7 @@ DWORD SAttrLoadAttributes(TMPQArchive * ha) // Load the entire file to memory
if(!SFileReadFile(hFile, pbAttrFile, cbAttrFile, &dwBytesRead, NULL))
- ha->dwFlags |= (GetLastError() == ERROR_FILE_CORRUPT) ? MPQ_FLAG_MALFORMED : 0;
+ ha->dwFlags |= (SErrGetLastError() == ERROR_FILE_CORRUPT) ? MPQ_FLAG_MALFORMED : 0;
// Parse the (attributes)
if(dwBytesRead == cbAttrFile)
@@ -478,7 +478,7 @@ DWORD WINAPI SFileGetAttributes(HANDLE hMpq) // Verify the parameters
if(!IsValidMpqHandle(hMpq))
{
- SetLastError(ERROR_INVALID_PARAMETER);
+ SErrSetLastError(ERROR_INVALID_PARAMETER);
return SFILE_INVALID_ATTRIBUTES;
}
@@ -492,14 +492,14 @@ bool WINAPI SFileSetAttributes(HANDLE hMpq, DWORD dwFlags) // Verify the parameters
if(!IsValidMpqHandle(hMpq))
{
- SetLastError(ERROR_INVALID_PARAMETER);
+ SErrSetLastError(ERROR_INVALID_PARAMETER);
return false;
}
// Not allowed when the archive is read-only
if(ha->dwFlags & MPQ_FLAG_READ_ONLY)
{
- SetLastError(ERROR_ACCESS_DENIED);
+ SErrSetLastError(ERROR_ACCESS_DENIED);
return false;
}
@@ -523,14 +523,14 @@ bool WINAPI SFileUpdateFileAttributes(HANDLE hMpq, const char * szFileName) // Verify the parameters
if(!IsValidMpqHandle(ha))
{
- SetLastError(ERROR_INVALID_PARAMETER);
+ SErrSetLastError(ERROR_INVALID_PARAMETER);
return false;
}
// Not allowed when the archive is read-only
if(ha->dwFlags & MPQ_FLAG_READ_ONLY)
{
- SetLastError(ERROR_ACCESS_DENIED);
+ SErrSetLastError(ERROR_ACCESS_DENIED);
return false;
}
diff --git a/src/SFileCompactArchive.cpp b/src/SFileCompactArchive.cpp index 1077daa..8ad1b4b 100644 --- a/src/SFileCompactArchive.cpp +++ b/src/SFileCompactArchive.cpp @@ -116,14 +116,14 @@ static DWORD CopyNonMpqData( // Read from the source stream
if(!FileStream_Read(pSrcStream, &ByteOffset, DataBuffer, dwToRead))
{
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
break;
}
// Write to the target stream
if(!FileStream_Write(pTrgStream, NULL, DataBuffer, dwToRead))
{
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
break;
}
@@ -175,7 +175,7 @@ static DWORD CopyMpqFileSectors( {
BSWAP_ARRAY32_UNSIGNED(hf->pPatchInfo, sizeof(DWORD) * 3);
if(!FileStream_Write(pNewStream, NULL, hf->pPatchInfo, hf->pPatchInfo->dwLength))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
// Save the size of the patch info
dwPatchSize = hf->pPatchInfo->dwLength;
@@ -202,7 +202,7 @@ static DWORD CopyMpqFileSectors( BSWAP_ARRAY32_UNSIGNED(SectorOffsetsCopy, dwSectorOffsLen);
if(!FileStream_Write(pNewStream, NULL, SectorOffsetsCopy, dwSectorOffsLen))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
dwBytesToCopy -= dwSectorOffsLen;
dwCmpSize += dwSectorOffsLen;
@@ -244,7 +244,7 @@ static DWORD CopyMpqFileSectors( // Read the file sector
if(!FileStream_Read(ha->pStream, &RawFilePos, hf->pbFileSector, dwRawDataInSector))
{
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
break;
}
@@ -262,7 +262,7 @@ static DWORD CopyMpqFileSectors( // Now write the sector back to the file
if(!FileStream_Write(pNewStream, NULL, hf->pbFileSector, dwRawDataInSector))
{
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
break;
}
@@ -289,10 +289,10 @@ static DWORD CopyMpqFileSectors( if(dwCrcLength != 0)
{
if(!FileStream_Read(ha->pStream, NULL, hf->SectorChksums, dwCrcLength))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
if(!FileStream_Write(pNewStream, NULL, hf->SectorChksums, dwCrcLength))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
// Update compact progress
if(ha->pfnCompactCB != NULL)
@@ -321,10 +321,10 @@ static DWORD CopyMpqFileSectors( if(pbExtraData != NULL)
{
if(!FileStream_Read(ha->pStream, NULL, pbExtraData, dwBytesToCopy))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
if(!FileStream_Write(pNewStream, NULL, pbExtraData, dwBytesToCopy))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
// Include these extra data in the compressed size
dwCmpSize += dwBytesToCopy;
@@ -501,7 +501,7 @@ bool WINAPI SFileSetMaxFileCount(HANDLE hMpq, DWORD dwMaxFileCount) // Return the error
if(dwErrCode != ERROR_SUCCESS)
- SetLastError(dwErrCode);
+ SErrSetLastError(dwErrCode);
return (dwErrCode == ERROR_SUCCESS);
}
@@ -514,7 +514,7 @@ bool WINAPI SFileSetCompactCallback(HANDLE hMpq, SFILE_COMPACT_CALLBACK pfnCompa if (!IsValidMpqHandle(hMpq))
{
- SetLastError(ERROR_INVALID_HANDLE);
+ SErrSetLastError(ERROR_INVALID_HANDLE);
return false;
}
@@ -574,7 +574,7 @@ bool WINAPI SFileCompactArchive(HANDLE hMpq, const TCHAR * szListFile, bool /* b // Create temporary file
pTempStream = FileStream_CreateFile(szTempFile, STREAM_PROVIDER_FLAT | BASE_PROVIDER_FILE);
if(pTempStream == NULL)
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
}
// Write the data before MPQ user data (if any)
@@ -615,7 +615,7 @@ bool WINAPI SFileCompactArchive(HANDLE hMpq, const TCHAR * szListFile, bool /* b BSWAP_TMPQHEADER(&SaveMpqHeader, MPQ_FORMAT_VERSION_3);
BSWAP_TMPQHEADER(&SaveMpqHeader, MPQ_FORMAT_VERSION_4);
if(!FileStream_Write(pTempStream, NULL, &SaveMpqHeader, ha->pHeader->dwHeaderSize))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
// Update the progress
ha->CompactBytesProcessed += ha->pHeader->dwHeaderSize;
@@ -649,6 +649,6 @@ bool WINAPI SFileCompactArchive(HANDLE hMpq, const TCHAR * szListFile, bool /* b if(pFileKeys != NULL)
STORM_FREE(pFileKeys);
if(dwErrCode != ERROR_SUCCESS)
- SetLastError(dwErrCode);
+ SErrSetLastError(dwErrCode);
return (dwErrCode == ERROR_SUCCESS);
}
diff --git a/src/SFileCreateArchive.cpp b/src/SFileCreateArchive.cpp index bae3dcc..9a311e0 100644 --- a/src/SFileCreateArchive.cpp +++ b/src/SFileCreateArchive.cpp @@ -68,7 +68,7 @@ static DWORD WriteNakedMPQHeader(TMPQArchive * ha) BSWAP_TMPQHEADER(&Header, MPQ_FORMAT_VERSION_3); BSWAP_TMPQHEADER(&Header, MPQ_FORMAT_VERSION_4); if(!FileStream_Write(ha->pStream, &ha->MpqPos, &Header, dwBytesToWrite)) - dwErrCode = GetLastError(); + dwErrCode = SErrGetLastError(); return dwErrCode; } @@ -121,7 +121,7 @@ bool WINAPI SFileCreateArchive2(const TCHAR * szMpqName, PSFILE_CREATE_MPQ pCrea // Check the parameters, if they are valid if(szMpqName == NULL || *szMpqName == 0 || pCreateInfo == NULL || phMpq == NULL) { - SetLastError(ERROR_INVALID_PARAMETER); + SErrSetLastError(ERROR_INVALID_PARAMETER); return false; } @@ -133,7 +133,7 @@ bool WINAPI SFileCreateArchive2(const TCHAR * szMpqName, PSFILE_CREATE_MPQ pCrea (pCreateInfo->dwSectorSize & (pCreateInfo->dwSectorSize - 1)) || (pCreateInfo->dwRawChunkSize & (pCreateInfo->dwRawChunkSize - 1))) { - SetLastError(ERROR_INVALID_PARAMETER); + SErrSetLastError(ERROR_INVALID_PARAMETER); return false; } @@ -145,7 +145,7 @@ bool WINAPI SFileCreateArchive2(const TCHAR * szMpqName, PSFILE_CREATE_MPQ pCrea if(SFileOpenArchive(szMpqName, 0, STREAM_PROVIDER_FLAT | BASE_PROVIDER_FILE | MPQ_OPEN_NO_ATTRIBUTES | MPQ_OPEN_NO_LISTFILE, &hMpq)) { SFileCloseArchive(hMpq); - SetLastError(ERROR_ALREADY_EXISTS); + SErrSetLastError(ERROR_ALREADY_EXISTS); return false; } @@ -191,7 +191,7 @@ bool WINAPI SFileCreateArchive2(const TCHAR * szMpqName, PSFILE_CREATE_MPQ pCrea FileStream_GetSize(pStream, &MpqPos); MpqPos = (MpqPos + 0x1FF) & (ULONGLONG)0xFFFFFFFFFFFFFE00ULL; if(!FileStream_SetSize(pStream, MpqPos)) - dwErrCode = GetLastError(); + dwErrCode = SErrGetLastError(); #ifdef _DEBUG // Debug code, used for testing StormLib @@ -275,7 +275,7 @@ bool WINAPI SFileCreateArchive2(const TCHAR * szMpqName, PSFILE_CREATE_MPQ pCrea { FileStream_Close(pStream); FreeArchiveHandle(ha); - SetLastError(dwErrCode); + SErrSetLastError(dwErrCode); ha = NULL; } diff --git a/src/SFileExtractFile.cpp b/src/SFileExtractFile.cpp index 6b3b767..b65410c 100644 --- a/src/SFileExtractFile.cpp +++ b/src/SFileExtractFile.cpp @@ -22,7 +22,7 @@ bool WINAPI SFileExtractFile(HANDLE hMpq, const char * szToExtract, const TCHAR if(dwErrCode == ERROR_SUCCESS) { if(!SFileOpenFileEx(hMpq, szToExtract, dwSearchScope, &hMpqFile)) - dwErrCode = GetLastError(); + dwErrCode = SErrGetLastError(); } // Create the local file @@ -30,7 +30,7 @@ bool WINAPI SFileExtractFile(HANDLE hMpq, const char * szToExtract, const TCHAR { pLocalFile = FileStream_CreateFile(szExtracted, 0); if(pLocalFile == NULL) - dwErrCode = GetLastError(); + dwErrCode = SErrGetLastError(); } // Copy the file's content @@ -42,7 +42,7 @@ bool WINAPI SFileExtractFile(HANDLE hMpq, const char * szToExtract, const TCHAR // dwTransferred is only set to nonzero if something has been read. // dwErrCode can be ERROR_SUCCESS or ERROR_HANDLE_EOF if(!SFileReadFile(hMpqFile, szBuffer, sizeof(szBuffer), &dwTransferred, NULL)) - dwErrCode = GetLastError(); + dwErrCode = SErrGetLastError(); if(dwErrCode == ERROR_HANDLE_EOF) dwErrCode = ERROR_SUCCESS; if(dwTransferred == 0) @@ -50,7 +50,7 @@ bool WINAPI SFileExtractFile(HANDLE hMpq, const char * szToExtract, const TCHAR // If something has been actually read, write it if(!FileStream_Write(pLocalFile, NULL, szBuffer, dwTransferred)) - dwErrCode = GetLastError(); + dwErrCode = SErrGetLastError(); } // Close the files @@ -59,6 +59,6 @@ bool WINAPI SFileExtractFile(HANDLE hMpq, const char * szToExtract, const TCHAR if(pLocalFile != NULL) FileStream_Close(pLocalFile); if(dwErrCode != ERROR_SUCCESS) - SetLastError(dwErrCode); + SErrSetLastError(dwErrCode); return (dwErrCode == ERROR_SUCCESS); } diff --git a/src/SFileFindFile.cpp b/src/SFileFindFile.cpp index 8f4849f..5e09026 100644 --- a/src/SFileFindFile.cpp +++ b/src/SFileFindFile.cpp @@ -444,7 +444,7 @@ HANDLE WINAPI SFileFindFirstFile(HANDLE hMpq, const char * szMask, SFILE_FIND_DA if(dwErrCode != ERROR_SUCCESS)
{
FreeMPQSearch(hs);
- SetLastError(dwErrCode);
+ SErrSetLastError(dwErrCode);
}
// Return the result value
@@ -466,7 +466,7 @@ bool WINAPI SFileFindNextFile(HANDLE hFind, SFILE_FIND_DATA * lpFindFileData) dwErrCode = DoMPQSearch(hs, lpFindFileData);
if(dwErrCode != ERROR_SUCCESS)
- SetLastError(dwErrCode);
+ SErrSetLastError(dwErrCode);
return (dwErrCode == ERROR_SUCCESS);
}
@@ -477,7 +477,7 @@ bool WINAPI SFileFindClose(HANDLE hFind) // Check the parameters
if(hs == NULL)
{
- SetLastError(ERROR_INVALID_HANDLE);
+ SErrSetLastError(ERROR_INVALID_HANDLE);
return false;
}
diff --git a/src/SFileGetFileInfo.cpp b/src/SFileGetFileInfo.cpp index 1746fa0..3c05e13 100644 --- a/src/SFileGetFileInfo.cpp +++ b/src/SFileGetFileInfo.cpp @@ -44,7 +44,7 @@ static DWORD GetMpqFileCount(TMPQArchive * ha) static bool GetInfo_ReturnError(DWORD dwErrCode)
{
- SetLastError(dwErrCode);
+ SErrSetLastError(dwErrCode);
return false;
}
@@ -411,12 +411,12 @@ bool WINAPI SFileGetFileInfo( case SFileInfoNameHash1:
if(hf->pHashEntry == NULL)
return GetInfo_ReturnError(ERROR_INVALID_PARAMETER);
- return GetInfo(pvFileInfo, cbFileInfo, &hf->pHashEntry->dwName1, sizeof(DWORD), pcbLengthNeeded);
+ return GetInfo(pvFileInfo, cbFileInfo, &hf->pHashEntry->dwHashCheck1, sizeof(DWORD), pcbLengthNeeded);
case SFileInfoNameHash2:
if(hf->pHashEntry == NULL)
return GetInfo_ReturnError(ERROR_INVALID_PARAMETER);
- return GetInfo(pvFileInfo, cbFileInfo, &hf->pHashEntry->dwName2, sizeof(DWORD), pcbLengthNeeded);
+ return GetInfo(pvFileInfo, cbFileInfo, &hf->pHashEntry->dwHashCheck2, sizeof(DWORD), pcbLengthNeeded);
case SFileInfoNameHash3:
return GetInfo(pvFileInfo, cbFileInfo, &pFileEntry->FileNameHash, sizeof(ULONGLONG), pcbLengthNeeded);
@@ -483,7 +483,7 @@ bool WINAPI SFileFreeFileInfo(void * pvFileInfo, SFileInfoClass InfoClass) break;
}
- SetLastError(ERROR_INVALID_PARAMETER);
+ SErrSetLastError(ERROR_INVALID_PARAMETER);
return false;
}
@@ -621,7 +621,7 @@ bool WINAPI SFileGetFileName(HANDLE hFile, char * szFileName) }
if(dwErrCode != ERROR_SUCCESS)
- SetLastError(dwErrCode);
+ SErrSetLastError(dwErrCode);
return (dwErrCode == ERROR_SUCCESS);
}
diff --git a/src/SFileListFile.cpp b/src/SFileListFile.cpp index b2a3a3c..3e7a175 100644 --- a/src/SFileListFile.cpp +++ b/src/SFileListFile.cpp @@ -203,7 +203,7 @@ static TListFileCache * CreateListFileCache( }
// This combination should never happen
- SetLastError(ERROR_INVALID_PARAMETER);
+ SErrSetLastError(ERROR_INVALID_PARAMETER);
assert(false);
return NULL;
}
@@ -411,8 +411,8 @@ static DWORD SListFileCreateNodeForAllLocales(TMPQArchive * ha, const char * szF TFileEntry * pFileEntry;
TMPQHash * pHashEnd;
TMPQHash * pHash;
- DWORD dwName1;
- DWORD dwName2;
+ DWORD dwHashCheck1;
+ DWORD dwHashCheck2;
// If we have HET table, use that one
if(ha->pHetTable != NULL)
@@ -432,8 +432,8 @@ static DWORD SListFileCreateNodeForAllLocales(TMPQArchive * ha, const char * szF {
// Get the end of the hash table and both names
pHashEnd = ha->pHashTable + ha->pHeader->dwHashTableSize;
- dwName1 = ha->pfnHashString(szFileName, MPQ_HASH_NAME_A);
- dwName2 = ha->pfnHashString(szFileName, MPQ_HASH_NAME_B);
+ dwHashCheck1 = ha->pfnHashString(szFileName, MPQ_HASH_NAME_A);
+ dwHashCheck2 = ha->pfnHashString(szFileName, MPQ_HASH_NAME_B);
// Some protectors set very high hash table size (0x00400000 items or more)
// in order to make this process very slow. We will ignore items
@@ -445,7 +445,7 @@ static DWORD SListFileCreateNodeForAllLocales(TMPQArchive * ha, const char * szF // Go through the hash table and put the name in each item that has the same name pair
for(pHash = ha->pHashTable; pHash < pHashEnd; pHash++)
{
- if(pHash->dwName1 == dwName1 && pHash->dwName2 == dwName2 && MPQ_BLOCK_INDEX(pHash) < ha->dwFileTableSize)
+ if(pHash->dwHashCheck1 == dwHashCheck1 && pHash->dwHashCheck2 == dwHashCheck2 && MPQ_BLOCK_INDEX(pHash) < ha->dwFileTableSize)
{
// Allocate file name for the file entry
AllocateFileName(ha, ha->pFileTable + MPQ_BLOCK_INDEX(pHash), szFileName);
@@ -649,7 +649,7 @@ static bool DoListFileSearch(TListFileCache * pCache, SFILE_FIND_DATA * lpFindFi // No more files
memset(lpFindFileData, 0, sizeof(SFILE_FIND_DATA));
- SetLastError(ERROR_NO_MORE_FILES);
+ SErrSetLastError(ERROR_NO_MORE_FILES);
return false;
}
@@ -726,7 +726,7 @@ HANDLE WINAPI SListFileFindFirstFile(HANDLE hMpq, const TCHAR * szListFile, cons if(!DoListFileSearch(pCache, lpFindFileData))
{
memset(lpFindFileData, 0, sizeof(SFILE_FIND_DATA));
- SetLastError(ERROR_NO_MORE_FILES);
+ SErrSetLastError(ERROR_NO_MORE_FILES);
FreeListFileCache(pCache);
pCache = NULL;
}
diff --git a/src/SFileOpenArchive.cpp b/src/SFileOpenArchive.cpp index 17fc7c9..47136fe 100644 --- a/src/SFileOpenArchive.cpp +++ b/src/SFileOpenArchive.cpp @@ -217,7 +217,7 @@ bool WINAPI SFileSetArchiveMarkers(PSFILE_MARKERS pMarkers) // Check structure minimum size if(pMarkers == NULL || pMarkers->dwSize < SFILE_MARKERS_MIN_SIZE) { - SetLastError(ERROR_INVALID_PARAMETER); + SErrSetLastError(ERROR_INVALID_PARAMETER); return false; } @@ -281,7 +281,7 @@ bool WINAPI SFileOpenArchive( // Verify the parameters if(szMpqName == NULL || *szMpqName == 0 || phMpq == NULL) { - SetLastError(ERROR_INVALID_PARAMETER); + SErrSetLastError(ERROR_INVALID_PARAMETER); return false; } @@ -367,7 +367,7 @@ bool WINAPI SFileOpenArchive( // Read the eventual MPQ header if(!FileStream_Read(ha->pStream, &ByteOffset, pbHeaderBuffer, dwBytesAvailable)) { - dwErrCode = GetLastError(); + dwErrCode = SErrGetLastError(); break; } @@ -408,7 +408,7 @@ bool WINAPI SFileOpenArchive( // Read the eventual MPQ header from the position where the user data points if(!FileStream_Read(ha->pStream, &TempByteOffset, ha->HeaderData, sizeof(ha->HeaderData))) { - dwErrCode = GetLastError(); + dwErrCode = SErrGetLastError(); break; } @@ -614,7 +614,7 @@ bool WINAPI SFileOpenArchive( { FileStream_Close(pStream); FreeArchiveHandle(ha); - SetLastError(dwErrCode); + SErrSetLastError(dwErrCode); ha = NULL; } @@ -639,7 +639,7 @@ bool WINAPI SFileSetDownloadCallback(HANDLE hMpq, SFILE_DOWNLOAD_CALLBACK Downlo // Do nothing if 'hMpq' is bad parameter if(!IsValidMpqHandle(hMpq)) { - SetLastError(ERROR_INVALID_HANDLE); + SErrSetLastError(ERROR_INVALID_HANDLE); return false; } @@ -664,7 +664,7 @@ bool WINAPI SFileFlushArchive(HANDLE hMpq) // Do nothing if 'hMpq' is bad parameter if((ha = IsValidMpqHandle(hMpq)) == NULL) { - SetLastError(ERROR_INVALID_HANDLE); + SErrSetLastError(ERROR_INVALID_HANDLE); return false; } @@ -730,7 +730,7 @@ bool WINAPI SFileFlushArchive(HANDLE hMpq) // Return the error if(dwResultError != ERROR_SUCCESS) - SetLastError(dwResultError); + SErrSetLastError(dwResultError); return (dwResultError == ERROR_SUCCESS); } @@ -746,7 +746,7 @@ bool WINAPI SFileCloseArchive(HANDLE hMpq) // Only if the handle is valid if(ha == NULL) { - SetLastError(ERROR_INVALID_HANDLE); + SErrSetLastError(ERROR_INVALID_HANDLE); return false; } diff --git a/src/SFileOpenFileEx.cpp b/src/SFileOpenFileEx.cpp index 2954669..e555303 100644 --- a/src/SFileOpenFileEx.cpp +++ b/src/SFileOpenFileEx.cpp @@ -97,7 +97,7 @@ static bool OpenLocalFile(const char * szFileName, HANDLE * PtrFile) else { FileStream_Close(pStream); - SetLastError(ERROR_NOT_ENOUGH_MEMORY); + SErrSetLastError(ERROR_NOT_ENOUGH_MEMORY); } } *PtrFile = NULL; @@ -160,14 +160,14 @@ bool OpenPatchedFile(HANDLE hMpq, const char * szFileName, HANDLE * PtrFile) if(hfBase && hf && hf->pFileEntry->dwFlags & MPQ_FILE_DELETE_MARKER) { SFileCloseFile((HANDLE)(hfBase)); - SetLastError(ERROR_FILE_DELETED); + SErrSetLastError(ERROR_FILE_DELETED); hfBase = NULL; } } } else { - SetLastError(ERROR_FILE_NOT_FOUND); + SErrSetLastError(ERROR_FILE_NOT_FOUND); } // Give the updated base MPQ @@ -397,7 +397,7 @@ bool WINAPI SFileOpenFileEx(HANDLE hMpq, const char * szFileName, DWORD dwSearch // Return error code if(dwErrCode != ERROR_SUCCESS) - SetLastError(dwErrCode); + SErrSetLastError(dwErrCode); return (dwErrCode == ERROR_SUCCESS); } @@ -421,7 +421,7 @@ bool WINAPI SFileCloseFile(HANDLE hFile) if(!IsValidFileHandle(hFile)) { - SetLastError(ERROR_INVALID_HANDLE); + SErrSetLastError(ERROR_INVALID_HANDLE); return false; } diff --git a/src/SFilePatchArchives.cpp b/src/SFilePatchArchives.cpp index 5d9450d..790b96b 100644 --- a/src/SFilePatchArchives.cpp +++ b/src/SFilePatchArchives.cpp @@ -1155,11 +1155,11 @@ bool WINAPI SFileOpenPatchArchive( }
else
{
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
}
}
- SetLastError(dwErrCode);
+ SErrSetLastError(dwErrCode);
return false;
}
diff --git a/src/SFileReadFile.cpp b/src/SFileReadFile.cpp index f2c17ba..ee91cac 100644 --- a/src/SFileReadFile.cpp +++ b/src/SFileReadFile.cpp @@ -224,7 +224,7 @@ static DWORD ReadMpqSectors(TMPQFile * hf, LPBYTE pbBuffer, DWORD dwByteOffset, } else { - dwErrCode = GetLastError(); + dwErrCode = SErrGetLastError(); } // Free all used buffers @@ -280,7 +280,7 @@ static DWORD ReadMpqFileSingleUnit(TMPQFile * hf, void * pvBuffer, DWORD dwFileP if(!FileStream_Read(ha->pStream, &RawFilePos, pbRawData, cbRawData)) { STORM_FREE(pbCompressed); - return GetLastError(); + return SErrGetLastError(); } // If the file is encrypted, we have to decrypt the data first @@ -411,7 +411,7 @@ static DWORD ReadMpkFileSingleUnit(TMPQFile * hf, void * pvBuffer, DWORD dwFileP if(!FileStream_Read(ha->pStream, &RawFilePos, pbRawData, pFileEntry->dwCmpSize)) { STORM_FREE(pbCompressed); - return GetLastError(); + return SErrGetLastError(); } // If the file is encrypted, we have to decrypt the data first @@ -666,7 +666,7 @@ static DWORD ReadMpqFileLocalFile(TMPQFile * hf, void * pvBuffer, DWORD dwFilePo if(!FileStream_Read(hf->pStream, &FilePosition1, pvBuffer, dwToRead)) { // If not all bytes have been read, then return the number of bytes read - if((dwErrCode = GetLastError()) == ERROR_HANDLE_EOF) + if((dwErrCode = SErrGetLastError()) == ERROR_HANDLE_EOF) { FileStream_GetPos(hf->pStream, &FilePosition2); dwBytesRead = (DWORD)(FilePosition2 - FilePosition1); @@ -699,13 +699,13 @@ bool WINAPI SFileReadFile(HANDLE hFile, void * pvBuffer, DWORD dwToRead, LPDWORD // Check valid parameters if((hf = IsValidFileHandle(hFile)) == NULL) { - SetLastError(ERROR_INVALID_HANDLE); + SErrSetLastError(ERROR_INVALID_HANDLE); return false; } if(pvBuffer == NULL) { - SetLastError(ERROR_INVALID_PARAMETER); + SErrSetLastError(ERROR_INVALID_PARAMETER); return false; } @@ -715,7 +715,7 @@ bool WINAPI SFileReadFile(HANDLE hFile, void * pvBuffer, DWORD dwToRead, LPDWORD dwErrCode = AllocatePatchInfo(hf, true); if(dwErrCode != ERROR_SUCCESS || hf->pPatchInfo == NULL) { - SetLastError(dwErrCode); + SErrSetLastError(dwErrCode); return false; } } @@ -768,7 +768,7 @@ bool WINAPI SFileReadFile(HANDLE hFile, void * pvBuffer, DWORD dwToRead, LPDWORD // If something failed, set the last error value if(dwErrCode != ERROR_SUCCESS) - SetLastError(dwErrCode); + SErrSetLastError(dwErrCode); return (dwErrCode == ERROR_SUCCESS); } @@ -818,7 +818,7 @@ DWORD WINAPI SFileGetFileSize(HANDLE hFile, LPDWORD pdwFileSizeHigh) return (DWORD)FileSize; } - SetLastError(ERROR_INVALID_HANDLE); + SErrSetLastError(ERROR_INVALID_HANDLE); return SFILE_INVALID_SIZE; } @@ -833,7 +833,7 @@ DWORD WINAPI SFileSetFilePointer(HANDLE hFile, LONG lFilePos, LONG * plFilePosHi // If the hFile is not a valid file handle, return an error. if(!IsValidFileHandle(hFile)) { - SetLastError(ERROR_INVALID_HANDLE); + SErrSetLastError(ERROR_INVALID_HANDLE); return SFILE_INVALID_POS; } @@ -881,7 +881,7 @@ DWORD WINAPI SFileSetFilePointer(HANDLE hFile, LONG lFilePos, LONG * plFilePosHi break; default: - SetLastError(ERROR_INVALID_PARAMETER); + SErrSetLastError(ERROR_INVALID_PARAMETER); return SFILE_INVALID_POS; } @@ -893,7 +893,7 @@ DWORD WINAPI SFileSetFilePointer(HANDLE hFile, LONG lFilePos, LONG * plFilePosHi { if(NewPosition > FileSize) // Position is negative { - SetLastError(ERROR_NEGATIVE_SEEK); + SErrSetLastError(ERROR_NEGATIVE_SEEK); return SFILE_INVALID_POS; } } diff --git a/src/SFileVerify.cpp b/src/SFileVerify.cpp index 9bbbb6b..96b5725 100644 --- a/src/SFileVerify.cpp +++ b/src/SFileVerify.cpp @@ -411,7 +411,7 @@ static DWORD VerifyRawMpqData( {
// Read the array of MD5
if(!FileStream_Read(ha->pStream, &DataOffset, pbMD5Array2, dwMD5Size))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
}
// Compare the array of MD5
@@ -631,7 +631,7 @@ static DWORD VerifyFile( SFileReadFile(hFile, Buffer, sizeof(Buffer), &dwBytesRead, NULL);
if(dwBytesRead == 0)
{
- if(GetLastError() == ERROR_CHECKSUM_ERROR)
+ if(SErrGetLastError() == ERROR_CHECKSUM_ERROR)
dwVerifyResult |= VERIFY_FILE_SECTOR_CRC_ERROR;
break;
}
@@ -868,7 +868,7 @@ DWORD SSignFileFinish(TMPQArchive * ha) // Write the signature to the MPQ. Don't use SFile* functions, but write the hash directly
if(!FileStream_Write(ha->pStream, &si.BeginExclude, WeakSignature, MPQ_SIGNATURE_FILE_SIZE))
- return GetLastError();
+ return SErrGetLastError();
return ERROR_SUCCESS;
}
@@ -895,7 +895,7 @@ bool WINAPI SFileGetFileChecksums(HANDLE hMpq, const char * szFileName, LPDWORD // If verification failed, return zero
if(dwVerifyResult & VERIFY_FILE_ERROR_MASK)
{
- SetLastError(ERROR_FILE_CORRUPT);
+ SErrSetLastError(ERROR_FILE_CORRUPT);
return false;
}
@@ -1026,21 +1026,21 @@ bool WINAPI SFileSignArchive(HANDLE hMpq, DWORD dwSignatureType) ha = IsValidMpqHandle(hMpq);
if(ha == NULL)
{
- SetLastError(ERROR_INVALID_PARAMETER);
+ SErrSetLastError(ERROR_INVALID_PARAMETER);
return false;
}
// We only support weak signature, and only for MPQs version 1.0
if(dwSignatureType != SIGNATURE_TYPE_WEAK)
{
- SetLastError(ERROR_INVALID_PARAMETER);
+ SErrSetLastError(ERROR_INVALID_PARAMETER);
return false;
}
// The archive must not be malformed and must not be read-only
if(ha->dwFlags & (MPQ_FLAG_READ_ONLY | MPQ_FLAG_MALFORMED))
{
- SetLastError(ERROR_ACCESS_DENIED);
+ SErrSetLastError(ERROR_ACCESS_DENIED);
return false;
}
diff --git a/src/SMemUtf8.cpp b/src/SMemUtf8.cpp index abc16ee..b9d5e9d 100644 --- a/src/SMemUtf8.cpp +++ b/src/SMemUtf8.cpp @@ -551,3 +551,32 @@ DWORD WINAPI SMemFileNameToUTF8( pOutLength[0] = nOutLength; return dwErrCode; } + +//----------------------------------------------------------------------------- +// (Set/Get)LastError wrapper + +#ifndef STORMLIB_WINDOWS +#ifndef STORMLIB_WIIU +static thread_local DWORD dwLastError = ERROR_SUCCESS; +#else +static DWORD dwLastError = ERROR_SUCCESS; +#endif +#endif + +void SErrSetLastError(DWORD dwErrCode) +{ +#ifdef STORMLIB_WINDOWS + SetLastError(dwErrCode); +#else + dwLastError = dwErrCode; +#endif +} + +DWORD SErrGetLastError() +{ +#ifdef STORMLIB_WINDOWS + return GetLastError(); +#else + return dwLastError; +#endif +} diff --git a/src/StormCommon.h b/src/StormCommon.h index 52f5cd0..ed67fe1 100644 --- a/src/StormCommon.h +++ b/src/StormCommon.h @@ -333,7 +333,7 @@ DWORD ConvertMpqHeaderToFormat4(TMPQArchive * ha, ULONGLONG MpqOffset, ULONGLONG bool IsValidHashEntry(TMPQArchive * ha, TMPQHash * pHash);
-TMPQHash * FindFreeHashEntry(TMPQArchive * ha, DWORD dwStartIndex, DWORD dwName1, DWORD dwName2, LCID lcFileLocale);
+TMPQHash * FindFreeHashEntry(TMPQArchive * ha, DWORD dwStartIndex, DWORD dwHashCheck1, DWORD dwHashCheck2, LCID lcFileLocale);
TMPQHash * GetFirstHashEntry(TMPQArchive * ha, const char * szFileName);
TMPQHash * GetNextHashEntry(TMPQArchive * ha, TMPQHash * pFirstHash, TMPQHash * pPrevHash);
TMPQHash * AllocateHashEntry(TMPQArchive * ha, TFileEntry * pFileEntry, LCID lcFileLocale);
diff --git a/src/StormLib.h b/src/StormLib.h index 4392bc0..e1db062 100644 --- a/src/StormLib.h +++ b/src/StormLib.h @@ -631,10 +631,10 @@ typedef struct _TMPQHeader typedef struct _TMPQHash { // The hash of the file path, using method A. - DWORD dwName1; + DWORD dwHashCheck1; // The hash of the file path, using method B. - DWORD dwName2; + DWORD dwHashCheck2; #ifdef STORMLIB_LITTLE_ENDIAN @@ -645,11 +645,11 @@ typedef struct _TMPQHash // The platform the file is used for. 0 indicates the default platform. // No other values have been observed. BYTE Platform; - BYTE Reserved; + BYTE Flags; #else - BYTE Reserved; + BYTE Flags; BYTE Platform; USHORT Locale; @@ -1158,14 +1158,10 @@ DWORD WINAPI SMemFileNameToUTF8( size_t * pOutLength); // Pointer to a variable that receives the needed length in bytes (optional) //----------------------------------------------------------------------------- -// Non-Windows support for SetLastError/GetLastError +// Stormlib-specific support for SetLastError/GetLastError -#ifndef STORMLIB_WINDOWS - -void SetLastError(DWORD dwErrCode); -DWORD GetLastError(); - -#endif +void SErrSetLastError(DWORD dwErrCode); +DWORD SErrGetLastError(); //----------------------------------------------------------------------------- // Functions from Storm.dll. They use slightly different names for keeping diff --git a/src/lzma/C/Threads.c b/src/lzma/C/Threads.c index 7af1da2..17f70be 100644 --- a/src/lzma/C/Threads.c +++ b/src/lzma/C/Threads.c @@ -9,7 +9,7 @@ static WRes GetError() { - DWORD res = GetLastError(); + DWORD res = SErrGetLastError(); return (res) ? (WRes)(res) : 1; } diff --git a/test/StormTest.cpp b/test/StormTest.cpp index c5b5121..285f381 100755 --- a/test/StormTest.cpp +++ b/test/StormTest.cpp @@ -614,7 +614,7 @@ static DWORD CalculateFileHash(TLogHelper * pLogger, LPCTSTR szFullPath, LPTSTR cbBytesToRead = ((FileSize - ByteOffset) > cbFileBlock) ? cbFileBlock : (DWORD)(FileSize - ByteOffset);
if(!FileStream_Read(pStream, &ByteOffset, pbFileBlock, cbBytesToRead))
{
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
break;
}
@@ -858,7 +858,7 @@ static DWORD ForEachFile_VerifyFileHash(LPCTSTR szFullPath, void * lpContext) StringCopy(szHashTextA, _countof(szHashTextA), szHashText);
if(_strnicmp(szHashTextA, GetFileText(pFileData), (SHA256_DIGEST_SIZE * 2)))
{
- SetLastError(dwErrCode = ERROR_FILE_CORRUPT);
+ SErrSetLastError(dwErrCode = ERROR_FILE_CORRUPT);
pLogger->PrintError(_T("File hash check failed: %s"), szFullPath);
}
}
@@ -1040,7 +1040,7 @@ static DWORD GetFilePatchCount(TLogHelper * pLogger, HANDLE hMpq, LPCSTR szFileN }
else
{
- if(GetLastError() != ERROR_FILE_DELETED)
+ if(SErrGetLastError() != ERROR_FILE_DELETED)
{
pLogger->PrintError("Open failed: %s", szFileName);
}
@@ -1163,7 +1163,7 @@ static DWORD WriteMpqUserDataHeader( UserData.dwHeaderOffs = (dwByteCount + sizeof(TMPQUserData));
UserData.cbUserDataHeader = dwByteCount / 2;
if(!FileStream_Write(pStream, &ByteOffset, &UserData, sizeof(TMPQUserData)))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
return dwErrCode;
}
@@ -1197,7 +1197,7 @@ static DWORD WriteFileData( // Write the data
if(!FileStream_Write(pStream, &ByteOffset, pbDataBuffer, cbToWrite))
{
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
break;
}
@@ -1235,14 +1235,14 @@ static DWORD CopyFileData( BytesToRead = ((EndOffset - ByteOffset) > BlockLength) ? BlockLength : (DWORD)(EndOffset - ByteOffset);
if(!FileStream_Read(pStream1, &ByteOffset, pbCopyBuffer, BytesToRead))
{
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
break;
}
// Write to the destination file
if(!FileStream_Write(pStream2, NULL, pbCopyBuffer, BytesToRead))
{
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
break;
}
@@ -1519,7 +1519,7 @@ static DWORD LoadMpqFile(TLogHelper & Logger, HANDLE hMpq, LPCSTR szFileName, LC }
else
{
- if((dwSearchFlags & SEARCH_FLAG_IGNORE_ERRORS) == 0 && GetLastError() != ERROR_FILE_DELETED)
+ if((dwSearchFlags & SEARCH_FLAG_IGNORE_ERRORS) == 0 && SErrGetLastError() != ERROR_FILE_DELETED)
{
dwErrCode = Logger.PrintError("Open failed: %s", szFileName);
}
@@ -1663,7 +1663,7 @@ static DWORD SearchArchive( hFind = SFileFindFirstFile(hMpq, "*", &sf, szListFile);
if(hFind == NULL)
{
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
dwErrCode = (dwErrCode == ERROR_NO_MORE_FILES) ? ERROR_SUCCESS : dwErrCode;
return dwErrCode;
}
@@ -1866,11 +1866,11 @@ static DWORD OpenExistingArchive(TLogHelper * pLogger, LPCTSTR szFullPath, DWORD pLogger->PrintProgress(_T("Opening archive %s ..."), GetShortPlainName(szFullPath));
if(!SFileOpenArchive(szFullPath, 0, dwOpenFlags, &hMpq))
{
- switch(dwErrCode = GetLastError())
+ switch(dwErrCode = SErrGetLastError())
{
// case ERROR_BAD_FORMAT: // If the error is ERROR_BAD_FORMAT, try to open with MPQ_OPEN_FORCE_MPQ_V1
// bReopenResult = SFileOpenArchive(szMpqName, 0, dwFlags | MPQ_OPEN_FORCE_MPQ_V1, &hMpq);
-// dwErrCode = (bReopenResult == false) ? GetLastError() : ERROR_SUCCESS;
+// dwErrCode = (bReopenResult == false) ? SErrGetLastError() : ERROR_SUCCESS;
// break;
case ERROR_AVI_FILE: // Ignore the error if it's an AVI file or if the file is incomplete
@@ -1960,7 +1960,7 @@ static DWORD AddFileToMpq( }
else
{
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
}
// Check the expected error code
@@ -2006,7 +2006,7 @@ static DWORD AddLocalFileToMpq( {
if(bMustSucceed)
return pLogger->PrintError("Failed to add the file %s", szArchivedName);
- return GetLastError();
+ return SErrGetLastError();
}
// Verify the file unless it was lossy compression
@@ -2033,7 +2033,7 @@ static DWORD RemoveMpqFile(TLogHelper * pLogger, HANDLE hMpq, LPCSTR szFileName, // Perform the deletion
if(!SFileRemoveFile(hMpq, szFileName, 0))
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
if(dwErrCode != dwExpectedError)
return pLogger->PrintError("Unexpected result from SFileRemoveFile(%s)", szFileName);
@@ -2059,7 +2059,7 @@ static void TestGetFileInfo( // Call the get file info
bResult = SFileGetFileInfo(hMpqOrFile, InfoClass, pvFileInfo, cbFileInfo, pcbLengthNeeded);
if(!bResult)
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
// Check the expected results
if(bResult != bExpectedResult)
@@ -2758,7 +2758,7 @@ static DWORD TestOpenArchive( // Reset error code, if the failure is expected
if((dwErrCode != ERROR_SUCCESS || hMpq == NULL) && (dwFlags & TFLG_WILL_FAIL))
- SetLastError(dwErrCode = ERROR_SUCCESS);
+ SErrSetLastError(dwErrCode = ERROR_SUCCESS);
// Cleanup and exit
if(hMpq != NULL)
@@ -3092,7 +3092,7 @@ static DWORD TestCreateArchive_TestGaps(LPCTSTR szPlainName) SFileCloseFile(hFile);
}
else
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
}
}
@@ -3111,7 +3111,7 @@ static DWORD TestCreateArchive_TestGaps(LPCTSTR szPlainName) SFileCloseFile(hFile);
}
else
- dwErrCode = GetLastError();
+ dwErrCode = SErrGetLastError();
}
// Now check the positions
@@ -3869,23 +3869,25 @@ static DWORD TestUtf8Conversions(const BYTE * szTestString, const TCHAR * szList static void Test_PlayingSpace()
{
-/*
HANDLE hMpq;
HANDLE hFile;
+ LPBYTE pbData;
+ DWORD dwFileSize = 529298;
+ DWORD dwBytesRead = 0;
- if(SFileOpenArchive(_T("e:\\Ladik\\Incoming\\WoW-1.11.2.5464-to-1.12.0.5595-enUS-patch.exe"), 0, 0, &hMpq))
+ if(SFileOpenArchive(_T("c:\\War3.mpq"), 0, 0, &hMpq))
{
- if(SFileOpenFileEx(hMpq, "AccountLogin.xml", 0, &hFile))
+ if(SFileOpenFileEx(hMpq, "(listfile)", 0, &hFile))
{
- DWORD dwBytesRead = 0;
- BYTE Buffer[1024];
-
- SFileReadFile(hFile, Buffer, sizeof(Buffer), &dwBytesRead, NULL);
+ if((pbData = STORM_ALLOC(BYTE, dwFileSize)) != NULL)
+ {
+ SFileReadFile(hFile, pbData, dwFileSize, &dwBytesRead, NULL);
+ STORM_FREE(pbData);
+ }
SFileCloseFile(hFile);
}
SFileCloseArchive(hMpq);
}
-*/
}
//-----------------------------------------------------------------------------
|