aboutsummarylogtreecommitdiffstats
path: root/0028-Enable-and-fix-use-of-iconv.patch
blob: 72ac55163b142a0da6cd6978a0b50aee052aa3e4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
From 075aed08de151f6fc1c8dad91214c66ce4e614d5 Mon Sep 17 00:00:00 2001
From: Martchus <martchus@gmx.net>
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 <errno.h>
 #include <locale.h>
 #include <stdio.h>
-#include <dlfcn.h>
 
 // unistd.h is needed for the _XOPEN_UNIX macro
 #include <unistd.h>
@@ -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<const char **>(&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<const char **>(&inBytes);
 #else
     char **inBytesPtr = &inBytes;
diff --git a/src/corelib/configure.json b/src/corelib/configure.json
index 5e48024def..15e7372dcb 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.17.0