Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions src/SFileOpenArchive.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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;
}
}

Expand Down Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion src/StormLib.h
Original file line number Diff line number Diff line change
@@ -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 */
/* */
Expand Down
6 changes: 3 additions & 3 deletions test/StormTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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))
{
Expand All @@ -3975,7 +3975,7 @@ static void Test_PlayingSpace()
}
SFileCloseArchive(hMpq);
}
*/

}

//-----------------------------------------------------------------------------
Expand Down