1
0
Fork 0

Relocate appData fgfsrc loading prior to init of fg-root, so we can specify --fg-root that way.

This commit is contained in:
James Turner 2011-10-21 16:49:15 +01:00
parent e1be74902a
commit e50ff87300
3 changed files with 31 additions and 29 deletions

View file

@ -514,9 +514,28 @@ static SGPath platformDefaultDataPath()
#endif #endif
// Read in configuration (file and command line) // Read in configuration (file and command line)
bool fgInitConfig ( int argc, char **argv ) { bool fgInitConfig ( int argc, char **argv )
{
flightgear::Options::sharedInstance()->init(argc, argv); SGPath dataPath = platformDefaultDataPath();
const char *fg_home = getenv("FG_HOME");
if (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->removeChild("fg-home", 0, false);
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 // Read global preferences from $FG_ROOT/preferences.xml
SG_LOG(SG_INPUT, SG_INFO, "Reading global preferences"); SG_LOG(SG_INPUT, SG_INFO, "Reading global preferences");
@ -529,24 +548,7 @@ bool fgInitConfig ( int argc, char **argv ) {
} }
SGPropertyNode autosave; SGPropertyNode autosave;
SGPath dataPath = platformDefaultDataPath();
const char *fg_home = getenv("FG_HOME");
if (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->removeChild("fg-home", 0, false);
home = home->getChild("fg-home", 0, true);
home->setStringValue(dataPath.c_str());
home->setAttribute(SGPropertyNode::WRITE, false);
SGPath autosaveFile = simgear::Dir(dataPath).file("autosave.xml"); SGPath autosaveFile = simgear::Dir(dataPath).file("autosave.xml");
if (autosaveFile.exists()) { if (autosaveFile.exists()) {
@ -558,13 +560,6 @@ bool fgInitConfig ( int argc, char **argv ) {
<< "(from " << e.getOrigin() << ")"); << "(from " << e.getOrigin() << ")");
} }
} }
// check for a config file in app data
SGPath appDataConfig(dataPath);
appDataConfig.append("fgfsrc");
if (appDataConfig.exists()) {
flightgear::Options::sharedInstance()->readConfig(appDataConfig);
}
// Scan user config files and command line for a specified aircraft. // Scan user config files and command line for a specified aircraft.
flightgear::Options::sharedInstance()->initAircraft(); flightgear::Options::sharedInstance()->initAircraft();

View file

@ -1671,7 +1671,7 @@ Options::~Options()
{ {
} }
void Options::init(int argc, char **argv) void Options::init(int argc, char **argv, const SGPath& appDataPath)
{ {
fgSetDefaults(); fgSetDefaults();
@ -1717,6 +1717,13 @@ void Options::init(int argc, char **argv)
readConfig(config); readConfig(config);
} }
// check for a config file in app data
SGPath appDataConfig(appDataPath);
appDataConfig.append("fgfsrc");
if (appDataConfig.exists()) {
readConfig(appDataConfig);
}
// setup FG_ROOT // setup FG_ROOT
setupRoot(); setupRoot();

View file

@ -48,7 +48,7 @@ public:
/** /**
* pass command line arguments, read default config files * pass command line arguments, read default config files
*/ */
void init(int argc, char* argv[]); void init(int argc, char* argv[], const SGPath& appDataPath);
/** /**
* parse a config file (eg, .fgfsrc) * parse a config file (eg, .fgfsrc)