changed:
authorStefan Vogel <sv@exept.de>
Thu, 22 Jul 2010 20:03:16 +0200
changeset 12956 f3924bb0cda0
parent 12955 0f4e5ce48e22
child 12957 c7a000017d17
changed: #moveTo: #renameTo: -- fix error handling
Filename.st
--- a/Filename.st	Thu Jul 22 19:39:23 2010 +0200
+++ b/Filename.st	Thu Jul 22 20:03:16 2010 +0200
@@ -2773,22 +2773,14 @@
      (Notice, that a rename is tried first, in case of non-cross device move)"
 
     [self renameTo:newName] 
-        on:(OperatingSystem errorSignal) 
+        on:(OSErrorHolder inappropriateReferentSignal) 
         do:[:ex |
-            |sig|
-
-            sig := ex signal.
-            sig == OperatingSystem fileNotFoundErrorSignal ifTrue:[
-                ex reject
-            ].
-            sig == OperatingSystem accessDeniedErrorSignal ifTrue:[
-                ex reject
-            ].
-
+            "handle renames accross device boundaries (Unix. cross device link)"
             self isDirectory ifTrue:[
                 self recursiveMoveDirectoryTo:newName.
             ] ifFalse:[
-                self moveFileTo:newName.
+                self copyTo:newName.
+                self remove.
             ].
         ].
 
@@ -3145,7 +3137,9 @@
         self exists ifFalse:[
             ^ self fileNotFoundError:self
         ].
-        ((OperatingSystem errorHolderForNumber:errno) parameter:newName asFilename) reportError.
+        (OperatingSystem errorHolderForNumber:errno) 
+            parameter:newName asFilename;
+            reportError.
     ].
 
     "
@@ -5784,11 +5778,11 @@
 !Filename class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Filename.st,v 1.353 2010-07-22 17:39:23 mb Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Filename.st,v 1.354 2010-07-22 18:03:16 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Filename.st,v 1.353 2010-07-22 17:39:23 mb Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Filename.st,v 1.354 2010-07-22 18:03:16 stefan Exp $'
 ! !
 
 Filename initialize!