#include "quakedef.h"
-cvar_t *cvar_vars;
+cvar_t *cvar_vars = NULL;
char *cvar_null_string = "";
/*
*/
cvar_t *Cvar_FindVar (char *var_name)
{
- cvar_t *var;
+ cvar_t *var;
- for (var=cvar_vars ; var ; var=var->next)
+ for (var = cvar_vars;var;var = var->next)
if (!strcmp (var_name, var->name))
return var;
return NULL;
}
+cvar_t *Cvar_FindVarAfter (char *prev_var_name, int neededflags)
+{
+ cvar_t *var;
+
+ if (*prev_var_name)
+ {
+ var = Cvar_FindVar (prev_var_name);
+ if (!var)
+ return NULL;
+ var = var->next;
+ }
+ else
+ var = cvar_vars;
+
+ // search for the next cvar matching the needed flags
+ while (var)
+ {
+ if ((var->flags & neededflags) || !neededflags)
+ break;
+ var = var->next;
+ }
+ return var;
+}
+
/*
============
Cvar_VariableValue
Cvar_Set
============
*/
-void Cvar_Set (char *var_name, char *value)
+void Cvar_SetQuick (cvar_t *var, char *value)
{
- cvar_t *var;
qboolean changed;
- var = Cvar_FindVar (var_name);
- if (!var)
- { // there is an error in C code if this happens
- Con_Printf ("Cvar_Set: variable %s not found\n", var_name);
+ if (var == NULL)
+ {
+ Con_Printf("Cvar_SetQuick: var == NULL\n");
return;
}
changed = strcmp(var->string, value);
+ // LordHavoc: don't reallocate when there is no change
+ if (!changed)
+ return;
- Z_Free (var->string); // free the old value string
+ // LordHavoc: don't reallocate when the buffer is the same size
+ if (!var->string || strlen(var->string) != strlen(value))
+ {
+ Z_Free (var->string); // free the old value string
- var->string = Z_Malloc (strlen(value)+1);
+ var->string = Z_Malloc (strlen(value)+1);
+ }
strcpy (var->string, value);
var->value = atof (var->string);
var->integer = (int) var->value;
}
}
+void Cvar_Set (char *var_name, char *value)
+{
+ cvar_t *var;
+ var = Cvar_FindVar (var_name);
+ if (var == NULL)
+ {
+ // there is an error in C code if this happens
+ Con_Printf ("Cvar_Set: variable %s not found\n", var_name);
+ return;
+ }
+
+ Cvar_SetQuick(var, value);
+}
+
/*
============
Cvar_SetValue
============
*/
+void Cvar_SetValueQuick (cvar_t *var, float value)
+{
+ char val[32];
+
+ // LordHavoc: changed from %f to %g to use shortest representation
+ sprintf (val, "%g",value);
+ Cvar_SetQuick (var, val);
+}
+
void Cvar_SetValue (char *var_name, float value)
{
char val[32];
Con_Printf ("\n");
}
// 2000-01-09 CvarList command by Maddes
+