From c7eb8dbf86904eab61b3bb53f52563d861372f65 Mon Sep 17 00:00:00 2001 From: Martchus Date: Wed, 25 Jan 2017 21:08:20 +0100 Subject: [PATCH 28/33] Enable and fix use of iconv Change-Id: I5f0ab27afca0800dec11c7af74d196190820ae5c --- config.tests/gnu-libiconv/gnu-libiconv.cpp | 2 +- src/corelib/codecs/qiconvcodec.cpp | 7 +++---- src/corelib/configure.json | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/config.tests/gnu-libiconv/gnu-libiconv.cpp b/config.tests/gnu-libiconv/gnu-libiconv.cpp index fe4b87b923..be4236436f 100644 --- a/config.tests/gnu-libiconv/gnu-libiconv.cpp +++ b/config.tests/gnu-libiconv/gnu-libiconv.cpp @@ -43,7 +43,7 @@ int main(int, char **) { iconv_t x = iconv_open("", ""); - const char *inp; + char *inp; char *outp; size_t inbytes, outbytes; iconv(x, &inp, &inbytes, &outp, &outbytes); diff --git a/src/corelib/codecs/qiconvcodec.cpp b/src/corelib/codecs/qiconvcodec.cpp index 330eb7c038..88a782b863 100644 --- a/src/corelib/codecs/qiconvcodec.cpp +++ b/src/corelib/codecs/qiconvcodec.cpp @@ -49,7 +49,6 @@ QT_REQUIRE_CONFIG(iconv); #include #include #include -#include // unistd.h is needed for the _XOPEN_UNIX macro #include @@ -182,7 +181,7 @@ QString QIconvCodec::convertToUnicode(const char* chars, int len, ConverterState IconvState *state = *pstate; size_t inBytesLeft = len; // best case assumption, each byte is converted into one UTF-16 character, plus 2 bytes for the BOM -#if !QT_CONFIG(posix_libiconv) +#if !QT_CONFIG(posix_libiconv) && !defined(Q_OS_WIN) // GNU doesn't disagree with POSIX :/ const char *inBytes = chars; #else @@ -281,7 +280,7 @@ static bool setByteOrder(iconv_t cd) size_t outBytesLeft = sizeof buf; size_t inBytesLeft = sizeof bom; -#if !QT_CONFIG(posix_libiconv) +#if !QT_CONFIG(posix_libiconv) && !defined(Q_OS_WIN) const char **inBytesPtr = const_cast(&inBytes); #else char **inBytesPtr = &inBytes; @@ -303,7 +302,7 @@ QByteArray QIconvCodec::convertFromUnicode(const QChar *uc, int len, ConverterSt char *outBytes; size_t inBytesLeft; -#if !QT_CONFIG(posix_libiconv) +#if !QT_CONFIG(posix_libiconv) && !defined(Q_OS_WIN) const char **inBytesPtr = const_cast(&inBytes); #else char **inBytesPtr = &inBytes; diff --git a/src/corelib/configure.json b/src/corelib/configure.json index dfb575da0d..a630d7abf3 100644 --- a/src/corelib/configure.json +++ b/src/corelib/configure.json @@ -539,9 +539,9 @@ }, "gnu-libiconv": { "label": "GNU iconv", - "enable": "input.iconv == 'gnu'", + "enable": "'enabling via -gnu-iconv fails' == 'enabling via -gnu-iconv fails'", "disable": "input.iconv == 'posix' || input.iconv == 'sun' || input.iconv == 'no'", - "condition": "!config.win32 && !config.qnx && !config.android && !config.darwin && !features.posix-libiconv && !features.sun-libiconv && libs.gnu_iconv", + "condition": "!config.qnx && !config.android && !config.darwin && !features.posix-libiconv && !features.sun-libiconv && libs.gnu_iconv", "output": [ "privateFeature" ] }, "icu": { -- 2.18.0