}
checked = TRUE;
+ text_part->real_charset = charset;
}
else {
SET_PART_UTF (text_part);
rspamd_mime_text_part_ucs_from_utf (task, text_part);
rspamd_mime_text_part_normalise (task, text_part);
rspamd_mime_text_part_maybe_renormalise (task, text_part);
+ text_part->real_charset = UTF8_CHARSET;
return;
}
MIN (RSPAMD_CHARSET_MAX_CONTENT, part_content->len));
msg_info_task ("detected charset: %s", charset);
checked = TRUE;
+ text_part->real_charset = charset;
}
}
rspamd_mime_text_part_ucs_from_utf (task, text_part);
rspamd_mime_text_part_normalise (task, text_part);
rspamd_mime_text_part_maybe_renormalise (task, text_part);
+ text_part->real_charset = UTF8_CHARSET;
return;
}
text_part->utf_raw_content = part_content;
return;
}
+
+ text_part->real_charset = charset;
}
SET_PART_UTF (text_part);
* @return {string} short abbreviation (such as `ru`) for the script's language
*/
LUA_FUNCTION_DEF (textpart, get_language);
+
+/***
+ * @method text_part:get_charset()
+ * Returns part real charset
+ * @return {string} charset of the part
+ */
+LUA_FUNCTION_DEF (textpart, get_charset);
/***
* @method text_part:get_languages()
* Returns array of tables of all languages detected for a part:
LUA_INTERFACE_DEF (textpart, is_html),
LUA_INTERFACE_DEF (textpart, get_html),
LUA_INTERFACE_DEF (textpart, get_language),
+ LUA_INTERFACE_DEF (textpart, get_charset),
LUA_INTERFACE_DEF (textpart, get_languages),
LUA_INTERFACE_DEF (textpart, get_mimepart),
LUA_INTERFACE_DEF (textpart, get_stats),
return 1;
}
+static gint
+lua_textpart_get_charset (lua_State * L)
+{
+ LUA_TRACE_POINT;
+ struct rspamd_mime_text_part *part = lua_check_textpart (L);
+
+ if (part != NULL) {
+ if (part->real_charset != NULL) {
+ lua_pushstring (L, part->real_charset);
+ return 1;
+ }
+ else {
+ lua_pushnil (L);
+ }
+ }
+ else {
+ return luaL_error (L, "invalid arguments");
+ }
+
+ return 1;
+}
+
static gint
lua_textpart_get_languages (lua_State * L)
{