detect format error on Import..., and convert (as it was intended)

This commit is contained in:
Rudolf Polzer 2011-01-21 23:34:25 +01:00
parent 96d42ebc73
commit 73c9441a02

View File

@ -1643,6 +1643,13 @@ bool Map_ImportFile(const char* filename)
goto tryDecompile; goto tryDecompile;
{ {
const MapFormat* format = NULL;
const char* moduleName = findModuleName(&GlobalFiletypes(), MapFormat::Name(), path_get_extension(filename));
if(string_not_empty(moduleName))
format = ReferenceAPI_getMapModules().findModule(moduleName);
if(format)
format->wrongFormat = false;
Resource* resource = GlobalReferenceCache().capture(filename); Resource* resource = GlobalReferenceCache().capture(filename);
resource->refresh(); // avoid loading old version if map has changed on disk since last import resource->refresh(); // avoid loading old version if map has changed on disk since last import
if(!resource->load()) if(!resource->load())
@ -1650,6 +1657,12 @@ bool Map_ImportFile(const char* filename)
GlobalReferenceCache().release(filename); GlobalReferenceCache().release(filename);
goto tryDecompile; goto tryDecompile;
} }
if(format)
if(format->wrongFormat)
{
GlobalReferenceCache().release(filename);
goto tryDecompile;
}
NodeSmartReference clone(NewMapRoot("")); NodeSmartReference clone(NewMapRoot(""));
Node_getTraversable(*resource->getNode())->traverse(CloneAll(clone)); Node_getTraversable(*resource->getNode())->traverse(CloneAll(clone));
Map_gatherNamespaced(clone); Map_gatherNamespaced(clone);