diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2019-07-05 09:03:12 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2019-07-05 09:03:12 (GMT) |
commit | 30b0dabb9b5092b7453ff56eae75c009f30eaa1f (patch) | |
tree | e95abf5ef1adf6677e12d167fb247fc671a8d556 | |
parent | 26a830241ea90ce41d6cddc8f2a720f4cc5b2e73 (diff) | |
download | tcl-30b0dabb9b5092b7453ff56eae75c009f30eaa1f.zip tcl-30b0dabb9b5092b7453ff56eae75c009f30eaa1f.tar.gz tcl-30b0dabb9b5092b7453ff56eae75c009f30eaa1f.tar.bz2 |
Improvement: always export both 16-bit and 32-bit UTF function
-rw-r--r-- | doc/Encoding.3 | 4 | ||||
-rw-r--r-- | doc/Utf.3 | 6 | ||||
-rw-r--r-- | generic/tcl.decls | 15 | ||||
-rw-r--r-- | generic/tclDecls.h | 49 | ||||
-rw-r--r-- | generic/tclIOSock.c | 2 | ||||
-rw-r--r-- | generic/tclInt.h | 15 | ||||
-rw-r--r-- | generic/tclMain.c | 2 | ||||
-rw-r--r-- | generic/tclPlatDecls.h | 4 | ||||
-rw-r--r-- | generic/tclStubInit.c | 24 | ||||
-rw-r--r-- | generic/tclTest.c | 5 | ||||
-rw-r--r-- | generic/tclUtf.c | 72 | ||||
-rw-r--r-- | generic/tclZipfs.c | 2 | ||||
-rwxr-xr-x | unix/configure | 39 | ||||
-rw-r--r-- | unix/configure.ac | 16 | ||||
-rw-r--r-- | unix/tclUnixInit.c | 2 | ||||
-rw-r--r-- | unix/tclUnixTime.c | 1 | ||||
-rw-r--r-- | win/tclWin32Dll.c | 4 | ||||
-rw-r--r-- | win/tclWinFCmd.c | 38 | ||||
-rw-r--r-- | win/tclWinFile.c | 30 | ||||
-rw-r--r-- | win/tclWinInit.c | 2 | ||||
-rw-r--r-- | win/tclWinLoad.c | 2 | ||||
-rw-r--r-- | win/tclWinPipe.c | 14 | ||||
-rw-r--r-- | win/tclWinSerial.c | 2 | ||||
-rw-r--r-- | win/tclWinSock.c | 2 |
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 @@ -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); |