diff --git a/gameheaders/stratagus-game-launcher.h b/gameheaders/stratagus-game-launcher.h index 082111a6f..a32efc955 100644 --- a/gameheaders/stratagus-game-launcher.h +++ b/gameheaders/stratagus-game-launcher.h @@ -165,6 +165,10 @@ stratagus-game-launcher.h - Stratagus Game Launcher #endif #endif +#if __APPLE__ +#define USE_MAC +#endif + #ifndef WIN32 #if ! defined (DATA_PATH) || ! defined (SCRIPTS_PATH) || ! defined (STRATAGUS_BIN) #error You need to define paths, see stratagus-game-launcher.h @@ -200,9 +204,15 @@ stratagus-game-launcher.h - Stratagus Game Launcher #define stat _stat #define strdup _strdup #define mkdir(f, m) _mkdir(f) -#define dirname(x) PathRemoveFileSpec(x) +#define parentdir(x) PathRemoveFileSpec(x) #define execvp _execvp #define unlink _unlink +#else +#if defined(USE_MAC) +#define parentdir(x) strcpy(x, dirname(x)) +#else +#define parentdir(x) dirname(x) +#endif #endif #ifdef _MSC_VER @@ -423,13 +433,13 @@ static void ExtractData(char* extractor_tool, char* destination, char* scripts_p char srcfolder[1024] = {'\0'}; strcpy(srcfolder, datafile); - dirname(srcfolder); + parentdir(srcfolder); struct stat st; if (stat(scripts_path, &st) != 0) { // deployment time path not found, try compile time path strcpy(scripts_path, SRC_PATH()); - dirname(scripts_path); + parentdir(scripts_path); } char contrib_src_path[BUFF_SIZE]; @@ -522,7 +532,7 @@ int main(int argc, char * argv[]) { // The extractor is in the same dir as we are if (strchr(argv[0], SLASH[0])) { strcpy(extractor_path, argv[0]); - dirname(extractor_path); + parentdir(extractor_path); strcat(extractor_path, SLASH EXTRACTOR_TOOL); // Once we have the path, we quote it by moving the memory one byte to the // right, and surrounding it with the quote character and finishing null @@ -624,7 +634,7 @@ int main(int argc, char * argv[]) { #else if (!detectPresence(stratagus_bin)) { realpath(argv[0], stratagus_bin); - dirname(stratagus_bin); + parentdir(stratagus_bin); if (strlen(stratagus_bin) > 0) { strcat(stratagus_bin, "/stratagus"); } else { @@ -697,7 +707,7 @@ int main(int argc, char * argv[]) { #ifndef WIN32 if (strcmp(stratagus_bin, "stratagus") == 0) { realpath(argv[0], stratagus_bin); - dirname(stratagus_bin); + parentdir(stratagus_bin); strcat(stratagus_bin, "/stratagus"); } execvp(stratagus_bin, stratagus_argv); diff --git a/gameheaders/stratagus-tinyfiledialogs.h b/gameheaders/stratagus-tinyfiledialogs.h index 18a68713f..06f90d929 100644 --- a/gameheaders/stratagus-tinyfiledialogs.h +++ b/gameheaders/stratagus-tinyfiledialogs.h @@ -3726,12 +3726,12 @@ char const * tinyfd_openFileDialog ( if ( aNumOfFilterPatterns > 0 ) { strcat(lDialogString , "of type {\"" ); - strcat ( lDialogString , aFilterPatterns [ 0 ] + 2 ) ; + strcat ( lDialogString , aFilterPatterns [ 0 ] ) ; strcat ( lDialogString , "\"" ) ; for ( i = 1 ; i < aNumOfFilterPatterns ; i ++ ) { strcat ( lDialogString , ",\"" ) ; - strcat ( lDialogString , aFilterPatterns [ i ] + 2) ; + strcat ( lDialogString , aFilterPatterns [ i ]) ; strcat ( lDialogString , "\"" ) ; } strcat ( lDialogString , "} " ) ;