X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fmisc.c;h=bd069f921a93ad629d1e61e1d0d3995672f59639;hp=bf40ca9bdfac02fbbf4c6addf2c3dd3b87b2186e;hb=378017ef8970cd08f0aa9cc2855eb4233f5a23a6;hpb=73d5033080f93ad34a3e5aee7e8abd7aba8e17a9 diff --git a/src/libgame/misc.c b/src/libgame/misc.c index bf40ca9b..bd069f92 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,37 @@ 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)) + { + char *main_data_path_old = main_data_path; + + // cut relative path to Mac OS X application binary directory from path main_data_path[strlen(main_data_path) - 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'; + // 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'; + + // replace empty path with current directory + if (strEqual(main_data_path, "")) + main_data_path = "."; - // replace empty path with current directory - if (strEqual(main_data_path, "")) - main_data_path = "."; + // add relative path to Mac OS X application resources directory to path + main_data_path = getPath2(main_data_path, main_data_files_subdir); + + free(main_data_path_old); + } #endif return main_data_path;