aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--degesch.c27
1 files changed, 20 insertions, 7 deletions
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;
}