summaryrefslogtreecommitdiffstats
path: root/win
diff options
context:
space:
mode:
authorsebres <sebres@users.sourceforge.net>2020-03-13 13:08:15 (GMT)
committersebres <sebres@users.sourceforge.net>2020-03-13 13:08:15 (GMT)
commit6531271960956c2da40179dfc1ab0593c4e56055 (patch)
treec7368e9e0fcc8859e5946bec0fa8fa77fb42acd3 /win
parentff1d33b6f9a940969354f74d119dadb59ad2c1ce (diff)
downloadtcl-6531271960956c2da40179dfc1ab0593c4e56055.zip
tcl-6531271960956c2da40179dfc1ab0593c4e56055.tar.gz
tcl-6531271960956c2da40179dfc1ab0593c4e56055.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.in5
-rw-r--r--win/tclWinInit.c16
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;