From 32e42f2f81c9eca4119b2483505452a8fba57844 Mon Sep 17 00:00:00 2001 From: Enrico Forestieri Date: Wed, 11 Jun 2014 19:08:44 +0200 Subject: [PATCH] Set the default locale at startup. On startup, the default locale is "C", meaning that all system functions assume an ascii codeset. The environment's locale settings should be selected by calling setlocale(LC_ALL,""). This is done by Qt during the QCoreApplication initialization but this inizialization is never performed for batch processing and, as a result, LyX is not able to process files whose names contain non-ascii characters. This is not an issue on Windows, where the file names are always stored as UTF-16, so the call is only performed for unix-like platforms (this also includes cygwin, due to its own filenames management that allows using characters which are forbidden to native programs). --- src/support/os_cygwin.cpp | 3 +++ src/support/os_unix.cpp | 3 +++ status.21x | 3 +++ 3 files changed, 9 insertions(+) diff --git a/src/support/os_cygwin.cpp b/src/support/os_cygwin.cpp index 92cbf15fbb..4179d491c3 100644 --- a/src/support/os_cygwin.cpp +++ b/src/support/os_cygwin.cpp @@ -215,6 +215,9 @@ void init(int argc, char * argv[]) argc_ = argc; argv_ = argv; + // Set environment's default locale + setlocale(LC_ALL, ""); + // Make sure that the TEMP variable is set // and sync the Windows environment. setenv("TEMP", "/tmp", false); diff --git a/src/support/os_unix.cpp b/src/support/os_unix.cpp index b85bdb20cd..03dfb381c2 100644 --- a/src/support/os_unix.cpp +++ b/src/support/os_unix.cpp @@ -46,6 +46,9 @@ void init(int argc, char * argv[]) { argc_ = argc; argv_ = argv; + + // Set environment's default locale + setlocale(LC_ALL, ""); } diff --git a/status.21x b/status.21x index c86f5da929..b4501a6a31 100644 --- a/status.21x +++ b/status.21x @@ -79,6 +79,9 @@ What's new - Output arguments required by arguments with DefaultArg or PresetArg (bug 9128). +- Fix export from command line when included files have names with non-ascii + characters. + * LYX2LYX