/* ============ Cvar_Set_f Allows setting and defining of arbitrary cvars from console, even if they 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; c = Cmd_Argc(); Q_strncpyz( cmd, Cmd_Argv(0), sizeof( cmd ) ); if ( c < 2 ) { Com_Printf ("usage: %s <variable> <value>\n", cmd); return; } if ( c == 2 ) { Cvar_Print_f(); 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); if( !v ) { return; } switch( cmd[3] ) { default: case '\0': break; case 'u': v->flags |= CVAR_USERINFO; break; case 's': v->flags |= CVAR_SERVERINFO; break; case 'a': v->flags |= CVAR_ARCHIVE; break; } }
/* ======================================================================================================================================= Cvar_Set_f Allows setting and defining of arbitrary cvars from console, even if they weren't declared in C code. ======================================================================================================================================= */ void Cvar_Set_f(void) { int c; char *cmd; cvar_t *v; c = Cmd_Argc(); cmd = Cmd_Argv(0); if (c < 2) { Com_Printf("usage: %s <variable> <value>\n", cmd); return; } if (c == 2) { Cvar_Print_f(); return; } v = Cvar_Set2(Cmd_Argv(1), Cmd_ArgsFrom(2), qfalse); if (!v) { return; } switch (cmd[3]) { case 'a': if (!(v->flags & CVAR_ARCHIVE)) { v->flags |= CVAR_ARCHIVE; cvar_modifiedFlags |= CVAR_ARCHIVE; } break; case 'u': if (!(v->flags & CVAR_USERINFO)) { v->flags |= CVAR_USERINFO; cvar_modifiedFlags |= CVAR_USERINFO; } break; case 's': if (!(v->flags & CVAR_SERVERINFO)) { v->flags |= CVAR_SERVERINFO; cvar_modifiedFlags |= CVAR_SERVERINFO; } break; } }
/* ============ Cvar_Set_f Allows setting and defining of arbitrary cvars from console, even if they weren't declared in C code. ============ */ void Cvar_Set_f( void ) { int c, flag; char *cmd; cvar_t *v; c = Cmd_Argc(); cmd = Cmd_Argv(0); if ( c < 2 ) { Com_Printf ("usage: %s <variable> <value>\n", cmd); return; } if ( c == 2 ) { Cvar_Print_f(); return; } v = Cvar_Set2 (Cmd_Argv(1), Cmd_ArgsFrom(2), qfalse); if( !v ) { return; } // don't make these old vars archive even if the client's old autogen told us to if( !Q_stricmp( Cmd_Argv(1), "r_mode" ) || !Q_stricmp( Cmd_Argv(1), "r_customheight" ) || !Q_stricmp( Cmd_Argv(1), "r_customwidth" ) || !Q_stricmp( Cmd_Argv(1), "r_custompixelAspect" ) ) return; switch( cmd[3] ) { default: return; case 'u': flag = CVAR_USERINFO; break; case 's': flag = CVAR_SERVERINFO; break; case 'a': case '\0': flag = CVAR_ARCHIVE; break; } v->flags |= flag; cvar_modifiedFlags |= flag; }
/* ============ Cvar_Set_f Allows setting and defining of arbitrary cvars from console, even if they weren't declared in C code. ============ */ void Cvar_Set_f(void) { int c; char *cmd; cvar_t *v; c = Cmd_Argc(); cmd = Cmd_Argv(0); if (c < 2) { Com_Printf("usage: %s <variable> <value> [unsafe]\n", cmd); return; } if (c == 2) { Cvar_Print_f(); return; } // ydnar: handle unsafe vars if (c >= 4 && !strcmp(Cmd_Argv(c - 1), "unsafe")) { c--; if (com_crashed != NULL && com_crashed->integer) { Com_Printf("%s is unsafe. Check com_crashed.\n", Cmd_Argv(1)); return; } } v = Cvar_Set2(Cmd_Argv(1), Cmd_ArgsFromTo(2, c), qfalse); if (!v) { return; } switch (cmd[3]) { case 'a': if (!(v->flags & CVAR_ARCHIVE)) { v->flags |= CVAR_ARCHIVE; cvar_modifiedFlags |= CVAR_ARCHIVE; } break; case 'u': if (!(v->flags & CVAR_USERINFO)) { v->flags |= CVAR_USERINFO; cvar_modifiedFlags |= CVAR_USERINFO; } break; case 's': if (!(v->flags & CVAR_SERVERINFO)) { v->flags |= CVAR_SERVERINFO; cvar_modifiedFlags |= CVAR_SERVERINFO; } break; } }