From e7daf33d8e3a0b806b1045ff4d72178ae9b23250 Mon Sep 17 00:00:00 2001 From: Thilo Schulz Date: Fri, 21 Apr 2006 17:04:21 +0000 Subject: [PATCH] - botlib logfile now gets stored in the fs_game directory in fs_homepath. (patch from Erik Auerswald) - Added proper error handling when fopening qconsole.log - Fixed bug where r_chat.c gets loaded in botlib even when bot_nochat is 1. --- code/botlib/be_interface.c | 14 +++++++++++++- code/game/ai_main.c | 3 ++- code/qcommon/common.c | 21 ++++++++++++++++----- 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/code/botlib/be_interface.c b/code/botlib/be_interface.c index b6862af2..067b257d 100644 --- a/code/botlib/be_interface.c +++ b/code/botlib/be_interface.c @@ -137,12 +137,24 @@ int Export_BotLibSetup(void) { int errnum; char logfilename[MAX_QPATH]; + char *homedir, *gamedir; bot_developer = LibVarGetValue("bot_developer"); memset( &botlibglobals, 0, sizeof(botlibglobals) ); // bk001207 - init //initialize byte swapping (litte endian etc.) // Swap_Init(); - Com_sprintf(logfilename, sizeof(logfilename), "%s%cbotlib.log", LibVarGetString("homedir"), PATH_SEP); + homedir = LibVarGetString("homedir"); + gamedir = LibVarGetString("gamedir"); + if (homedir[0]) { + if (gamedir[0]) { + Com_sprintf(logfilename, sizeof(logfilename), "%s%c%s%cbotlib.log", homedir, PATH_SEP, gamedir, PATH_SEP); + } + else { + Com_sprintf(logfilename, sizeof(logfilename), "%s%cbaseq3%cbotlib.log", homedir, PATH_SEP, PATH_SEP); + } + } else { + Com_sprintf(logfilename, sizeof(logfilename), "botlib.log"); + } Log_Open(logfilename); // botimport.Print(PRT_MESSAGE, "------- BotLib Initialization -------\n"); diff --git a/code/game/ai_main.c b/code/game/ai_main.c index f67af0eb..b0cfd704 100644 --- a/code/game/ai_main.c +++ b/code/game/ai_main.c @@ -1593,10 +1593,11 @@ int BotInitLibrary(void) { trap_BotLibVarSet("g_gametype", buf); //bot developer mode and log file trap_BotLibVarSet("bot_developer", bot_developer.string); + trap_Cvar_VariableStringBuffer("logfile", buf, sizeof(buf)); trap_BotLibVarSet("log", buf); //no chatting trap_Cvar_VariableStringBuffer("bot_nochat", buf, sizeof(buf)); - if (strlen(buf)) trap_BotLibVarSet("nochat", "0"); + if (strlen(buf)) trap_BotLibVarSet("nochat", buf); //visualize jump pads trap_Cvar_VariableStringBuffer("bot_visualizejumppads", buf, sizeof(buf)); if (strlen(buf)) trap_BotLibVarSet("bot_visualizejumppads", buf); diff --git a/code/qcommon/common.c b/code/qcommon/common.c index 1c37c5e1..57081462 100644 --- a/code/qcommon/common.c +++ b/code/qcommon/common.c @@ -181,11 +181,22 @@ void QDECL Com_Printf( const char *fmt, ... ) { newtime = localtime( &aclock ); logfile = FS_FOpenFileWrite( "qconsole.log" ); - Com_Printf( "logfile opened on %s\n", asctime( newtime ) ); - if ( com_logfile->integer > 1 ) { - // force it to not buffer so we get valid - // data even if we are crashing - FS_ForceFlush(logfile); + + if(logfile) + { + Com_Printf( "logfile opened on %s\n", asctime( newtime ) ); + + if ( com_logfile->integer > 1 ) + { + // force it to not buffer so we get valid + // data even if we are crashing + FS_ForceFlush(logfile); + } + } + else + { + Com_Printf("Opening qconsole.log failed!\n"); + Cvar_SetValue("logfile", 0); } opening_qconsole = qfalse;