X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fmisc.c;h=4ffb51c707adb555962ba68876d13e685f369e74;hp=bf40ca9bdfac02fbbf4c6addf2c3dd3b87b2186e;hb=56fe208c3f5ededc520ee0d76ad2fb72146e3dc9;hpb=73d5033080f93ad34a3e5aee7e8abd7aba8e17a9 diff --git a/src/libgame/misc.c b/src/libgame/misc.c index bf40ca9b..4ffb51c7 100644 --- a/src/libgame/misc.c +++ b/src/libgame/misc.c @@ -682,6 +682,7 @@ static char *getProgramMainDataPath() #if defined(PLATFORM_MACOSX) static char *main_data_binary_subdir = NULL; + static char *main_data_files_subdir = NULL; if (main_data_binary_subdir == NULL) { @@ -693,18 +694,29 @@ static char *getProgramMainDataPath() program.program_title, MAC_APP_BINARY_SUBDIR); } - // cut relative path to Mac OS X application binary directory from path + if (main_data_files_subdir == NULL) + { + main_data_files_subdir = checked_malloc(strlen(program.program_title) + 1 + + strlen("app") + 1 + + strlen(MAC_APP_FILES_SUBDIR) + 1); + + sprintf(main_data_files_subdir, "%s.app/%s", + program.program_title, MAC_APP_FILES_SUBDIR); + } + if (strSuffix(main_data_path, main_data_binary_subdir)) - main_data_path[strlen(main_data_path) - - strlen(main_data_binary_subdir)] = '\0'; + { + char *main_data_path_old = main_data_path; + + // cut relative path to Mac OS X application binary directory from path + main_data_path_old[strlen(main_data_path_old) - + strlen(main_data_binary_subdir)] = '\0'; - // cut trailing path separator from path (but not if path is root directory) - if (strSuffix(main_data_path, "/") && !strEqual(main_data_path, "/")) - main_data_path[strlen(main_data_path) - 1] = '\0'; + // add relative path to Mac OS X application resources directory to path + main_data_path = getPath2(main_data_path_old, main_data_files_subdir); - // replace empty path with current directory - if (strEqual(main_data_path, "")) - main_data_path = "."; + free(main_data_path_old); + } #endif return main_data_path;