=============================================================================
*/
-static sizebuf_t cmd_text;
-
-/*
-============
-Cbuf_Init
-============
-*/
-void Cbuf_Init (void)
-{
// LordHavoc: inreased this from 8192 to 32768
- SZ_Alloc (&cmd_text, 32768, "command buffer"); // space for commands and script files
-}
-
-/*
-============
-Cbuf_Shutdown
-============
-*/
-void Cbuf_Shutdown (void)
-{
- SZ_Free (&cmd_text);
-}
+static sizebuf_t cmd_text;
+static qbyte cmd_text_buf[32768];
/*
============
quake -nosound +cmd amlev1
===============
*/
+qboolean host_stuffcmdsrun = false;
void Cmd_StuffCmds_f (void)
{
int i, j, l;
return;
}
+ host_stuffcmdsrun = true;
for (i = 0;i < com_argc;i++)
{
if (com_argv[i] && com_argv[i][0] == '+' && (com_argv[i][1] < '0' || com_argv[i][1] > '9'))
if (!a)
{
+ cmdalias_t *prev, *current;
+
a = Z_Malloc (sizeof(cmdalias_t));
- a->next = cmd_alias;
- cmd_alias = a;
+ strlcpy (a->name, s, sizeof (a->name));
+ // insert it at the right alphanumeric position
+ for( prev = NULL, current = cmd_alias ; current && strcmp( current->name, a->name ) < 0 ; prev = current, current = current->next )
+ ;
+ if( prev ) {
+ prev->next = a;
+ } else {
+ cmd_alias = a;
+ }
+ a->next = current;
}
- strlcpy (a->name, s, sizeof (a->name));
+
// copy the rest of the command line
cmd[0] = 0; // start out with a null string
void Cmd_Init (void)
{
cmd_mempool = Mem_AllocPool("commands", 0, NULL);
+ // space for commands and script files
+ cmd_text.data = cmd_text_buf;
+ cmd_text.maxsize = sizeof(cmd_text_buf);
+ cmd_text.cursize = 0;
+}
+void Cmd_Init_Commands (void)
+{
//
// register our commands
//
{
l = strlen(com_token) + 1;
if (cmd_tokenizebufferpos + l > CMD_TOKENIZELENGTH)
- Sys_Error("Cmd_TokenizeString: ran out of %i character buffer space for command arguements\n", CMD_TOKENIZELENGTH);
+ {
+ Con_Printf("Cmd_TokenizeString: ran out of %i character buffer space for command arguements\n", CMD_TOKENIZELENGTH);
+ break;
+ }
strcpy (cmd_tokenizebuffer + cmd_tokenizebufferpos, com_token);
cmd_argv[cmd_argc] = cmd_tokenizebuffer + cmd_tokenizebufferpos;
cmd_tokenizebufferpos += l;
cmd_argc++;
}
}
-
}
void Cmd_AddCommand (const char *cmd_name, xcommand_t function)
{
cmd_function_t *cmd;
+ cmd_function_t *prev, *current;
// fail if the command is a variable name
if (Cvar_VariableString(cmd_name)[0])
cmd->name = cmd_name;
cmd->function = function;
cmd->next = cmd_functions;
- cmd_functions = cmd;
+
+// insert it at the right alphanumeric position
+ for( prev = NULL, current = cmd_functions ; current && strcmp( current->name, cmd->name ) < 0 ; prev = current, current = current->next )
+ ;
+ if( prev ) {
+ prev->next = cmd;
+ } else {
+ cmd_functions = cmd;
+ }
+ cmd->next = current;
}
/*
return; // no tokens
}
-// check functions (only after host_initialized)
- if (host_initialized || !strcasecmp(cmd_argv[0], "exec") || !strcasecmp(cmd_argv[0], "set") || !strcasecmp(cmd_argv[0], "seta"))
+// check functions
+ for (cmd=cmd_functions ; cmd ; cmd=cmd->next)
{
- for (cmd=cmd_functions ; cmd ; cmd=cmd->next)
+ if (!strcasecmp (cmd_argv[0],cmd->name))
{
- if (!strcasecmp (cmd_argv[0],cmd->name))
- {
- cmd->function ();
- cmd_tokenizebufferpos = oldpos;
- return;
- }
+ cmd->function ();
+ cmd_tokenizebufferpos = oldpos;
+ return;
}
}
-// check alias (only after host_initialized)
- if (host_initialized)
+// check alias
+ for (a=cmd_alias ; a ; a=a->next)
{
- for (a=cmd_alias ; a ; a=a->next)
+ if (!strcasecmp (cmd_argv[0], a->name))
{
- if (!strcasecmp (cmd_argv[0], a->name))
- {
- Cbuf_InsertText (a->value);
- cmd_tokenizebufferpos = oldpos;
- return;
- }
+ Cbuf_InsertText (a->value);
+ cmd_tokenizebufferpos = oldpos;
+ return;
}
}
-// check cvars (always)
- if (!Cvar_Command () && host_initialized)
+// check cvars
+ if (!Cvar_Command () && host_framecount > 0)
Con_Printf("Unknown command \"%s\"\n", Cmd_Argv(0));
cmd_tokenizebufferpos = oldpos;
int i;
if (!parm)
- Sys_Error ("Cmd_CheckParm: NULL");
+ {
+ Con_Printf ("Cmd_CheckParm: NULL");
+ return 0;
+ }
for (i = 1; i < Cmd_Argc (); i++)
if (!strcasecmp (parm, Cmd_Argv (i)))