From 705768e6d93888e843595fe543c9dae20f04ee07 Mon Sep 17 00:00:00 2001 From: Tai Chi Minh Ralph Eastwood Date: Fri, 5 Apr 2013 13:25:39 +0100 Subject: [PATCH] - better signature checking for magic IBSP --- code/Q3BSPFileImporter.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/code/Q3BSPFileImporter.cpp b/code/Q3BSPFileImporter.cpp index 59376813e..0ea898cfc 100644 --- a/code/Q3BSPFileImporter.cpp +++ b/code/Q3BSPFileImporter.cpp @@ -171,11 +171,22 @@ Q3BSPFileImporter::~Q3BSPFileImporter() // Returns true, if the loader can read this. bool Q3BSPFileImporter::CanRead( const std::string& rFile, IOSystem* pIOHandler, bool checkSig ) const { - if(!checkSig) { + if(checkSig) { + char signature[5]; + std::string expected = "IBSP"; + Assimp::IOStream *pStream = pIOHandler.Open(rFile, "r"); + if (pStream.Read(signature, 1, 4) == 4) { + signature[4] = '\0'; + if (expected == signature) { + delete pStream; + return true; + } + } + delete pStream; + } else { return SimpleExtensionCheck( rFile, "bsp" ); - } - // TODO perhaps add keyword based detection - return false; + } + return false; } // ------------------------------------------------------------------------------------------------