X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.c;h=1e9124777cf9a13e80b6866339d075efa7b8f883;hb=4e745044fe35b4b093b1490a6e3da0fe4ee512de;hp=9bcc40a88b4741993f7e3f795491ae6f4f74f804;hpb=db6f077754043bf94cf6a18ced0c0191744a1487;p=rocksndiamonds.git diff --git a/src/main.c b/src/main.c index 9bcc40a8..1e912477 100644 --- a/src/main.c +++ b/src/main.c @@ -16,6 +16,7 @@ #include "game.h" #include "tape.h" #include "tools.h" +#include "files.h" #include "events.h" #include "config.h" @@ -5580,6 +5581,7 @@ static void print_usage() " \"autoplay LEVELDIR [NR ...]\" play level tapes for LEVELDIR\n" " \"convert LEVELDIR [NR]\" convert levels in LEVELDIR\n" " \"create images DIRECTORY\" write BMP images to DIRECTORY\n" + " \"create CE image DIRECTORY\" write BMP image to DIRECTORY\n" "\n", program.command_basename); } @@ -5623,11 +5625,51 @@ 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 *userdata_subdir; + char *userdata_subdir_unix; + + // read default program config, if existing + if (fileExists(config_filename)) + LoadSetupFromFilename(config_filename); + + // set program title from potentially redefined program title + if (setup.internal.program_title != NULL && + strlen(setup.internal.program_title) > 0) + program_title = getStringCopy(setup.internal.program_title); + + // 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) + userdata_subdir = userdata_subdir_unix; +#else + userdata_subdir = USERDATA_DIRECTORY_OTHER; +#endif + + InitProgramInfo(command_filename, + config_filename, + userdata_subdir, + userdata_subdir_unix, + program_title, + program_title, + SDL_ICON_FILENAME, + COOKIE_PREFIX, + GAME_VERSION_ACTUAL); +} + int main(int argc, char *argv[]) { - InitProgramInfo(argv[0], USERDATA_DIRECTORY, USERDATA_DIRECTORY_UNIX, - PROGRAM_TITLE_STRING, ICON_TITLE_STRING, SDL_ICON_FILENAME, - COOKIE_PREFIX, GAME_VERSION_ACTUAL); + InitProgramConfig(argv[0]); InitWindowTitleFunction(getWindowTitleString); InitExitMessageFunction(DisplayExitMessage);