}
if (filename == NULL)
filename = g_path_get_basename("Unnamed part");
-
- tmp = g_filename_from_utf8(filename, -1, NULL, NULL, NULL);
-
+ if (!g_utf8_validate(filename, -1, NULL))
+ tmp = conv_codeset_strdup(filename,
+ conv_get_locale_charset_str(),
+ CS_UTF_8);
+ else
+ tmp = g_strdup(filename);
+
if (tmp == NULL) {
g_warning("filename not in UTF-8");
tmp = g_strdup("Unnamed part");
if (!g_utf8_validate(partname, -1, NULL)) {
gchar *tmp = conv_filename_to_utf8(partname);
- g_free(partname);
- partname = tmp;
+ if (!tmp) {
+ tmp = conv_codeset_strdup(partname,
+ conv_get_locale_charset_str(),
+ CS_UTF_8);
+ }
+ if (tmp) {
+ g_free(partname);
+ partname = tmp;
+ }
}
subst_for_filename(partname);