[iortcw] 147/152: All: Fix removing/creating PID file for base game when switching to/from mods

Simon McVittie smcv at debian.org
Fri Sep 8 10:40:28 UTC 2017


This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to annotated tag 1.5a
in repository iortcw.

commit 74b5c8fb39e21fc4dcf272d04c20640fddb7635e
Author: MAN-AT-ARMS <M4N4T4RMS at gmail.com>
Date:   Fri Oct 28 13:52:39 2016 -0400

    All: Fix removing/creating PID file for base game when switching to/from mods
    
    Use ioquake3 fix
---
 MP/code/qcommon/files.c | 21 +++++++++++++++++----
 MP/code/sys/sys_main.c  |  7 +------
 SP/code/qcommon/files.c | 21 +++++++++++++++++----
 SP/code/sys/sys_main.c  |  7 +------
 4 files changed, 36 insertions(+), 20 deletions(-)

diff --git a/MP/code/qcommon/files.c b/MP/code/qcommon/files.c
index 174540b..603550e 100644
--- a/MP/code/qcommon/files.c
+++ b/MP/code/qcommon/files.c
@@ -308,6 +308,8 @@ static char     *fs_serverReferencedPakNames[MAX_SEARCH_PATHS];     // pk3 names
 
 // last valid game folder used
 char lastValidBase[MAX_OSPATH];
+char lastValidComBaseGame[MAX_OSPATH];
+char lastValidFsBaseGame[MAX_OSPATH];
 char lastValidGame[MAX_OSPATH];
 
 #ifdef FS_MISSING
@@ -4231,6 +4233,8 @@ void FS_InitFilesystem( void ) {
 #endif
 
 	Q_strncpyz( lastValidBase, fs_basepath->string, sizeof( lastValidBase ) );
+	Q_strncpyz( lastValidComBaseGame, com_basegame->string, sizeof( lastValidComBaseGame ) );
+	Q_strncpyz( lastValidFsBaseGame, fs_basegame->string, sizeof( lastValidFsBaseGame ) );
 	Q_strncpyz( lastValidGame, fs_gamedirvar->string, sizeof( lastValidGame ) );
 }
 
@@ -4241,6 +4245,7 @@ FS_Restart
 ================
 */
 void FS_Restart( int checksumFeed ) {
+	const char *lastGameDir;
 
 	// free anything we currently have loaded
 	FS_Shutdown( qfalse );
@@ -4267,8 +4272,12 @@ void FS_Restart( int checksumFeed ) {
 		if ( lastValidBase[0] ) {
 			FS_PureServerSetLoadedPaks( "", "" );
 			Cvar_Set( "fs_basepath", lastValidBase );
-			Cvar_Set("fs_game", lastValidGame);
+			Cvar_Set( "com_basegame", lastValidComBaseGame );
+			Cvar_Set( "fs_basegame", lastValidFsBaseGame );
+			Cvar_Set( "fs_game", lastValidGame );
 			lastValidBase[0] = '\0';
+			lastValidComBaseGame[0] = '\0';
+			lastValidFsBaseGame[0] = '\0';
 			lastValidGame[0] = '\0';
 			FS_Restart( checksumFeed );
 			Com_Error( ERR_DROP, "Invalid game folder" );
@@ -4277,9 +4286,11 @@ void FS_Restart( int checksumFeed ) {
 		Com_Error( ERR_FATAL, "Couldn't load default.cfg" );
 	}
 
-	if ( Q_stricmp( fs_gamedirvar->string, lastValidGame ) ) {
-		Sys_RemovePIDFile( lastValidGame );
-		Sys_InitPIDFile( fs_gamedirvar->string );
+	lastGameDir = ( lastValidGame[0] ) ? lastValidGame : lastValidComBaseGame;
+
+	if ( Q_stricmp( FS_GetCurrentGameDir(), lastGameDir ) ) {
+		Sys_RemovePIDFile( lastGameDir );
+		Sys_InitPIDFile( FS_GetCurrentGameDir() );
 
 		// skip the wolfconfig.cfg if "safe" is on the command line
 		if ( !Com_SafeMode() ) {
@@ -4288,6 +4299,8 @@ void FS_Restart( int checksumFeed ) {
 	}
 
 	Q_strncpyz( lastValidBase, fs_basepath->string, sizeof( lastValidBase ) );
+	Q_strncpyz( lastValidComBaseGame, com_basegame->string, sizeof( lastValidComBaseGame ) );
+	Q_strncpyz( lastValidFsBaseGame, fs_basegame->string, sizeof( lastValidFsBaseGame ) );
 	Q_strncpyz( lastValidGame, fs_gamedirvar->string, sizeof( lastValidGame ) );
 
 }
diff --git a/MP/code/sys/sys_main.c b/MP/code/sys/sys_main.c
index ce607f6..b4181da 100644
--- a/MP/code/sys/sys_main.c
+++ b/MP/code/sys/sys_main.c
@@ -184,12 +184,7 @@ Sys_RemovePIDFile
 */
 void Sys_RemovePIDFile( const char *gamedir )
 {
-	char *pidFile;
-
-	if ( gamedir[0] == '\0' )
-		pidFile = Sys_PIDFileName( BASEGAME );
-	else
-		pidFile = Sys_PIDFileName( gamedir );
+	char *pidFile = Sys_PIDFileName( gamedir );
 
 	if( pidFile != NULL )
 		remove( pidFile );
diff --git a/SP/code/qcommon/files.c b/SP/code/qcommon/files.c
index 6cd6706..340b105 100644
--- a/SP/code/qcommon/files.c
+++ b/SP/code/qcommon/files.c
@@ -334,6 +334,8 @@ static char     *fs_serverReferencedPakNames[MAX_SEARCH_PATHS];     // pk3 names
 
 // last valid game folder used
 char lastValidBase[MAX_OSPATH];
+char lastValidComBaseGame[MAX_OSPATH];
+char lastValidFsBaseGame[MAX_OSPATH];
 char lastValidGame[MAX_OSPATH];
 
 #ifdef FS_MISSING
@@ -4242,6 +4244,8 @@ void FS_InitFilesystem( void ) {
 	}
 
 	Q_strncpyz( lastValidBase, fs_basepath->string, sizeof( lastValidBase ) );
+	Q_strncpyz( lastValidComBaseGame, com_basegame->string, sizeof( lastValidComBaseGame ) );
+	Q_strncpyz( lastValidFsBaseGame, fs_basegame->string, sizeof( lastValidFsBaseGame ) );
 	Q_strncpyz( lastValidGame, fs_gamedirvar->string, sizeof( lastValidGame ) );
 }
 
@@ -4252,6 +4256,7 @@ FS_Restart
 ================
 */
 void FS_Restart( int checksumFeed ) {
+	const char *lastGameDir;
 
 	// free anything we currently have loaded
 	FS_Shutdown( qfalse );
@@ -4278,8 +4283,12 @@ void FS_Restart( int checksumFeed ) {
 		if ( lastValidBase[0] ) {
 			FS_PureServerSetLoadedPaks( "", "" );
 			Cvar_Set( "fs_basepath", lastValidBase );
-			Cvar_Set("fs_game", lastValidGame);
+			Cvar_Set( "com_basegame", lastValidComBaseGame );
+			Cvar_Set( "fs_basegame", lastValidFsBaseGame );
+			Cvar_Set( "fs_game", lastValidGame );
 			lastValidBase[0] = '\0';
+			lastValidComBaseGame[0] = '\0';
+			lastValidFsBaseGame[0] = '\0';
 			lastValidGame[0] = '\0';
 			FS_Restart( checksumFeed );
 			Com_Error( ERR_DROP, "Invalid game folder" );
@@ -4288,9 +4297,11 @@ void FS_Restart( int checksumFeed ) {
 		Com_Error( ERR_FATAL, "Couldn't load default.cfg" );
 	}
 
-	if ( Q_stricmp( fs_gamedirvar->string, lastValidGame ) ) {
-		Sys_RemovePIDFile( lastValidGame );
-		Sys_InitPIDFile( fs_gamedirvar->string );
+	lastGameDir = ( lastValidGame[0] ) ? lastValidGame : lastValidComBaseGame;
+
+	if ( Q_stricmp( FS_GetCurrentGameDir(), lastGameDir ) ) {
+		Sys_RemovePIDFile( lastGameDir );
+		Sys_InitPIDFile( FS_GetCurrentGameDir() );
 
 		// skip the wolfconfig.cfg if "safe" is on the command line
 		if ( !Com_SafeMode() ) {
@@ -4299,6 +4310,8 @@ void FS_Restart( int checksumFeed ) {
 	}
 
 	Q_strncpyz( lastValidBase, fs_basepath->string, sizeof( lastValidBase ) );
+	Q_strncpyz( lastValidComBaseGame, com_basegame->string, sizeof( lastValidComBaseGame ) );
+	Q_strncpyz( lastValidFsBaseGame, fs_basegame->string, sizeof( lastValidFsBaseGame ) );
 	Q_strncpyz( lastValidGame, fs_gamedirvar->string, sizeof( lastValidGame ) );
 
 }
diff --git a/SP/code/sys/sys_main.c b/SP/code/sys/sys_main.c
index fac8197..d24f402 100644
--- a/SP/code/sys/sys_main.c
+++ b/SP/code/sys/sys_main.c
@@ -184,12 +184,7 @@ Sys_RemovePIDFile
 */
 void Sys_RemovePIDFile( const char *gamedir )
 {
-	char *pidFile;
-
-	if ( gamedir[0] == '\0' )
-		pidFile = Sys_PIDFileName( BASEGAME );
-	else
-		pidFile = Sys_PIDFileName( gamedir );
+	char *pidFile = Sys_PIDFileName( gamedir );
 
 	if( pidFile != NULL )
 		remove( pidFile );

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/iortcw.git



More information about the Pkg-games-commits mailing list