summaryrefslogtreecommitdiffstats
path: root/generic/tclInitScript.h
diff options
context:
space:
mode:
authorhershey <hershey>1999-07-21 02:01:36 (GMT)
committerhershey <hershey>1999-07-21 02:01:36 (GMT)
commit260866213706058f45fa00cd53cda25614228082 (patch)
treefd1832a309ca508b8e298c8853b2310ab363342d /generic/tclInitScript.h
parent8cc4afecef5625f0c32a63a6a3e8bb6eed1a5eff (diff)
downloadtcl-260866213706058f45fa00cd53cda25614228082.zip
tcl-260866213706058f45fa00cd53cda25614228082.tar.gz
tcl-260866213706058f45fa00cd53cda25614228082.tar.bz2
* generic/tclInitScript.h:
* unix/tclUnixInit.c: merged code with 8.0.5. We now use an intermediate global tcl var "tclDefaultLibrary" to keep the "tcl_library" var from being set by the default value in the Makefile. Also fixed a bug in which caused the value of TCL_LIBRARY env var to be ignored. * unix/tclWinInit.c: just updated some comments.
Diffstat (limited to 'generic/tclInitScript.h')
-rw-r--r--generic/tclInitScript.h54
1 files changed, 41 insertions, 13 deletions
diff --git a/generic/tclInitScript.h b/generic/tclInitScript.h
index a1da091..c74868b 100644
--- a/generic/tclInitScript.h
+++ b/generic/tclInitScript.h
@@ -5,39 +5,67 @@
* It is not used on the Mac. (the mac init script is in tclMacInit.c)
*
* Copyright (c) 1998 Sun Microsystems, Inc.
+ * Copyright (c) 1999 by Scriptics Corporation.
+ * All rights reserved.
*
- * See the file "license.terms" for information on usage and redistribution
- * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- *
- * RCS: @(#) $Id: tclInitScript.h,v 1.9 1999/04/16 00:46:47 stanton Exp $
+ * RCS: @(#) $Id: tclInitScript.h,v 1.10 1999/07/21 02:01:36 hershey Exp $
*/
/*
- * The following string is the startup script executed in new
- * interpreters. It looks on disk in several different directories
- * for a script "init.tcl" that is compatible with this version
- * of Tcl. The init.tcl script does all of the real work of
- * initialization.
+ * In order to find init.tcl during initialization, the following script
+ * is invoked by Tcl_Init(). It looks in several different directories:
+ *
+ * $tcl_library - can specify a primary location, if set
+ * no other locations will be checked
+ *
+ * $env(TCL_LIBRARY) - highest priority so user can always override
+ * the search path unless the application has
+ * specified an exact directory above
+ *
+ * $tclDefaultLibrary - this value is initialized by TclPlatformInit
+ * from a static C variable that was set at
+ * compile time
+ *
+ * $tcl_libPath - this value is initialized by a call to
+ * TclGetLibraryPath called from Tcl_Init.
+ *
+ * The first directory on this path that contains a valid init.tcl script
+ * will be set as the value of tcl_library.
+ *
+ * Note that this entire search mechanism can be bypassed by defining an
+ * alternate tclInit procedure before calling Tcl_Init().
*/
static char initScript[] = "if {[info proc tclInit]==\"\"} {\n\
proc tclInit {} {\n\
global tcl_libPath tcl_library errorInfo\n\
+ global env tclDefaultLibrary\n\
rename tclInit {}\n\
set errors {}\n\
- foreach i $tcl_libPath {\n\
+ set dirs {}\n\
+ if {[info exists tcl_library]} {\n\
+ lappend dirs $tcl_library\n\
+ } else {\n\
+ if {[info exists env(TCL_LIBRARY)]} {\n\
+ lappend dirs $env(TCL_LIBRARY)\n\
+ }\n\
+ lappend dirs $tclDefaultLibrary\n\
+ unset tclDefaultLibrary\n\
+ set dirs [concat $dirs $tcl_libPath]
+ }\n\
+ foreach i $dirs {\n\
set tcl_library $i\n\
set tclfile [file join $i init.tcl]\n\
if {[file exists $tclfile]} {\n\
- if {[catch {uplevel #0 [list source $tclfile]} msg] != 1} {\n\
- return\n\
+ if {![catch {uplevel #0 [list source $tclfile]} msg]} {\n\
+ return\n\
} else {\n\
append errors \"$tclfile: $msg\n$errorInfo\n\"\n\
}\n\
}\n\
}\n\
set msg \"Can't find a usable init.tcl in the following directories: \n\"\n\
- append msg \" $tcl_libPath\n\n\"\n\
+ append msg \" $dirs\n\n\"\n\
append msg \"$errors\n\n\"\n\
append msg \"This probably means that Tcl wasn't installed properly.\n\"\n\
error $msg\n\