summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/Encoding.34
-rw-r--r--doc/Utf.36
-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
-rwxr-xr-xunix/configure39
-rw-r--r--unix/configure.ac16
-rw-r--r--unix/tclUnixInit.c2
-rw-r--r--unix/tclUnixTime.c1
-rw-r--r--win/tclWin32Dll.c4
-rw-r--r--win/tclWinFCmd.c38
-rw-r--r--win/tclWinFile.c30
-rw-r--r--win/tclWinInit.c2
-rw-r--r--win/tclWinLoad.c2
-rw-r--r--win/tclWinPipe.c14
-rw-r--r--win/tclWinSerial.c2
-rw-r--r--win/tclWinSock.c2
24 files changed, 189 insertions, 163 deletions
diff --git a/doc/Encoding.3 b/doc/Encoding.3
index c801f3c..a642281 100644
--- a/doc/Encoding.3
+++ b/doc/Encoding.3
@@ -259,13 +259,13 @@ is filled with the corresponding number of bytes that were stored in
convenience functions for converting between UTF-8 and Windows strings
based on the TCHAR type which is by convention a Unicode character on
Windows NT. Those functions are deprecated. You can use
-\fBTcl_UtfToUtf16DString\fR resp. \fBTcl_Utf16ToUtfDString\fR as replacement.
+\fBTcl_UtfToWCharDString\fR resp. \fBTcl_WCharToUtfDString\fR as replacement.
If you want compatibility with earlier Tcl releases than 8.7, use
\fBTcl_UtfToUniCharDString\fR resp. \fBTcl_UniCharToUtfDString\fR as
replacement, and make sure you compile your extension with -DTCL_UTF_MAX=3.
Beware: Those replacement functions don't initialize their Tcl_DString (you'll
have to do that yourself), and \fBTcl_UniCharToUtfDString\fR doesn't accept -1
-as length parameter (but \fBTcl_Utf16ToUtfDString\fR does!).
+as length parameter (but \fBTcl_WCharToUtfDString\fR does!).
.PP
\fBTcl_GetEncodingName\fR is roughly the inverse of \fBTcl_GetEncoding\fR.
Given an \fIencoding\fR, the return value is the \fIname\fR argument that
diff --git a/doc/Utf.3 b/doc/Utf.3
index fceff02..4879e79 100644
--- a/doc/Utf.3
+++ b/doc/Utf.3
@@ -8,7 +8,7 @@
.so man.macros
.BS
.SH NAME
-Tcl_UniChar, Tcl_UniCharToUtf, Tcl_UtfToUniChar, Tcl_UniCharToUtfDString, Tcl_UtfToUniCharDString, Tcl_Utf16ToUtfDString, Tcl_UtfToUtf16DString, Tcl_UniCharLen, Tcl_UniCharNcmp, Tcl_UniCharNcasecmp, Tcl_UniCharCaseMatch, Tcl_UtfNcmp, Tcl_UtfNcasecmp, Tcl_UtfCharComplete, Tcl_NumUtfChars, Tcl_UtfFindFirst, Tcl_UtfFindLast, Tcl_UtfNext, Tcl_UtfPrev, Tcl_UniCharAtIndex, Tcl_UtfAtIndex, Tcl_UtfBackslash \- routines for manipulating UTF-8 strings
+Tcl_UniChar, Tcl_UniCharToUtf, Tcl_UtfToUniChar, Tcl_UniCharToUtfDString, Tcl_UtfToUniCharDString, Tcl_WCharToUtfDString, Tcl_UtfToWCharDString, Tcl_UniCharLen, Tcl_UniCharNcmp, Tcl_UniCharNcasecmp, Tcl_UniCharCaseMatch, Tcl_UtfNcmp, Tcl_UtfNcasecmp, Tcl_UtfCharComplete, Tcl_NumUtfChars, Tcl_UtfFindFirst, Tcl_UtfFindLast, Tcl_UtfNext, Tcl_UtfPrev, Tcl_UniCharAtIndex, Tcl_UtfAtIndex, Tcl_UtfBackslash \- routines for manipulating UTF-8 strings
.SH SYNOPSIS
.nf
\fB#include <tcl.h>\fR
@@ -25,13 +25,13 @@ char *
\fBTcl_UniCharToUtfDString\fR(\fIuniStr, uniLength, dsPtr\fR)
.sp
char *
-\fBTcl_Utf16ToUtfDString\fR(\fIutf16Str, uniLength, dsPtr\fR)
+\fBTcl_WCharToUtfDString\fR(\fIutf16Str, uniLength, dsPtr\fR)
.sp
Tcl_UniChar *
\fBTcl_UtfToUniCharDString\fR(\fIsrc, length, dsPtr\fR)
.sp
unsigned short *
-\fBTcl_UtfToUtf16DString\fR(\fIsrc, length, dsPtr\fR)
+\fBTcl_UtfToWCharDString\fR(\fIsrc, length, dsPtr\fR)
.sp
int
\fBTcl_UniCharLen\fR(\fIuniStr\fR)
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 */
diff --git a/unix/configure b/unix/configure
index 2de5b54..a35cde4 100755
--- a/unix/configure
+++ b/unix/configure
@@ -3930,6 +3930,45 @@ done
#------------------------------------------------------------------------
+# If we're using GCC, see if the compiler understands -fshort-wchar. If so, use it.
+# It makes sure you can use the wchar_t type interchangable with Tcl_UniChar
+#------------------------------------------------------------------------
+
+if test -z "$no_short_wchar" && test -n "$GCC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the compiler understands -fshort-wchar" >&5
+$as_echo_n "checking if the compiler understands -fshort-wchar... " >&6; }
+if ${tcl_cv_cc_short_wchar+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -fshort-wchar"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ tcl_cv_cc_short_wchar=yes
+else
+ tcl_cv_cc_short_wchar=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS=$hold_cflags
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcl_cv_cc_short_wchar" >&5
+$as_echo "$tcl_cv_cc_short_wchar" >&6; }
+ if test $tcl_cv_cc_short_wchar = yes; then
+ CFLAGS="$CFLAGS -fshort-wchar"
+ fi
+fi
+
+#------------------------------------------------------------------------
# If we're using GCC, see if the compiler understands -pipe. If so, use it.
# It makes compiling go faster. (This is only a performance feature.)
#------------------------------------------------------------------------
diff --git a/unix/configure.ac b/unix/configure.ac
index 74dbe08..3a9bdd0 100644
--- a/unix/configure.ac
+++ b/unix/configure.ac
@@ -105,6 +105,22 @@ SC_MISSING_POSIX_HEADERS
AC_EXEEXT
#------------------------------------------------------------------------
+# If we're using GCC, see if the compiler understands -fshort-wchar. If so, use it.
+# It makes sure you can use the wchar_t type interchangable with Tcl_UniChar
+#------------------------------------------------------------------------
+
+if test -z "$no_short_wchar" && test -n "$GCC"; then
+ AC_CACHE_CHECK([if the compiler understands -fshort-wchar],
+ tcl_cv_cc_short_wchar, [
+ hold_cflags=$CFLAGS; CFLAGS="$CFLAGS -fshort-wchar"
+ AC_TRY_COMPILE(,, tcl_cv_cc_short_wchar=yes, tcl_cv_cc_short_wchar=no)
+ CFLAGS=$hold_cflags])
+ if test $tcl_cv_cc_short_wchar = yes; then
+ CFLAGS="$CFLAGS -fshort-wchar"
+ fi
+fi
+
+#------------------------------------------------------------------------
# If we're using GCC, see if the compiler understands -pipe. If so, use it.
# It makes compiling go faster. (This is only a performance feature.)
#------------------------------------------------------------------------
diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c
index b6b66da..187ef34 100644
--- a/unix/tclUnixInit.c
+++ b/unix/tclUnixInit.c
@@ -9,8 +9,6 @@
*/
#include "tclInt.h"
-#include <stddef.h>
-#include <locale.h>
#ifdef HAVE_LANGINFO
# include <langinfo.h>
# ifdef __APPLE__
diff --git a/unix/tclUnixTime.c b/unix/tclUnixTime.c
index 1d8b351..51d486e 100644
--- a/unix/tclUnixTime.c
+++ b/unix/tclUnixTime.c
@@ -11,7 +11,6 @@
*/
#include "tclInt.h"
-#include <locale.h>
#if defined(TCL_WIDE_CLICKS) && defined(MAC_OSX_TCL)
#include <mach/mach_time.h>
#endif
diff --git a/win/tclWin32Dll.c b/win/tclWin32Dll.c
index 9d927bb..6e52bd6 100644
--- a/win/tclWin32Dll.c
+++ b/win/tclWin32Dll.c
@@ -477,7 +477,7 @@ Tcl_WinUtfToTChar(
if (!string) {
return NULL;
}
- return Tcl_UtfToUtf16DString(string, len, dsPtr);
+ return Tcl_UtfToWCharDString(string, len, dsPtr);
}
#undef Tcl_WinTCharToUtf
char *
@@ -492,7 +492,7 @@ Tcl_WinTCharToUtf(
if (!string) {
return NULL;
}
- return Tcl_Utf16ToUtfDString((unsigned short *)string, len >> 1, dsPtr);
+ return Tcl_WCharToUtfDString((unsigned short *)string, len >> 1, dsPtr);
}
#endif /* !defined(TCL_NO_DEPRECATED) */
diff --git a/win/tclWinFCmd.c b/win/tclWinFCmd.c
index b3d1ece..f8fa463 100644
--- a/win/tclWinFCmd.c
+++ b/win/tclWinFCmd.c
@@ -330,8 +330,8 @@ DoRenameFile(
Tcl_DStringInit(&srcString);
Tcl_DStringInit(&dstString);
- src = Tcl_Utf16ToUtfDString(nativeSrcPath, -1, &srcString);
- dst = Tcl_Utf16ToUtfDString(nativeDstPath, -1, &dstString);
+ src = Tcl_WCharToUtfDString(nativeSrcPath, -1, &srcString);
+ dst = Tcl_WCharToUtfDString(nativeDstPath, -1, &dstString);
/*
* Check whether the destination path is actually inside the
@@ -915,8 +915,8 @@ TclpObjCopyDirectory(
Tcl_DStringInit(&srcString);
Tcl_DStringInit(&dstString);
- Tcl_UtfToUtf16DString(Tcl_GetString(normSrcPtr), -1, &srcString);
- Tcl_UtfToUtf16DString(Tcl_GetString(normDestPtr), -1, &dstString);
+ Tcl_UtfToWCharDString(Tcl_GetString(normSrcPtr), -1, &srcString);
+ Tcl_UtfToWCharDString(Tcl_GetString(normDestPtr), -1, &dstString);
ret = TraverseWinTree(TraversalCopy, &srcString, &dstString, &ds);
@@ -989,7 +989,7 @@ TclpObjRemoveDirectory(
return TCL_ERROR;
}
Tcl_DStringInit(&native);
- Tcl_UtfToUtf16DString(Tcl_GetString(normPtr), -1, &native);
+ Tcl_UtfToWCharDString(Tcl_GetString(normPtr), -1, &native);
ret = DoRemoveDirectory(&native, recursive, &ds);
Tcl_DStringFree(&native);
} else {
@@ -1117,7 +1117,7 @@ DoRemoveJustDirectory(
char *p;
Tcl_DStringInit(errorPtr);
- p = Tcl_Utf16ToUtfDString(nativePath, -1, errorPtr);
+ p = Tcl_WCharToUtfDString(nativePath, -1, errorPtr);
for (; *p; ++p) {
if (*p == '\\') *p = '/';
}
@@ -1332,7 +1332,7 @@ TraverseWinTree(
TclWinConvertError(GetLastError());
if (errorPtr != NULL) {
Tcl_DStringInit(errorPtr);
- Tcl_Utf16ToUtfDString(nativeErrfile, -1, errorPtr);
+ Tcl_WCharToUtfDString(nativeErrfile, -1, errorPtr);
}
result = TCL_ERROR;
}
@@ -1398,7 +1398,7 @@ TraversalCopy(
if (errorPtr != NULL) {
Tcl_DStringInit(errorPtr);
- Tcl_Utf16ToUtfDString(nativeDst, -1, errorPtr);
+ Tcl_WCharToUtfDString(nativeDst, -1, errorPtr);
}
return TCL_ERROR;
}
@@ -1454,7 +1454,7 @@ TraversalDelete(
if (errorPtr != NULL) {
Tcl_DStringInit(errorPtr);
- Tcl_Utf16ToUtfDString(nativeSrc, -1, errorPtr);
+ Tcl_WCharToUtfDString(nativeSrc, -1, errorPtr);
}
return TCL_ERROR;
}
@@ -1663,7 +1663,7 @@ ConvertFileNameFormat(
tempString = TclGetStringFromObj(tempPath, &length);
Tcl_DStringInit(&ds);
- nativeName = Tcl_UtfToUtf16DString(tempString, length, &ds);
+ nativeName = Tcl_UtfToWCharDString(tempString, length, &ds);
Tcl_DecrRefCount(tempPath);
handle = FindFirstFile(nativeName, &data);
if (handle == INVALID_HANDLE_VALUE) {
@@ -1700,7 +1700,7 @@ ConvertFileNameFormat(
}
/*
- * Purify reports a extraneous UMR in Tcl_Utf16ToUtfDString() trying
+ * Purify reports a extraneous UMR in Tcl_WCharToUtfDString() trying
* to dereference nativeName as a Unicode string. I have proven to
* myself that purify is wrong by running the following example
* when nativeName == data.w.cAlternateFileName and noting that
@@ -1712,7 +1712,7 @@ ConvertFileNameFormat(
*/
Tcl_DStringInit(&dsTemp);
- Tcl_Utf16ToUtfDString(nativeName, -1, &dsTemp);
+ Tcl_WCharToUtfDString(nativeName, -1, &dsTemp);
Tcl_DStringFree(&ds);
/*
@@ -2008,9 +2008,9 @@ TclpCreateTemporaryDirectory(
goto useSystemTemp;
}
Tcl_DStringInit(&base);
- Tcl_UtfToUtf16DString(Tcl_GetString(dirObj), -1, &base);
+ Tcl_UtfToWCharDString(Tcl_GetString(dirObj), -1, &base);
if (dirObj->bytes[dirObj->length - 1] != '\\') {
- Tcl_UtfToUtf16DString("\\", -1, &base);
+ Tcl_UtfToWCharDString("\\", -1, &base);
}
} else {
useSystemTemp:
@@ -2026,11 +2026,11 @@ TclpCreateTemporaryDirectory(
#define SUFFIX_LENGTH 8
if (basenameObj) {
- Tcl_UtfToUtf16DString(Tcl_GetString(basenameObj), -1, &base);
+ Tcl_UtfToWCharDString(Tcl_GetString(basenameObj), -1, &base);
} else {
- Tcl_UtfToUtf16DString(DEFAULT_TEMP_DIR_PREFIX, -1, &base);
+ Tcl_UtfToWCharDString(DEFAULT_TEMP_DIR_PREFIX, -1, &base);
}
- Tcl_UtfToUtf16DString("_", -1, &base);
+ Tcl_UtfToWCharDString("_", -1, &base);
/*
* Now we keep on trying random suffixes until we get one that works
@@ -2057,7 +2057,7 @@ TclpCreateTemporaryDirectory(
tempbuf[i] = randChars[(int) (rand() % numRandChars)];
}
Tcl_DStringSetLength(&base, baseLen);
- Tcl_UtfToUtf16DString(tempbuf, -1, &base);
+ Tcl_UtfToWCharDString(tempbuf, -1, &base);
} while (!CreateDirectoryW((LPCWSTR) Tcl_DStringValue(&base), NULL)
&& (error = GetLastError()) == ERROR_ALREADY_EXISTS);
@@ -2078,7 +2078,7 @@ TclpCreateTemporaryDirectory(
*/
Tcl_DStringInit(&name);
- Tcl_Utf16ToUtfDString((LPCWSTR) Tcl_DStringValue(&base), -1, &name);
+ Tcl_WCharToUtfDString((LPCWSTR) Tcl_DStringValue(&base), -1, &name);
Tcl_DStringFree(&base);
return TclDStringToObj(&name);
}
diff --git a/win/tclWinFile.c b/win/tclWinFile.c
index caf2a23..f3c45ef 100644
--- a/win/tclWinFile.c
+++ b/win/tclWinFile.c
@@ -635,7 +635,7 @@ WinReadLinkDirectory(
}
Tcl_DStringInit(&ds);
- Tcl_Utf16ToUtfDString(
+ Tcl_WCharToUtfDString(
reparseBuffer->MountPointReparseBuffer.PathBuffer,
reparseBuffer->MountPointReparseBuffer
.SubstituteNameLength>>1, &ds);
@@ -1025,7 +1025,7 @@ TclpMatchInDirectory(
}
Tcl_DStringInit(&ds);
- native = Tcl_UtfToUtf16DString(dirName, -1, &ds);
+ native = Tcl_UtfToWCharDString(dirName, -1, &ds);
if ((types == NULL) || (types->type != TCL_GLOB_TYPE_DIR)) {
handle = FindFirstFile(native, &data);
} else {
@@ -1099,7 +1099,7 @@ TclpMatchInDirectory(
native = data.cFileName;
attr = data.dwFileAttributes;
Tcl_DStringInit(&ds);
- utfname = Tcl_Utf16ToUtfDString(native, -1, &ds);
+ utfname = Tcl_WCharToUtfDString(native, -1, &ds);
if (!matchSpecialDots) {
/*
@@ -1474,14 +1474,14 @@ TclpGetUserHome(
Tcl_DStringFree(&ds);
} else {
Tcl_DStringInit(&ds);
- wName = Tcl_UtfToUtf16DString(domain + 1, -1, &ds);
+ wName = Tcl_UtfToWCharDString(domain + 1, -1, &ds);
rc = NetGetDCName(NULL, wName, (LPBYTE *) &wDomain);
Tcl_DStringFree(&ds);
nameLen = domain - name;
}
if (rc == 0) {
Tcl_DStringInit(&ds);
- wName = Tcl_UtfToUtf16DString(name, nameLen, &ds);
+ wName = Tcl_UtfToWCharDString(name, nameLen, &ds);
while (NetUserGetInfo(wDomain, wName, 1, (LPBYTE *) &uiPtr) != 0) {
/*
* User does not exist; if domain was not specified, try again
@@ -1509,7 +1509,7 @@ TclpGetUserHome(
wHomeDir = uiPtr->usri1_home_dir;
if ((wHomeDir != NULL) && (wHomeDir[0] != '\0')) {
size = lstrlenW(wHomeDir);
- Tcl_Utf16ToUtfDString(wHomeDir, size, bufferPtr);
+ Tcl_WCharToUtfDString(wHomeDir, size, bufferPtr);
} else {
/*
* User exists but has no home dir. Return
@@ -1517,7 +1517,7 @@ TclpGetUserHome(
*/
GetProfilesDirectoryW(buf, &size);
- Tcl_Utf16ToUtfDString(buf, size-1, bufferPtr);
+ Tcl_WCharToUtfDString(buf, size-1, bufferPtr);
Tcl_DStringAppend(bufferPtr, "/", 1);
Tcl_DStringAppend(bufferPtr, name, nameLen);
}
@@ -1986,7 +1986,7 @@ TclpGetCwd(
native += 2;
}
Tcl_DStringInit(bufferPtr);
- Tcl_Utf16ToUtfDString(native, -1, bufferPtr);
+ Tcl_WCharToUtfDString(native, -1, bufferPtr);
/*
* Convert to forward slashes for easier use in scripts.
@@ -2195,7 +2195,7 @@ NativeDev(
GetFullPathName(nativePath, MAX_PATH, nativeFullPath, &nativePart);
Tcl_DStringInit(&ds);
- fullPath = Tcl_Utf16ToUtfDString(nativeFullPath, -1, &ds);
+ fullPath = Tcl_WCharToUtfDString(nativeFullPath, -1, &ds);
if ((fullPath[0] == '\\') && (fullPath[1] == '\\')) {
const char *p;
@@ -2217,7 +2217,7 @@ NativeDev(
p++;
}
Tcl_DStringInit(&volString);
- nativeVol = Tcl_UtfToUtf16DString(fullPath, p - fullPath, &volString);
+ nativeVol = Tcl_UtfToWCharDString(fullPath, p - fullPath, &volString);
dw = (DWORD) -1;
GetVolumeInformation(nativeVol, NULL, 0, &dw, NULL, NULL, NULL, 0);
@@ -2498,7 +2498,7 @@ TclpFilesystemPathType(
Tcl_DString ds;
Tcl_DStringInit(&ds);
- Tcl_Utf16ToUtfDString(volType, -1, &ds);
+ Tcl_WCharToUtfDString(volType, -1, &ds);
return TclDStringToObj(&ds);
}
#undef VOL_BUF_SIZE
@@ -2571,7 +2571,7 @@ TclpObjNormalizePath(
const WCHAR *nativePath;
Tcl_DStringInit(&ds);
- nativePath = Tcl_UtfToUtf16DString(path,
+ nativePath = Tcl_UtfToWCharDString(path,
currentPathEndPosition - path, &ds);
if (GetFileAttributesEx(nativePath,
@@ -2778,7 +2778,7 @@ TclpObjNormalizePath(
Tcl_DStringInit(&ds);
nativePath =
- Tcl_UtfToUtf16DString(path, lastValidPathEnd - path, &ds);
+ Tcl_UtfToWCharDString(path, lastValidPathEnd - path, &ds);
wpathlen = GetLongPathNameProc(nativePath,
(WCHAR *) wpath, MAX_PATH);
/*
@@ -2808,7 +2808,7 @@ TclpObjNormalizePath(
*/
Tcl_DStringInit(&ds);
- Tcl_Utf16ToUtfDString((const WCHAR *) Tcl_DStringValue(&dsNorm),
+ Tcl_WCharToUtfDString((const WCHAR *) Tcl_DStringValue(&dsNorm),
Tcl_DStringLength(&dsNorm)>>1, &ds);
nextCheckpoint = Tcl_DStringLength(&ds);
if (*lastValidPathEnd != 0) {
@@ -2985,7 +2985,7 @@ TclpNativeToNormalized(
char *copy, *p;
Tcl_DStringInit(&ds);
- Tcl_Utf16ToUtfDString((const WCHAR *) clientData, -1, &ds);
+ Tcl_WCharToUtfDString((const WCHAR *) clientData, -1, &ds);
copy = Tcl_DStringValue(&ds);
len = Tcl_DStringLength(&ds);
diff --git a/win/tclWinInit.c b/win/tclWinInit.c
index 4219963..117e224 100644
--- a/win/tclWinInit.c
+++ b/win/tclWinInit.c
@@ -477,7 +477,7 @@ TclpGetUserName(
}
cchUserNameLen--;
Tcl_DStringInit(bufferPtr);
- Tcl_Utf16ToUtfDString(szUserName, cchUserNameLen, bufferPtr);
+ Tcl_WCharToUtfDString(szUserName, cchUserNameLen, bufferPtr);
}
return Tcl_DStringValue(bufferPtr);
}
diff --git a/win/tclWinLoad.c b/win/tclWinLoad.c
index 983cfa3..ae68956 100644
--- a/win/tclWinLoad.c
+++ b/win/tclWinLoad.c
@@ -96,7 +96,7 @@ TclpDlopen(
ERROR_MOD_NOT_FOUND : GetLastError();
Tcl_DStringInit(&ds);
- nativeName = Tcl_UtfToUtf16DString(Tcl_GetString(pathPtr), -1, &ds);
+ nativeName = Tcl_UtfToWCharDString(Tcl_GetString(pathPtr), -1, &ds);
hInstance = LoadLibraryEx(nativeName, NULL,
LOAD_WITH_ALTERED_SEARCH_PATH);
Tcl_DStringFree(&ds);
diff --git a/win/tclWinPipe.c b/win/tclWinPipe.c
index c382e23..902e01c 100644
--- a/win/tclWinPipe.c
+++ b/win/tclWinPipe.c
@@ -578,7 +578,7 @@ TclpOpenFile(
}
Tcl_DStringInit(&ds);
- nativePath = Tcl_UtfToUtf16DString(path, -1, &ds);
+ nativePath = Tcl_UtfToWCharDString(path, -1, &ds);
/*
* If the file is not being created, use the existing file attributes.
@@ -1292,7 +1292,7 @@ ApplicationType(
Tcl_DStringSetLength(&nameBuf, nameLen);
Tcl_DStringAppend(&nameBuf, extensions[i], -1);
Tcl_DStringInit(&ds);
- nativeName = Tcl_UtfToUtf16DString(Tcl_DStringValue(&nameBuf),
+ nativeName = Tcl_UtfToWCharDString(Tcl_DStringValue(&nameBuf),
Tcl_DStringLength(&nameBuf), &ds);
found = SearchPath(NULL, nativeName, NULL, MAX_PATH,
nativeFullPath, &rest);
@@ -1311,7 +1311,7 @@ ApplicationType(
continue;
}
Tcl_DStringInit(&ds);
- strcpy(fullName, Tcl_Utf16ToUtfDString(nativeFullPath, -1, &ds));
+ strcpy(fullName, Tcl_WCharToUtfDString(nativeFullPath, -1, &ds));
Tcl_DStringFree(&ds);
ext = strrchr(fullName, '.');
@@ -1403,7 +1403,7 @@ ApplicationType(
GetShortPathName(nativeFullPath, nativeFullPath, MAX_PATH);
Tcl_DStringInit(&ds);
- strcpy(fullName, Tcl_Utf16ToUtfDString(nativeFullPath, -1, &ds));
+ strcpy(fullName, Tcl_WCharToUtfDString(nativeFullPath, -1, &ds));
Tcl_DStringFree(&ds);
}
return applType;
@@ -1732,7 +1732,7 @@ BuildCommandLine(
}
Tcl_DStringFree(linePtr);
Tcl_DStringInit(linePtr);
- Tcl_UtfToUtf16DString(Tcl_DStringValue(&ds), Tcl_DStringLength(&ds), linePtr);
+ Tcl_UtfToWCharDString(Tcl_DStringValue(&ds), Tcl_DStringLength(&ds), linePtr);
Tcl_DStringFree(&ds);
}
@@ -3215,7 +3215,7 @@ TclpOpenTemporaryFile(
const char *string = TclGetStringFromObj(basenameObj, &length);
Tcl_DStringInit(&buf);
- Tcl_UtfToUtf16DString(string, length, &buf);
+ Tcl_UtfToWCharDString(string, length, &buf);
memcpy(namePtr, Tcl_DStringValue(&buf), Tcl_DStringLength(&buf));
namePtr += Tcl_DStringLength(&buf);
Tcl_DStringFree(&buf);
@@ -3236,7 +3236,7 @@ TclpOpenTemporaryFile(
sprintf(number, "%d.TMP", counter);
counter = (unsigned short) (counter + 1);
Tcl_DStringInit(&buf);
- Tcl_UtfToUtf16DString(number, strlen(number), &buf);
+ Tcl_UtfToWCharDString(number, strlen(number), &buf);
Tcl_DStringSetLength(&buf, Tcl_DStringLength(&buf) + 1);
memcpy(namePtr, Tcl_DStringValue(&buf), Tcl_DStringLength(&buf) + 1);
Tcl_DStringFree(&buf);
diff --git a/win/tclWinSerial.c b/win/tclWinSerial.c
index 857a99f..d6fa567 100644
--- a/win/tclWinSerial.c
+++ b/win/tclWinSerial.c
@@ -1670,7 +1670,7 @@ SerialSetOptionProc(
goto getStateFailed;
}
Tcl_DStringInit(&ds);
- native = Tcl_UtfToUtf16DString(value, -1, &ds);
+ native = Tcl_UtfToWCharDString(value, -1, &ds);
result = BuildCommDCB(native, &dcb);
Tcl_DStringFree(&ds);
diff --git a/win/tclWinSock.c b/win/tclWinSock.c
index 8d8404e..784e2d2 100644
--- a/win/tclWinSock.c
+++ b/win/tclWinSock.c
@@ -373,7 +373,7 @@ InitializeHostName(
*/
Tcl_DStringInit(&ds);
- Tcl_UtfToLower(Tcl_Utf16ToUtfDString(tbuf, -1, &ds));
+ Tcl_UtfToLower(Tcl_WCharToUtfDString(tbuf, -1, &ds));
} else {
Tcl_DStringInit(&ds);