Under Windows, set fg-home to My Documents, or whatever localized name this folder has.
This commit is contained in:
parent
2cc4b3fbc6
commit
e126e12fbc
1 changed files with 22 additions and 2 deletions
|
@ -594,16 +594,36 @@ bool fgInitConfig ( int argc, char **argv ) {
|
|||
}
|
||||
|
||||
#ifdef _MSC_VER
|
||||
char *envp = ::getenv( "APPDATA" );
|
||||
// Best solution is to set fg-home to My Documents but it requires reading the Windows registry
|
||||
bool fg_home_set = false;
|
||||
HKEY hKey;
|
||||
LONG rc = RegOpenKeyEx( HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", 0, KEY_QUERY_VALUE, &hKey );
|
||||
if ( rc == ERROR_SUCCESS ) {
|
||||
DWORD vt,bs;
|
||||
rc = RegQueryValueEx( hKey, "Personal", NULL, &vt, NULL, &bs );
|
||||
if ( rc == ERROR_SUCCESS ) {
|
||||
unsigned char *buff = new unsigned char[ bs ];
|
||||
rc = RegQueryValueEx( hKey, "Personal", NULL, &vt, buff, &bs );
|
||||
fgSetString("/sim/fg-home", (char *)buff);
|
||||
fg_home_set = true;
|
||||
delete [] buff;
|
||||
}
|
||||
RegCloseKey( hKey );
|
||||
}
|
||||
char *envp = ::getenv( "APPDATA" ); // APPDATA is for applications and is hidden
|
||||
if (envp != NULL ) {
|
||||
SGPath config( envp );
|
||||
config.append( "flightgear.org" );
|
||||
if ( !fg_home_set ) {
|
||||
fgSetString("/sim/fg-home", config.c_str());
|
||||
fg_home_set = true;
|
||||
}
|
||||
#else
|
||||
if ( homedir != NULL ) {
|
||||
SGPath config( homedir );
|
||||
config.append( ".fgfs" );
|
||||
#endif
|
||||
fgSetString("/sim/fg-home", config.c_str());
|
||||
#endif
|
||||
config.append( "autosave.xml" );
|
||||
SG_LOG(SG_INPUT, SG_INFO, "Reading user settings from autosave.xml");
|
||||
try {
|
||||
|
|
Loading…
Add table
Reference in a new issue