From 6d1d3f761e4dff2844d16a6f22b9dd9794cdcf7a Mon Sep 17 00:00:00 2001 From: Hombre Date: Mon, 13 Jun 2011 00:29:48 +0200 Subject: [PATCH] Solving issue #706: Files containing non-Latin characters won't open when supplied as command line argument --- rtengine/safegtk.cc | 29 +++++++++++++++++++++++++++++ rtengine/safegtk.h | 1 + rtgui/main.cc | 12 ++++++------ 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/rtengine/safegtk.cc b/rtengine/safegtk.cc index 0d1a1e307..d9a66bd9c 100644 --- a/rtengine/safegtk.cc +++ b/rtengine/safegtk.cc @@ -132,6 +132,35 @@ void safe_build_subdir_list (Glib::RefPtr &dir, std::vector error; + utf8_str = locale_to_utf8(src, error); + if (error.get()) + utf8_str = Glib::convert_with_fallback(src, "UTF8", "LATIN1","?", error); + } +#endif //GLIBMM_EXCEPTIONS_ENABLED +#else + utf8_str = Glib::filename_to_utf8(src); +#endif + return utf8_str; +} + Glib::ustring safe_locale_to_utf8 (const std::string& src) { Glib::ustring utf8_str; diff --git a/rtengine/safegtk.h b/rtengine/safegtk.h index 3303833f5..53b55fe7b 100644 --- a/rtengine/safegtk.h +++ b/rtengine/safegtk.h @@ -26,6 +26,7 @@ void safe_build_subdir_list (Glib::RefPtr &dir, std::vector names; Glib::RefPtr dir = Gio::File::create_for_path ( argv[iArg] ); @@ -213,7 +213,7 @@ int processLineParams( int argc, char **argv ) } } }else{ - inputFiles.push_back( safe_locale_to_utf8 (argv[iArg]) ); + inputFiles.push_back( safe_filename_to_utf8 (argv[iArg]) ); } } break; @@ -242,7 +242,7 @@ int processLineParams( int argc, char **argv ) return -1; } }else{ - argv1 = safe_locale_to_utf8 ( argv[iArg] ); + argv1 = safe_filename_to_utf8 ( argv[iArg] ); if( outputDirectory ){ options.savePathFolder = outputPath; options.saveUsePathTemplate = false;