diff options
| -rw-r--r-- | src/SFileOpenArchive.cpp | 15 | ||||
| -rw-r--r-- | src/StormLib.h | 2 | ||||
| -rwxr-xr-x | test/StormTest.cpp | 6 |
3 files changed, 15 insertions, 8 deletions
diff --git a/src/SFileOpenArchive.cpp b/src/SFileOpenArchive.cpp index 47136fe..58f4d01 100644 --- a/src/SFileOpenArchive.cpp +++ b/src/SFileOpenArchive.cpp @@ -51,6 +51,7 @@ static MTYPE CheckMapType(LPCTSTR szFileName, LPBYTE pbHeaderBuffer, size_t cbHe { LPDWORD HeaderInt32 = (LPDWORD)pbHeaderBuffer; LPCTSTR szExtension; + MTYPE TypeByExtension = MapTypeNotRecognized; // Don't do any checks if there is not at least 16 bytes if(cbHeaderBuffer > 0x10) @@ -65,16 +66,22 @@ static MTYPE CheckMapType(LPCTSTR szFileName, LPBYTE pbHeaderBuffer, size_t cbHe // fake Warcraft III header into the Starcraft II maps if((szExtension = _tcsrchr(szFileName, _T('.'))) != NULL) { + // Check for Starcraft I maps by extension + if(!_tcsicmp(szExtension, _T(".scm")) || !_tcsicmp(szExtension, _T(".scx"))) + { + return MapTypeStarcraft; + } + // Check for Starcraft II maps by extension if(!_tcsicmp(szExtension, _T(".s2ma")) || !_tcsicmp(szExtension, _T(".SC2Map")) || !_tcsicmp(szExtension, _T(".SC2Mod"))) { return MapTypeStarcraft2; } - // Check for Starcraft I maps by extension - if(!_tcsicmp(szExtension, _T(".scm")) || !_tcsicmp(szExtension, _T(".scx"))) + // Check for Warcraft III maps by extension + if(!_tcsicmp(szExtension, _T(".w3m")) || !_tcsicmp(szExtension, _T(".w3x"))) { - return MapTypeStarcraft; + TypeByExtension = MapTypeWarcraft3; } } @@ -112,7 +119,7 @@ static MTYPE CheckMapType(LPCTSTR szFileName, LPBYTE pbHeaderBuffer, size_t cbHe } // No special map type recognized - return MapTypeNotRecognized; + return TypeByExtension; } static bool IsStarcraftBetaArchive(TMPQHeader * pHeader) diff --git a/src/StormLib.h b/src/StormLib.h index 1f3dee7..5e262db 100644 --- a/src/StormLib.h +++ b/src/StormLib.h @@ -1,5 +1,5 @@ /*****************************************************************************/ -/* StormLib.h Copyright (c) Ladislav Zezula 1999-2017 */ +/* StormLib.h Copyright (c) Ladislav Zezula 1999-2025 */ /*---------------------------------------------------------------------------*/ /* StormLib library v 9.30 */ /* */ diff --git a/test/StormTest.cpp b/test/StormTest.cpp index e3a210e..d53c92c 100755 --- a/test/StormTest.cpp +++ b/test/StormTest.cpp @@ -3955,14 +3955,14 @@ 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:\\2.mpq"), 0, 0, &hMpq))
+ if(SFileOpenArchive(_T("e:\\Legion_TD_11_2d-BETA_2_TeamOZE.w3x"), 0, 0, &hMpq))
{
if(SFileOpenFileEx(hMpq, "(listfile)", 0, &hFile))
{
@@ -3975,7 +3975,7 @@ static void Test_PlayingSpace() }
SFileCloseArchive(hMpq);
}
-*/
+
}
//-----------------------------------------------------------------------------
|
