diff options
author | dgp <dgp@users.sourceforge.net> | 2018-10-09 13:51:56 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2018-10-09 13:51:56 (GMT) |
commit | eec0f0f9da09e4ffe2e4daa880ef23835e3d48c0 (patch) | |
tree | 9698dc78e0851ec71411c3b5de28e4969fca8da5 /win | |
parent | e13c5f55a1b87cdf7eb3f5da7bb71ac0747ee6e0 (diff) | |
parent | cc4dae5c0f418d304a44bb10c87c624b478b6441 (diff) | |
download | tcl-eec0f0f9da09e4ffe2e4daa880ef23835e3d48c0.zip tcl-eec0f0f9da09e4ffe2e4daa880ef23835e3d48c0.tar.gz tcl-eec0f0f9da09e4ffe2e4daa880ef23835e3d48c0.tar.bz2 |
merge 8.6
Diffstat (limited to 'win')
-rw-r--r-- | win/tclWin32Dll.c | 63 |
1 files changed, 12 insertions, 51 deletions
diff --git a/win/tclWin32Dll.c b/win/tclWin32Dll.c index a85dd0c..6fc2401 100644 --- a/win/tclWin32Dll.c +++ b/win/tclWin32Dll.c @@ -33,10 +33,6 @@ static int platformId; /* Running under NT, or 95/98? */ #define cpuid __asm __emit 0fh __asm __emit 0a2h #endif -#if TCL_UTF_MAX < 4 -static Tcl_Encoding winTCharEncoding = NULL; -#endif - /* * The following declaration is for the VC++ DLL entry point. */ @@ -201,8 +197,6 @@ TclWinInit( if (platformId == VER_PLATFORM_WIN32_WINDOWS) { Tcl_Panic("Windows 9x is not a supported platform"); } - - TclWinResetInterfaces(); } /* @@ -282,10 +276,6 @@ TclWinNoBackslash( void TclpSetInterfaces(void) { -#if TCL_UTF_MAX < 4 - TclWinResetInterfaces(); - winTCharEncoding = Tcl_GetEncoding(NULL, "unicode"); -#endif } /* @@ -313,8 +303,6 @@ TclWinEncodingsCleanup(void) { MountPointMap *dlIter, *dlIter2; - TclWinResetInterfaces(); - /* * Clean up the mount point map. */ @@ -348,12 +336,6 @@ TclWinEncodingsCleanup(void) void TclWinResetInterfaces(void) { -#if TCL_UTF_MAX < 4 - if (winTCharEncoding != NULL) { - Tcl_FreeEncoding(winTCharEncoding); - winTCharEncoding = NULL; - } -#endif } /* @@ -565,22 +547,11 @@ Tcl_WinUtfToTChar( Tcl_DString *dsPtr) /* Uninitialized or free DString in which the * converted string is stored. */ { -#if TCL_UTF_MAX > 3 - TCHAR *wp; - int size = MultiByteToWideChar(CP_UTF8, 0, string, len, 0, 0); - Tcl_DStringInit(dsPtr); - Tcl_DStringSetLength(dsPtr, 2*size+2); - wp = (TCHAR *)Tcl_DStringValue(dsPtr); - MultiByteToWideChar(CP_UTF8, 0, string, len, wp, size+1); - if (len == -1) --size; /* account for 0-byte at string end */ - Tcl_DStringSetLength(dsPtr, 2*size); - wp[size] = 0; - return wp; -#else - return (TCHAR *) Tcl_UtfToExternalDString(winTCharEncoding, - string, len, dsPtr); -#endif + if (!string) { + return NULL; + } + return Tcl_UtfToUniCharDString(string, len, dsPtr); } char * @@ -591,26 +562,16 @@ Tcl_WinTCharToUtf( Tcl_DString *dsPtr) /* Uninitialized or free DString in which the * converted string is stored. */ { -#if TCL_UTF_MAX > 3 - char *p; - int size; - - if (len > 0) { + Tcl_DStringInit(dsPtr); + if (!string) { + return NULL; + } + if (len < 0) { + len = wcslen(string); + } else { len /= 2; } - size = WideCharToMultiByte(CP_UTF8, 0, string, len, 0, 0, NULL, NULL); - Tcl_DStringInit(dsPtr); - Tcl_DStringSetLength(dsPtr, size+1); - p = (char *)Tcl_DStringValue(dsPtr); - WideCharToMultiByte(CP_UTF8, 0, string, len, p, size, NULL, NULL); - if (len == -1) --size; /* account for 0-byte at string end */ - Tcl_DStringSetLength(dsPtr, size); - p[size] = 0; - return p; -#else - return Tcl_ExternalToUtfDString(winTCharEncoding, - (const char *) string, len, dsPtr); -#endif + return Tcl_UniCharToUtfDString(string, len, dsPtr); } /* |