summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--win/tclWinInit.c34
1 files changed, 21 insertions, 13 deletions
diff --git a/win/tclWinInit.c b/win/tclWinInit.c
index 0610ef6..a86108f 100644
--- a/win/tclWinInit.c
+++ b/win/tclWinInit.c
@@ -18,6 +18,15 @@
#include <winbase.h>
/*
+ * The following macro can be defined at compile time to specify
+ * an alternate registry key for the default Tcl library path.
+ */
+
+#ifndef TCL_REGISTRY_KEY
+#define TCL_REGISTRY_KEY "Software\\Scriptics\\Tcl\\" TCL_VERSION
+#endif
+
+/*
* The following declaration is a workaround for some Microsoft brain damage.
* The SYSTEM_INFO structure is different in various releases, even though the
* layout is the same. So we overlay our own structure on top of it so we
@@ -135,30 +144,29 @@ TclPlatformInit(interp)
*/
if (!isWin32s) {
- if ((RegOpenKeyEx(HKEY_LOCAL_MACHINE,
- "Software\\Sun\\Tcl\\" TCL_VERSION, 0, KEY_READ, &key)
- == ERROR_SUCCESS)
- && (RegQueryValueEx(key, "Root", NULL, NULL, NULL, &size)
- == ERROR_SUCCESS)) {
+ if ((RegOpenKeyEx(HKEY_LOCAL_MACHINE, TCL_REGISTRY_KEY, 0,
+ KEY_READ, &key) == ERROR_SUCCESS)
+ && (RegQueryValueEx(key, "", NULL, NULL, NULL, &size)
+ == ERROR_SUCCESS)) {
Tcl_DStringSetLength(&ds, size);
- RegQueryValueEx(key, "Root", NULL, NULL,
+ RegQueryValueEx(key, "", NULL, NULL,
(LPBYTE)Tcl_DStringValue(&ds), &size);
}
} else {
- if ((RegOpenKeyEx(HKEY_CLASSES_ROOT,
- "Software\\Sun\\Tcl\\" TCL_VERSION, 0, KEY_READ, &key)
- == ERROR_SUCCESS)
+ if ((RegOpenKeyEx(HKEY_CLASSES_ROOT, TCL_REGISTRY_KEY, 0,
+ KEY_READ, &key) == ERROR_SUCCESS)
&& (RegQueryValueEx(key, "", NULL, NULL, NULL, &size)
- == ERROR_SUCCESS)) {
+ == ERROR_SUCCESS)) {
Tcl_DStringSetLength(&ds, size);
RegQueryValueEx(key, "", NULL, NULL,
(LPBYTE) Tcl_DStringValue(&ds), &size);
}
}
- Tcl_SetVar(interp, "tcl_library", Tcl_DStringValue(&ds), TCL_GLOBAL_ONLY);
+ Tcl_SetVar(interp, "tclDefaultLibrary", Tcl_DStringValue(&ds),
+ TCL_GLOBAL_ONLY);
if (Tcl_DStringLength(&ds) > 0) {
char *argv[3];
- argv[0] = Tcl_GetVar(interp, "tcl_library", TCL_GLOBAL_ONLY);
+ argv[0] = Tcl_GetVar(interp, "tclDefaultLibrary", TCL_GLOBAL_ONLY);
argv[1] = "lib";
argv[2] = NULL;
Tcl_DStringSetLength(&ds, 0);
@@ -166,7 +174,7 @@ TclPlatformInit(interp)
TCL_GLOBAL_ONLY|TCL_LIST_ELEMENT);
argv[1] = "lib/tcl" TCL_VERSION;
Tcl_DStringSetLength(&ds, 0);
- Tcl_SetVar(interp, "tcl_library", Tcl_JoinPath(2, argv, &ds),
+ Tcl_SetVar(interp, "tclDefaultLibrary", Tcl_JoinPath(2, argv, &ds),
TCL_GLOBAL_ONLY);
}