Skip to content
Snippets Groups Projects
Commit a9015157 authored by SteelT's avatar SteelT
Browse files

Replace the alias if an alias already exists

Reduces wasting memory by having multiple aliases with the same name
parent c55b2f29
No related branches found
No related tags found
1 merge request!2055Alias improvements
...@@ -692,11 +692,36 @@ static void print_alias(void) ...@@ -692,11 +692,36 @@ static void print_alias(void)
} }
} }
static void add_alias(char *newname, char *newcmd)
{
cmdalias_t *a;
// Check for existing aliases first
for (a = com_alias; a; a = a->next)
{
if (!stricmp(newname, a->name))
{
Z_Free(a->value); // Free old cmd
a->value = newcmd;
return;
}
}
// No alias found, add it instead
a = ZZ_Alloc(sizeof *a);
a->next = com_alias;
com_alias = a;
a->name = newname;
a->value = newcmd;
}
/** Creates a command name that replaces another command. /** Creates a command name that replaces another command.
*/ */
static void COM_Alias_f(void) static void COM_Alias_f(void)
{ {
cmdalias_t *a; char *name;
char *zcmd;
char cmd[1024]; char cmd[1024];
size_t i, c; size_t i, c;
...@@ -707,11 +732,7 @@ static void COM_Alias_f(void) ...@@ -707,11 +732,7 @@ static void COM_Alias_f(void)
return; return;
} }
a = ZZ_Alloc(sizeof *a); name = Z_StrDup(COM_Argv(1));
a->next = com_alias;
com_alias = a;
a->name = Z_StrDup(COM_Argv(1));
// copy the rest of the command line // copy the rest of the command line
cmd[0] = 0; // start out with a null string cmd[0] = 0; // start out with a null string
...@@ -723,8 +744,8 @@ static void COM_Alias_f(void) ...@@ -723,8 +744,8 @@ static void COM_Alias_f(void)
strcat(cmd, " "); strcat(cmd, " ");
} }
strcat(cmd, "\n"); strcat(cmd, "\n");
zcmd = Z_StrDup(cmd);
a->value = Z_StrDup(cmd); add_alias(name, zcmd);
} }
/** Prints a line of text to the console. /** Prints a line of text to the console.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment