Support absolute paths for XML includes.
Use standard path resolver when searching for includes. Includes like <foo include="/Aircraft/Instruments/myfile.xml"> are now also supported - no need for <foo include="../../../Aircraft/Instruments/myfile.xml">.
This commit is contained in:
parent
c7152af191
commit
36a8243f73
@ -21,6 +21,7 @@
|
||||
#include <simgear/math/SGMath.hxx>
|
||||
#include <simgear/misc/sg_path.hxx>
|
||||
#include <simgear/xml/easyxml.hxx>
|
||||
#include <simgear/misc/ResourceManager.hxx>
|
||||
|
||||
#include "props.hxx"
|
||||
#include "props_io.hxx"
|
||||
@ -170,9 +171,12 @@ PropsVisitor::startElement (const char * name, const XMLAttributes &atts)
|
||||
// Check for an include.
|
||||
attval = atts.getValue("include");
|
||||
if (attval != 0) {
|
||||
SGPath path(SGPath(_base).dir());
|
||||
path.append(attval);
|
||||
try {
|
||||
SGPath path = simgear::ResourceManager::instance()->findPath(attval, SGPath(_base).dir());
|
||||
if (path.isNull())
|
||||
{
|
||||
throw sg_io_exception("Cannot open file", sg_location(attval));
|
||||
}
|
||||
readProperties(path.str(), _root, 0, _extended);
|
||||
} catch (sg_io_exception &e) {
|
||||
setException(e);
|
||||
@ -242,9 +246,12 @@ PropsVisitor::startElement (const char * name, const XMLAttributes &atts)
|
||||
bool omit = false;
|
||||
attval = atts.getValue("include");
|
||||
if (attval != 0) {
|
||||
SGPath path(SGPath(_base).dir());
|
||||
path.append(attval);
|
||||
try {
|
||||
SGPath path = simgear::ResourceManager::instance()->findPath(attval, SGPath(_base).dir());
|
||||
if (path.isNull())
|
||||
{
|
||||
throw sg_io_exception("Cannot open file", sg_location(attval));
|
||||
}
|
||||
readProperties(path.str(), node, 0, _extended);
|
||||
} catch (sg_io_exception &e) {
|
||||
setException(e);
|
||||
|
Loading…
Reference in New Issue
Block a user