mercurial/util.py
changeset 1479 1a3c6689ef2b
parent 1454 f4250806dbeb
child 1482 4d38b85e60aa
--- a/mercurial/util.py	Fri Oct 28 11:03:18 2005 -0700
+++ b/mercurial/util.py	Fri Oct 28 17:18:50 2005 -0700
@@ -377,8 +377,17 @@
                     os.makedirs(d)
             else:
                 if nlink > 1:
-                    file(f + ".tmp", "wb").write(file(f, "rb").read())
-                    rename(f+".tmp", f)
+                    d, fn = os.path.split(f)
+                    fd, temp = tempfile.mkstemp(prefix=fn, dir=d)
+                    fp = os.fdopen(fd, "wb")
+                    try:
+                        fp.write(file(f, "rb").read())
+                    except:
+                        try: os.unlink(temp)
+                        except: pass
+                        raise
+                    fp.close()
+                    rename(temp, f)
 
         return file(f, mode)