Append major/minor version to autosave file name.
Ensure that new minor versions get a clean autosave file. In practice this means settings from 2.10 and 2.11 would co-exist, for example.
This commit is contained in:
parent
1a5b968d7e
commit
5ef475865c
1 changed files with 14 additions and 3 deletions
|
@ -453,6 +453,17 @@ FGGlobals::saveInitialState ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static std::string autosaveName()
|
||||||
|
{
|
||||||
|
std::ostringstream os;
|
||||||
|
string_list versionParts = simgear::strutils::split(VERSION, ".");
|
||||||
|
if (versionParts.size() < 2) {
|
||||||
|
return "autosave.xml";
|
||||||
|
}
|
||||||
|
|
||||||
|
os << "autosave_" << versionParts[0] << "_" << versionParts[1] << ".xml";
|
||||||
|
return os.str();
|
||||||
|
}
|
||||||
|
|
||||||
// Restore the saved initial state, if any
|
// Restore the saved initial state, if any
|
||||||
void
|
void
|
||||||
|
@ -483,7 +494,7 @@ FGGlobals::loadUserSettings(const SGPath& dataPath)
|
||||||
// remember that we have (tried) to load any existing autsave.xml
|
// remember that we have (tried) to load any existing autsave.xml
|
||||||
haveUserSettings = true;
|
haveUserSettings = true;
|
||||||
|
|
||||||
SGPath autosaveFile = simgear::Dir(dataPath).file("autosave.xml");
|
SGPath autosaveFile = simgear::Dir(dataPath).file(autosaveName());
|
||||||
SGPropertyNode autosave;
|
SGPropertyNode autosave;
|
||||||
if (autosaveFile.exists()) {
|
if (autosaveFile.exists()) {
|
||||||
SG_LOG(SG_INPUT, SG_INFO, "Reading user settings from " << autosaveFile.str());
|
SG_LOG(SG_INPUT, SG_INFO, "Reading user settings from " << autosaveFile.str());
|
||||||
|
@ -511,13 +522,13 @@ FGGlobals::saveUserSettings()
|
||||||
haveUserSettings = false;
|
haveUserSettings = false;
|
||||||
|
|
||||||
SGPath autosaveFile(globals->get_fg_home());
|
SGPath autosaveFile(globals->get_fg_home());
|
||||||
autosaveFile.append( "autosave.xml" );
|
autosaveFile.append(autosaveName());
|
||||||
autosaveFile.create_dir( 0700 );
|
autosaveFile.create_dir( 0700 );
|
||||||
SG_LOG(SG_IO, SG_INFO, "Saving user settings to " << autosaveFile.str());
|
SG_LOG(SG_IO, SG_INFO, "Saving user settings to " << autosaveFile.str());
|
||||||
try {
|
try {
|
||||||
writeProperties(autosaveFile.str(), globals->get_props(), false, SGPropertyNode::USERARCHIVE);
|
writeProperties(autosaveFile.str(), globals->get_props(), false, SGPropertyNode::USERARCHIVE);
|
||||||
} catch (const sg_exception &e) {
|
} catch (const sg_exception &e) {
|
||||||
guiErrorMessage("Error writing autosave.xml: ", e);
|
guiErrorMessage("Error writing autosave:", e);
|
||||||
}
|
}
|
||||||
SG_LOG(SG_INPUT, SG_DEBUG, "Finished Saving user settings");
|
SG_LOG(SG_INPUT, SG_DEBUG, "Finished Saving user settings");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue