1
0
Fork 0

Tweaks to fg-aircraft handling.

Warn (but do not require, since people would probably complain) when
added paths do not contain an Aircraft subdir. When people specify
a path which ends in /Aircraft, use the parent directory.
This commit is contained in:
James Turner 2014-01-15 17:10:12 +00:00
parent d8a3f160ef
commit 2b55acd3eb
2 changed files with 25 additions and 2 deletions

View file

@ -46,7 +46,16 @@ protected:
const string_list& paths(globals->get_aircraft_paths());
string_list::const_iterator it = paths.begin();
for (; it != paths.end(); ++it) {
VisitResult vr = visitDir(simgear::Dir(*it), 0);
SGPath p(*it);
// additional aircraft-paths are supposed to specify the directory
// containing the 'Aircraft' dir (same structure as fg-root, so cross-
// aircraft resource paths can be resolved correctly). Some users omit
// this, so check for both.
p.append("Aircraft");
if (!p.exists())
p = SGPath(*it);
VisitResult vr = visitDir(p, 0);
if (vr != VISIT_CONTINUE) {
return vr;
}

View file

@ -401,9 +401,23 @@ void FGGlobals::append_aircraft_path(const std::string& path)
{
SGPath dirPath(path);
if (!dirPath.exists()) {
SG_LOG(SG_GENERAL, SG_WARN, "aircraft path not found:" << path);
SG_LOG(SG_GENERAL, SG_ALERT, "aircraft path not found:" << path);
return;
}
SGPath acSubdir(dirPath);
acSubdir.append("Aircraft");
if (!acSubdir.exists()) {
if (dirPath.file() == "Aircraft") {
dirPath = dirPath.dir();
SG_LOG(SG_GENERAL, SG_WARN, "Specified an aircraft-dir path ending in 'Aircraft':" << path
<< ", will instead use parent directory:" << dirPath);
} else {
SG_LOG(SG_GENERAL, SG_ALERT, "Aircraft-dir path '" << path <<
"' does not contain an 'Aircraft' subdirectory, cross-aircraft paths will not resolve correctly.");
}
}
std::string abspath = dirPath.realpath();
unsigned int index = fg_aircraft_dirs.size();