diff options
| -rw-r--r-- | code/qcommon/files.c | 3 | ||||
| -rw-r--r-- | code/qcommon/qcommon.h | 3 | ||||
| -rw-r--r-- | code/sys/sys_main.c | 39 | 
3 files changed, 45 insertions, 0 deletions
| diff --git a/code/qcommon/files.c b/code/qcommon/files.c index 7bbfc45..0728267 100644 --- a/code/qcommon/files.c +++ b/code/qcommon/files.c @@ -241,6 +241,7 @@ static  cvar_t          *fs_apppath;  #endif  static	cvar_t		*fs_basepath; +static	cvar_t		*fs_libpath;  static	cvar_t		*fs_basegame;  static	cvar_t		*fs_gamedirvar;  static	searchpath_t	*fs_searchpaths; @@ -2761,6 +2762,8 @@ static void FS_Startup( const char *gameName )  	fs_debug = Cvar_Get( "fs_debug", "0", 0 );  	fs_basepath = Cvar_Get ("fs_basepath", Sys_DefaultInstallPath(), CVAR_INIT );  	fs_basegame = Cvar_Get ("fs_basegame", "", CVAR_INIT ); +	fs_libpath = Cvar_Get ("fs_libpath", Sys_DefaultLibPath(), CVAR_INIT ); +	  	homePath = Sys_DefaultHomePath();  	if (!homePath || !homePath[0]) {  		homePath = fs_basepath->string; diff --git a/code/qcommon/qcommon.h b/code/qcommon/qcommon.h index a2d8106..1c970e6 100644 --- a/code/qcommon/qcommon.h +++ b/code/qcommon/qcommon.h @@ -1079,6 +1079,9 @@ char	*Sys_DefaultInstallPath(void);  char    *Sys_DefaultAppPath(void);  #endif +void	Sys_SetDefaultLibPath(const char *path); +char	*Sys_DefaultLibPath(void); +  void  Sys_SetDefaultHomePath(const char *path);  char	*Sys_DefaultHomePath(void);  const char *Sys_Dirname( char *path ); diff --git a/code/sys/sys_main.c b/code/sys/sys_main.c index ff58187..56819d1 100644 --- a/code/sys/sys_main.c +++ b/code/sys/sys_main.c @@ -49,6 +49,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA  static char binaryPath[ MAX_OSPATH ] = { 0 };  static char installPath[ MAX_OSPATH ] = { 0 }; +static char libPath[ MAX_OSPATH ] = { 0 };  /*  ================= @@ -95,6 +96,29 @@ char *Sys_DefaultInstallPath(void)  /*  ================= +Sys_SetDefaultLibPath +================= +*/ +void Sys_SetDefaultLibPath(const char *path) +{ +	Q_strncpyz(libPath, path, sizeof(libPath)); +} + +/* +================= +Sys_DefaultLibPath +================= +*/ +char *Sys_DefaultLibPath(void) +{ +	if (*libPath) +		return libPath; +	else +		return Sys_Cwd(); +} + +/* +=================  Sys_DefaultAppPath  =================  */ @@ -384,6 +408,7 @@ Used to load a development dll instead of a virtual machine  #1 look down current path  #2 look in fs_homepath  #3 look in fs_basepath +#4 look in fs_libpath  =================  */  void *Sys_LoadDll( const char *name, char *fqpath , @@ -394,6 +419,7 @@ void *Sys_LoadDll( const char *name, char *fqpath ,  	void  (*dllEntry)( intptr_t (*syscallptr)(intptr_t, ...) );  	char  fname[MAX_OSPATH];  	char  *basepath; +	char  *libpath;  	char  *homepath;  	char  *pwdpath;  	char  *gamedir; @@ -405,6 +431,7 @@ void *Sys_LoadDll( const char *name, char *fqpath ,  	// TODO: use fs_searchpaths from files.c  	pwdpath = Sys_Cwd();  	basepath = Cvar_VariableString( "fs_basepath" ); +	libpath = Cvar_VariableString( "fs_libpath" );  	homepath = Cvar_VariableString( "fs_homepath" );  	gamedir = Cvar_VariableString( "fs_game" ); @@ -416,6 +443,9 @@ void *Sys_LoadDll( const char *name, char *fqpath ,  	if(!libHandle && basepath)  		libHandle = Sys_TryLibraryLoad(basepath, gamedir, fname, fqpath); +	if(!libHandle && libpath) +		libHandle = Sys_TryLibraryLoad(libpath, gamedir, fname, fqpath); +  	if(!libHandle) {  		Com_Printf ( "Sys_LoadDll(%s) failed to load library\n", name );  		return NULL; @@ -469,6 +499,14 @@ void Sys_ParseArgs( int argc, char **argv )  #	endif  #endif +#ifndef DEFAULT_LIBDIR +#	ifdef MACOS_X +#		define DEFAULT_LIBDIR Sys_StripAppBundle(Sys_BinaryPath()) +#	else +#		define DEFAULT_LIBDIR Sys_BinaryPath() +#	endif +#endif +  /*  =================  Sys_SigHandler @@ -538,6 +576,7 @@ int main( int argc, char **argv )  	Sys_ParseArgs( argc, argv );  	Sys_SetBinaryPath( Sys_Dirname( argv[ 0 ] ) );  	Sys_SetDefaultInstallPath( DEFAULT_BASEDIR ); +	Sys_SetDefaultLibPath( DEFAULT_LIBDIR );  	// Concatenate the command line for passing to Com_Init  	for( i = 1; i < argc; i++ ) | 
