]> git.mxchange.org Git - flightgear.git/commitdiff
Relocate appData fgfsrc loading prior to init of fg-root, so we can specify --fg...
authorJames Turner <zakalawe@mac.com>
Fri, 21 Oct 2011 15:49:15 +0000 (16:49 +0100)
committerJames Turner <zakalawe@mac.com>
Fri, 21 Oct 2011 15:49:15 +0000 (16:49 +0100)
src/Main/fg_init.cxx
src/Main/options.cxx
src/Main/options.hxx

index 6edb7a66dc5f8fa65a17dfa6b44711bcf1e6273a..ad85151c3831082c88616258ea51238a1f82ccaa 100644 (file)
@@ -514,32 +514,19 @@ static SGPath platformDefaultDataPath()
 #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);
@@ -547,6 +534,21 @@ bool fgInitConfig ( int argc, char **argv ) {
     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()) {
@@ -558,13 +560,6 @@ bool fgInitConfig ( int argc, char **argv ) {
             << "(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.
     flightgear::Options::sharedInstance()->initAircraft();
index 6dd374a85fc3358d9a469491902539a40df3aa9e..06995a288bbaa6c30b04d1833cdf87bfe15d53d0 100644 (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();
   
@@ -1717,6 +1717,13 @@ void Options::init(int argc, char **argv)
     readConfig(config);
   }
   
+// check for a config file in app data
+  SGPath appDataConfig(appDataPath);
+  appDataConfig.append("fgfsrc");
+  if (appDataConfig.exists()) {
+    readConfig(appDataConfig);
+  }
+  
 // setup FG_ROOT
   setupRoot();
   
index bd7e368480fc108c13407df60a8f9ed2ff4e70c7..c5d7ab86274949aff4f17035553b4a00482d8f0e 100644 (file)
@@ -48,7 +48,7 @@ public:
   /**
    * 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)