From 876fc3f3907e871d0938ac6c8c5252f5f31abd1f Mon Sep 17 00:00:00 2001
From: David Bryant <david@wavpack.com>
Date: Thu, 16 Feb 2017 17:11:12 -0800
Subject: [PATCH] fix GitHub issue #19 (new dependency on wchar_t) by removing
 dependency

[Upstream commit: https://github.com/dbry/WavPack/commit/876fc3f3907e871d0938ac6c8c5252f5f31abd1f]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 cli/import_id3.c | 10 +++++-----
 cli/wvtag.c      |  2 ++
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/cli/import_id3.c b/cli/import_id3.c
index 51e54ee..fc30aeb 100644
--- a/cli/import_id3.c
+++ b/cli/import_id3.c
@@ -34,7 +34,7 @@ static struct {
 
 #define NUM_TEXT_TAG_ITEMS (sizeof (text_tag_table) / sizeof (text_tag_table [0]))
 
-static int WideCharToUTF8 (const wchar_t *Wide, unsigned char *pUTF8, int len);
+static int WideCharToUTF8 (const uint16_t *Wide, unsigned char *pUTF8, int len);
 static void Latin1ToUTF8 (void *string, int len);
 
 // Import specified ID3v2.3 tag. The WavPack context accepts the tag items, and can be
@@ -163,7 +163,7 @@ int ImportID3v2 (WavpackContext *wpc, unsigned char *tag_data, int tag_size, cha
             }
             else if (frame_body [0] == 1 && frame_size > 2 && frame_body [1] == 0xFF && frame_body [2] == 0xFE) {
                 int nchars = (frame_size - 3) / 2;
-                wchar_t *wide_string = malloc ((nchars + 1) * sizeof (wchar_t));
+                uint16_t *wide_string = malloc ((nchars + 1) * sizeof (uint16_t));
                 unsigned char *fp = frame_body + 3;
 
                 utf8_string = malloc ((nchars + 1) * 3);
@@ -297,9 +297,9 @@ int ImportID3v2 (WavpackContext *wpc, unsigned char *tag_data, int tag_size, cha
 // may be less than the number of characters in the wide string if the buffer
 // length is exceeded.
 
-static int WideCharToUTF8 (const wchar_t *Wide, unsigned char *pUTF8, int len)
+static int WideCharToUTF8 (const uint16_t *Wide, unsigned char *pUTF8, int len)
 {
-    const wchar_t *pWide = Wide;
+    const uint16_t *pWide = Wide;
     int outndx = 0;
 
     while (*pWide) {
@@ -335,7 +335,7 @@ static int WideCharToUTF8 (const wchar_t *Wide, unsigned char *pUTF8, int len)
 static void Latin1ToUTF8 (void *string, int len)
 {
     int max_chars = (int) strlen (string);
-    wchar_t *temp = (wchar_t *) malloc ((max_chars + 1) * 2);
+    uint16_t *temp = (uint16_t *) malloc ((max_chars + 1) * sizeof (uint16_t));
 
     MultiByteToWideChar (28591, 0, string, -1, temp, max_chars + 1);
     WideCharToUTF8 (temp, (unsigned char *) string, len);
diff --git a/cli/wvtag.c b/cli/wvtag.c
index 6e6512a..45e621e 100644
--- a/cli/wvtag.c
+++ b/cli/wvtag.c
@@ -1344,7 +1344,9 @@ static void dump_UTF8_string (char *string, FILE *dst)
 // resulting string will not fit in the specified buffer size then it is
 // truncated.
 
+#if defined (_WIN32)
 static int UTF8ToWideChar (const unsigned char *pUTF8, wchar_t *pWide);
+#endif
 
 static void UTF8ToAnsi (char *string, int len)
 {
