From 8d0d8397f17cbdbdb7f0cde750887ac0b9e1ba84 Mon Sep 17 00:00:00 2001 From: Karsten Heimrich Date: Wed, 24 Jun 2015 18:03:04 +0200 Subject: Fix missing filename conversion on UNIX systems. Task-number: QTIFW-643 Change-Id: If6df557d09b23dce99caed8f7b00dd726a6d42e6 Reviewed-by: Niels Weber Reviewed-by: Kai Koehne --- src/libs/installer/lib7z_facade.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/libs') diff --git a/src/libs/installer/lib7z_facade.cpp b/src/libs/installer/lib7z_facade.cpp index e68064204..cca05ea4c 100644 --- a/src/libs/installer/lib7z_facade.cpp +++ b/src/libs/installer/lib7z_facade.cpp @@ -79,6 +79,9 @@ HINSTANCE g_hInstance = 0; # define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) # define FILE_ATTRIBUTE_UNIX_EXTENSION 0x8000 /* trick for Unix */ #else +extern "C" int global_use_utf16_conversion; + +#include #include #endif @@ -142,6 +145,18 @@ void initSevenZ() NArchive::NSplit::registerArcSplit(); NArchive::NLzma::NLzmaAr::registerArcLzma(); NArchive::NLzma::NLzma86Ar::registerArcLzma86(); + +#ifndef Q_OS_WIN +# ifdef ENV_HAVE_LOCALE + const QByteArray locale = qgetenv("LC_ALL").toUpper(); + if (!locale.isEmpty() && (locale != "C") && (locale != "POSIX")) + global_use_utf16_conversion = 1; +# elif defined(LOCALE_IS_UTF8) + global_use_utf16_conversion = 1; +# else + global_use_utf16_conversion = 0; +# endif +#endif }); } -- cgit v1.2.3