summaryrefslogtreecommitdiffstats
path: root/win/tclWinInit.c
diff options
context:
space:
mode:
Diffstat (limited to 'win/tclWinInit.c')
-rw-r--r--win/tclWinInit.c53
1 files changed, 48 insertions, 5 deletions
diff --git a/win/tclWinInit.c b/win/tclWinInit.c
index 7f03f2c..a200098 100644
--- a/win/tclWinInit.c
+++ b/win/tclWinInit.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclWinInit.c,v 1.14 1999/04/16 00:48:08 stanton Exp $
+ * RCS: @(#) $Id: tclWinInit.c,v 1.15 1999/04/21 22:00:29 stanton Exp $
*/
#include "tclWinInt.h"
@@ -217,12 +217,27 @@ TclpInitLibraryPath(path)
AppendDllPath(pathPtr, TclWinGetTclInstance(), installLib);
+
/*
- * Look for the library relative to the executable. Use both the
- * installLib and developLib because we cannot determine if this
- * is installed or not.
+ * Look for the library relative to the executable. This algorithm
+ * should be the same as the one in the tcl_findLibrary procedure.
+ *
+ * This code looks in the following directories:
+ *
+ * <bindir>/../<installLib>
+ * (e.g. /usr/local/bin/../lib/tcl8.1)
+ * <bindir>/../../<installLib>
+ * (e.g. /usr/local/TclPro/solaris-sparc/bin/../../lib/tcl8.1)
+ * <bindir>/../library
+ * (e.g. /usr/src/tcl8.1/unix/../library)
+ * <bindir>/../../library
+ * (e.g. /usr/src/tcl8.1/unix/solaris-sparc/../../library)
+ * <bindir>/../../<developLib>
+ * (e.g. /usr/src/tcl8.1/unix/../../tcl8.1/library)
+ * <bindir>/../../../<devlopLib>
+ * (e.g. /usr/src/tcl8.1/unix/solaris-sparc/../../../tcl8.1/library)
*/
-
+
if (path != NULL) {
Tcl_SplitPath(path, &pathc, &pathv);
if (pathc > 1) {
@@ -233,12 +248,40 @@ TclpInitLibraryPath(path)
Tcl_DStringFree(&ds);
}
if (pathc > 2) {
+ pathv[pathc - 3] = installLib;
+ path = Tcl_JoinPath(pathc - 2, pathv, &ds);
+ objPtr = Tcl_NewStringObj(path, Tcl_DStringLength(&ds));
+ Tcl_ListObjAppendElement(NULL, pathPtr, objPtr);
+ Tcl_DStringFree(&ds);
+ }
+ if (pathc > 1) {
+ pathv[pathc - 2] = "library";
+ path = Tcl_JoinPath(pathc - 1, pathv, &ds);
+ objPtr = Tcl_NewStringObj(path, Tcl_DStringLength(&ds));
+ Tcl_ListObjAppendElement(NULL, pathPtr, objPtr);
+ Tcl_DStringFree(&ds);
+ }
+ if (pathc > 2) {
+ pathv[pathc - 3] = "library";
+ path = Tcl_JoinPath(pathc - 2, pathv, &ds);
+ objPtr = Tcl_NewStringObj(path, Tcl_DStringLength(&ds));
+ Tcl_ListObjAppendElement(NULL, pathPtr, objPtr);
+ Tcl_DStringFree(&ds);
+ }
+ if (pathc > 1) {
pathv[pathc - 3] = developLib;
path = Tcl_JoinPath(pathc - 2, pathv, &ds);
objPtr = Tcl_NewStringObj(path, Tcl_DStringLength(&ds));
Tcl_ListObjAppendElement(NULL, pathPtr, objPtr);
Tcl_DStringFree(&ds);
}
+ if (pathc > 3) {
+ pathv[pathc - 4] = developLib;
+ path = Tcl_JoinPath(pathc - 3, pathv, &ds);
+ objPtr = Tcl_NewStringObj(path, Tcl_DStringLength(&ds));
+ Tcl_ListObjAppendElement(NULL, pathPtr, objPtr);
+ Tcl_DStringFree(&ds);
+ }
ckfree((char *) pathv);
}