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);
      }
 -*/
 +
  }
  //-----------------------------------------------------------------------------
  | 
