}
_searchAircraft = aircraft + "-set.xml";
+ std::string aircraftDir = fgGetString("/sim/aircraft-dir", "");
+ if (!aircraftDir.empty()) {
+ // aircraft-dir was set, skip any searching at all, if it's valid
+ simgear::Dir acPath(aircraftDir);
+ SGPath setFile = acPath.file(_searchAircraft);
+ if (setFile.exists()) {
+ SG_LOG(SG_GENERAL, SG_INFO, "found aircraft in dir: " << aircraftDir );
+
+ try {
+ readProperties(setFile.str(), globals->get_props());
+ } catch ( const sg_exception &e ) {
+ SG_LOG(SG_INPUT, SG_ALERT, "Error reading aircraft: " << e.getFormattedMessage());
+ return false;
+ }
+
+ return true;
+ } else {
+ SG_LOG(SG_GENERAL, SG_ALERT, "aircraft '" << _searchAircraft <<
+ "' not found in specified dir:" << aircraftDir);
+ return false;
+ }
+ }
+
if (!checkCache()) {
// prepare cache for re-scan
SGPropertyNode *n = _cache->getNode("fg-root", true);
char *envp = ::getenv( "APPDATA" );
SGPath config( envp );
config.append( "flightgear.org" );
+ return config;
}
#elif __APPLE__
{
SGPath config( homedir );
config.append( ".fgfs" );
+ return config;
}
#endif
// Read in configuration (file and command line)
-bool fgInitConfig ( int argc, char **argv ) {
-
- flightgear::Options::sharedInstance()->init(argc, argv);
-
- // Read global preferences from $FG_ROOT/preferences.xml
- SG_LOG(SG_INPUT, SG_INFO, "Reading global preferences");
- fgLoadProps("preferences.xml", globals->get_props());
- SG_LOG(SG_INPUT, SG_INFO, "Finished Reading global preferences");
-
- // Detect the required language as early as possible
- if ( !fgDetectLanguage() ) {
- return false;
- }
-
- SGPropertyNode autosave;
+bool fgInitConfig ( int argc, char **argv )
+{
SGPath dataPath = platformDefaultDataPath();
-
+
const char *fg_home = getenv("FG_HOME");
if (fg_home)
- dataPath = fg_home;
-
+ dataPath = fg_home;
+
simgear::Dir exportDir(simgear::Dir(dataPath).file("Export"));
if (!exportDir.exists()) {
exportDir.create(0777);
}
-
+
// Set /sim/fg-home and don't allow malign code to override it until
// Nasal security is set up. Use FG_HOME if necessary.
SGPropertyNode *home = fgGetNode("/sim", true);
home = home->getChild("fg-home", 0, true);
home->setStringValue(dataPath.c_str());
home->setAttribute(SGPropertyNode::WRITE, false);
+
+ flightgear::Options::sharedInstance()->init(argc, argv, dataPath);
+
+ // Read global preferences from $FG_ROOT/preferences.xml
+ SG_LOG(SG_INPUT, SG_INFO, "Reading global preferences");
+ fgLoadProps("preferences.xml", globals->get_props());
+ SG_LOG(SG_INPUT, SG_INFO, "Finished Reading global preferences");
+
+ // Detect the required language as early as possible
+ if ( !fgDetectLanguage() ) {
+ return false;
+ }
+
+ SGPropertyNode autosave;
+
SGPath autosaveFile = simgear::Dir(dataPath).file("autosave.xml");
if (autosaveFile.exists()) {
<< "(from " << e.getOrigin() << ")");
}
}
-
+
// Scan user config files and command line for a specified aircraft.
flightgear::Options::sharedInstance()->initAircraft();