Con_Printf("No commands are pending.\n");
else
{
- llist_t *pos;
- List_For_Each(pos, &cbuf->deferred)
- {
- current = List_Entry(*pos, cmd_input_t, list);
+ List_For_Each_Entry(current, &cbuf->deferred, list)
Con_Printf("-> In %9.2f: %s\n", current->delay, current->text);
- }
}
}
else if(Cmd_Argc(cmd) == 2 && !strcasecmp("clear", Cmd_Argv(cmd, 1)))
ret = existing;
else if(!List_Is_Empty(&cbuf->free))
{
- ret = List_Entry(*cbuf->free.next, cmd_input_t, list);
+ ret = List_Entry(cbuf->free.next, cmd_input_t, list);
ret->length = 0;
ret->pending = false;
}
Con_Print("Cbuf_AddText: overflow\n");
else
{
- Cbuf_LinkCreate(cmd, &llist, (List_Is_Empty(&cbuf->start) ? NULL : List_Entry(*cbuf->start.prev, cmd_input_t, list)), text);
+ Cbuf_LinkCreate(cmd, &llist, (List_Is_Empty(&cbuf->start) ? NULL : List_Entry(cbuf->start.prev, cmd_input_t, list)), text);
if(!List_Is_Empty(&llist))
List_Splice_Tail(&llist, &cbuf->start);
}
Con_Print("Cbuf_InsertText: overflow\n");
else
{
- Cbuf_LinkCreate(cmd, &llist, List_Entry(*cbuf->start.next, cmd_input_t, list), text);
+ Cbuf_LinkCreate(cmd, &llist, List_Entry(cbuf->start.next, cmd_input_t, list), text);
if(!List_Is_Empty(&llist))
List_Splice(&llist, &cbuf->start);
}
*/
static void Cbuf_Execute_Deferred (cmd_buf_t *cbuf)
{
- llist_t *pos;
cmd_input_t *current;
double eat;
return;
cbuf->deferred_oldtime = host.realtime;
- List_For_Each(pos, &cbuf->deferred)
+ List_For_Each_Entry(current, &cbuf->deferred, list)
{
- current = List_Entry(*pos, cmd_input_t, list);
current->delay -= eat;
if(current->delay <= 0)
{
cbuf->size += current->length;
- List_Move(pos, &cbuf->start);
+ List_Move(¤t->list, &cbuf->start);
// We must return and come back next frame or the engine will freeze. Fragile... like glass :3
return;
}
* commands down. This is necessary because commands (exec, alias)
* can insert data at the beginning of the text buffer
*/
- current = List_Entry(*cbuf->start.next, cmd_input_t, list);
+ current = List_Entry(cbuf->start.next, cmd_input_t, list);
// Recycle memory so using WASD doesn't cause a malloc and free
List_Move_Tail(¤t->list, &cbuf->free);
{ // Correct Arguments Specified
// Acquire Potential CVar
cvar_t* cvCVar = Cvar_FindVar(cmd->cvars, Cmd_Argv(cmd, 1), cmd->cvars_flagsmask);
+ cvCVar = cvCVar->parent ? cvCVar->parent : cvCVar;
if(cvCVar != NULL)
{ // Valid CVar
}
if((cvar = Cvar_FindVar(cmd->cvars, varname, cmd->cvars_flagsmask)) && !(cvar->flags & CF_PRIVATE))
- return cvar->string;
+ return cvar->parent ? cvar->parent->string : cvar->string;
return NULL;
}
partial = va(vabuf, sizeof(vabuf), "*%s*", partial);
count = 0;
- for (cvar = cmd->cvars->vars; cvar; cvar = cvar->next)
+ List_For_Each_Entry(cvar, &cmd->cvars->vars->list, list)
{
if (matchpattern_with_separator(cvar->name, partial, true, "", false) ||
matchpattern_with_separator(cvar->description, partial, true, "", false))
{
Con_Printf ("cvar ");
- Cvar_PrintHelp(cvar, cvar->name, true);
+ Cvar_PrintHelp(cvar->parent ? cvar->parent : cvar, cvar->name, true);
count++;
}
- for (char **cvar_alias = cvar->aliases; cvar_alias && *cvar_alias; cvar_alias++)
- {
- if (matchpattern_with_separator(*cvar_alias, partial, true, "", false))
- {
- Con_Printf ("cvar ");
- Cvar_PrintHelp(cvar, *cvar_alias, true);
- count++;
- }
- }
}
for (func = cmd->userdefined->qc_functions; func; func = func->next)
{
cmd->null_string = "";
cmd->cvars = cvars;
+ cmd->cvars->mempool = Mem_AllocPool("cvars", 0, NULL);
+ cmd->cvars->vars = (cvar_t *)Mem_Alloc(cmd->cvars->mempool, sizeof(cvar_t));
+ cmd->cvars->vars->list.next = cmd->cvars->vars->list.prev = &cmd->cvars->vars->list;
cmd->cvars_flagsmask = cvars_flagsmask;
cmd->cmd_flags = cmds_flagsmask;
cmd->userdefined = userdefined;