diff options
author | sebres <sebres@users.sourceforge.net> | 2020-03-13 13:08:15 (GMT) |
---|---|---|
committer | sebres <sebres@users.sourceforge.net> | 2020-03-13 13:08:15 (GMT) |
commit | 72a735d08976532d328dfd91150df8786a56e5c9 (patch) | |
tree | c7368e9e0fcc8859e5946bec0fa8fa77fb42acd3 /win | |
parent | 86581b5325d887b6e583cd607f1587f9dea918b2 (diff) | |
download | tcl-72a735d08976532d328dfd91150df8786a56e5c9.zip tcl-72a735d08976532d328dfd91150df8786a56e5c9.tar.gz tcl-72a735d08976532d328dfd91150df8786a56e5c9.tar.bz2 |
fix back-ported from tclSE (with several modifications due to conflicts and compat reasons)
Diffstat (limited to 'win')
-rw-r--r-- | win/Makefile.in | 5 | ||||
-rw-r--r-- | win/tclWinInit.c | 16 |
2 files changed, 18 insertions, 3 deletions
diff --git a/win/Makefile.in b/win/Makefile.in index 70a6909..667a0be 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -528,11 +528,14 @@ ${ZLIB_DLL_FILE}: ${TCL_STUB_LIB_FILE} # Special case object targets +tclEnv.${OBJEXT}: tclEnv.c + $(CC) -c $(CC_SWITCHES) -DBUILD_tcl $(EXTFLAGS) -DUNICODE -D_UNICODE @DEPARG@ $(CC_OBJNAME) + tclTestMain.${OBJEXT}: tclAppInit.c $(CC) -c $(CC_SWITCHES) -DTCL_TEST -DUNICODE -D_UNICODE $(EXTFLAGS) @DEPARG@ $(CC_OBJNAME) tclWinInit.${OBJEXT}: tclWinInit.c - $(CC) -c $(CC_SWITCHES) -DBUILD_tcl $(EXTFLAGS) @DEPARG@ $(CC_OBJNAME) + $(CC) -c $(CC_SWITCHES) -DBUILD_tcl $(EXTFLAGS) -DUNICODE -D_UNICODE @DEPARG@ $(CC_OBJNAME) tclWinPipe.${OBJEXT}: tclWinPipe.c $(CC) -c $(CC_SWITCHES) -DBUILD_tcl $(EXTFLAGS) @DEPARG@ $(CC_OBJNAME) diff --git a/win/tclWinInit.c b/win/tclWinInit.c index 6ca6a46..2d26482 100644 --- a/win/tclWinInit.c +++ b/win/tclWinInit.c @@ -683,6 +683,16 @@ TclpSetVariables( *---------------------------------------------------------------------- */ +#if defined(_WIN32) && (defined(_UNICODE) || defined(UNICODE)) +# define tenviron _wenviron +# define tenviron2utfdstr(tenvstr, len, dstr) \ + Tcl_WinTCharToUtf((TCHAR *)tenvstr, len, dstr) +#else +# define tenviron environ +# define tenviron2utfdstr(tenvstr, len, dstr) \ + Tcl_ExternalToUtfDString(NULL, tenvstr, len, dstr) +#endif + int TclpFindVariable( const char *name, /* Name of desired environment variable @@ -707,14 +717,16 @@ TclpFindVariable( Tcl_UtfToUpper(nameUpper); Tcl_DStringInit(&envString); - for (i = 0, env = environ[i]; env != NULL; i++, env = environ[i]) { + for (i = 0, env = (const char *)tenviron[i]; + env != NULL; + i++, env = (const char *)tenviron[i]) { /* * Chop the env string off after the equal sign, then Convert the name * to all upper case, so we do not have to convert all the characters * after the equal sign. */ - envUpper = Tcl_ExternalToUtfDString(NULL, env, -1, &envString); + envUpper = tenviron2utfdstr(env, -1, &envString); p1 = strchr(envUpper, '='); if (p1 == NULL) { continue; |