]> git.michaelhowe.org Git - packages/b/bup.git/commitdiff
index.py: os.rename() fails on Windows if dstfile already exists.
authorLukasz Kosewski <lkosewsk@gmail.com>
Sun, 10 Jan 2010 09:07:10 +0000 (04:07 -0500)
committerLukasz Kosewski <lkosewsk@gmail.com>
Sun, 10 Jan 2010 09:07:10 +0000 (04:07 -0500)
Hence, we perform an os.unlink on the dstfile if os.rename() receives
an OSError exception, and try again.

index.py

index 3860087042c079eb3e5d7d66358fc87a3a2891e6..10ec093596a95b0d18f9c4eed73f59261da98ef4 100644 (file)
--- a/index.py
+++ b/index.py
@@ -195,7 +195,12 @@ class Writer:
         self.f = None
         if f:
             f.close()
-            os.rename(self.tmpname, self.filename)
+            try:
+                os.rename(self.tmpname, self.filename)
+            except OSError:
+                if os.path.exists(self.filename):
+                    os.unlink(self.filename)
+                os.rename(self.tmpname, self.filename)
 
     def _write(self, data):
         self.f.write(data)