mirror of
https://github.com/UberGames/ioef.git
synced 2024-12-01 00:21:19 +00:00
bug 2723
* replaced my cheap hack to search current working dir on OS X with a more complex hack that detects the .app bundle directory structure. This is so the game data dirs do not need to be inside of the .app bundle btw.
This commit is contained in:
parent
e17bea030f
commit
77de9e65a8
2 changed files with 35 additions and 5 deletions
|
@ -2829,10 +2829,6 @@ static void FS_Startup( const char *gameName ) {
|
|||
if (fs_basepath->string[0]) {
|
||||
FS_AddGameDirectory( fs_basepath->string, gameName );
|
||||
}
|
||||
#ifdef MACOS_X
|
||||
// allow .app bundles to be placed along side base dir
|
||||
FS_AddGameDirectory( ".", gameName );
|
||||
#endif
|
||||
// fs_homepath is somewhat particular to *nix systems, only add if relevant
|
||||
// NOTE: same filtering below for mods and basegame
|
||||
if (fs_basepath->string[0] && Q_stricmp(fs_homepath->string,fs_basepath->string)) {
|
||||
|
|
|
@ -1382,9 +1382,43 @@ void Sys_ParseArgs( int argc, char* argv[] ) {
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef MACOS_X
|
||||
/*
|
||||
=================
|
||||
Sys_EscapeAppBundle
|
||||
|
||||
Discovers if passed dir is suffixed with the directory structure of a
|
||||
Mac OS X .app bundle. If it is, the .app directory structure is stripped off
|
||||
the end and the result is returned. If not, dir is returned untouched.
|
||||
|
||||
=================
|
||||
*/
|
||||
char *Sys_StripAppBundle(char *dir)
|
||||
{
|
||||
static char cwd[MAX_OSPATH];
|
||||
|
||||
Q_strncpyz(cwd, dir, sizeof(cwd));
|
||||
if(strcmp(basename(cwd), "MacOS"))
|
||||
return dir;
|
||||
Q_strncpyz(cwd, dirname(cwd), sizeof(cwd));
|
||||
if(strcmp(basename(cwd), "Contents"))
|
||||
return dir;
|
||||
Q_strncpyz(cwd, dirname(cwd), sizeof(cwd));
|
||||
if(!strstr(basename(cwd), ".app"))
|
||||
return dir;
|
||||
Q_strncpyz(cwd, dirname(cwd), sizeof(cwd));
|
||||
return cwd;
|
||||
}
|
||||
#endif /* MACOS_X */
|
||||
|
||||
#ifndef DEFAULT_BASEDIR
|
||||
#ifdef MACOS_X
|
||||
// if run from an .app bundle, we want to also search its containing dir
|
||||
#define DEFAULT_BASEDIR Sys_StripAppBundle(Sys_DefaultCDPath())
|
||||
#else
|
||||
#define DEFAULT_BASEDIR Sys_DefaultCDPath()
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "../client/client.h"
|
||||
extern clientStatic_t cls;
|
||||
|
|
Loading…
Reference in a new issue