From: Jan Smutny Date: Fri, 17 Apr 2020 13:28:37 +0000 (+0200) Subject: [Rework] add alias util:parse_addr for util:parse_mail_address X-Git-Tag: 2.6~515^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d04d3d983dfce9a1e00cdbceaa3b4439432c4a98;p=thirdparty%2Frspamd.git [Rework] add alias util:parse_addr for util:parse_mail_address --- diff --git a/src/lua/lua_util.c b/src/lua/lua_util.c index d2efc9cb2d..e7f18db2b4 100644 --- a/src/lua/lua_util.c +++ b/src/lua/lua_util.c @@ -651,6 +651,7 @@ static const struct luaL_reg utillib_f[] = { LUA_INTERFACE_DEF (util, humanize_number), LUA_INTERFACE_DEF (util, get_tld), LUA_INTERFACE_DEF (util, glob), + {"parse_addr", lua_util_parse_mail_address}, LUA_INTERFACE_DEF (util, parse_mail_address), LUA_INTERFACE_DEF (util, strlen_utf8), LUA_INTERFACE_DEF (util, lower_utf8), @@ -1463,6 +1464,51 @@ lua_util_levenshtein_distance (lua_State *L) return 1; } +static gint +lua_util_parse_addr (lua_State *L) +{ + LUA_TRACE_POINT; + GPtrArray *addrs; + gsize len; + const gchar *str = luaL_checklstring (L, 1, &len); + rspamd_mempool_t *pool; + gboolean own_pool = FALSE; + + if (str) { + + if (lua_type (L, 2) == LUA_TUSERDATA) { + pool = rspamd_lua_check_mempool (L, 2); + + if (pool == NULL) { + return luaL_error (L, "invalid arguments"); + } + } + else { + pool = rspamd_mempool_new (rspamd_mempool_suggest_size (), + "lua util", 0); + own_pool = TRUE; + } + + addrs = rspamd_email_address_from_mime (pool, str, len, NULL); + + if (addrs == NULL) { + lua_pushnil (L); + } + else { + lua_push_emails_address_list (L, addrs, 0); + } + + if (own_pool) { + rspamd_mempool_delete (pool); + } + } + else { + lua_pushnil (L); + } + + return 1; +} + static gint lua_util_fold_header (lua_State *L) {