talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit 85fab199401113cc31da29958727c709c0d09081
parent 99fbe41c47ff6bc119986d476e21aa24515c0cd4
Author: Andrej Kacian <ticho@claws-mail.org>
Date:   Fri,  1 Mar 2019 14:51:58 +0100

Move pgpcore's get_part_as_string() to procmime.c

Diffstat:
Msrc/plugins/pgpcore/pgp_utils.c | 60------------------------------------------------------------
Msrc/plugins/pgpcore/pgp_utils.h | 1-
Msrc/plugins/pgpcore/plugin.def | 1-
Msrc/plugins/pgpinline/claws.def | 1+
Msrc/plugins/pgpinline/mypgpcore.def | 1-
Msrc/plugins/pgpinline/pgpinline.c | 8++++----
Msrc/plugins/pgpmime/claws.def | 1+
Msrc/plugins/pgpmime/mypgpcore.def | 1-
Msrc/plugins/pgpmime/pgpmime.c | 2+-
Msrc/procmime.c | 59+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/procmime.h | 2++
11 files changed, 68 insertions(+), 69 deletions(-)

diff --git a/src/plugins/pgpcore/pgp_utils.c b/src/plugins/pgpcore/pgp_utils.c @@ -31,66 +31,6 @@ #include "codeconv.h" #include "file-utils.h" -gchar *get_part_as_string(MimeInfo *mimeinfo) -{ - gchar *textdata = NULL; - gchar *filename = NULL; - FILE *fp; - - cm_return_val_if_fail(mimeinfo != NULL, 0); - procmime_decode_content(mimeinfo); - - if (mimeinfo->content == MIMECONTENT_MEM) - textdata = g_strdup(mimeinfo->data.mem); - else { - filename = procmime_get_tmp_file_name(mimeinfo); - if (procmime_get_part(filename, mimeinfo) < 0) { - g_warning("error dumping temporary file '%s'", filename); - g_free(filename); - return NULL; - } - fp = claws_fopen(filename,"rb"); - if (!fp) { - g_warning("error opening temporary file '%s'", filename); - - g_free(filename); - return NULL; - } - textdata = file_read_stream_to_str_no_recode(fp); - - claws_fclose(fp); - g_unlink(filename); - g_free(filename); - } - - if (!g_utf8_validate(textdata, -1, NULL)) { - gchar *tmp = NULL; - codeconv_set_strict(TRUE); - if (procmime_mimeinfo_get_parameter(mimeinfo, "charset")) { - tmp = conv_codeset_strdup(textdata, - procmime_mimeinfo_get_parameter(mimeinfo, "charset"), - CS_UTF_8); - } - if (!tmp) { - tmp = conv_codeset_strdup(textdata, - conv_get_locale_charset_str_no_utf8(), - CS_UTF_8); - } - codeconv_set_strict(FALSE); - if (!tmp) { - tmp = conv_codeset_strdup(textdata, - conv_get_locale_charset_str_no_utf8(), - CS_UTF_8); - } - if (tmp) { - g_free(textdata); - textdata = tmp; - } - } - - return textdata; -} - gchar *pgp_locate_armor_header(gchar *textdata, const gchar *armor_header) { gchar *pos; diff --git a/src/plugins/pgpcore/pgp_utils.h b/src/plugins/pgpcore/pgp_utils.h @@ -27,7 +27,6 @@ #include "procmime.h" -gchar *get_part_as_string(MimeInfo *mimeinfo); gchar *pgp_locate_armor_header(gchar *textdata, const gchar *armor_header); #endif /* __PGP_UTILS_H__ */ diff --git a/src/plugins/pgpcore/plugin.def b/src/plugins/pgpcore/plugin.def @@ -27,6 +27,5 @@ EXPORTS cm_gpgme_data_rewind - get_part_as_string pgp_locate_armor_header prefs_gpg_auto_check_signatures diff --git a/src/plugins/pgpinline/claws.def b/src/plugins/pgpinline/claws.def @@ -25,4 +25,5 @@ procmime_mimeinfo_parent procmime_scan_file procmime_write_mimeinfo procmime_get_part +procmime_get_part_as_string procmime_get_tmp_file_name diff --git a/src/plugins/pgpinline/mypgpcore.def b/src/plugins/pgpinline/mypgpcore.def @@ -14,6 +14,5 @@ sgpgme_sigstat_gpgme_to_privacy sgpgme_sigstat_info_full sgpgme_sigstat_info_short sgpgme_verify_signature -get_part_as_string pgp_locate_armor_header prefs_gpg_auto_check_signatures diff --git a/src/plugins/pgpinline/pgpinline.c b/src/plugins/pgpinline/pgpinline.c @@ -115,7 +115,7 @@ static gboolean pgpinline_is_signed(MimeInfo *mimeinfo) return data->is_signed; } - textdata = get_part_as_string(mimeinfo); + textdata = procmime_get_part_as_string(mimeinfo); if (!textdata) return FALSE; @@ -164,7 +164,7 @@ static gint pgpinline_check_signature(MimeInfo *mimeinfo) cm_return_val_if_fail(mimeinfo->privacy != NULL, 0); data = (PrivacyDataPGP *) mimeinfo->privacy; - textdata = get_part_as_string(mimeinfo); + textdata = procmime_get_part_as_string(mimeinfo); if (!textdata) { g_free(textdata); @@ -265,7 +265,7 @@ static gboolean pgpinline_is_encrypted(MimeInfo *mimeinfo) mimeinfo->subtype = g_strdup("plain"); } - textdata = get_part_as_string(mimeinfo); + textdata = procmime_get_part_as_string(mimeinfo); if (!textdata) return FALSE; @@ -317,7 +317,7 @@ static MimeInfo *pgpinline_decrypt(MimeInfo *mimeinfo) return NULL; } - textdata = get_part_as_string(mimeinfo); + textdata = procmime_get_part_as_string(mimeinfo); if (!textdata) { gpgme_release(ctx); privacy_set_error(_("Couldn't get text data.")); diff --git a/src/plugins/pgpmime/claws.def b/src/plugins/pgpmime/claws.def @@ -16,6 +16,7 @@ privacy_register_system privacy_reset_error privacy_set_error privacy_unregister_system +procmime_get_part_as_string procmime_mimeinfo_free_all procmime_mimeinfo_get_parameter procmime_mimeinfo_new diff --git a/src/plugins/pgpmime/mypgpcore.def b/src/plugins/pgpmime/mypgpcore.def @@ -16,6 +16,5 @@ sgpgme_sigstat_info_full sgpgme_sigstat_info_short sgpgme_verify_signature cm_gpgme_data_rewind -get_part_as_string pgp_locate_armor_header prefs_gpg_auto_check_signatures diff --git a/src/plugins/pgpmime/pgpmime.c b/src/plugins/pgpmime/pgpmime.c @@ -293,7 +293,7 @@ static gboolean pgpmime_is_encrypted(MimeInfo *mimeinfo) if (g_ascii_strcasecmp(tmpinfo->subtype, "octet-stream")) return FALSE; - textdata = get_part_as_string(tmpinfo); + textdata = procmime_get_part_as_string(tmpinfo); if (!textdata) return FALSE; diff --git a/src/procmime.c b/src/procmime.c @@ -2701,3 +2701,62 @@ gchar *procmime_get_part_file_name(MimeInfo *mimeinfo) return base; } +gchar *procmime_get_part_as_string(MimeInfo *mimeinfo) +{ + gchar *textdata = NULL; + gchar *filename = NULL; + FILE *fp; + + cm_return_val_if_fail(mimeinfo != NULL, 0); + procmime_decode_content(mimeinfo); + + if (mimeinfo->content == MIMECONTENT_MEM) + textdata = g_strdup(mimeinfo->data.mem); + else { + filename = procmime_get_tmp_file_name(mimeinfo); + if (procmime_get_part(filename, mimeinfo) < 0) { + g_warning("error dumping temporary file '%s'", filename); + g_free(filename); + return NULL; + } + fp = claws_fopen(filename,"rb"); + if (!fp) { + g_warning("error opening temporary file '%s'", filename); + + g_free(filename); + return NULL; + } + textdata = file_read_stream_to_str_no_recode(fp); + + claws_fclose(fp); + g_unlink(filename); + g_free(filename); + } + + if (!g_utf8_validate(textdata, -1, NULL)) { + gchar *tmp = NULL; + codeconv_set_strict(TRUE); + if (procmime_mimeinfo_get_parameter(mimeinfo, "charset")) { + tmp = conv_codeset_strdup(textdata, + procmime_mimeinfo_get_parameter(mimeinfo, "charset"), + CS_UTF_8); + } + if (!tmp) { + tmp = conv_codeset_strdup(textdata, + conv_get_locale_charset_str_no_utf8(), + CS_UTF_8); + } + codeconv_set_strict(FALSE); + if (!tmp) { + tmp = conv_codeset_strdup(textdata, + conv_get_locale_charset_str_no_utf8(), + CS_UTF_8); + } + if (tmp) { + g_free(textdata); + textdata = tmp; + } + } + + return textdata; +} diff --git a/src/procmime.h b/src/procmime.h @@ -238,6 +238,8 @@ FILE *procmime_get_binary_content(MimeInfo *mimeinfo); gboolean procmime_scan_text_content(MimeInfo *mimeinfo, gboolean (*scan_callback)(const gchar *str, gpointer cb_data), gpointer cb_data); +gchar *procmime_get_part_as_string(MimeInfo *mimeinfo); + #ifdef __cplusplus } #endif /* __cplusplus */