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).
This commit is contained in:
Enrico Forestieri 2014-06-11 19:08:44 +02:00
parent 970da7c5e2
commit 32e42f2f81
3 changed files with 9 additions and 0 deletions

View File

@ -215,6 +215,9 @@ void init(int argc, char * argv[])
argc_ = argc; argc_ = argc;
argv_ = argv; argv_ = argv;
// Set environment's default locale
setlocale(LC_ALL, "");
// Make sure that the TEMP variable is set // Make sure that the TEMP variable is set
// and sync the Windows environment. // and sync the Windows environment.
setenv("TEMP", "/tmp", false); setenv("TEMP", "/tmp", false);

View File

@ -46,6 +46,9 @@ void init(int argc, char * argv[])
{ {
argc_ = argc; argc_ = argc;
argv_ = argv; argv_ = argv;
// Set environment's default locale
setlocale(LC_ALL, "");
} }

View File

@ -79,6 +79,9 @@ What's new
- Output arguments required by arguments with DefaultArg or PresetArg (bug 9128). - 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 * LYX2LYX