diff --git a/degesch.c b/degesch.c index 86b9a0e..620e748 100644 --- a/degesch.c +++ b/degesch.c @@ -6818,9 +6818,15 @@ show_aliases_list (struct app_context *ctx) log_global_indent (ctx, ""); log_global_indent (ctx, "Aliases:"); - struct str_map_iter iter; - str_map_iter_init (&iter, get_aliases_config (ctx)); + struct str_map *aliases = get_aliases_config (ctx); + if (!aliases->len) + { + log_global_indent (ctx, " (none)"); + return true; + } + struct str_map_iter iter; + str_map_iter_init (&iter, aliases); struct config_item_ *alias; while ((alias = str_map_iter_next (&iter))) { @@ -6839,15 +6845,22 @@ show_aliases_list (struct app_context *ctx) static bool handle_command_alias (struct handler_args *a) { - char *name = cut_word (&a->arguments); - if (!*name) + if (!*a->arguments) return show_aliases_list (a->ctx); - char *definition = cut_word (&a->arguments); - if (!*definition) + // TODO: validate the name; maybe also while loading configuration + char *name = cut_word (&a->arguments); + if (!*a->arguments) return false; - // TODO: set the alias "name" to "definition" + struct config_item_ *alias = config_item_string_from_cstr (a->arguments); + + struct str definition; + str_init (&definition); + config_item_write_string (&definition, &alias->value.string); + str_map_set (get_aliases_config (a->ctx), name, alias); + log_global_status (a->ctx, "Created alias /#s: #s", name, definition.str); + str_free (&definition); return true; }