+ if (var->flags & CVAR_SAVE)
+ FS_Printf(f, "%s \"%s\"\n", var->name, var->string);
+}
+
+
+// Added by EvilTypeGuy eviltypeguy@qeradiant.com
+// 2000-01-09 CvarList command By Matthias "Maddes" Buecher, http://www.inside3d.com/qip/
+/*
+=========
+Cvar_List
+=========
+*/
+void Cvar_List_f (void)
+{
+ cvar_t *cvar;
+ const char *partial;
+ int len, count;
+
+ if (Cmd_Argc() > 1)
+ {
+ partial = Cmd_Argv (1);
+ len = strlen(partial);
+ }
+ else
+ {
+ partial = NULL;
+ len = 0;
+ }
+
+ count = 0;
+ for (cvar = cvar_vars; cvar; cvar = cvar->next)
+ {
+ if (partial && strncasecmp (partial,cvar->name,len))
+ continue;
+
+ Con_Printf("%s is \"%s\"\n", cvar->name, cvar->string);
+ count++;
+ }
+
+ Con_Printf("%i cvar(s)", count);
+ if (partial)
+ Con_Printf(" beginning with \"%s\"", partial);
+ Con_Print("\n");
+}
+// 2000-01-09 CvarList command by Maddes
+
+void Cvar_Set_f (void)
+{
+ cvar_t *cvar;
+
+ // make sure it's the right number of parameters
+ if (Cmd_Argc() < 3)
+ {
+ Con_Printf("Set: wrong number of parameters, usage: set <variablename> <value>\n");
+ return;
+ }
+
+ // check if it's read-only
+ cvar = Cvar_FindVar(Cmd_Argv(1));
+ if (cvar && cvar->flags & CVAR_READONLY)
+ {
+ Con_Printf("Set: %s is read-only\n", cvar->name);
+ return;
+ }
+
+ if (developer.integer)
+ Con_Print("Set: ");
+
+ // all looks ok, create/modify the cvar
+ Cvar_Get(Cmd_Argv(1), Cmd_Argv(2), 0);
+}
+
+void Cvar_SetA_f (void)
+{
+ cvar_t *cvar;
+
+ // make sure it's the right number of parameters
+ if (Cmd_Argc() < 3)
+ {
+ Con_Printf("SetA: wrong number of parameters, usage: seta <variablename> <value>\n");
+ return;
+ }
+
+ // check if it's read-only
+ cvar = Cvar_FindVar(Cmd_Argv(1));
+ if (cvar && cvar->flags & CVAR_READONLY)
+ {
+ Con_Printf("SetA: %s is read-only\n", cvar->name);
+ return;
+ }
+
+ if (developer.integer)
+ Con_Print("SetA: ");
+
+ // all looks ok, create/modify the cvar
+ Cvar_Get(Cmd_Argv(1), Cmd_Argv(2), CVAR_SAVE);