diff options
Diffstat (limited to 'generic')
| -rw-r--r-- | generic/tclFileSystem.h | 7 | ||||
| -rw-r--r-- | generic/tclIOUtil.c | 13 | ||||
| -rw-r--r-- | generic/tclPathObj.c | 51 | 
3 files changed, 16 insertions, 55 deletions
diff --git a/generic/tclFileSystem.h b/generic/tclFileSystem.h index 5e48dec..be635e3 100644 --- a/generic/tclFileSystem.h +++ b/generic/tclFileSystem.h @@ -63,10 +63,9 @@ typedef struct ThreadSpecificData {  MODULE_SCOPE int	TclFSCwdPointerEquals(Tcl_Obj **pathPtrPtr);  MODULE_SCOPE int	TclFSMakePathFromNormalized(Tcl_Interp *interp, -			    Tcl_Obj *pathPtr, ClientData clientData); +			    Tcl_Obj *pathPtr);  MODULE_SCOPE int	TclFSNormalizeToUniquePath(Tcl_Interp *interp, -			    Tcl_Obj *pathPtr, int startAt, -			    ClientData *clientDataPtr); +			    Tcl_Obj *pathPtr, int startAt);  MODULE_SCOPE Tcl_Obj *	TclFSMakePathRelative(Tcl_Interp *interp,  			    Tcl_Obj *pathPtr, Tcl_Obj *cwdPtr);  MODULE_SCOPE Tcl_Obj *	TclFSInternalToNormalized( @@ -79,7 +78,7 @@ MODULE_SCOPE void	TclFSSetPathDetails(Tcl_Obj *pathPtr,  			    FilesystemRecord *fsRecPtr,  			    ClientData clientData);  MODULE_SCOPE Tcl_Obj *	TclFSNormalizeAbsolutePath(Tcl_Interp *interp, -			    Tcl_Obj *pathPtr, ClientData *clientDataPtr); +			    Tcl_Obj *pathPtr);  /*   * Private shared variables for use by tclIOUtil.c and tclPathObj.c diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c index c4e7db0..a4916b0 100644 --- a/generic/tclIOUtil.c +++ b/generic/tclIOUtil.c @@ -1347,14 +1347,9 @@ int  TclFSNormalizeToUniquePath(      Tcl_Interp *interp,		/* Used for error messages. */      Tcl_Obj *pathPtr,		/* The path to normalize in place. */ -    int startAt,		/* Start at this char-offset. */ -    ClientData *clientDataPtr)	/* If we generated a complete normalized path -				 * for a given filesystem, we can optionally -				 * return an fs-specific clientdata here. */ +    int startAt)		/* Start at this char-offset. */  {      FilesystemRecord *fsRecPtr, *firstFsRecPtr; -    /* Ignore this variable */ -    (void) clientDataPtr;      /*       * Call each of the "normalise path" functions in succession. This is a @@ -2633,7 +2628,7 @@ Tcl_FSGetCwd(  		retVal = fsRecPtr->fsPtr->internalToNormalizedProc(retCd);  		Tcl_IncrRefCount(retVal); -		norm = TclFSNormalizeAbsolutePath(interp,retVal,NULL); +		norm = TclFSNormalizeAbsolutePath(interp,retVal);  		if (norm != NULL) {  		    /*  		     * We found a cwd, which is now in our global storage. We @@ -2672,7 +2667,7 @@ Tcl_FSGetCwd(  	 */  	if (retVal != NULL) { -	    Tcl_Obj *norm = TclFSNormalizeAbsolutePath(interp, retVal, NULL); +	    Tcl_Obj *norm = TclFSNormalizeAbsolutePath(interp, retVal);  	    if (norm != NULL) {  		/* @@ -2762,7 +2757,7 @@ Tcl_FSGetCwd(  	 * Normalize the path.  	 */ -	norm = TclFSNormalizeAbsolutePath(interp, retVal, NULL); +	norm = TclFSNormalizeAbsolutePath(interp, retVal);  	/*  	 * Check whether cwd has changed from the value previously stored in diff --git a/generic/tclPathObj.c b/generic/tclPathObj.c index 2402128..955c23e 100644 --- a/generic/tclPathObj.c +++ b/generic/tclPathObj.c @@ -152,14 +152,8 @@ typedef struct FsPath {  Tcl_Obj *  TclFSNormalizeAbsolutePath(      Tcl_Interp *interp,		/* Interpreter to use */ -    Tcl_Obj *pathPtr,		/* Absolute path to normalize */ -    ClientData *clientDataPtr)	/* If non-NULL, then may be set to the -				 * fs-specific clientData for this path. This -				 * will happen when that extra information can -				 * be calculated efficiently as a side-effect -				 * of normalization. */ +    Tcl_Obj *pathPtr)		/* Absolute path to normalize */  { -    ClientData clientData = NULL;      const char *dirSep, *oldDirSep;      int first = 1;		/* Set to zero once we've passed the first  				 * directory separator - we can't use '..' to @@ -433,17 +427,14 @@ TclFSNormalizeAbsolutePath(       * for normalizing a path.       */ -    TclFSNormalizeToUniquePath(interp, retVal, 0, &clientData); +    TclFSNormalizeToUniquePath(interp, retVal, 0);      /*       * Since we know it is a normalized path, we can actually convert this       * object into an FsPath for greater efficiency       */ -    TclFSMakePathFromNormalized(interp, retVal, clientData); -    if (clientDataPtr != NULL) { -	*clientDataPtr = clientData; -    } +    TclFSMakePathFromNormalized(interp, retVal);      /*       * This has a refCount of 1 for the caller, unlike many Tcl_Obj APIs. @@ -1490,9 +1481,7 @@ TclFSMakePathRelative(  int  TclFSMakePathFromNormalized(      Tcl_Interp *interp,		/* Used for error reporting if not NULL. */ -    Tcl_Obj *pathPtr,		/* The object to convert. */ -    ClientData nativeRep)	/* The native rep for the object, if known -				 * else NULL. */ +    Tcl_Obj *pathPtr)		/* The object to convert. */  {      FsPath *fsPathPtr;      ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&tclFsDataKey); @@ -1536,7 +1525,7 @@ TclFSMakePathFromNormalized(      fsPathPtr->normPathPtr = pathPtr;      fsPathPtr->cwdPtr = NULL; -    fsPathPtr->nativePathPtr = nativeRep; +    fsPathPtr->nativePathPtr = NULL;      fsPathPtr->fsRecPtr = NULL;      fsPathPtr->filesystemEpoch = tsdPtr->filesystemEpoch; @@ -1778,7 +1767,6 @@ Tcl_FSGetNormalizedPath(  	Tcl_Obj *dir, *copy;  	int cwdLen, pathType; -	ClientData clientData = NULL;  	pathType = Tcl_FSGetPathType(fsPathPtr->cwdPtr);  	dir = Tcl_FSGetNormalizedPath(interp, fsPathPtr->cwdPtr); @@ -1811,7 +1799,7 @@ Tcl_FSGetNormalizedPath(  	     * 2385549] ...  	     */ -	    Tcl_Obj *newCopy = TclFSNormalizeAbsolutePath(interp, copy, NULL); +	    Tcl_Obj *newCopy = TclFSNormalizeAbsolutePath(interp, copy);  	    Tcl_DecrRefCount(copy);  	    copy = newCopy; @@ -1826,8 +1814,7 @@ Tcl_FSGetNormalizedPath(  	     * will actually start off directly after that separator.  	     */ -	    TclFSNormalizeToUniquePath(interp, copy, cwdLen-1, -		    (fsPathPtr->nativePathPtr == NULL ? &clientData : NULL)); +	    TclFSNormalizeToUniquePath(interp, copy, cwdLen-1);  	}  	/* Now we need to construct the new path object. */ @@ -1870,15 +1857,6 @@ Tcl_FSGetNormalizedPath(  	    TclDecrRefCount(dir);  	} -	if (clientData != NULL) { -	    /* -	     * This may be unnecessary. It appears that the -	     * TclFSNormalizeToUniquePath call above should have already set -	     * this up. Not changing out of fear of the unknown. -	     */ - -	    fsPathPtr->nativePathPtr = clientData; -	}  	PATHFLAGS(pathPtr) = 0;      } @@ -1899,7 +1877,6 @@ Tcl_FSGetNormalizedPath(  	} else if (fsPathPtr->normPathPtr == NULL) {  	    int cwdLen;  	    Tcl_Obj *copy; -	    ClientData clientData = NULL;  	    copy = AppendPath(fsPathPtr->cwdPtr, pathPtr); @@ -1911,17 +1888,12 @@ Tcl_FSGetNormalizedPath(  	     * of the previously normalized 'dir'. This should be much faster!  	     */ -	    TclFSNormalizeToUniquePath(interp, copy, cwdLen-1, -		    (fsPathPtr->nativePathPtr == NULL ? &clientData : NULL)); +	    TclFSNormalizeToUniquePath(interp, copy, cwdLen-1);  	    fsPathPtr->normPathPtr = copy;  	    Tcl_IncrRefCount(fsPathPtr->normPathPtr); -	    if (clientData != NULL) { -		fsPathPtr->nativePathPtr = clientData; -	    }  	}      }      if (fsPathPtr->normPathPtr == NULL) { -	ClientData clientData = NULL;  	Tcl_Obj *useThisCwd = NULL;  	int pureNormalized = 1; @@ -2003,12 +1975,7 @@ Tcl_FSGetNormalizedPath(  	 */  	fsPathPtr->normPathPtr = TclFSNormalizeAbsolutePath(interp, -		absolutePath, -		(fsPathPtr->nativePathPtr == NULL ? &clientData : NULL)); -	if (0 && (clientData != NULL)) { -	    fsPathPtr->nativePathPtr = -		   fsPathPtr->fsRecPtr->fsPtr->dupInternalRepProc(clientData); -	} +		absolutePath);  	/*  	 * Check if path is pure normalized (this can only be the case if it  | 
