diff options
| author | das <das> | 2006-03-28 10:47:03 (GMT) |
|---|---|---|
| committer | das <das> | 2006-03-28 10:47:03 (GMT) |
| commit | f11d46ca5da5f01853d964695ef96402bc380f7c (patch) | |
| tree | 80ad203f9e9314dd34b66cad20decbb0c5609dc2 /unix/tclUnixFCmd.c | |
| parent | 1bc7f50e0af6ec6aebdabcab23a27532f9a1eccf (diff) | |
| download | tcl-f11d46ca5da5f01853d964695ef96402bc380f7c.zip tcl-f11d46ca5da5f01853d964695ef96402bc380f7c.tar.gz tcl-f11d46ca5da5f01853d964695ef96402bc380f7c.tar.bz2 | |
* unix/tclUnixFCmd.c (TclpObjNormalizePath): deal with *BSD/Darwin
realpath() converting relative paths into absolute paths. [Bug 1064247]
Diffstat (limited to 'unix/tclUnixFCmd.c')
| -rw-r--r-- | unix/tclUnixFCmd.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/unix/tclUnixFCmd.c b/unix/tclUnixFCmd.c index 02bd513..317eca7 100644 --- a/unix/tclUnixFCmd.c +++ b/unix/tclUnixFCmd.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.8 2005/12/05 15:10:33 dgp Exp $ + * RCS: @(#) $Id: tclUnixFCmd.c,v 1.28.2.9 2006/03/28 10:47:09 das Exp $ * * Portions of this code were derived from NetBSD source code which has * the following copyright notice: @@ -1821,9 +1821,17 @@ TclpObjNormalizePath(interp, pathPtr, nextCheckpoint) nativePath = Tcl_UtfToExternalDString(NULL, path, lastDir - path, &ds); if (Realpath(nativePath, normPath) != NULL) { - nextCheckpoint = lastDir - path; - goto wholeStringOk; + if (*nativePath != '/' && *normPath == '/') { + /* + * realpath has transformed a relative path into an + * absolute path, we do not know how to handle this. + */ + } else { + nextCheckpoint = lastDir - path; + goto wholeStringOk; + } } + Tcl_DStringFree(&ds); } } /* Else do it the slow way */ |
