diff options
Diffstat (limited to 'unix/tclUnixInit.c')
| -rw-r--r-- | unix/tclUnixInit.c | 20 | 
1 files changed, 13 insertions, 7 deletions
diff --git a/unix/tclUnixInit.c b/unix/tclUnixInit.c index dcff38b..aaaa811 100644 --- a/unix/tclUnixInit.c +++ b/unix/tclUnixInit.c @@ -7,7 +7,7 @@   * Copyright (c) 1999 by Scriptics Corporation.   * All rights reserved.   * - * RCS: @(#) $Id: tclUnixInit.c,v 1.20 2000/10/31 00:48:53 hobbs Exp $ + * RCS: @(#) $Id: tclUnixInit.c,v 1.21 2001/01/04 21:30:49 dgp Exp $   */  #include "tclInt.h" @@ -281,44 +281,50 @@ CONST char *path;		/* Path to the executable in native       *		(e.g. /usr/src/tcl8.2/unix/solaris-sparc/../../../tcl8.2/library)       */ + +     /* +      * The variable path holds an absolute path.  Take care not to +      * overwrite pathv[0] since that might produce a relative path. +      */ +      if (path != NULL) {  	Tcl_SplitPath(path, &pathc, &pathv); -	if (pathc > 1) { +	if (pathc > 2) {  	    pathv[pathc - 2] = installLib;  	    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) { +	if (pathc > 3) {  	    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) { +	if (pathc > 2) {  	    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) { +	if (pathc > 3) {  	    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) { +	if (pathc > 3) {  	    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) { +	if (pathc > 4) {  	    pathv[pathc - 4] = developLib;  	    path = Tcl_JoinPath(pathc - 3, pathv, &ds);  	    objPtr = Tcl_NewStringObj(path, Tcl_DStringLength(&ds));  | 
