fixed broken border redraw of info screen after viewing title screen
[rocksndiamonds.git] / src / main.c
index af4bcd34a58b0f218827a87756f8b6152296cffc..6f1559b5e3d6241cc6231957a8bf400caa7c750a 100644 (file)
@@ -31,6 +31,7 @@ DrawBuffer           *fieldbuffer;
 DrawBuffer            *drawto_field;
 
 int                    game_status = -1;
+boolean                        game_status_last_screen = -1;
 boolean                        level_editor_test_game = FALSE;
 boolean                        network_playing = FALSE;
 
@@ -5630,16 +5631,27 @@ static void print_version()
 
 static void InitProgramConfig(char *command_filename)
 {
-  char *command_basename = getBaseName(command_filename);
-  char *config_filename = getProgramConfigFilename(command_filename);
   char *program_title = PROGRAM_TITLE_STRING;
   char *program_icon_file = PROGRAM_ICON_FILENAME;
+  char *config_filename = getProgramConfigFilename(command_filename);
+  char *userdata_basename = getBaseNameNoSuffix(command_filename);
   char *userdata_subdir;
   char *userdata_subdir_unix;
 
   // read default program config, if existing
   if (fileExists(config_filename))
+  {
+    // if program config file exists, derive Unix user data directory from it
+    userdata_basename = getBaseName(config_filename);
+
+    if (strSuffix(userdata_basename, ".conf"))
+      userdata_basename[strlen(userdata_basename) - 4] = '\0';
+
     LoadSetupFromFilename(config_filename);
+  }
+
+  // set user data directory for Linux/Unix (but not Mac OS X)
+  userdata_subdir_unix = getStringCat2(".", userdata_basename);
 
   // set program title from potentially redefined program title
   if (setup.internal.program_title != NULL &&
@@ -5651,12 +5663,6 @@ static void InitProgramConfig(char *command_filename)
       strlen(setup.internal.program_icon_file) > 0)
     program_icon_file = getStringCopy(setup.internal.program_icon_file);
 
-  // strip trailing executable suffix from command basename
-  if (strSuffix(command_basename, ".exe"))
-    command_basename[strlen(command_basename) - 4] = '\0';
-
-  userdata_subdir_unix = getStringCat2(".", command_basename);
-
 #if defined(PLATFORM_WIN32) || defined(PLATFORM_MACOSX)
   userdata_subdir = program_title;
 #elif defined(PLATFORM_UNIX)
@@ -5668,7 +5674,6 @@ static void InitProgramConfig(char *command_filename)
   InitProgramInfo(command_filename,
                  config_filename,
                  userdata_subdir,
-                 userdata_subdir_unix,
                  program_title,
                  program_title,
                  program_icon_file,
@@ -5685,7 +5690,7 @@ int main(int argc, char *argv[])
   InitExitFunction(CloseAllAndExit);
   InitPlatformDependentStuff();
 
-  GetOptions(argv, print_usage, print_version);
+  GetOptions(argc, argv, print_usage, print_version);
   OpenAll();
 
   EventLoop();