char *getProgramConfigFilename(char *command_filename_ptr)
{
- char *command_filename = getStringCopy(command_filename_ptr);
+ char *command_filename_1 = getStringCopy(command_filename_ptr);
// strip trailing executable suffix from command filename
- if (strSuffix(command_filename, ".exe"))
- command_filename[strlen(command_filename) - 4] = '\0';
+ if (strSuffix(command_filename_1, ".exe"))
+ command_filename_1[strlen(command_filename_1) - 4] = '\0';
- return getStringCat2(command_filename, ".conf");
+ char *command_basepath = getBasePath(command_filename_ptr);
+ char *command_basename = getBaseNameNoSuffix(command_filename_ptr);
+ char *command_filename_2 = getPath2(command_basepath, command_basename);
+
+ char *config_filename_1 = getStringCat2(command_filename_1, ".conf");
+ char *config_filename_2 = getStringCat2(command_filename_2, ".conf");
+
+ // 1st try: look for config file that exactly matches the binary filename
+ if (fileExists(config_filename_1))
+ return config_filename_1;
+
+ // 2nd try: return config filename that matches binary filename without suffix
+ return config_filename_2;
}
char *getTapeFilename(int nr)
return user_game_data_dir;
}
-void updateUserGameDataDir()
-{
-#if defined(PLATFORM_MACOSX)
- char *userdata_dir_old = getPath2(getHomeDir(), program.userdata_subdir_unix);
- char *userdata_dir_new = getUserGameDataDir(); /* do not free() this */
-
- /* convert old Unix style game data directory to Mac OS X style, if needed */
- if (directoryExists(userdata_dir_old) && !directoryExists(userdata_dir_new))
- {
- if (rename(userdata_dir_old, userdata_dir_new) != 0)
- {
- Error(ERR_WARN, "cannot move game data directory '%s' to '%s'",
- userdata_dir_old, userdata_dir_new);
-
- /* continue using Unix style data directory -- this should not happen */
- program.userdata_path = getPath2(getPersonalDataDir(),
- program.userdata_subdir_unix);
- }
- }
-
- free(userdata_dir_old);
-#endif
-}
-
char *getSetupDir()
{
return getUserGameDataDir();