+ else {
+ /* equals file_read_to_str but without conversion */
+ FILE *fp = fopen(mimeinfo->data.filename, "r");
+ if (!fp)
+ return NULL;
+ textdata = fp_read_noconv(fp);
+ fclose(fp);
+ }
+
+ 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;
+ }
+ }