From 7bd1072c639cb767b3afaf2e0575aeb9f988bc97 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Sun, 15 Feb 2015 17:42:20 +0000 Subject: [PATCH] Also allow setting description. --- src/lua/lua_config.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/lua/lua_config.c b/src/lua/lua_config.c index 4e9ce80ff..df998b8a0 100644 --- a/src/lua/lua_config.c +++ b/src/lua/lua_config.c @@ -207,10 +207,11 @@ LUA_FUNCTION_DEF (config, register_callback_symbol); LUA_FUNCTION_DEF (config, register_callback_symbol_priority); /** - * @method rspamd_config:set_metric_symbol(name, weight, [metric]) + * @method rspamd_config:set_metric_symbol(name, weight, [description], [metric]) * Set the value of a specified symbol in a metric * @param {string} name name of symbol * @param {number} weight the weight multiplier + * @param {string} description symbolic description * @param {string} metric metric name (default metric is used if this value is absent) */ LUA_FUNCTION_DEF (config, set_metric_symbol); @@ -1105,7 +1106,7 @@ lua_config_set_metric_symbol (lua_State * L) { struct rspamd_config *cfg = lua_check_config (L); gchar *name; - const gchar *metric_name = DEFAULT_METRIC; + const gchar *metric_name = DEFAULT_METRIC, *description = NULL; double weight; struct rspamd_symbol_def *s; struct metric *metric; @@ -1113,8 +1114,12 @@ lua_config_set_metric_symbol (lua_State * L) if (cfg) { name = rspamd_mempool_strdup (cfg->cfg_pool, luaL_checkstring (L, 2)); weight = luaL_checknumber (L, 3); + if (lua_gettop (L) > 3) { - metric_name = luaL_checkstring (L, 4); + description = luaL_checkstring (L, 4); + } + if (lua_gettop (L) > 4) { + metric_name = luaL_checkstring (L, 5); } metric = g_hash_table_lookup (cfg->metrics, metric_name); @@ -1122,7 +1127,7 @@ lua_config_set_metric_symbol (lua_State * L) if (metric == NULL) { msg_err ("metric named %s is not defined", metric_name); } - else if (name) { + else if (name != NULL) { s = g_hash_table_lookup (metric->symbols, name); if (s == NULL) { @@ -1131,7 +1136,12 @@ lua_config_set_metric_symbol (lua_State * L) s = rspamd_mempool_alloc0 (cfg->cfg_pool, sizeof (*s)); s->name = rspamd_mempool_strdup (cfg->cfg_pool, name); s->weight_ptr = rspamd_mempool_alloc (cfg->cfg_pool, - sizeof (gdouble)); + sizeof (gdouble)); + + if (description != NULL) { + s->description = rspamd_mempool_strdup (cfg->cfg_pool, + description); + } g_hash_table_insert (metric->symbols, s->name, s); g_hash_table_insert (cfg->metrics_symbols, s->name, metric); -- 2.39.5