summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
Diffstat (limited to 'generic')
-rw-r--r--generic/tcl.decls15
-rw-r--r--generic/tclDecls.h49
-rw-r--r--generic/tclIOSock.c2
-rw-r--r--generic/tclInt.h15
-rw-r--r--generic/tclMain.c2
-rw-r--r--generic/tclPlatDecls.h4
-rw-r--r--generic/tclStubInit.c24
-rw-r--r--generic/tclTest.c5
-rw-r--r--generic/tclUtf.c72
-rw-r--r--generic/tclZipfs.c2
10 files changed, 82 insertions, 108 deletions
diff --git a/generic/tcl.decls b/generic/tcl.decls
index bd0df8d..4fa2040 100644
--- a/generic/tcl.decls
+++ b/generic/tcl.decls
@@ -1198,7 +1198,7 @@ declare 335 {
int Tcl_UtfToTitle(char *src)
}
declare 336 {
- int Tcl_UtfToUniChar(const char *src, Tcl_UniChar *chPtr)
+ int Tcl_UtfToWChar(const char *src, unsigned short *chPtr)
}
declare 337 {
int Tcl_UtfToUpper(char *src)
@@ -1253,11 +1253,11 @@ declare 353 {
unsigned long numChars)
}
declare 354 {
- char *Tcl_Utf16ToUtfDString(const unsigned short *uniStr,
+ char *Tcl_WCharToUtfDString(const unsigned short *uniStr,
int uniLength, Tcl_DString *dsPtr)
}
declare 355 {
- unsigned short *Tcl_UtfToUtf16DString(const char *src,
+ unsigned short *Tcl_UtfToWCharDString(const char *src,
int length, Tcl_DString *dsPtr)
}
declare 356 {
@@ -2390,13 +2390,16 @@ declare 645 {
int endValue, int *indexPtr)
}
-# TIP #5??
+# TIP #548
+declare 646 {
+ int Tcl_UtfToUniChar(const char *src, unsigned int *chPtr)
+}
declare 647 {
- char *Tcl_UniCharToUtfDString(const Tcl_UniChar *uniStr,
+ char *Tcl_UniCharToUtfDString(const unsigned int *uniStr,
int uniLength, Tcl_DString *dsPtr)
}
declare 648 {
- Tcl_UniChar *Tcl_UtfToUniCharDString(const char *src,
+ unsigned int *Tcl_UtfToUniCharDString(const char *src,
int length, Tcl_DString *dsPtr)
}
diff --git a/generic/tclDecls.h b/generic/tclDecls.h
index f049bf9..9f8add6 100644
--- a/generic/tclDecls.h
+++ b/generic/tclDecls.h
@@ -1027,7 +1027,8 @@ EXTERN int Tcl_UtfToLower(char *src);
/* 335 */
EXTERN int Tcl_UtfToTitle(char *src);
/* 336 */
-EXTERN int Tcl_UtfToUniChar(const char *src, Tcl_UniChar *chPtr);
+EXTERN int Tcl_UtfToWChar(const char *src,
+ unsigned short *chPtr);
/* 337 */
EXTERN int Tcl_UtfToUpper(char *src);
/* 338 */
@@ -1068,10 +1069,10 @@ EXTERN int Tcl_UniCharNcmp(const Tcl_UniChar *ucs,
const Tcl_UniChar *uct,
unsigned long numChars);
/* 354 */
-EXTERN char * Tcl_Utf16ToUtfDString(const unsigned short *uniStr,
+EXTERN char * Tcl_WCharToUtfDString(const unsigned short *uniStr,
int uniLength, Tcl_DString *dsPtr);
/* 355 */
-EXTERN unsigned short * Tcl_UtfToUtf16DString(const char *src, int length,
+EXTERN unsigned short * Tcl_UtfToWCharDString(const char *src, int length,
Tcl_DString *dsPtr);
/* 356 */
EXTERN Tcl_RegExp Tcl_GetRegExpFromObj(Tcl_Interp *interp,
@@ -1904,12 +1905,14 @@ EXTERN int Tcl_LinkArray(Tcl_Interp *interp,
/* 645 */
EXTERN int Tcl_GetIntForIndex(Tcl_Interp *interp,
Tcl_Obj *objPtr, int endValue, int *indexPtr);
-/* Slot 646 is reserved */
+/* 646 */
+EXTERN int Tcl_UtfToUniChar(const char *src,
+ unsigned int *chPtr);
/* 647 */
-EXTERN char * Tcl_UniCharToUtfDString(const Tcl_UniChar *uniStr,
+EXTERN char * Tcl_UniCharToUtfDString(const unsigned int *uniStr,
int uniLength, Tcl_DString *dsPtr);
/* 648 */
-EXTERN Tcl_UniChar * Tcl_UtfToUniCharDString(const char *src, int length,
+EXTERN unsigned int * Tcl_UtfToUniCharDString(const char *src, int length,
Tcl_DString *dsPtr);
typedef struct {
@@ -2282,7 +2285,7 @@ typedef struct TclStubs {
char * (*tcl_UtfToExternalDString) (Tcl_Encoding encoding, const char *src, int srcLen, Tcl_DString *dsPtr); /* 333 */
int (*tcl_UtfToLower) (char *src); /* 334 */
int (*tcl_UtfToTitle) (char *src); /* 335 */
- int (*tcl_UtfToUniChar) (const char *src, Tcl_UniChar *chPtr); /* 336 */
+ int (*tcl_UtfToWChar) (const char *src, unsigned short *chPtr); /* 336 */
int (*tcl_UtfToUpper) (char *src); /* 337 */
int (*tcl_WriteChars) (Tcl_Channel chan, const char *src, int srcLen); /* 338 */
int (*tcl_WriteObj) (Tcl_Channel chan, Tcl_Obj *objPtr); /* 339 */
@@ -2300,8 +2303,8 @@ typedef struct TclStubs {
int (*tcl_UniCharIsWordChar) (int ch); /* 351 */
int (*tcl_UniCharLen) (const Tcl_UniChar *uniStr); /* 352 */
int (*tcl_UniCharNcmp) (const Tcl_UniChar *ucs, const Tcl_UniChar *uct, unsigned long numChars); /* 353 */
- char * (*tcl_Utf16ToUtfDString) (const unsigned short *uniStr, int uniLength, Tcl_DString *dsPtr); /* 354 */
- unsigned short * (*tcl_UtfToUtf16DString) (const char *src, int length, Tcl_DString *dsPtr); /* 355 */
+ char * (*tcl_WCharToUtfDString) (const unsigned short *uniStr, int uniLength, Tcl_DString *dsPtr); /* 354 */
+ unsigned short * (*tcl_UtfToWCharDString) (const char *src, int length, Tcl_DString *dsPtr); /* 355 */
Tcl_RegExp (*tcl_GetRegExpFromObj) (Tcl_Interp *interp, Tcl_Obj *patObj, int flags); /* 356 */
TCL_DEPRECATED_API("Use Tcl_EvalTokensStandard") Tcl_Obj * (*tcl_EvalTokens) (Tcl_Interp *interp, Tcl_Token *tokenPtr, int count); /* 357 */
void (*tcl_FreeParse) (Tcl_Parse *parsePtr); /* 358 */
@@ -2592,9 +2595,9 @@ typedef struct TclStubs {
int (*tcl_IsShared) (Tcl_Obj *objPtr); /* 643 */
int (*tcl_LinkArray) (Tcl_Interp *interp, const char *varName, void *addr, int type, int size); /* 644 */
int (*tcl_GetIntForIndex) (Tcl_Interp *interp, Tcl_Obj *objPtr, int endValue, int *indexPtr); /* 645 */
- void (*reserved646)(void);
- char * (*tcl_UniCharToUtfDString) (const Tcl_UniChar *uniStr, int uniLength, Tcl_DString *dsPtr); /* 647 */
- Tcl_UniChar * (*tcl_UtfToUniCharDString) (const char *src, int length, Tcl_DString *dsPtr); /* 648 */
+ int (*tcl_UtfToUniChar) (const char *src, unsigned int *chPtr); /* 646 */
+ char * (*tcl_UniCharToUtfDString) (const unsigned int *uniStr, int uniLength, Tcl_DString *dsPtr); /* 647 */
+ unsigned int * (*tcl_UtfToUniCharDString) (const char *src, int length, Tcl_DString *dsPtr); /* 648 */
} TclStubs;
extern const TclStubs *tclStubsPtr;
@@ -3297,8 +3300,8 @@ extern const TclStubs *tclStubsPtr;
(tclStubsPtr->tcl_UtfToLower) /* 334 */
#define Tcl_UtfToTitle \
(tclStubsPtr->tcl_UtfToTitle) /* 335 */
-#define Tcl_UtfToUniChar \
- (tclStubsPtr->tcl_UtfToUniChar) /* 336 */
+#define Tcl_UtfToWChar \
+ (tclStubsPtr->tcl_UtfToWChar) /* 336 */
#define Tcl_UtfToUpper \
(tclStubsPtr->tcl_UtfToUpper) /* 337 */
#define Tcl_WriteChars \
@@ -3333,10 +3336,10 @@ extern const TclStubs *tclStubsPtr;
(tclStubsPtr->tcl_UniCharLen) /* 352 */
#define Tcl_UniCharNcmp \
(tclStubsPtr->tcl_UniCharNcmp) /* 353 */
-#define Tcl_Utf16ToUtfDString \
- (tclStubsPtr->tcl_Utf16ToUtfDString) /* 354 */
-#define Tcl_UtfToUtf16DString \
- (tclStubsPtr->tcl_UtfToUtf16DString) /* 355 */
+#define Tcl_WCharToUtfDString \
+ (tclStubsPtr->tcl_WCharToUtfDString) /* 354 */
+#define Tcl_UtfToWCharDString \
+ (tclStubsPtr->tcl_UtfToWCharDString) /* 355 */
#define Tcl_GetRegExpFromObj \
(tclStubsPtr->tcl_GetRegExpFromObj) /* 356 */
#define Tcl_EvalTokens \
@@ -3917,7 +3920,8 @@ extern const TclStubs *tclStubsPtr;
(tclStubsPtr->tcl_LinkArray) /* 644 */
#define Tcl_GetIntForIndex \
(tclStubsPtr->tcl_GetIntForIndex) /* 645 */
-/* Slot 646 is reserved */
+#define Tcl_UtfToUniChar \
+ (tclStubsPtr->tcl_UtfToUniChar) /* 646 */
#define Tcl_UniCharToUtfDString \
(tclStubsPtr->tcl_UniCharToUtfDString) /* 647 */
#define Tcl_UtfToUniCharDString \
@@ -4109,10 +4113,13 @@ extern const TclStubs *tclStubsPtr;
#if TCL_UTF_MAX <= 4
# undef Tcl_UniCharToUtfDString
-# define Tcl_UniCharToUtfDString Tcl_Utf16ToUtfDString
+# define Tcl_UniCharToUtfDString Tcl_WCharToUtfDString
# undef Tcl_UtfToUniCharDString
-# define Tcl_UtfToUniCharDString Tcl_UtfToUtf16DString
+# define Tcl_UtfToUniCharDString Tcl_UtfToWCharDString
+# undef Tcl_UtfToUniChar
+# define Tcl_UtfToUniChar Tcl_UtfToWChar
#endif
+
/*
* Deprecated Tcl procedures:
*/
diff --git a/generic/tclIOSock.c b/generic/tclIOSock.c
index dd56c44..adf729a 100644
--- a/generic/tclIOSock.c
+++ b/generic/tclIOSock.c
@@ -35,7 +35,7 @@ gai_strerror(
Tcl_DStringInit(&tsdPtr->errorMsg);
tsdPtr->initialized = 1;
}
- Tcl_Utf16ToUtfDString(gai_strerrorW(code), -1, &tsdPtr->errorMsg);
+ Tcl_WCharToUtfDString(gai_strerrorW(code), -1, &tsdPtr->errorMsg);
return Tcl_DStringValue(&tsdPtr->errorMsg);
}
#endif
diff --git a/generic/tclInt.h b/generic/tclInt.h
index 2031cc8..5fc3b37 100644
--- a/generic/tclInt.h
+++ b/generic/tclInt.h
@@ -78,12 +78,12 @@
#else
#include <string.h>
#endif
-#if defined(STDC_HEADERS) || defined(__STDC__) || defined(__C99__FUNC__) \
- || defined(__cplusplus) || defined(_MSC_VER) || defined(__ICC)
-#include <stddef.h>
-#else
+#if !defined(STDC_HEADERS) && !defined(__STDC__) && !defined(__C99__FUNC__) \
+ && !defined(__cplusplus) && !defined(_MSC_VER) && !defined(__ICC)
typedef int ptrdiff_t;
#endif
+#include <stddef.h>
+#include <locale.h>
/*
* Ensure WORDS_BIGENDIAN is defined correctly:
@@ -4620,10 +4620,17 @@ MODULE_SCOPE void TclDbInitNewObj(Tcl_Obj *objPtr, const char *file,
*----------------------------------------------------------------
*/
+#if TCL_UTF_MAX > 4
#define TclUtfToUniChar(str, chPtr) \
((((unsigned char) *(str)) < 0x80) ? \
((*(chPtr) = (unsigned char) *(str)), 1) \
: Tcl_UtfToUniChar(str, chPtr))
+#else
+#define TclUtfToUniChar(str, chPtr) \
+ ((((unsigned char) *(str)) < 0x80) ? \
+ ((*(chPtr) = (unsigned char) *(str)), 1) \
+ : Tcl_UtfToWChar(str, chPtr))
+#endif
/*
*----------------------------------------------------------------
diff --git a/generic/tclMain.c b/generic/tclMain.c
index 8f70064..4a66793 100644
--- a/generic/tclMain.c
+++ b/generic/tclMain.c
@@ -71,7 +71,7 @@ NewNativeObj(
#ifdef UNICODE
Tcl_DStringInit(&ds);
- Tcl_Utf16ToUtfDString(string, length, &ds);
+ Tcl_WCharToUtfDString(string, length, &ds);
#else
Tcl_ExternalToUtfDString(NULL, (char *) string, length, &ds);
#endif
diff --git a/generic/tclPlatDecls.h b/generic/tclPlatDecls.h
index e35091d..0a8aff8 100644
--- a/generic/tclPlatDecls.h
+++ b/generic/tclPlatDecls.h
@@ -123,10 +123,10 @@ extern const TclPlatStubs *tclPlatStubsPtr;
#undef Tcl_WinTCharToUtf
#ifdef _WIN32
#define Tcl_WinUtfToTChar(string, len, dsPtr) ((Tcl_DStringInit(dsPtr), (string) != NULL) \
- ? (TCHAR *)Tcl_UtfToUtf16DString((string), (len), (dsPtr)) \
+ ? (TCHAR *)Tcl_UtfToWCharDString((string), (len), (dsPtr)) \
: ((void)(len), NULL))
#define Tcl_WinTCharToUtf(string, len, dsPtr) ((Tcl_DStringInit(dsPtr), (string) != NULL) \
- ? (char *)Tcl_Utf16ToUtfDString((string), ((int)(len) >> 1), (dsPtr)) \
+ ? (char *)Tcl_WCharToUtfDString((string), ((int)(len) >> 1), (dsPtr)) \
: ((void)(len), NULL))
#endif
#endif
diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c
index 17076fd..7c9741a 100644
--- a/generic/tclStubInit.c
+++ b/generic/tclStubInit.c
@@ -62,17 +62,7 @@
#define TclStaticPackage Tcl_StaticPackage
#undef Tcl_UniCharToUtfDString
#undef Tcl_UtfToUniCharDString
-
-#if TCL_UTF_MAX <= 4
-static void uniCodePanic() {
- Tcl_Panic("This extension is compiled with -DTCL_UTF_MAX>4, but Tcl is compiled with -DTCL_UTF_MAX==%d", TCL_UTF_MAX);
-}
-#endif
-
-#if TCL_UTF_MAX <= 4
-# define Tcl_UniCharToUtfDString (char *(*)(const Tcl_UniChar *, int, Tcl_DString *)) uniCodePanic
-# define Tcl_UtfToUniCharDString (Tcl_UniChar *(*)(const char *, int, Tcl_DString *)) uniCodePanic
-#endif
+#undef Tcl_UtfToUniChar
#undef TclBN_mp_tc_and
#undef TclBN_mp_tc_or
@@ -270,7 +260,7 @@ Tcl_WinUtfToTChar(
if (!string) {
return NULL;
}
- return (char *)Tcl_UtfToUtf16DString(string, len, dsPtr);
+ return (char *)Tcl_UtfToWCharDString(string, len, dsPtr);
}
#undef Tcl_WinTCharToUtf
char *
@@ -283,7 +273,7 @@ Tcl_WinTCharToUtf(
if (!string) {
return NULL;
}
- return Tcl_Utf16ToUtfDString((const unsigned short *)string, len >> 1, dsPtr);
+ return Tcl_WCharToUtfDString((const unsigned short *)string, len >> 1, dsPtr);
}
#endif /* !defined(TCL_NO_DEPRECATED) */
@@ -1348,7 +1338,7 @@ const TclStubs tclStubs = {
Tcl_UtfToExternalDString, /* 333 */
Tcl_UtfToLower, /* 334 */
Tcl_UtfToTitle, /* 335 */
- Tcl_UtfToUniChar, /* 336 */
+ Tcl_UtfToWChar, /* 336 */
Tcl_UtfToUpper, /* 337 */
Tcl_WriteChars, /* 338 */
Tcl_WriteObj, /* 339 */
@@ -1366,8 +1356,8 @@ const TclStubs tclStubs = {
Tcl_UniCharIsWordChar, /* 351 */
Tcl_UniCharLen, /* 352 */
Tcl_UniCharNcmp, /* 353 */
- Tcl_Utf16ToUtfDString, /* 354 */
- Tcl_UtfToUtf16DString, /* 355 */
+ Tcl_WCharToUtfDString, /* 354 */
+ Tcl_UtfToWCharDString, /* 355 */
Tcl_GetRegExpFromObj, /* 356 */
Tcl_EvalTokens, /* 357 */
Tcl_FreeParse, /* 358 */
@@ -1658,7 +1648,7 @@ const TclStubs tclStubs = {
Tcl_IsShared, /* 643 */
Tcl_LinkArray, /* 644 */
Tcl_GetIntForIndex, /* 645 */
- 0, /* 646 */
+ Tcl_UtfToUniChar, /* 646 */
Tcl_UniCharToUtfDString, /* 647 */
Tcl_UtfToUniCharDString, /* 648 */
};
diff --git a/generic/tclTest.c b/generic/tclTest.c
index 4eb8519..4b6320b 100644
--- a/generic/tclTest.c
+++ b/generic/tclTest.c
@@ -29,11 +29,6 @@
#include "tclRegexp.h"
/*
- * Required for TestlocaleCmd
- */
-#include <locale.h>
-
-/*
* Required for the TestChannelCmd and TestChannelEventCmd
*/
#include "tclIO.h"
diff --git a/generic/tclUtf.c b/generic/tclUtf.c
index de696a0..7a5fb36 100644
--- a/generic/tclUtf.c
+++ b/generic/tclUtf.c
@@ -221,15 +221,15 @@ three:
*---------------------------------------------------------------------------
*/
-#if TCL_UTF_MAX > 4
+#undef Tcl_UniCharToUtfDString
char *
Tcl_UniCharToUtfDString(
- const Tcl_UniChar *uniStr, /* Unicode string to convert to UTF-8. */
+ const unsigned int *uniStr, /* Unicode string to convert to UTF-8. */
int uniLength, /* Length of Unicode string. */
Tcl_DString *dsPtr) /* UTF-8 representation of string is appended
* to this previously initialized DString. */
{
- const Tcl_UniChar *w, *wEnd;
+ const unsigned int *w, *wEnd;
char *p, *string;
int oldLength;
@@ -259,10 +259,9 @@ Tcl_UniCharToUtfDString(
return string;
}
-#endif /* TCL_UTF_MAX > 4 */
char *
-Tcl_Utf16ToUtfDString(
+Tcl_WCharToUtfDString(
const unsigned short *uniStr, /* Utf-16 string to convert to UTF-8. */
int uniLength, /* Length of Utf-16 string. */
Tcl_DString *dsPtr) /* UTF-8 representation of string is appended
@@ -353,13 +352,14 @@ static const unsigned short cp1252[32] = {
0x2DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x9D, 0x017E, 0x0178
};
+#undef Tcl_UtfToUniChar
int
Tcl_UtfToUniChar(
register const char *src, /* The UTF-8 string. */
- register Tcl_UniChar *chPtr)/* Filled with the Tcl_UniChar represented by
+ register unsigned int *chPtr)/* Filled with the unsigned int represented by
* the UTF-8 string. */
{
- Tcl_UniChar byte;
+ unsigned int byte;
/*
* Unroll 1 to 4 byte UTF-8 sequences.
@@ -375,20 +375,6 @@ Tcl_UtfToUniChar(
* characters representing themselves.
*/
-#if TCL_UTF_MAX <= 4
- /* If *chPtr contains a high surrogate (produced by a previous
- * Tcl_UtfToUniChar() call) and the next 3 bytes are UTF-8 continuation
- * bytes, then we must produce a follow-up low surrogate. We only
- * do that if the high surrogate matches the bits we encounter.
- */
- if ((byte >= 0x80)
- && (((((byte - 0x10) << 2) & 0xFC) | 0xD800) == (*chPtr & 0xFCFC))
- && ((src[1] & 0xF0) == (((*chPtr << 4) & 0x30) | 0x80))
- && ((src[2] & 0xC0) == 0x80)) {
- *chPtr = ((src[1] & 0x0F) << 6) + (src[2] & 0x3F) + 0xDC00;
- return 3;
- }
-#endif
if ((unsigned)(byte-0x80) < (unsigned)0x20) {
*chPtr = cp1252[byte-0x80];
} else {
@@ -434,23 +420,11 @@ Tcl_UtfToUniChar(
/*
* Four-byte-character lead byte followed by three trail bytes.
*/
-#if TCL_UTF_MAX <= 4
- Tcl_UniChar high = (((byte & 0x07) << 8) | ((src[1] & 0x3F) << 2)
- | ((src[2] & 0x3F) >> 4)) - 0x40;
- if (high >= 0x400) {
- /* out of range, < 0x10000 or > 0x10ffff */
- } else {
- /* produce high surrogate, advance source pointer */
- *chPtr = 0xD800 + high;
- return 1;
- }
-#else
*chPtr = (((byte & 0x07) << 18) | ((src[1] & 0x3F) << 12)
| ((src[2] & 0x3F) << 6) | (src[3] & 0x3F));
if ((unsigned)(*chPtr - 0x10000) <= 0xFFFFF) {
return 4;
}
-#endif
}
/*
@@ -463,14 +437,14 @@ Tcl_UtfToUniChar(
return 1;
}
-#if (TCL_UTF_MAX > 4) && (defined(__CYGWIN__) || defined(_WIN32))
+#undef Tcl_UtfToWChar
int
-TclUtfToWChar(
+Tcl_UtfToWChar(
const char *src, /* The UTF-8 string. */
- WCHAR *chPtr)/* Filled with the WCHAR represented by
+ unsigned short *chPtr)/* Filled with the unsigned short represented by
* the UTF-8 string. */
{
- WCHAR byte;
+ unsigned short byte;
/*
* Unroll 1 to 4 byte UTF-8 sequences.
@@ -563,7 +537,6 @@ TclUtfToWChar(
*chPtr = byte;
return 1;
}
-#endif
/*
*---------------------------------------------------------------------------
@@ -583,8 +556,8 @@ TclUtfToWChar(
*---------------------------------------------------------------------------
*/
-#if TCL_UTF_MAX > 4
-Tcl_UniChar *
+#undef Tcl_UtfToUniCharDString
+unsigned int *
Tcl_UtfToUniCharDString(
const char *src, /* UTF-8 string to convert to Unicode. */
int length, /* Length of UTF-8 string in bytes, or -1 for
@@ -593,7 +566,7 @@ Tcl_UtfToUniCharDString(
* appended to this previously initialized
* DString. */
{
- Tcl_UniChar ch = 0, *w, *wString;
+ unsigned int ch = 0, *w, *wString;
const char *p, *end;
int oldLength;
@@ -609,20 +582,20 @@ Tcl_UtfToUniCharDString(
oldLength = Tcl_DStringLength(dsPtr);
Tcl_DStringSetLength(dsPtr,
- oldLength + ((length + 1) * sizeof(Tcl_UniChar)));
- wString = (Tcl_UniChar *) (Tcl_DStringValue(dsPtr) + oldLength);
+ oldLength + ((length + 1) * sizeof(unsigned int)));
+ wString = (unsigned int *) (Tcl_DStringValue(dsPtr) + oldLength);
w = wString;
p = src;
end = src + length - 4;
while (p < end) {
- p += TclUtfToUniChar(p, &ch);
+ p += Tcl_UtfToUniChar(p, &ch);
*w++ = ch;
}
end += 4;
while (p < end) {
if (Tcl_UtfCharComplete(p, end-p)) {
- p += TclUtfToUniChar(p, &ch);
+ p += Tcl_UtfToUniChar(p, &ch);
} else {
ch = UCHAR(*p++);
}
@@ -634,10 +607,9 @@ Tcl_UtfToUniCharDString(
return wString;
}
-#endif /* TCL_UTF_MAX > 4 */
unsigned short *
-Tcl_UtfToUtf16DString(
+Tcl_UtfToWCharDString(
const char *src, /* UTF-8 string to convert to Unicode. */
int length, /* Length of UTF-8 string in bytes, or -1 for
* strlen(). */
@@ -645,7 +617,7 @@ Tcl_UtfToUtf16DString(
* appended to this previously initialized
* DString. */
{
- Tcl_UniChar ch = 0;
+ unsigned short ch = 0;
unsigned short *w, *wString;
const char *p, *end;
int oldLength;
@@ -669,13 +641,13 @@ Tcl_UtfToUtf16DString(
p = src;
end = src + length - 4;
while (p < end) {
- p += Tcl_UtfToUniChar(p, &ch);
+ p += Tcl_UtfToWChar(p, &ch);
*w++ = ch;
}
end += 4;
while (p < end) {
if (Tcl_UtfCharComplete(p, end-p)) {
- p += Tcl_UtfToUniChar(p, &ch);
+ p += Tcl_UtfToWChar(p, &ch);
} else {
ch = UCHAR(*p++);
}
diff --git a/generic/tclZipfs.c b/generic/tclZipfs.c
index 56f0cb9..0dca6f1 100644
--- a/generic/tclZipfs.c
+++ b/generic/tclZipfs.c
@@ -4930,7 +4930,7 @@ TclZipfs_AppHook(
Tcl_DString ds;
Tcl_DStringInit(&ds);
- archive = Tcl_Utf16ToUtfDString((*argvPtr)[1], -1, &ds);
+ archive = Tcl_WCharToUtfDString((*argvPtr)[1], -1, &ds);
#else /* !_WIN32 */
archive = (*argvPtr)[1];
#endif /* _WIN32 */