/*
============
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;
	}
}
예제 #2
0
/*
=======================================================================================================================================
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;
	}
}
예제 #3
0
파일: cvar.c 프로젝트: redrumrobot/korx
/*
============
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;
}
예제 #4
0
파일: cvar.c 프로젝트: Ponce/etlegacy
/*
============
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;
	}
}