Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Purge more dead fs path code. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | core-8-4-branch |
Files: | files | file ages | folders |
SHA1: |
7b2432f00fb638b82a8e3e82db0a4451 |
User & Date: | dgp 2012-06-20 19:36:13 |
Context
2012-06-21
| ||
10:59 | [Bug 3362446]: possible allocation error when using UNICODE check-in: ad62499767 user: jan.nijtmans tags: core-8-4-branch | |
2012-06-20
| ||
19:49 | Purge more dead fs path code. check-in: 2c1828bed8 user: dgp tags: core-8-5-branch | |
19:36 | Purge more dead fs path code. check-in: 7b2432f00f user: dgp tags: core-8-4-branch | |
18:22 | ...and one more line. check-in: 2d65ec28fb user: dgp tags: core-8-4-branch | |
Changes
Changes to generic/tclIOUtil.c.
︙ | ︙ | |||
94 95 96 97 98 99 100 | Tcl_Filesystem **filesystemPtrPtr, int *driveNameLengthPtr)); static Tcl_PathType GetPathType _ANSI_ARGS_((Tcl_Obj *pathObjPtr, Tcl_Filesystem **filesystemPtrPtr, int *driveNameLengthPtr, Tcl_Obj **driveNameRef)); static Tcl_FSPathInFilesystemProc NativePathInFilesystem; static Tcl_Obj* TclFSNormalizeAbsolutePath | | < | 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | Tcl_Filesystem **filesystemPtrPtr, int *driveNameLengthPtr)); static Tcl_PathType GetPathType _ANSI_ARGS_((Tcl_Obj *pathObjPtr, Tcl_Filesystem **filesystemPtrPtr, int *driveNameLengthPtr, Tcl_Obj **driveNameRef)); static Tcl_FSPathInFilesystemProc NativePathInFilesystem; static Tcl_Obj* TclFSNormalizeAbsolutePath _ANSI_ARGS_((Tcl_Interp* interp, Tcl_Obj *pathPtr)); /* * Prototypes for procedures defined later in this file. */ static FilesystemRecord* FsGetFirstFilesystem(void); static void FsThrExitProc(ClientData cd); static Tcl_Obj* FsListMounts _ANSI_ARGS_((Tcl_Obj *pathPtr, |
︙ | ︙ | |||
1333 1334 1335 1336 1337 1338 1339 | * This code is based on code from Matt Newman and Jean-Claude * Wippler, with additions from Vince Darley and is copyright * those respective authors. * *--------------------------------------------------------------------------- */ static Tcl_Obj * | | < | 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 | * This code is based on code from Matt Newman and Jean-Claude * Wippler, with additions from Vince Darley and is copyright * those respective authors. * *--------------------------------------------------------------------------- */ static Tcl_Obj * TclFSNormalizeAbsolutePath(interp, pathPtr) Tcl_Interp* interp; /* Interpreter to use */ Tcl_Obj *pathPtr; /* Absolute path to normalize */ { int splen = 0, nplen, eltLen, i; char *eltName; Tcl_Obj *retVal; Tcl_Obj *split; Tcl_Obj *elt; |
︙ | ︙ | |||
1392 1393 1394 1395 1396 1397 1398 | TclFSNormalizeToUniquePath(interp, retVal, 0); /* * Since we know it is a normalized path, we can * actually convert this object into an "path" object for * greater efficiency */ TclFSMakePathFromNormalized(interp, retVal); | < < < | 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 | TclFSNormalizeToUniquePath(interp, retVal, 0); /* * Since we know it is a normalized path, we can * actually convert this object into an "path" object for * greater efficiency */ TclFSMakePathFromNormalized(interp, retVal); } else { /* Init to an empty string */ retVal = Tcl_NewStringObj("",0); Tcl_IncrRefCount(retVal); } /* * We increment and then decrement the refCount of split to free |
︙ | ︙ | |||
2534 2535 2536 2537 2538 2539 2540 | * platforms. For the sake of efficiency, we want a completely * normalized cwd at all times. * * Finally, if retVal is NULL, we do not have a cwd, which * could be problematic. */ if (retVal != NULL) { | | | 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 | * platforms. For the sake of efficiency, we want a completely * normalized cwd at all times. * * Finally, if retVal is NULL, we do not have a cwd, which * could be problematic. */ if (retVal != NULL) { Tcl_Obj *norm = TclFSNormalizeAbsolutePath(interp, retVal); if (norm != NULL) { /* * We found a cwd, which is now in our global storage. * We must make a copy. Norm already has a refCount of 1. * * Threading issue: note that multiple threads at system * startup could in principle call this procedure |
︙ | ︙ | |||
2576 2577 2578 2579 2580 2581 2582 | * test suite on unix). */ if (fsPtr != NULL) { Tcl_FSGetCwdProc *proc = fsPtr->getCwdProc; if (proc != NULL) { Tcl_Obj *retVal = (*proc)(interp); if (retVal != NULL) { | | | 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 | * test suite on unix). */ if (fsPtr != NULL) { Tcl_FSGetCwdProc *proc = fsPtr->getCwdProc; if (proc != NULL) { Tcl_Obj *retVal = (*proc)(interp); if (retVal != NULL) { Tcl_Obj *norm = TclFSNormalizeAbsolutePath(interp, retVal); /* * Check whether cwd has changed from the value * previously stored in cwdPathPtr. Really 'norm' * shouldn't be null, but we are careful. */ if (norm == NULL) { /* Do nothing */ |
︙ | ︙ | |||
5661 5662 5663 5664 5665 5666 5667 | /* * If the "tail" part has components (like /../) that cause * the combined path to need more complete normalizing, * call on the more powerful routine to accomplish that so * we avoid [Bug 2385549] ... */ | | | 5656 5657 5658 5659 5660 5661 5662 5663 5664 5665 5666 5667 5668 5669 5670 | /* * If the "tail" part has components (like /../) that cause * the combined path to need more complete normalizing, * call on the more powerful routine to accomplish that so * we avoid [Bug 2385549] ... */ Tcl_Obj *newCopy = TclFSNormalizeAbsolutePath(interp, copy); Tcl_DecrRefCount(copy); copy = newCopy; } else { /* * ... but in most cases where we join a trouble free tail * to a normalized head, we can more efficiently normalize the * combined path by passing over only the unnormalized tail |
︙ | ︙ | |||
5763 5764 5765 5766 5767 5768 5769 | * be much faster! */ TclFSNormalizeToUniquePath(interp, copy, cwdLen-1); fsPathPtr->normPathPtr = copy; } } if (fsPathPtr->normPathPtr == NULL) { | < | 5758 5759 5760 5761 5762 5763 5764 5765 5766 5767 5768 5769 5770 5771 | * be much faster! */ TclFSNormalizeToUniquePath(interp, copy, cwdLen-1); fsPathPtr->normPathPtr = copy; } } if (fsPathPtr->normPathPtr == NULL) { Tcl_Obj *useThisCwd = NULL; /* * Since normPathPtr is NULL, but this is a valid path * object, we know that the translatedPathPtr cannot be NULL. */ Tcl_Obj *absolutePath = fsPathPtr->translatedPathPtr; char *path = Tcl_GetString(absolutePath); |
︙ | ︙ | |||
5850 5851 5852 5853 5854 5855 5856 | Tcl_AppendToObj(absolutePath, "/", 1); Tcl_AppendToObj(absolutePath, path+2, -1); } #endif /* __WIN32__ */ } } /* Already has refCount incremented */ | | < < | < < | 5844 5845 5846 5847 5848 5849 5850 5851 5852 5853 5854 5855 5856 5857 5858 5859 | Tcl_AppendToObj(absolutePath, "/", 1); Tcl_AppendToObj(absolutePath, path+2, -1); } #endif /* __WIN32__ */ } } /* Already has refCount incremented */ fsPathPtr->normPathPtr = TclFSNormalizeAbsolutePath(interp, absolutePath); if (!strcmp(Tcl_GetString(fsPathPtr->normPathPtr), Tcl_GetString(pathObjPtr))) { /* * The path was already normalized. * Get rid of the duplicate. */ Tcl_DecrRefCount(fsPathPtr->normPathPtr); |
︙ | ︙ |