From: SourceForge.net <no...@so...> - 2004-04-04 23:17:13
|
Bugs item #928545, was opened at 2004-04-02 21:19 Message generated for change (Comment added) made by vincentdarley You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=110894&aid=928545&group_id=10894 Category: 36. File System Group: current: 8.4.6 Status: Open Resolution: None >Priority: 5 Submitted By: tauvan (tauvan) >Assigned to: Daniel A. Steffen (das) >Summary: OSX: force rename Initial Comment: int TclpObjRenameFile(srcPathPtr, destPathPtr) Tcl_Obj *srcPathPtr; Tcl_Obj *destPathPtr; { int retVal = DoRenameFile(Tcl_FSGetNativePath(srcPathPtr), Tcl_FSGetNativePath(destPathPtr)); if (errno == EISDIR) { Tcl_Obj *errorBuffer = NULL; retVal = TclpObjRemoveDirectory(destPathPtr, FALSE, & errorBuffer); if (retVal) { return retVal; } retVal = TclpObjCopyDirectory(srcPathPtr, destPathPtr, & errorBuffer); retVal = TclpObjRemoveDirectory(srcPathPtr, TRUE, & errorBuffer); } return retVal; } ---------------------------------------------------------------------- >Comment By: Vince Darley (vincentdarley) Date: 2004-04-04 23:17 Message: Logged In: YES user_id=32170 Looking at the comments to TclpObjRenameFile, I see this: * If the directory was successfully created, returns TCL_OK. * Otherwise the return value is TCL_ERROR and errno is set to * indicate the error. Some possible values for errno are: * [snip] * EISDIR: dst is a directory, but src is not. This suggests that the blanket treatment of 'EISDIR' by an attempt to delete the directory and then fallback on copy/rename is likely to introduce new bugs. Another issue is that your patch doesn't check 'retVal != TCL_OK' before examining errno, which is likely to be wrong. Finally, another issue is that your patch undoubtedly leaks a Tcl_Obj in 'errorBuffer'. I think a better place to patch would be inside DoRenameFile. However, overall it seems we need to understand why the OS's "rename(src,dst)" is failing. Reassigning to someone with more understanding of OSX for help. ---------------------------------------------------------------------- Comment By: tauvan (tauvan) Date: 2004-04-03 15:55 Message: Logged In: YES user_id=1011552 Well I duplicated the errors, just removed the code. First: machine: mac ppc G4 (1st PCI 400Mhz) OSX 10.1.5 The errors occured running the test as local user, as root no errors. No other errors but the fCmd.test. Summaries: ---- Test generated error; Return code was: 1 ---- Return code should have been one of: 0 2 ---- errorInfo: error renaming "td2" to "td1/td2": illegal operation on a directory while executing "file rename -force td2 td1" ("uplevel" body line 6) invoked from within "uplevel 1 $script" ---- errorCode: POSIX EISDIR {illegal operation on a directory} ==== fCmd-6.15 FAILED ---- Result was: 1 {error renaming "td2" to "td1/td2": illegal operation on a directory} ---- Result should have been (exact matching): 1 {error renaming "td2" to "td1/td2": file already exists} ==== fCmd-6.16 FAILED ---- Result was: 1 {error renaming "td2" to "td1/td2": illegal operation on a directory} ---- Result should have been (exact matching): 1 {error renaming "td2" to "td1/td2": file already exists} ==== fCmd-6.18 FAILED ---- Test generated error; Return code was: 1 ---- Return code should have been one of: 0 2 ---- errorInfo: error renaming "tds1" to "tdd1/tds1": illegal operation on a directory while executing "file rename -force tds1 tdd1" ("uplevel" body line 25) invoked from within "uplevel 1 $script" ---- errorCode: POSIX EISDIR {illegal operation on a directory} ==== fCmd-9.8 FAILED ---- Result was: {tdd1 tdd2 tds1 tds2} {1 {error renaming "tds1" to "tdd1/tds1": illegal operation on a directory}} {1 {error renaming "tds2" to "tdd2/tds2": illegal operation on a directory}} 1 0 ---- Result should have been (exact matching): {tdd1 tdd2 tds1 tds2} {1 {error renaming "tds1" to "tdd1/tds1": file already exists}} {1 {error renaming "tds2" to "tdd2/tds2": file already exists}} 1 0 ==== fCmd-9.9 FAILED ---- Test generated error; Return code was: 1 ---- Return code should have been one of: 0 2 ---- errorInfo: error renaming "td3" to "td4/td3": illegal operation on a directory while executing "file rename -force td3 td4" ("uplevel" body line 8) invoked from within "uplevel 1 $script" ---- errorCode: POSIX EISDIR {illegal operation on a directory} ==== fCmd-9.12 FAILED ---- Result was: 1 {error renaming "td1" to "td2/td1": illegal operation on a directory} ---- Result should have been (exact matching): 1 {error renaming "td1" to "td2/td1": file already exists} ==== fCmd-9.13 FAILED ---- Test generated error; Return code was: 1 ---- Return code should have been one of: 0 2 ---- errorInfo: error renaming "tfa" to "tfad/tfa": illegal operation on a directory while executing "file rename -force tfa tfad" ("uplevel" body line 4) invoked from within "uplevel 1 $script" ---- errorCode: POSIX EISDIR {illegal operation on a directory} ==== fCmd-18.8 FAILED If you need I can give you build settings. I'm still in development state, but have Tcl currently running "all.tcl" with no errors. The fail also occurs with or with other solution to fileSystem errors. PS sorry I'm new at this reporting stuff. I've never tried to report fixes just did them and be done. However, since Tcl seems to be a corner stone, I thought I'd try. ---------------------------------------------------------------------- Comment By: Vince Darley (vincentdarley) Date: 2004-04-03 10:55 Message: Logged In: YES user_id=32170 Can you please tell us what test suite errors this corresponds to? On my machine/os all fileSystem and fCmd and fileName tests complete successfully. To apply any such patch we need to (a) be able to reproduce/understand the problem, and then (b) see that the patch solves the problem in the right way, and (c) that it doesn't introduce new problems. Without much more detail on "the errors", we can't do any of the above! (The one test you cite is actually in fCmd.test, not fileSystem.test, so that confuses the issue further). Sorry not to be more positive/helpful, but when reporting/fixing bugs I'm afraid you're going to have to be more forthcoming (either that or send us your computer so we can see for ourselves ;-) Anyway, hopefully once you've supplied a lot more info, we can resolve this one way or another. ---------------------------------------------------------------------- Comment By: tauvan (tauvan) Date: 2004-04-03 04:24 Message: Logged In: YES user_id=1011552 This was code that solved the fileSystem.test errors. Since I didn't write down the reason when I fixed it, I believe it was the rename of directories that should have succeeded but didn't. look at some old output: ---- Test generated error; Return code was: 1 ---- Return code should have been one of: 0 2 ---- errorInfo: error renaming "td2" to "td1/td2": illegal operation on a directory while executing "file rename -force td2 td1" ("uplevel" body line 6) invoked from within "uplevel 1 $script" ---- errorCode: POSIX EISDIR {illegal operation on a directory} ==== fCmd-6.15 FAILED and others. I'd have to go back to old code to try and duplicate ---------------------------------------------------------------------- Comment By: tauvan (tauvan) Date: 2004-04-03 02:19 Message: Logged In: YES user_id=1011552 This was code that solved the fileSystem.test errors. Since I didn't write down the reason when I fixed it, I believe it was the rename of directories that should have succeeded but didn't. look at some old output: ---- Test generated error; Return code was: 1 ---- Return code should have been one of: 0 2 ---- errorInfo: error renaming "td2" to "td1/td2": illegal operation on a directory while executing "file rename -force td2 td1" ("uplevel" body line 6) invoked from within "uplevel 1 $script" ---- errorCode: POSIX EISDIR {illegal operation on a directory} ==== fCmd-6.15 FAILED and others. I'd have to go back to old code to try and duplicate ---------------------------------------------------------------------- Comment By: Vince Darley (vincentdarley) Date: 2004-04-02 22:18 Message: Logged In: YES user_id=32170 Would you mind attaching some explanation to this? Is this a bug report (what bug?) a feature request (for what exactly?)....Are you saying the code doesn't agree with its documentation? Can you supply a test to demonstrate the issue? Without any further info, this report is intriguing, but not particularly useful... ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=110894&aid=928545&group_id=10894 |