aboutsummaryrefslogtreecommitdiffstats
path: root/code
diff options
context:
space:
mode:
Diffstat (limited to 'code')
-rw-r--r--code/qcommon/cvar.c43
1 files changed, 18 insertions, 25 deletions
diff --git a/code/qcommon/cvar.c b/code/qcommon/cvar.c
index d4809ae..a37de12 100644
--- a/code/qcommon/cvar.c
+++ b/code/qcommon/cvar.c
@@ -739,12 +739,12 @@ weren't declared in C code.
============
*/
void Cvar_Set_f( void ) {
- int i, c, l, len;
- char cmd[5], combined[MAX_STRING_TOKENS];
- cvar_t *v;
+ int c;
+ char *cmd;
+ cvar_t *v;
c = Cmd_Argc();
- Q_strncpyz( cmd, Cmd_Argv(0), sizeof( cmd ) );
+ cmd = Cmd_Argv(0);
if ( c < 2 ) {
Com_Printf ("usage: %s <variable> <value>\n", cmd);
@@ -755,35 +755,28 @@ void Cvar_Set_f( void ) {
return;
}
- combined[0] = 0;
- l = 0;
- for ( i = 2 ; i < c ; i++ ) {
- len = strlen ( Cmd_Argv( i ) + 1 );
- if ( l + len >= MAX_STRING_TOKENS - 2 ) {
- break;
- }
- strcat( combined, Cmd_Argv( i ) );
- if ( i != c-1 ) {
- strcat( combined, " " );
- }
- l += len;
- }
- v = Cvar_Set2 (Cmd_Argv(1), combined, qfalse);
+ v = Cvar_Set2 (Cmd_Argv(1), Cmd_ArgsFrom(2), qfalse);
if( !v ) {
return;
}
switch( cmd[3] ) {
- default:
- case '\0':
+ case 'a':
+ if( !( v->flags & CVAR_ARCHIVE ) ) {
+ v->flags |= CVAR_ARCHIVE;
+ cvar_modifiedFlags |= CVAR_ARCHIVE;
+ }
break;
case 'u':
- v->flags |= CVAR_USERINFO;
+ if( !( v->flags & CVAR_USERINFO ) ) {
+ v->flags |= CVAR_USERINFO;
+ cvar_modifiedFlags |= CVAR_USERINFO;
+ }
break;
case 's':
- v->flags |= CVAR_SERVERINFO;
- break;
- case 'a':
- v->flags |= CVAR_ARCHIVE;
+ if( !( v->flags & CVAR_SERVERINFO ) ) {
+ v->flags |= CVAR_SERVERINFO;
+ cvar_modifiedFlags |= CVAR_SERVERINFO;
+ }
break;
}
}