diff options
Diffstat (limited to 'code/qcommon')
-rw-r--r-- | code/qcommon/common.c | 5 | ||||
-rw-r--r-- | code/qcommon/cvar.c | 25 | ||||
-rw-r--r-- | code/qcommon/q_shared.c | 20 | ||||
-rw-r--r-- | code/qcommon/q_shared.h | 3 |
4 files changed, 48 insertions, 5 deletions
diff --git a/code/qcommon/common.c b/code/qcommon/common.c index eb46426..7848dee 100644 --- a/code/qcommon/common.c +++ b/code/qcommon/common.c @@ -2965,8 +2965,11 @@ PrintCvarMatches =============== */ static void PrintCvarMatches( const char *s ) { + char value[ TRUNCATE_LENGTH ]; + if ( !Q_stricmpn( s, shortestMatch, strlen( shortestMatch ) ) ) { - Com_Printf( " %s = \"%s\"\n", s, Cvar_VariableString( s ) ); + Com_TruncateLongString( value, Cvar_VariableString( s ) ); + Com_Printf( " %s = \"%s\"\n", s, value ); } } diff --git a/code/qcommon/cvar.c b/code/qcommon/cvar.c index 2f59810..2600880 100644 --- a/code/qcommon/cvar.c +++ b/code/qcommon/cvar.c @@ -469,7 +469,10 @@ Handles variable inspection and changing from the console ============ */ qboolean Cvar_Command( void ) { - cvar_t *v; + cvar_t *v; + char string[ TRUNCATE_LENGTH ]; + char resetString[ TRUNCATE_LENGTH ]; + char latchedString[ TRUNCATE_LENGTH ]; // check variables v = Cvar_FindVar (Cmd_Argv(0)); @@ -479,9 +482,13 @@ qboolean Cvar_Command( void ) { // perform a variable print or set if ( Cmd_Argc() == 1 ) { - Com_Printf ("\"%s\" is:\"%s" S_COLOR_WHITE "\" default:\"%s" S_COLOR_WHITE "\"\n", v->name, v->string, v->resetString ); + Com_TruncateLongString( string, v->string ); + Com_TruncateLongString( resetString, v->resetString ); + Com_Printf ("\"%s\" is:\"%s" S_COLOR_WHITE "\" default:\"%s" S_COLOR_WHITE "\"\n", + v->name, string, resetString ); if ( v->latchedString ) { - Com_Printf( "latched: \"%s\"\n", v->latchedString ); + Com_TruncateLongString( latchedString, v->latchedString ); + Com_Printf( "latched: \"%s\"\n", latchedString ); } return qtrue; } @@ -645,11 +652,21 @@ void Cvar_WriteVariables( fileHandle_t f ) { if( var->flags & CVAR_ARCHIVE ) { // write the latched value, even if it hasn't taken effect yet if ( var->latchedString ) { + if( strlen( var->name ) + strlen( var->latchedString ) + 10 > sizeof( buffer ) ) { + Com_Printf( S_COLOR_YELLOW "WARNING: value of variable " + "\"%s\" too long to write to file\n", var->name ); + continue; + } Com_sprintf (buffer, sizeof(buffer), "seta %s \"%s\"\n", var->name, var->latchedString); } else { + if( strlen( var->name ) + strlen( var->string ) + 10 > sizeof( buffer ) ) { + Com_Printf( S_COLOR_YELLOW "WARNING: value of variable " + "\"%s\" too long to write to file\n", var->name ); + continue; + } Com_sprintf (buffer, sizeof(buffer), "seta %s \"%s\"\n", var->name, var->string); } - FS_Printf (f, "%s", buffer); + FS_Write( buffer, strlen( buffer ), f ); } } } diff --git a/code/qcommon/q_shared.c b/code/qcommon/q_shared.c index 2100390..de54e17 100644 --- a/code/qcommon/q_shared.c +++ b/code/qcommon/q_shared.c @@ -918,6 +918,26 @@ char * QDECL va( char *format, ... ) { return buf; } +/* +============ +Com_TruncateLongString + +Assumes buffer is atleast TRUNCATE_LENGTH big +============ +*/ +void Com_TruncateLongString( char *buffer, const char *s ) +{ + int length = strlen( s ); + + if( length <= TRUNCATE_LENGTH ) + Q_strncpyz( buffer, s, TRUNCATE_LENGTH ); + else + { + Q_strncpyz( buffer, s, ( TRUNCATE_LENGTH / 2 ) - 3 ); + Q_strcat( buffer, TRUNCATE_LENGTH, " ... " ); + Q_strcat( buffer, TRUNCATE_LENGTH, s + length - ( TRUNCATE_LENGTH / 2 ) + 3 ); + } +} /* ===================================================================== diff --git a/code/qcommon/q_shared.h b/code/qcommon/q_shared.h index 2dc5500..6e55a4d 100644 --- a/code/qcommon/q_shared.h +++ b/code/qcommon/q_shared.h @@ -682,6 +682,9 @@ void Swap_Init (void); */ char * QDECL va(char *format, ...); +#define TRUNCATE_LENGTH 64 +void Com_TruncateLongString( char *buffer, const char *s ); + //============================================= // |