--- source/files.c.orig Tue Jan 30 18:07:53 2007 +++ source/files.c Sun Feb 4 19:31:21 2007 @@ -1542,6 +1542,22 @@ } +#ifdef __unix__ +/* +================ +FS_AddHomeAsGameDirectory + +Adds ~/.q2pro/ as a game directory. +================ +*/ +void FS_AddHomeAsGameDirectory(char *dir) +{ + char *homedir; /* Home directory. */ + + if ((homedir = getenv("HOME")) != NULL) + FS_AddGameDirectory("%s/"HOMEDIRNAME"/%s", homedir, dir); +} +#endif /* ================= @@ -1569,7 +1585,7 @@ #ifdef _WIN32 Com_sprintf( path, sizeof( path ), "%s/%s/gamex86.dll", fs_basedir->string, dirlist[i] ); #else - Com_sprintf( path, sizeof( path ), "%s/%s/gamei386.so", fs_basedir->string, dirlist[i] ); + Com_sprintf( path, sizeof( path ), "%s/%s/game.so", fs_basedir->string, dirlist[i] ); #endif if( !( fp = fopen( path, "rb" ) ) ) { @@ -2358,21 +2374,15 @@ */ static void FS_DefaultGamedir( void ) { #ifdef __unix__ - char *homedir = getenv( "HOME" ); - - if( homedir ) { - FS_AddGameDirectory( "%s/"HOMEDIRNAME"/"BASEDIRNAME, homedir ); - } else + FS_AddHomeAsGameDirectory(BASEDIRNAME); #else - { /* write to baseq2pro on Windows */ Com_sprintf( fs_gamedir, sizeof( fs_gamedir ), "%s/"INITDIRNAME, fs_basedir->string ); - } -#endif Cvar_Set( "game", "" ); Cvar_Set( "gamedir", "" ); +#endif } @@ -2410,18 +2420,11 @@ if( fs_cddir->string[0] ) FS_AddGameDirectory( "%s/%s", fs_cddir->string, fs_game->string ); + FS_AddGameDirectory("%s/%s", DATADIR, fs_game->string); + FS_AddGameDirectory("%s/%s", LIBDIR, fs_game->string); FS_AddGameDirectory( "%s/%s", fs_basedir->string, fs_game->string ); + FS_AddHomeAsGameDirectory(fs_game->string); -#ifdef __unix__ - { - char *homedir = getenv( "HOME" ); - - if( homedir ) { - FS_AddGameDirectory( "%s/"HOMEDIRNAME"/%s", - homedir, fs_game->string ); - } - } -#endif } qboolean FS_SafeToRestart( void ) { @@ -2518,7 +2521,6 @@ */ void FS_Init( void ) { int startTime, i; - char *base; startTime = Sys_Milliseconds(); @@ -2554,13 +2556,7 @@ // allows the game to run from outside the data tree // -#ifdef __unix__ - base = DATADIR; -#else - base = Sys_GetCurrentDirectory(); -#endif - - fs_basedir = Cvar_Get( "basedir", base, CVAR_NOSET ); + fs_basedir = Cvar_Get( "basedir", Sys_GetCurrentDirectory(), CVAR_NOSET ); /* strip trailing slash */ if( fs_basedir->string[0] ) { @@ -2591,8 +2587,15 @@ // // start up with baseq2 by default // + FS_AddGameDirectory("%s/"BASEDIRNAME, DATADIR); + FS_AddGameDirectory("%s/"BASEDIRNAME, LIBDIR); FS_AddGameDirectory( "%s/"BASEDIRNAME, fs_basedir->string ); + FS_AddHomeAsGameDirectory(BASEDIRNAME); + + FS_AddGameDirectory("%s/"INITDIRNAME, DATADIR); + FS_AddGameDirectory("%s/"INITDIRNAME, LIBDIR); FS_AddGameDirectory( "%s/"INITDIRNAME, fs_basedir->string ); + FS_AddHomeAsGameDirectory(INITDIRNAME); fs_base_searchpaths = fs_searchpaths;