1 /* Console variables */
17 #define CVAR_MAX_LENGTH 1024
20 /* The list of cvars */
28 for (ptr = cvar_list; ptr != NULL; ptr = ptr->next)
33 void cvar_cmd_set(int argc, char **argv)
35 char buf[CVAR_MAX_LENGTH];
41 if ((ptr = cvar_find(argv[1])))
42 con_printf(CON_NORMAL, "%s: %s\n", ptr->name, ptr->string);
44 con_printf(CON_NORMAL, "set: variable %s not found\n", argv[1]);
51 for (ptr = cvar_list; ptr != NULL; ptr = ptr->next)
52 con_printf(CON_NORMAL, "%s: %s\n", ptr->name, ptr->string);
56 ret = snprintf(buf, CVAR_MAX_LENGTH, "%s", argv[2]);
57 if (ret >= CVAR_MAX_LENGTH) {
58 con_printf(CON_CRITICAL, "set: value too long (max %d characters)\n", CVAR_MAX_LENGTH);
62 for (i = 3; i < argc; i++) {
63 ret = snprintf(buf, CVAR_MAX_LENGTH, "%s %s", buf, argv[i]);
64 if (ret >= CVAR_MAX_LENGTH) {
65 con_printf(CON_CRITICAL, "set: value too long (max %d characters)\n", CVAR_MAX_LENGTH);
69 cvar_set(argv[1], buf);
75 cmd_addcommand("set", cvar_cmd_set, "set <name> <value>\n" " set variable <name> equal to <value>\n"
76 "set <name>\n" " show value of <name>\n"
77 "set\n" " show value of all variables");
83 cvar_t *cvar_find(char *cvar_name)
87 for (ptr = cvar_list; ptr != NULL; ptr = ptr->next)
88 if (!stricmp(cvar_name, ptr->name))
95 const char *cvar_complete(char *text)
98 int len = (int)strlen(text);
103 for (ptr = cvar_list; ptr != NULL; ptr = ptr->next)
104 if (!strnicmp(text, ptr->name, len))
111 /* Register a cvar */
112 void cvar_registervariable(cvar_t *cvar)
117 Assert(cvar != NULL);
119 stringval = cvar->string;
121 cvar->string = d_strdup(stringval);
122 cvar->value = fl2f(strtod(cvar->string, NULL));
123 cvar->intval = (int)strtol(cvar->string, NULL, 10);
126 if (cvar_list == NULL) {
131 /* insert at end of list */
132 for (ptr = cvar_list; ptr->next != NULL; ptr = ptr->next)
133 Assert(stricmp(cvar->name, ptr->name));
138 /* Set a CVar's value */
139 void cvar_set_cvar(cvar_t *cvar, char *value)
144 d_free(cvar->string);
145 cvar->string = d_strdup(value);
146 cvar->value = fl2f(strtod(cvar->string, (char **) NULL));
147 cvar->intval = (int)strtol(cvar->string, NULL, 10);
148 con_printf(CON_VERBOSE, "%s: %s\n", cvar->name, cvar->string);
152 void cvar_set_cvarf(cvar_t *cvar, const char *fmt, ...)
155 char buf[CVAR_MAX_LENGTH];
158 va_start (arglist, fmt);
159 n = vsnprintf (buf, CVAR_MAX_LENGTH, fmt, arglist);
162 Assert(!(n < 0 || n > CVAR_MAX_LENGTH));
164 cvar_set_cvar(cvar, buf);
168 void cvar_set (char *cvar_name, char *value)
172 cvar = cvar_find(cvar_name);
175 con_printf(CON_NORMAL, "cvar %s not found\n", cvar_name);
179 cvar_set_cvar(cvar, value);
183 /* Write archive cvars to file */
184 void cvar_write(CFILE *file)
188 for (ptr = cvar_list; ptr != NULL; ptr = ptr->next)
190 PHYSFSX_printf(file, "%s=%s\n", ptr->name, ptr->string);