diff options
Diffstat (limited to 'src/command')
-rw-r--r-- | src/command/command.c | 10 | ||||
-rw-r--r-- | src/command/command.h | 2 | ||||
-rw-r--r-- | src/command/commands.c | 23 |
3 files changed, 25 insertions, 10 deletions
diff --git a/src/command/command.c b/src/command/command.c index 68c2c6dc..2393a734 100644 --- a/src/command/command.c +++ b/src/command/command.c @@ -1120,6 +1120,16 @@ cmd_uninit(void) autocomplete_free(aliases_ac); } +gboolean +cmd_exists(char *cmd) +{ + if (commands_ac == NULL) { + return FALSE; + } else { + return autocomplete_contains(commands_ac, cmd); + } +} + void cmd_autocomplete_add(char *value) { diff --git a/src/command/command.h b/src/command/command.h index 046fda64..9e67d928 100644 --- a/src/command/command.h +++ b/src/command/command.h @@ -41,6 +41,8 @@ gboolean cmd_execute(const char * const command, const char * const inp); gboolean cmd_execute_alias(const char * const inp, gboolean *ran); gboolean cmd_execute_default(const char * const inp); +gboolean cmd_exists(char *cmd); + GSList * cmd_get_basic_help(void); GSList * cmd_get_settings_help(void); GSList * cmd_get_presence_help(void); diff --git a/src/command/commands.c b/src/command/commands.c index 76f85210..b282f525 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -1830,21 +1830,24 @@ cmd_alias(gchar **args, struct cmd_help_t help) cons_show("Usage: %s", help.usage); return TRUE; } else { + GString *ac_value = g_string_new("/"); + g_string_append(ac_value, alias); + char *value = args[2]; if (value == NULL) { cons_show("Usage: %s", help.usage); + g_string_free(ac_value, TRUE); + return TRUE; + } else if (cmd_exists(ac_value->str)) { + cons_show("Command or alias '%s' already exists."); + g_string_free(ac_value, TRUE); return TRUE; } else { - if (prefs_add_alias(alias, value) == TRUE) { - GString *ac_value = g_string_new("/"); - g_string_append(ac_value, alias); - cmd_autocomplete_add(ac_value->str); - cmd_alias_add(alias); - g_string_free(ac_value, TRUE); - cons_show("Command alias added /%s -> %s", alias, value); - } else { - cons_show("Command alias /%s already exists.", alias); - } + prefs_add_alias(alias, value); + cmd_autocomplete_add(ac_value->str); + cmd_alias_add(alias); + cons_show("Command alias added /%s -> %s", alias, value); + g_string_free(ac_value, TRUE); return TRUE; } } |