X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.c;h=5de7b263d52437374d3dfe228024eefa16ded56d;hb=2e8b5b6b088bbb3840837fb1ea0acc8af44c54d9;hp=af4bcd34a58b0f218827a87756f8b6152296cffc;hpb=4c3124b6e2b8454dbf25a30559676bfa1b2a1a87;p=rocksndiamonds.git diff --git a/src/main.c b/src/main.c index af4bcd34..5de7b263 100644 --- a/src/main.c +++ b/src/main.c @@ -5630,16 +5630,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 +5662,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 +5673,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 +5689,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();