From 486a7dd29f3bdf884d4be5588d9171daa5da1bae Mon Sep 17 00:00:00 2001 From: Ladislav Zezula Date: Thu, 3 Jul 2025 09:27:16 +0200 Subject: Replaced GetLastError with SErrGetLastError --- src/FileStream.cpp | 73 +++++++++++++++++---------------------------- src/SBaseCommon.cpp | 52 ++++++++++++++++---------------- src/SBaseDumpData.cpp | 4 +-- src/SBaseFileTable.cpp | 26 ++++++++-------- src/SBaseSubTypes.cpp | 24 +++++++-------- src/SCompression.cpp | 26 ++++++++-------- src/SFileAddFile.cpp | 60 ++++++++++++++++++------------------- src/SFileAttributes.cpp | 12 ++++---- src/SFileCompactArchive.cpp | 30 +++++++++---------- src/SFileCreateArchive.cpp | 12 ++++---- src/SFileExtractFile.cpp | 10 +++---- src/SFileFindFile.cpp | 6 ++-- src/SFileGetFileInfo.cpp | 10 +++---- src/SFileListFile.cpp | 16 +++++----- src/SFileOpenArchive.cpp | 18 +++++------ src/SFileOpenFileEx.cpp | 10 +++---- src/SFilePatchArchives.cpp | 4 +-- src/SFileReadFile.cpp | 24 +++++++-------- src/SFileVerify.cpp | 14 ++++----- src/SMemUtf8.cpp | 29 ++++++++++++++++++ src/StormCommon.h | 2 +- src/StormLib.h | 18 +++++------ src/lzma/C/Threads.c | 2 +- 23 files changed, 244 insertions(+), 238 deletions(-) (limited to 'src') 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; } -- cgit v1.2.3