1
0
Fork 0

#348 related: More places where missing files were not reported properly

Whenever resolving a (relative) path to an absolute path with
'resolve_maybe_aircraft_path', check if the result is empty and report original
(relative) path as missing. Otherwise no or a meaningless message is
issued ("File '' not found.").
This commit is contained in:
ThorstenB 2011-07-03 13:06:41 +02:00
parent 979ad55c61
commit 4fd1e219a4
5 changed files with 55 additions and 22 deletions

View file

@ -119,23 +119,29 @@ void FGXMLAutopilotGroupImplementation::initFrom( SGPropertyNode_ptr rootNode, c
} }
SGPath config = globals->resolve_maybe_aircraft_path(pathNode->getStringValue()); SGPath config = globals->resolve_maybe_aircraft_path(pathNode->getStringValue());
if (config.isNull())
{
SG_LOG( SG_ALL, SG_ALERT, "Cannot find property-rule configuration file '" << pathNode->getStringValue() << "'." );
}
else
{
SG_LOG( SG_ALL, SG_INFO, "Reading property-rule configuration from " << config.str() );
SG_LOG( SG_ALL, SG_INFO, "Reading property-rule configuration from " << config.str() ); try {
SGPropertyNode_ptr root = new SGPropertyNode();
readProperties( config.str(), root );
try { SG_LOG( SG_AUTOPILOT, SG_INFO, "adding property-rule subsystem " << apName );
SGPropertyNode_ptr root = new SGPropertyNode(); FGXMLAutopilot::Autopilot * ap = new FGXMLAutopilot::Autopilot( autopilotNodes[i], root );
readProperties( config.str(), root ); ap->set_name( apName );
set_subsystem( apName, ap );
_autopilotNames.push_back( apName );
SG_LOG( SG_AUTOPILOT, SG_INFO, "adding property-rule subsystem " << apName ); } catch (const sg_exception& e) {
FGXMLAutopilot::Autopilot * ap = new FGXMLAutopilot::Autopilot( autopilotNodes[i], root ); SG_LOG( SG_AUTOPILOT, SG_ALERT, "Failed to load property-rule configuration: "
ap->set_name( apName ); << config.str() << ":" << e.getMessage() );
set_subsystem( apName, ap ); continue;
_autopilotNames.push_back( apName ); }
} catch (const sg_exception& e) {
SG_LOG( SG_AUTOPILOT, SG_ALERT, "Failed to load property-rule configuration: "
<< config.str() << ":" << e.getMessage() );
continue;
} }
} }
} }

View file

@ -346,6 +346,11 @@ int HUD::load(const char *file, float x, float y, int level, const string& inden
const int MAXNEST = 10; const int MAXNEST = 10;
SGPath path(globals->resolve_maybe_aircraft_path(file)); SGPath path(globals->resolve_maybe_aircraft_path(file));
if (path.isNull())
{
SG_LOG(SG_INPUT, SG_ALERT, "HUD: Cannot find configuration file '" << file << "'.");
return 0x2;
}
if (!level) { if (!level) {
SG_LOG(SG_INPUT, TREE, endl << "load " << file); SG_LOG(SG_INPUT, TREE, endl << "load " << file);
@ -362,7 +367,7 @@ int HUD::load(const char *file, float x, float y, int level, const string& inden
int ret = 0; int ret = 0;
ifstream input(path.c_str()); ifstream input(path.c_str());
if (!input.good()) { if (!input.good()) {
SG_LOG(SG_INPUT, SG_ALERT, "HUD: Cannot read configuration from " << path.str()); SG_LOG(SG_INPUT, SG_ALERT, "HUD: Cannot read configuration from '" << path.c_str() << "'");
return 0x4; return 0x4;
} }

View file

@ -1229,7 +1229,15 @@ do_load_xml_to_proptree(const SGPropertyNode * arg)
std::string icao = arg->getStringValue("icao"); std::string icao = arg->getStringValue("icao");
if (icao.empty()) { if (icao.empty()) {
if (file.isRelative()) { if (file.isRelative()) {
file = globals->resolve_maybe_aircraft_path(file.str()); SGPath absPath = globals->resolve_maybe_aircraft_path(file.str());
if (!absPath.isNull())
file = absPath;
else
{
SG_LOG(SG_IO, SG_ALERT, "loadxml: Cannot find XML property file '"
<< file.str() << "'.");
return false;
}
} }
} else { } else {
if (!XMLLoader::findAirportData(icao, file.str(), file)) { if (!XMLLoader::findAirportData(icao, file.str(), file)) {

View file

@ -187,8 +187,19 @@ static osg::Node* fgCreateSplashCamera()
fgSetString("/sim/startup/program-name", namestring); fgSetString("/sim/startup/program-name", namestring);
delete[] namestring; delete[] namestring;
SGPath tpath( globals->get_fg_root() ); SGPath tpath;
if (splash_texture == NULL || !strcmp(splash_texture, "")) { if (splash_texture && strcmp(splash_texture, "")) {
tpath = globals->resolve_maybe_aircraft_path(splash_texture);
if (tpath.isNull())
{
SG_LOG( SG_GENERAL, SG_ALERT, "Cannot find splash screen file '" << splash_texture
<< "'. Using default." );
}
}
if (tpath.isNull()) {
// no splash screen specified - select random image
tpath = globals->get_fg_root();
// load in the texture data // load in the texture data
int num = (int)(sg_random() * 5.0 + 1.0); int num = (int)(sg_random() * 5.0 + 1.0);
char num_str[5]; char num_str[5];
@ -197,10 +208,8 @@ static osg::Node* fgCreateSplashCamera()
tpath.append( "Textures/Splash" ); tpath.append( "Textures/Splash" );
tpath.concat( num_str ); tpath.concat( num_str );
tpath.concat( ".png" ); tpath.concat( ".png" );
} else {
tpath = globals->resolve_maybe_aircraft_path(splash_texture);
} }
osg::Texture2D* splashTexture = new osg::Texture2D; osg::Texture2D* splashTexture = new osg::Texture2D;
splashTexture->setImage(osgDB::readImageFile(tpath.c_str())); splashTexture->setImage(osgDB::readImageFile(tpath.c_str()));

View file

@ -880,8 +880,13 @@ void FGNasalSys::loadPropertyScripts(SGPropertyNode* n)
if (!p.isAbsolute() || !p.exists()) if (!p.isAbsolute() || !p.exists())
{ {
p = globals->resolve_maybe_aircraft_path(file); p = globals->resolve_maybe_aircraft_path(file);
if (p.isNull())
{
SG_LOG(SG_NASAL, SG_ALERT, "Cannot find Nasal script '" <<
file << "' for module '" << module << "'.");
}
} }
ok &= loadModule(p, module); ok &= p.isNull() ? false : loadModule(p, module);
j++; j++;
} }