[configparser] allow normal actions and setups with the same name

personal/stbuehler/wip
Stefan Bühler 11 years ago
parent b1c45e6a8f
commit 97bc95a107
  1. 28
      src/main/config_parser.rl

@ -684,17 +684,9 @@ static gboolean config_parser_include(liServer *srv, GList *ctx_stack, gchar *pa
g_array_append_val(al->data.list, a);
}
/* setup action */
else if (NULL != g_hash_table_lookup(srv->setups, name->data.string->str)) {
else if (ctx->in_setup_block && NULL != g_hash_table_lookup(srv->setups, name->data.string->str)) {
_printf("%s", "... which is a setup action\n");
if (!ctx->in_setup_block) {
WARNING(srv, "action %s can only be called in a setup block", name->data.string->str);
li_value_free(name);
if (val)
li_value_free(val);
return FALSE;
}
if (!li_call_setup(srv, name->data.string->str, val)) {
li_value_free(name);
if (val)
@ -706,17 +698,9 @@ static gboolean config_parser_include(liServer *srv, GList *ctx_stack, gchar *pa
li_value_free(val);
}
/* normal action */
else if (NULL != g_hash_table_lookup(srv->actions, name->data.string->str)) {
else if (!ctx->in_setup_block && NULL != g_hash_table_lookup(srv->actions, name->data.string->str)) {
_printf("%s", "... which is a normal action\n");
if (ctx->in_setup_block) {
WARNING(srv, "action %s can't be called in a setup block", name->data.string->str);
li_value_free(name);
if (val)
li_value_free(val);
return FALSE;
}
al = g_queue_peek_head(ctx->action_list_stack);
a = li_create_action(srv, srv->main_worker, name->data.string->str, val);
li_value_free(val);
@ -762,7 +746,13 @@ static gboolean config_parser_include(liServer *srv, GList *ctx_stack, gchar *pa
g_array_append_val(al->data.list, a);
}
} else {
WARNING(srv, "unknown action %s", name->data.string->str);
if (!ctx->in_setup_block && NULL != g_hash_table_lookup(srv->setups, name->data.string->str)) {
WARNING(srv, "action %s can only be called in a setup block", name->data.string->str);
} else if (ctx->in_setup_block && NULL != g_hash_table_lookup(srv->actions, name->data.string->str)) {
WARNING(srv, "action %s can't be called in a setup block", name->data.string->str);
} else {
WARNING(srv, "unknown action %s", name->data.string->str);
}
if (val)
li_value_free(val);
li_value_free(name);

Loading…
Cancel
Save